{"version":3,"sources":["../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","__extends","extendStatics","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","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","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","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","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","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","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","Alignment","DataLayoutOrientation","LogicalDirectionKind","TreeLayoutSettings","LayoutSettings","orientation","Vertical","direction","Forward","baseSpacing","columnSpacing","layerSpacing","componentSpacing","alignment","Center","subTreeColumnSpacing","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","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","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","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","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","GroupPrimitive","onBeforeDispose","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","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","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","shapeDescription","EllipsePrimitive","cx","cy","ClipPathPrimitive","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","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","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","renderPointsContext","addConnector","selectedKeys","forceChange","oldSelection","oldText","styleProperty","styleValue","oldStyleValue","changeStyleText","ChangeStyleHistoryItemBase","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","EllipseShapeDescription","EllipsePrimitive_1","Exporter","export","page","exportItemsCore","exportItems","exportShape","connectorObj","exportConnector","exportItem","paramsObj","styleObj","styleTextObj","propsObj","exportSvg","exportManager","exportSvgImage","exportPng","exportPngImage","exportJpg","exportJpgImage","ToggleStyleTextPropertyCommand","StylePropertyCommandBase_1","getCurrentTextStylePropertyValue","getStyleProperty","getStylePropertyValue","executeCore","state","setTextStylePropertyValue","getStyleObj","getDefaultStyleObj","StylePropertyCommandBase","ChangeStylePropertyCommand","ChangeStylePropertyCommandBase_1","getCurrentStylePropertyValue","createHistoryItem","updateInputPosition","setStylePropertyValue","ChangeStylePropertyCommandBase","AutoLayoutCommandBase","SimpleCommandBase_1","ScrollIntoViewHistoryItem_1","getAffectedShapes","getAffectedConnectors","createLayoutSettings","graphInfo","rectangle_2","model_1","commonRect","ScrollIntoViewOnUndoHistoryItem","view","createLayout","ScrollIntoViewOnRedoHistoryItem","ChangePagePropertyCommand","createHistoryItems","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","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","NativeItem","unitsApplied","applyUnitsCore","UpdateConnectorPointsHistoryItem","oldRenderContext","oldPoints","updateRenderPoints","Offsets","fromOffsets","fromSide","horizontal","vertical","multLeft","multRight","multTop","multBottom","oldValue","changeConnectorProperty","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","ArrowVerticalShapeDescription","ArrowVerticalLineWidthParameterName","ArrowVerticalTriangleHeightParameterName","ArrowHorizontalShapeDescription","ArrowVerticalLineHeightParameterName","ArrowVerticalTriangleWidthParameterName","PolygonShapeDescription","calculateHeight","angleCount","ImportUtils","parseJSON","json","parse","createDocument","xml","DOMParser","parseFromString","ChangeStyleTextPropertyCommand","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","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","DOMManipulator","queue","doChange","cancelAnimation","rafId","cancelAnimationFrame","requestAnimation","doChangeSync","rafRequested","requestAnimationFrame","func_1","ClipboardCommand","setClipboardData","input","getClipboardData","isPasteSupportedByBrowser","ChangeZindexHistoryItem","oldZIndex","changeZIndex","DataLayoutParameters","DataLayoutType","WideTree_1","Sugiyama_1","sizeSettings","layoutType","layoutSettings","Sugiyama","autoSizeEnabled","getLayoutBuilder","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","FilterPrimitive","transformAttr","COLOR_PROPERTIES","propName","ConnectorPointsCalculatorBase","oldParameters","changeShapeParameters","oldPosition","oldSize","oldLocked","changeLocked","Importer","ShapeDescriptionManager_1","ImporterBase_1","ImportUtils_1","shapeDescriptionManager","getObject","getPageObject","getShapeObjects","getConnectorObjects","importPageSettings","pageObj","assert","importShape","shapeObj","importShapeChildren","importConnector","ImporterBase","ClipPathPrimitive_1","textClipPathId","top_1","getSizeByTextRectangle","PolygonShapeDescription_1","defaultRatio","py","sideX","createDocumentPrimitives","curveOffsetRatio","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","preserveAspectRatio","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","ContainerDescription","CONTAINER_EXPAND_BUTTON_SIGN_RATIO","CONTAINER_EXPAND_BUTTON_RECT_RATIO","CONTAINER_HEADER_TOOLBOX_SIZE_RATIO","CONTAINER_HEADER_SIZE","createHeaderPrimitives","createExpandButtonPrimitives","buttonRect","ShapeExpandButton","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","lockInputPositionUpdating","processParameter","ChangeConnectorPropertyCommand","getCurrentConnectorPropertyValue","getPropertyName","getPropertyDefaultValue","setConnectorPropertyValue","AutoLayoutCommandBase_1","nodeLayout","copyEdges","excludeMargins","near","far","graphLayout","pendingChanges","pendingRemoveChanges","updatesLock","applyPendingChanges","getPendingChanges","getPendingRemoveChanges","removeChanges","applyChangesCore","changesToReapply","postponeChanges","notifyModelChanged","notifyPageColorChanged","notifyPageSizeChanged","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","ChangeLockedCommand","enabled","getLockState","oldImage","changeShapeImage","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","MouseHandlerMoveConnectorPointStateBase","MouseHandlerDraggingState_1","resetConnectionTarget","addInteractingItem","allowAttachToObjects","pointPosition","setConnectionTarget","oppositeConnectionPointIndex","setConnectionPoints","oppositePointPosition","getOppositePointPosition","oppositeItem","targetItem","updateOppositeItemConnectionPointIndex","tryUpdateModelSize","checkContainers","checkOppositeItem","canMultipleSelection","targetItem_1","position_1","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","lastOffset","getPointByEvent","currentPoint","actualOffset","scrollBy","onFinishScrollPageByMouse","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","MouseHandlerDefaultReadOnlyState","ChangeShapeTextHistoryItem","TargetVisualizerBase","dispatcher","getKey","setTargetRect","targetStrokeWidth","raiseShow","raiseHide","ExtensionLinesVisualizer","ExtensionLineType","lineIndexByType","addSegment","curIndex","update","notifyExtensionLinesShow","notifyExtensionLinesHide","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","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","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","ConnectorPointsCalculatorBase_1","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","ConnectorPointsOrthogonalSideCalculatorBase_1","calculator","diffX","diffY","getAsideOffsetPoints","getScaleableOffsetY","getScaleableAsideOffsetPoints","asideOffset","isEnd","getScaleableOffsetX","getStyle","getCssClass","arrowPoints","renderContext","addDeleteConnectorPoint","oldPoint","newBeginPoint","newLastPoint","oldBeginPoint","oldLastPoint","offsets_1","backOffset","newWidth","pageWidth","newHeight","pageHeight","changeModelSize","applyOffset","LayoutUtils_1","sourceGraph","_graph","getNodeInfoGraph","_level","getLevel","LayoutUtils","shapeToLayout","getContainerLevel","shapeRect","connRect","isPermissionsRequired","executed","executeWithPermissions","updateControlState","lockUIUpdating","defaultValue","visible","denyUpdateValue","canUndo","canRedo","importer","importModel","slopeHeightRatio","yOffset","slopeAngle","curveWidthRatio","PredefinedProcessEdgeParameterName","ShapeParameterPoint_1","minEdge","ArrowVerticalShapeDescription_1","p1dx","p0dy","p1x1","p0y1","p1x2","p0y2","ArrowHorizontalShapeDescription_1","p0dx","p1dy","p0x1","p1y1","p1y2","triangleWidth","triangleHeight","CrossVerticalWidthParameterName","CrossHorizontalWidthParameterName","p0x2","_textSize","sideY","StarConvexParameterName","getActualBottom","pDistance","getInnerPointDistance","getInnerPointPos","innerPointX","innerPointY","getInnerPointDistanceByAxis","edge1","edge2","edgeX1","edgeX2","edgeY1","edgeY2","disX","disY","documentsOffsetRatioForToolbox","documentsOffsetRatio","documentOffsetX","documentOffsetY","clipRect","arcWidthRatio","InternalStorageVerticalEdgeParameterName","InternalStorageHorizontalEdgeParameterName","maxRectInEllipse","rectByEllipse","ex","ey","createContent","destroyContent","ContainerDescription_1","headerSize","getHeaderSize","CardBaseDescription_1","w","textBlockSize","CardWithHorizontalImageDescription","_width","_height","ChangeStyleTextPropertyCommand_1","ChangeStylePropertyCommand_1","ChangeTextAlignCommand","ChangeConnectorPropertyCommand_1","scrollIntoView","childToParent","hasChildren","findRoot","aggregator","inc","gridSizeItems","ChangePagePropertyCommand_1","ChangePageLandscapeHistoryItem_1","ChangePageLandscapeHistoryItem","changePageLandscape","ChangePageSizeHistoryItem_1","getModelUnitSize","ChangePageSizeHistoryItem","pageSizeItems","changePageSize","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","PasteSelectoinCommandBase_1","insertShape","removeShape","insertConnector","removeConnector","BPMNImporter_1","BPMNImporter","updateModel","externalKeyToModelKey","insert","getShapeDescription","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","ChangeZindexHistoryItem_1","needSendToBack","newZIndex","needBringToFront","MoveCommand","startPtIndex","endPtIndex","getZoom","autoZoom","updateLayout","zoomLevelItems","ChangeZoomLevelExactlyCommand","exactValue","FitZoomCommandBase","getZoomLevel","getActualAutoZoomLevel","FitContent","nodeDataSource","performImportData","dataSource","createDocumentDataSource","edgeDataSource","dataParameters","nodeDataImporter","edgeDataImporter","layoutParameters","createModelItems","deleteDocumentDataSource","CloneCommand","canAddItems","selectionRect","getOffsetX","getOffsetY","ChangeUnitsHistoryItem_1","ChangeUnitsHistoryItem","oldUnits","ChangePageColorHistoryItem_1","ChangePageColorHistoryItem","changePageColor","fullscreen","notifyToggleFullscreen","simpleView","selectionPos","newSelectionPos","getModelPointByEventPoint","XMLImporter_1","XmlImporter","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","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","MouseHandlerMoveConnectorPointStateBase_1","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","pointCreated","parameterPointKey","startParameters","connectedItem","createNewShapeAtConnectorEnd","beginShape","getNewShapeSide","clonedShape","getNewShapePosition","checkNewConnectorPermissions","getNewShapeSideByConnectorPoints","getSourceItem","renderPointIndexes","renderPointIndex1","renderPointIndex2","renderPoint1","renderPoint2","isVerticalOrientation","pointIndex1","correctEdgePoint","findPointIndex","pointIndex2","createdPoint1","createdPoint2","excludePoints","createUnnecessaryPoints","unnecessaryRenderPoints","ep","lastPointIndex_1","MouseHandlerToolboxDraggingState","isModelEmpty","tryRemoveTimer","dragging","Background","switchToDraggingState","nonPageAreaTimer","savedEvt","skipLockUpdatePageSize","updatePageSizeTimer","processAndRemoveUpdatePageSizeTimer","tryRemoveUpdatePageSizeTimer","deleteHistoryItem","insertToolboxItem","shape_1","undoTransactionTo","startShapePosition","connectorsWithoutBeginItemInfo","connectorsWithoutEndItemInfo","ChangeConnectorTextPositionHistoryItem_1","savedText","ChangeConnectorTextPositionHistoryItem","ToggleShapeExpandedHistoryItem_1","ToggleShapeExpandedHistoryItem","resetSelectionRectangle","setSelectionRectangle","selectRect","trySwitchToDefault","getNextStepZoom","scrollTo","MouseHandlerZoomOnPinchState_1","startZooming","MouseHandlerZoomOnPinchState","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","batch_updatable_1","contextMenuVisible","textInputStarted","canHideContextMenu","contextToolboxVisible","hideContextMenu","showContextMenuAtSelection","showContextMenuAtEmptySelection","showContextMenu","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","ConnectionTargetInfo","TargetVisualizerBase_1","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","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","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","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","feGaussianBlur","feOffset","feMerge","feMergeNode1","feMergeNode2","leftButtonPressed","scrollDragging","scrollTimer","raiseMouseMoveFunc","clearScrollTimer","changeScrollPosition","raiseMouseMove","changed","x_1","y_1","width_1","height_1","getScrollingOffset","edgeOffset","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","oldCustomData","DataSourceItemDataImporter","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","itemEl","Toolbox_1","readonly","drawShapeIcons","toolboxWidth","lineWidth","targetWidth","shapeIconSize","shapeIconSpacing","shapeIconCountInRow","iconCountInRow","createShape","updateShapeIconBounds","shapeEl","drawShape","drawSelector","shapeIconAttributes","pr","selectorRect","shrinkText","xPosT","yPosT","needResetShapeText","shapeSizeT","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","AddShapeEventArgs","RequestedEntity_1","DeleteShapeEventArgs","DeleteShape","DeleteConnectorEventArgs","DeleteConnector","AddShapeFromToolboxEventArgs","ChangeConnectionEventArgs","oldShape","connectorsAreEqual","shapesAreEqual","oldShapesAreEqual","ChangeConnectorPointsEventArgs","ChangeConnectorPoints","BeforeChangeShapeTextEventArgs","BeforeChangeShapeText","BeforeChangeConnectorTextEventArgs","BeforeChangeConnectorText","ChangeShapeTextEventArgs","ChangeShapeText","ChangeConnectorTextEventArgs","ChangeConnectorText","interactingItems","storedPermissions","getInteractingItemKey","storePermissions","granted","ResizeShapeEventArgs","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","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","onElementTouchMoveHandler","onElementTouchMove","onSelectionChangeHandler","onSelectionChange","ToolboxDragEventsHandlerBase_1","IDragEventsHandler_1","onDragStartHandler","ondragstart"],"mappings":"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","file":"static/js/main~6135c513.afbbfed6.chunk.js","sourcesContent":["/*!\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\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"diagram\"] = factory();\n\telse\n\t\troot[\"DevExpress\"] = root[\"DevExpress\"] || {}, root[\"DevExpress\"][\"diagram\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 107);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ShapeType = exports.ShapeTypes = exports.ShapeCategories = void 0;\r\nvar ShapeCategories = /** @class */ (function () {\r\n function ShapeCategories() {\r\n }\r\n ShapeCategories.General = \"general\";\r\n ShapeCategories.Flowchart = \"flowchart\";\r\n ShapeCategories.OrgChart = \"orgChart\";\r\n ShapeCategories.Containers = \"containers\";\r\n ShapeCategories.Custom = \"custom\";\r\n return ShapeCategories;\r\n}());\r\nexports.ShapeCategories = ShapeCategories;\r\nvar ShapeTypes = /** @class */ (function () {\r\n function ShapeTypes() {\r\n }\r\n // Standard\r\n ShapeTypes.Text = \"text\";\r\n ShapeTypes.Rectangle = \"rectangle\";\r\n ShapeTypes.Ellipse = \"ellipse\";\r\n ShapeTypes.Cross = \"cross\";\r\n ShapeTypes.Triangle = \"triangle\";\r\n ShapeTypes.Diamond = \"diamond\";\r\n ShapeTypes.Heart = \"heart\";\r\n ShapeTypes.Pentagon = \"pentagon\";\r\n ShapeTypes.Hexagon = \"hexagon\";\r\n ShapeTypes.Octagon = \"octagon\";\r\n ShapeTypes.Star = \"star\";\r\n ShapeTypes.ArrowLeft = \"arrowLeft\";\r\n ShapeTypes.ArrowUp = \"arrowTop\";\r\n ShapeTypes.ArrowRight = \"arrowRight\";\r\n ShapeTypes.ArrowDown = \"arrowBottom\";\r\n ShapeTypes.ArrowUpDown = \"arrowNorthSouth\";\r\n ShapeTypes.ArrowLeftRight = \"arrowEastWest\";\r\n // Flowchart\r\n ShapeTypes.Process = \"process\";\r\n ShapeTypes.Decision = \"decision\";\r\n ShapeTypes.Terminator = \"terminator\";\r\n ShapeTypes.PredefinedProcess = \"predefinedProcess\";\r\n ShapeTypes.Document = \"document\";\r\n ShapeTypes.MultipleDocuments = \"multipleDocuments\";\r\n ShapeTypes.ManualInput = \"manualInput\";\r\n ShapeTypes.Preparation = \"preparation\";\r\n ShapeTypes.Data = \"data\";\r\n ShapeTypes.Database = \"database\";\r\n ShapeTypes.HardDisk = \"hardDisk\";\r\n ShapeTypes.InternalStorage = \"internalStorage\";\r\n ShapeTypes.PaperTape = \"paperTape\";\r\n ShapeTypes.ManualOperation = \"manualOperation\";\r\n ShapeTypes.Delay = \"delay\";\r\n ShapeTypes.StoredData = \"storedData\";\r\n ShapeTypes.Display = \"display\";\r\n ShapeTypes.Merge = \"merge\";\r\n ShapeTypes.Connector = \"connector\";\r\n ShapeTypes.Or = \"or\";\r\n ShapeTypes.SummingJunction = \"summingJunction\";\r\n // Containers\r\n ShapeTypes.Container = \"container\"; // abstract\r\n ShapeTypes.VerticalContainer = \"verticalContainer\";\r\n ShapeTypes.HorizontalContainer = \"horizontalContainer\";\r\n // Shapes with images\r\n ShapeTypes.Card = \"card\"; // abstract\r\n ShapeTypes.CardWithImageOnLeft = \"cardWithImageOnLeft\";\r\n ShapeTypes.CardWithImageOnTop = \"cardWithImageOnTop\";\r\n ShapeTypes.CardWithImageOnRight = \"cardWithImageOnRight\";\r\n return ShapeTypes;\r\n}());\r\nexports.ShapeTypes = ShapeTypes;\r\nvar ShapeType;\r\n(function (ShapeType) {\r\n ShapeType[ShapeType[\"text\"] = 0] = \"text\";\r\n ShapeType[ShapeType[\"rectangle\"] = 1] = \"rectangle\";\r\n ShapeType[ShapeType[\"ellipse\"] = 2] = \"ellipse\";\r\n ShapeType[ShapeType[\"cross\"] = 3] = \"cross\";\r\n ShapeType[ShapeType[\"triangle\"] = 4] = \"triangle\";\r\n ShapeType[ShapeType[\"diamond\"] = 5] = \"diamond\";\r\n ShapeType[ShapeType[\"heart\"] = 6] = \"heart\";\r\n ShapeType[ShapeType[\"pentagon\"] = 7] = \"pentagon\";\r\n ShapeType[ShapeType[\"hexagon\"] = 8] = \"hexagon\";\r\n ShapeType[ShapeType[\"octagon\"] = 9] = \"octagon\";\r\n ShapeType[ShapeType[\"star\"] = 10] = \"star\";\r\n ShapeType[ShapeType[\"arrowLeft\"] = 11] = \"arrowLeft\";\r\n ShapeType[ShapeType[\"arrowTop\"] = 12] = \"arrowTop\";\r\n ShapeType[ShapeType[\"arrowRight\"] = 13] = \"arrowRight\";\r\n ShapeType[ShapeType[\"arrowBottom\"] = 14] = \"arrowBottom\";\r\n ShapeType[ShapeType[\"arrowNorthSouth\"] = 15] = \"arrowNorthSouth\";\r\n ShapeType[ShapeType[\"arrowEastWest\"] = 16] = \"arrowEastWest\";\r\n // Flowchart\r\n ShapeType[ShapeType[\"process\"] = 17] = \"process\";\r\n ShapeType[ShapeType[\"decision\"] = 18] = \"decision\";\r\n ShapeType[ShapeType[\"terminator\"] = 19] = \"terminator\";\r\n ShapeType[ShapeType[\"predefinedProcess\"] = 20] = \"predefinedProcess\";\r\n ShapeType[ShapeType[\"document\"] = 21] = \"document\";\r\n ShapeType[ShapeType[\"multipleDocuments\"] = 22] = \"multipleDocuments\";\r\n ShapeType[ShapeType[\"manualInput\"] = 23] = \"manualInput\";\r\n ShapeType[ShapeType[\"preparation\"] = 24] = \"preparation\";\r\n ShapeType[ShapeType[\"data\"] = 25] = \"data\";\r\n ShapeType[ShapeType[\"database\"] = 26] = \"database\";\r\n ShapeType[ShapeType[\"hardDisk\"] = 27] = \"hardDisk\";\r\n ShapeType[ShapeType[\"internalStorage\"] = 28] = \"internalStorage\";\r\n ShapeType[ShapeType[\"paperTape\"] = 29] = \"paperTape\";\r\n ShapeType[ShapeType[\"manualOperation\"] = 30] = \"manualOperation\";\r\n ShapeType[ShapeType[\"delay\"] = 31] = \"delay\";\r\n ShapeType[ShapeType[\"storedData\"] = 32] = \"storedData\";\r\n ShapeType[ShapeType[\"display\"] = 33] = \"display\";\r\n ShapeType[ShapeType[\"merge\"] = 34] = \"merge\";\r\n ShapeType[ShapeType[\"connector\"] = 35] = \"connector\";\r\n ShapeType[ShapeType[\"or\"] = 36] = \"or\";\r\n ShapeType[ShapeType[\"summingJunction\"] = 37] = \"summingJunction\";\r\n // Containers\r\n ShapeType[ShapeType[\"verticalContainer\"] = 38] = \"verticalContainer\";\r\n ShapeType[ShapeType[\"horizontalContainer\"] = 39] = \"horizontalContainer\";\r\n // Shapes with images\r\n ShapeType[ShapeType[\"cardWithImageOnLeft\"] = 40] = \"cardWithImageOnLeft\";\r\n ShapeType[ShapeType[\"cardWithImageOnTop\"] = 41] = \"cardWithImageOnTop\";\r\n ShapeType[ShapeType[\"cardWithImageOnRight\"] = 42] = \"cardWithImageOnRight\";\r\n})(ShapeType = exports.ShapeType || (exports.ShapeType = {}));\r\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Point = (function () {\r\n function Point(x, y) {\r\n this.x = x;\r\n this.y = y;\r\n }\r\n Point.zero = function () {\r\n return new Point(0, 0);\r\n };\r\n Point.fromNumber = function (num) {\r\n return new Point(num, num);\r\n };\r\n Point.prototype.isZero = function () {\r\n return this.x === 0 && this.y === 0;\r\n };\r\n Point.prototype.toString = function () {\r\n return JSON.stringify(this);\r\n };\r\n Point.prototype.copyFrom = function (obj) {\r\n this.x = obj.x;\r\n this.y = obj.y;\r\n };\r\n Point.prototype.clone = function () {\r\n return new Point(this.x, this.y);\r\n };\r\n Point.prototype.equals = function (obj) {\r\n return this.x === obj.x && this.y === obj.y;\r\n };\r\n Point.prototype.offset = function (offsetX, offsetY) {\r\n this.x += offsetX;\r\n this.y += offsetY;\r\n return this;\r\n };\r\n Point.prototype.offsetByPoint = function (offset) {\r\n this.x += offset.x;\r\n this.y += offset.y;\r\n return this;\r\n };\r\n Point.prototype.multiply = function (multiplierX, multiplierY) {\r\n this.x *= multiplierX;\r\n this.y *= multiplierY;\r\n return this;\r\n };\r\n Point.prototype.negative = function () {\r\n this.x *= -1;\r\n this.y *= -1;\r\n return this;\r\n };\r\n Point.prototype.applyConverter = function (converter) {\r\n this.x = converter(this.x);\r\n this.y = converter(this.y);\r\n return this;\r\n };\r\n Point.plus = function (a, b) {\r\n return new Point(a.x + b.x, a.y + b.y);\r\n };\r\n Point.minus = function (a, b) {\r\n return new Point(a.x - b.x, a.y - b.y);\r\n };\r\n Point.xComparer = function (a, b) {\r\n return a.x - b.x;\r\n };\r\n Point.yComparer = function (a, b) {\r\n return a.y - b.y;\r\n };\r\n Point.equals = function (a, b) {\r\n return a.x === b.x && a.y === b.y;\r\n };\r\n return Point;\r\n}());\r\nexports.Point = Point;\r\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Size = (function () {\r\n function Size(width, height) {\r\n this.width = width;\r\n this.height = height;\r\n }\r\n Size.empty = function () {\r\n return new Size(0, 0);\r\n };\r\n Size.fromNumber = function (num) {\r\n return new Size(num, num);\r\n };\r\n Size.initByCommonAction = function (action) {\r\n var widthAdp = function (s) { return s.width; };\r\n var heightAdp = function (s) { return s.height; };\r\n return new Size(action(widthAdp, heightAdp), action(heightAdp, widthAdp));\r\n };\r\n Size.prototype.isEmpty = function () {\r\n return this.width === 0 && this.height === 0;\r\n };\r\n Size.prototype.toString = function () {\r\n return JSON.stringify(this);\r\n };\r\n Size.prototype.nonNegativeSize = function () {\r\n if (this.width < 0)\r\n this.width = 0;\r\n if (this.height < 0)\r\n this.height = 0;\r\n return this;\r\n };\r\n Size.prototype.offset = function (offsetWidth, offsetHeight) {\r\n this.width = this.width + offsetWidth;\r\n this.height = this.height + offsetHeight;\r\n return this;\r\n };\r\n Size.prototype.multiply = function (multiplierW, multiplierH) {\r\n this.width *= multiplierW;\r\n this.height *= multiplierH;\r\n return this;\r\n };\r\n Size.prototype.equals = function (obj) {\r\n return this.width === obj.width && this.height === obj.height;\r\n };\r\n Size.prototype.clone = function () {\r\n return new Size(this.width, this.height);\r\n };\r\n Size.prototype.copyFrom = function (obj) {\r\n this.width = obj.width;\r\n this.height = obj.height;\r\n };\r\n Size.prototype.applyConverter = function (conv) {\r\n this.width = conv(this.width);\r\n this.height = conv(this.height);\r\n return this;\r\n };\r\n Size.equals = function (a, b) {\r\n return a.width === b.width && a.height === b.height;\r\n };\r\n return Size;\r\n}());\r\nexports.Size = Size;\r\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.HtmlFocusUtils = exports.ObjectUtils = exports.GeometryUtils = exports.Utils = exports.EventDispatcher = exports.Range = exports.LineEquation = void 0;\r\n__webpack_require__(175);\r\nvar size_1 = __webpack_require__(2);\r\nvar point_1 = __webpack_require__(1);\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar search_1 = __webpack_require__(42);\r\nvar metrics_1 = __webpack_require__(36);\r\nvar math_1 = __webpack_require__(32);\r\nvar vector_1 = __webpack_require__(58);\r\nvar segment_1 = __webpack_require__(33);\r\nvar Style_1 = __webpack_require__(27);\r\nvar browser_1 = __webpack_require__(19);\r\nvar LineEquation = /** @class */ (function () {\r\n function LineEquation(aParam, bParam, cParam) {\r\n this.aParam = aParam;\r\n this.bParam = bParam;\r\n this.cParam = cParam;\r\n }\r\n LineEquation.fromPoints = function (pointA, pointB, accuracy) {\r\n if (accuracy === void 0) { accuracy = 0.00001; }\r\n return !GeometryUtils.areDuplicatedPoints(pointA, pointB, accuracy) ?\r\n new LineEquation(pointB.y - pointA.y, pointA.x - pointB.x, pointB.x * pointA.y - pointA.x * pointB.y) : undefined;\r\n };\r\n LineEquation.prototype.getPointIntersection = function (other, accuracy) {\r\n if (accuracy === void 0) { accuracy = 0.00001; }\r\n var A1 = this.aParam;\r\n var B1 = this.bParam;\r\n var C1 = this.cParam;\r\n var A2 = other.aParam;\r\n var B2 = other.bParam;\r\n var C2 = other.cParam;\r\n var v = A2 * B1 - A1 * B2;\r\n if (math_1.MathUtils.numberCloseTo(v, 0, accuracy))\r\n return null;\r\n if (A1 === 0) {\r\n var x = (B2 * C1 - C2 * B1) / (B1 * A2);\r\n return this.createPoint(x, -C1 / B1);\r\n }\r\n var y = (C2 * A1 - C1 * A2) / v;\r\n return this.createPoint((-B1 * y - C1) / A1, y);\r\n };\r\n LineEquation.prototype.containsPoint = function (point, accuracy) {\r\n if (accuracy === void 0) { accuracy = 0.00001; }\r\n return math_1.MathUtils.numberCloseTo(this.aParam * point.x + this.bParam * point.y + this.cParam, 0, accuracy);\r\n };\r\n LineEquation.prototype.createPoint = function (x, y, accuracy) {\r\n if (accuracy === void 0) { accuracy = 0.00001; }\r\n return new point_1.Point(math_1.MathUtils.numberCloseTo(x, 0, accuracy) ? 0 : x, math_1.MathUtils.numberCloseTo(y, 0, accuracy) ? 0 : y);\r\n };\r\n return LineEquation;\r\n}());\r\nexports.LineEquation = LineEquation;\r\nvar Range = /** @class */ (function () {\r\n function Range(from, to) {\r\n this.from = from;\r\n this.to = to !== undefined ? to : from;\r\n }\r\n Object.defineProperty(Range.prototype, \"length\", {\r\n get: function () {\r\n return Math.abs(this.to - this.from);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Range.prototype.extend = function (range) {\r\n this.from = Math.min(range.from, this.from);\r\n this.to = Math.max(range.to, this.to);\r\n };\r\n Range.prototype.includes = function (value) {\r\n return value >= this.from && value <= this.to;\r\n };\r\n Range.fromLength = function (from, length) {\r\n return new Range(from, from + length);\r\n };\r\n return Range;\r\n}());\r\nexports.Range = Range;\r\nvar EventDispatcher = /** @class */ (function () {\r\n function EventDispatcher() {\r\n this.listeners = [];\r\n }\r\n EventDispatcher.prototype.add = function (listener) {\r\n if (!listener)\r\n throw new Error(\"Not Implemented\");\r\n if (!this.hasEventListener(listener))\r\n this.listeners.push(listener);\r\n };\r\n EventDispatcher.prototype.remove = function (listener) {\r\n for (var i = 0, currentListener = void 0; currentListener = this.listeners[i]; i++)\r\n if (currentListener === listener) {\r\n this.listeners.splice(i, 1);\r\n break;\r\n }\r\n };\r\n EventDispatcher.prototype.raise = function (funcName) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n for (var i = 0, listener = void 0; listener = this.listeners[i]; i++) {\r\n var func = listener[funcName];\r\n func && func.apply(listener, args);\r\n }\r\n };\r\n EventDispatcher.prototype.raise1 = function (action) {\r\n for (var i = 0, listener = void 0; listener = this.listeners[i]; i++)\r\n action(listener);\r\n };\r\n EventDispatcher.prototype.hasEventListener = function (listener) {\r\n for (var i = 0, l = this.listeners.length; i < l; i++)\r\n if (this.listeners[i] === listener)\r\n return true;\r\n return false;\r\n };\r\n return EventDispatcher;\r\n}());\r\nexports.EventDispatcher = EventDispatcher;\r\nvar Utils = /** @class */ (function () {\r\n function Utils() {\r\n }\r\n Utils.flatten = function (arr) {\r\n return [].concat.apply([], arr);\r\n };\r\n return Utils;\r\n}());\r\nexports.Utils = Utils;\r\nvar GeometryUtils = /** @class */ (function () {\r\n function GeometryUtils() {\r\n }\r\n GeometryUtils.getCommonRectangle = function (rects) {\r\n if (!rects.length)\r\n return new rectangle_1.Rectangle(0, 0, 0, 0);\r\n var minX = Number.MAX_VALUE;\r\n var maxX = -Number.MAX_VALUE;\r\n var minY = Number.MAX_VALUE;\r\n var maxY = -Number.MAX_VALUE;\r\n rects.forEach(function (rect) {\r\n minX = Math.min(minX, rect.x);\r\n maxX = Math.max(maxX, rect.right);\r\n minY = Math.min(minY, rect.y);\r\n maxY = Math.max(maxY, rect.bottom);\r\n });\r\n return new rectangle_1.Rectangle(minX, minY, maxX - minX, maxY - minY);\r\n };\r\n GeometryUtils.findFreeSpace = function (rects, size, exact, targetRect) {\r\n var xs = [targetRect ? targetRect.x : 0];\r\n var ys = [targetRect ? targetRect.y : 0];\r\n rects.forEach(function (r) {\r\n xs.push(r.x);\r\n xs.push(r.right);\r\n ys.push(r.y);\r\n ys.push(r.bottom);\r\n });\r\n xs = xs.sort(function (a, b) { return a - b; }).reduce(function (acc, v, index) { return (xs[index - 1] !== v && acc.push(v) && acc) || acc; }, []); // magic for distinct\r\n ys = ys.sort(function (a, b) { return a - b; }).reduce(function (acc, v, index) { return (ys[index - 1] !== v && acc.push(v) && acc) || acc; }, []);\r\n var matrix = ys.map(function (y) { return xs.map(function (x, i) { return xs[i + 1] - x; }); });\r\n var _loop_1 = function (i, rect) {\r\n var xi0 = search_1.SearchUtils.binaryIndexOf(xs, function (a) { return a - rect.x; });\r\n var xi1 = search_1.SearchUtils.binaryIndexOf(xs, function (a) { return a - rect.right; });\r\n var yi0 = search_1.SearchUtils.binaryIndexOf(ys, function (a) { return a - rect.y; });\r\n var yi1 = search_1.SearchUtils.binaryIndexOf(ys, function (a) { return a - rect.bottom; });\r\n for (var y = yi0; y < yi1; y++)\r\n for (var x = xi0; x < xi1; x++)\r\n matrix[y][x] *= -1;\r\n };\r\n for (var i = 0, rect = void 0; rect = rects[i]; i++) {\r\n _loop_1(i, rect);\r\n }\r\n for (var yi = 0; yi < ys.length; yi++)\r\n for (var xi = 0; xi < xs.length - 1; xi++) {\r\n var checkResult = this.checkRect(matrix, ys, xs, yi, xi, size, exact);\r\n if (checkResult > 0)\r\n xi = checkResult;\r\n else if (checkResult === 0)\r\n return new point_1.Point(xs[xi], ys[yi]);\r\n }\r\n return null;\r\n };\r\n // wtf\r\n GeometryUtils.checkRect = function (matrix, ys, xs, yimin, ximin, size, exact) {\r\n var height = 0;\r\n var width = 0;\r\n var ximax = xs.length - 2;\r\n for (var yi = yimin; yi < ys.length; yi++) {\r\n height = ys[yi + 1] - ys[yimin];\r\n for (var xi = ximin; xi <= ximax; xi++) {\r\n if (matrix[yi][xi] < 0)\r\n return xi === 0 ? -1 : xi; // move left?\r\n width = xs[xi + 1] - xs[ximin];\r\n if (size.width <= width || (!exact && xi === xs.length - 2 && size.width / 2 <= width)) {\r\n if (size.height <= height || (!exact && yi === ys.length - 2 && size.height / 2 <= height))\r\n return 0;\r\n ximax = xi;\r\n }\r\n }\r\n }\r\n };\r\n GeometryUtils.getArrowPoints = function (point, directionPoint, arrowHeight, arrowWidth) {\r\n if (point.x === directionPoint.x && point.y === directionPoint.y)\r\n return { point1: point.clone(), point2: point.clone(), point3: point.clone() };\r\n var catX = directionPoint.x - point.x;\r\n var catY = directionPoint.y - point.y;\r\n var hypotenuse = Math.sqrt(Math.pow(catX, 2) + Math.pow(catY, 2));\r\n var cos = catX / hypotenuse;\r\n var sin = catY / hypotenuse;\r\n var x1 = point.x + arrowHeight * cos + arrowWidth * sin;\r\n var y1 = point.y + arrowHeight * sin - arrowWidth * cos;\r\n var x2 = point.x + arrowHeight * cos - arrowWidth * sin;\r\n var y2 = point.y + arrowHeight * sin + arrowWidth * cos;\r\n var x3 = point.x + arrowHeight * cos;\r\n var y3 = point.y + arrowHeight * sin;\r\n return { point1: new point_1.Point(x1, y1), point2: new point_1.Point(x2, y2), point3: new point_1.Point(x3, y3) };\r\n };\r\n GeometryUtils.createSegments = function (points) {\r\n var result = [];\r\n for (var i = 1; i < points.length; i++)\r\n result.push(new segment_1.Segment(points[i - 1], points[i]));\r\n return result;\r\n };\r\n GeometryUtils.createRectagle = function (points) {\r\n var xarr = points.map(function (p) { return p.x; });\r\n var yarr = points.map(function (p) { return p.y; });\r\n var minX = xarr.reduce(function (prev, cur) { return Math.min(prev, cur); }, Number.MAX_VALUE);\r\n var maxX = xarr.reduce(function (prev, cur) { return Math.max(prev, cur); }, -Number.MAX_VALUE);\r\n var minY = yarr.reduce(function (prev, cur) { return Math.min(prev, cur); }, Number.MAX_VALUE);\r\n var maxY = yarr.reduce(function (prev, cur) { return Math.max(prev, cur); }, -Number.MAX_VALUE);\r\n return new rectangle_1.Rectangle(minX, minY, maxX - minX, maxY - minY);\r\n };\r\n GeometryUtils.createSegmentsFromRectangle = function (rect) {\r\n var result = [];\r\n var topLeft = new point_1.Point(rect.x, rect.y);\r\n var topRight = new point_1.Point(rect.right, rect.y);\r\n var bottomRight = new point_1.Point(rect.right, rect.bottom);\r\n var bottomLeft = new point_1.Point(rect.x, rect.bottom);\r\n result.push(new segment_1.Segment(topLeft, topRight));\r\n result.push(new segment_1.Segment(topRight, bottomRight));\r\n result.push(new segment_1.Segment(bottomRight, bottomLeft));\r\n result.push(new segment_1.Segment(bottomLeft, topLeft));\r\n return result;\r\n };\r\n GeometryUtils.areSegmentsCutRectangle = function (segments, rect) {\r\n if (!rect)\r\n return false;\r\n var rectanlePolygonalChain = GeometryUtils.createSegmentsFromRectangle(rect);\r\n var hasSegmentIn = false;\r\n var hasSegmentOut = false;\r\n var _loop_2 = function (i) {\r\n if (hasSegmentIn && hasSegmentOut)\r\n return { value: true };\r\n var segment = segments[i];\r\n if (segment.isIntersectedByRect(rect)) {\r\n var startPoint_1 = segment.startPoint;\r\n var endPoint_1 = segment.endPoint;\r\n var currentContainsStart = rect.containsPoint(startPoint_1);\r\n var currentContainsEnd = rect.containsPoint(endPoint_1);\r\n if (!currentContainsStart && !currentContainsEnd)\r\n return { value: true };\r\n if (currentContainsStart && !currentContainsEnd) {\r\n var rectLinesContainsStart_1 = rectanlePolygonalChain.filter(function (s) { return s.containsPoint(startPoint_1); });\r\n if (rectLinesContainsStart_1.length > 0) {\r\n var otherRectSegments = rectanlePolygonalChain.filter(function (s) {\r\n if (rectLinesContainsStart_1.length === 1)\r\n return !s.containsPoint(rectLinesContainsStart_1[0].startPoint) && !s.containsPoint(rectLinesContainsStart_1[0].endPoint);\r\n return s !== rectLinesContainsStart_1[0] && s !== rectLinesContainsStart_1[1];\r\n });\r\n if (otherRectSegments.some(function (s) { return segment.isIntersected(s); }) && !hasSegmentIn)\r\n hasSegmentIn = true;\r\n }\r\n if (!hasSegmentOut)\r\n hasSegmentOut = true;\r\n return \"continue\";\r\n }\r\n if (!currentContainsStart && currentContainsEnd) {\r\n if (!hasSegmentIn) {\r\n hasSegmentIn = true;\r\n if (hasSegmentOut)\r\n hasSegmentOut = false;\r\n }\r\n var rectLinesContainsEnd_1 = rectanlePolygonalChain.filter(function (s) { return s.containsPoint(endPoint_1); });\r\n if (rectLinesContainsEnd_1.length > 0) {\r\n var otherRectSegments = rectanlePolygonalChain.filter(function (s) {\r\n if (rectLinesContainsEnd_1.length === 1)\r\n return !s.containsPoint(rectLinesContainsEnd_1[0].startPoint) && !s.containsPoint(rectLinesContainsEnd_1[0].endPoint);\r\n return s !== rectLinesContainsEnd_1[0] && s !== rectLinesContainsEnd_1[1];\r\n });\r\n if (otherRectSegments.some(function (s) { return segment.isIntersected(s); }) && !hasSegmentOut)\r\n hasSegmentOut = true;\r\n }\r\n return \"continue\";\r\n }\r\n var rectLinesContainsStart = rectanlePolygonalChain.filter(function (s) { return s.containsPoint(startPoint_1); });\r\n var rectLinesContainsEnd = rectanlePolygonalChain.filter(function (s) { return s.containsPoint(endPoint_1); });\r\n if (rectLinesContainsStart.length === 2 && rectLinesContainsEnd.length === 2)\r\n return { value: true };\r\n if (rectLinesContainsStart.length === 1 && rectLinesContainsEnd.length === 1 &&\r\n rectLinesContainsStart[0] !== rectLinesContainsEnd[0])\r\n return { value: true };\r\n if (!hasSegmentOut && rectLinesContainsEnd.length === 1 && !rectLinesContainsStart.length)\r\n hasSegmentOut = true;\r\n if (!hasSegmentIn && rectLinesContainsStart.length === 1 && !rectLinesContainsEnd.length) {\r\n hasSegmentIn = true;\r\n if (hasSegmentOut)\r\n hasSegmentOut = false;\r\n }\r\n }\r\n };\r\n for (var i = 0; i < segments.length; i++) {\r\n var state_1 = _loop_2(i);\r\n if (typeof state_1 === \"object\")\r\n return state_1.value;\r\n }\r\n return hasSegmentIn && hasSegmentOut;\r\n };\r\n GeometryUtils.areIntersectedSegments = function (segments, otherSegments) {\r\n if (!otherSegments)\r\n return false;\r\n var segmentIndex = 0;\r\n var segment;\r\n while (segment = segments[segmentIndex]) {\r\n var otherSegmentIndex = 0;\r\n var otherSegment = void 0;\r\n while (otherSegment = otherSegments[otherSegmentIndex]) {\r\n if (otherSegment.isIntersected(segment))\r\n return true;\r\n otherSegmentIndex++;\r\n }\r\n segmentIndex++;\r\n }\r\n return false;\r\n };\r\n GeometryUtils.isLineIntersected = function (beginLinePoint, endLinePoint, segment, excludeBeginPoint, excludeEndPoint) {\r\n var line = LineEquation.fromPoints(beginLinePoint, endLinePoint);\r\n var segmentStartPoint = segment.startPoint;\r\n var segmentEndPoint = segment.endPoint;\r\n if (line.containsPoint(segmentStartPoint) && line.containsPoint(segmentEndPoint))\r\n return !excludeBeginPoint && !excludeEndPoint;\r\n var segmentLine = LineEquation.fromPoints(segmentStartPoint, segmentEndPoint);\r\n var intersection = segmentLine.getPointIntersection(line);\r\n if (!intersection || !segment.containsPoint(intersection))\r\n return false;\r\n if (excludeBeginPoint)\r\n return !GeometryUtils.areDuplicatedPoints(segmentStartPoint, intersection);\r\n if (excludeEndPoint)\r\n return !GeometryUtils.areDuplicatedPoints(segmentEndPoint, intersection);\r\n return true;\r\n };\r\n GeometryUtils.removeUnnecessaryPoints = function (points, removeCallback, checkCallback, accuracy) {\r\n if (checkCallback === void 0) { checkCallback = function (p) { return p !== undefined; }; }\r\n if (accuracy === void 0) { accuracy = 0.00001; }\r\n this.removeUnnecessaryPointsCore(points, removeCallback, checkCallback, accuracy);\r\n this.removeBackwardPoints(points, removeCallback, checkCallback, accuracy);\r\n this.removeUnnecessaryPointsCore(points, removeCallback, checkCallback, accuracy);\r\n };\r\n GeometryUtils.removeUnnecessaryRightAnglePoints = function (points, removeCallback, checkCallback, accuracy) {\r\n if (checkCallback === void 0) { checkCallback = function (p) { return p !== undefined; }; }\r\n if (accuracy === void 0) { accuracy = 0.00001; }\r\n this.removeUnnecessaryPointsCore(points, removeCallback, checkCallback, accuracy);\r\n this.removeBackwardPoints(points, removeCallback, checkCallback, accuracy);\r\n this.removeNotRightAnglePoints(points, removeCallback, checkCallback, accuracy);\r\n this.removeUnnecessaryPointsCore(points, removeCallback, checkCallback, accuracy);\r\n };\r\n GeometryUtils.removeUnnecessaryPointsCore = function (points, removeCallback, checkCallback, accuracy) {\r\n if (checkCallback === void 0) { checkCallback = function (p) { return p !== undefined; }; }\r\n if (accuracy === void 0) { accuracy = 0.00001; }\r\n this.removeDuplicatedPoints(points, removeCallback, checkCallback, accuracy);\r\n this.removeNotCornersPoints(points, removeCallback, checkCallback, accuracy);\r\n };\r\n GeometryUtils.removeNotRightAnglePoints = function (points, removeCallback, checkCallback, accuracy) {\r\n if (checkCallback === void 0) { checkCallback = function (p) { return p !== undefined; }; }\r\n if (accuracy === void 0) { accuracy = 0.00001; }\r\n var index = 0;\r\n var point;\r\n while ((point = points[index]) && points.length > 2) {\r\n var nextPoint = this.getNextPoint(points, index, 1, checkCallback);\r\n var prevPoint = this.getNextPoint(points, index, -1, checkCallback);\r\n if (!prevPoint || !nextPoint ||\r\n GeometryUtils.isRightAngleCorner(prevPoint, point, nextPoint, accuracy) ||\r\n !removeCallback(point, index))\r\n index++;\r\n }\r\n };\r\n GeometryUtils.removeDuplicatedPoints = function (points, removeCallback, checkCallback, accuracy) {\r\n if (checkCallback === void 0) { checkCallback = function (p) { return p !== undefined; }; }\r\n if (accuracy === void 0) { accuracy = 0.00001; }\r\n var index = 0;\r\n var point;\r\n while ((point = points[index]) && points.length > 2) {\r\n var nextPoint = this.getNextPoint(points, index, 1, checkCallback);\r\n if (nextPoint && GeometryUtils.areDuplicatedPoints(point, nextPoint, accuracy)) {\r\n var actualIndex = index === points.length - 2 ? index : index + 1;\r\n if (removeCallback(points[actualIndex], actualIndex))\r\n continue;\r\n }\r\n index++;\r\n }\r\n };\r\n GeometryUtils.removeNotCornersPoints = function (points, removeCallback, checkCallback, accuracy) {\r\n if (checkCallback === void 0) { checkCallback = function (p) { return p !== undefined; }; }\r\n if (accuracy === void 0) { accuracy = 0.00001; }\r\n var index = 0;\r\n var point;\r\n while ((point = points[index]) && points.length > 2) {\r\n var nextPoint = this.getNextPoint(points, index, 1, checkCallback);\r\n var prevPoint = this.getNextPoint(points, index, -1, checkCallback);\r\n if (!prevPoint || !nextPoint ||\r\n GeometryUtils.isCorner(prevPoint, point, nextPoint, accuracy) ||\r\n !removeCallback(point, index))\r\n index++;\r\n }\r\n };\r\n GeometryUtils.removeBackwardPoints = function (points, removeCallback, checkCallback, accuracy) {\r\n if (checkCallback === void 0) { checkCallback = function (p) { return p !== undefined; }; }\r\n if (accuracy === void 0) { accuracy = 0.00001; }\r\n var index = 0;\r\n var point;\r\n while ((point = points[index]) && points.length > 2) {\r\n var nextPoint = this.getNextPoint(points, index, 1, checkCallback);\r\n var prevPoint = this.getNextPoint(points, index, -1, checkCallback);\r\n if (!prevPoint || !nextPoint ||\r\n !GeometryUtils.isBackwardPoint(prevPoint, point, nextPoint, accuracy) ||\r\n !removeCallback(point, index))\r\n index++;\r\n }\r\n };\r\n GeometryUtils.isRightAngleCorner = function (prev, current, next, accuracy) {\r\n if (accuracy === void 0) { accuracy = 0.00001; }\r\n return math_1.MathUtils.numberCloseTo(GeometryUtils.createAngle(prev, current, next), Math.PI / 2.0, accuracy) ||\r\n math_1.MathUtils.numberCloseTo(GeometryUtils.createAngle(prev, current, next), Math.PI, accuracy) ||\r\n math_1.MathUtils.numberCloseTo(GeometryUtils.createAngle(prev, current, next), 3.0 * Math.PI / 2.0, accuracy);\r\n };\r\n GeometryUtils.isCorner = function (prev, current, next, accuracy) {\r\n if (accuracy === void 0) { accuracy = 0.00001; }\r\n return !math_1.MathUtils.numberCloseTo(GeometryUtils.createAngle(prev, current, next), 0, accuracy);\r\n };\r\n GeometryUtils.areDuplicatedPoints = function (current, next, accuracy) {\r\n if (accuracy === void 0) { accuracy = 0.00001; }\r\n return (math_1.MathUtils.numberCloseTo(current.x, next.x, accuracy) && math_1.MathUtils.numberCloseTo(current.y, next.y, accuracy));\r\n };\r\n GeometryUtils.isBackwardPoint = function (prev, current, next, accuracy) {\r\n if (accuracy === void 0) { accuracy = 0.00001; }\r\n return math_1.MathUtils.numberCloseTo(GeometryUtils.createAngle(prev, current, next), Math.PI, accuracy);\r\n };\r\n GeometryUtils.createAngle = function (prev, current, next) {\r\n var vector1 = vector_1.Vector.fromPoints(current, next);\r\n var vector2 = vector_1.Vector.fromPoints(prev, current);\r\n var vector1X = vector1.x;\r\n var vector1Y = vector1.y;\r\n var vector2X = vector2.x;\r\n var vector2Y = vector2.y;\r\n var atan = Math.atan2(vector1X * vector2Y - vector2X * vector1Y, vector1X * vector2X + vector1Y * vector2Y);\r\n return atan < 0 ? 2 * Math.PI + atan : atan;\r\n };\r\n GeometryUtils.getNextPoint = function (points, index, step, checkCallback) {\r\n var result;\r\n var newIndex = index + step;\r\n while (result = points[newIndex]) {\r\n if (checkCallback(result))\r\n return result;\r\n newIndex = newIndex + step;\r\n }\r\n };\r\n GeometryUtils.addSelectedLinesTo = function (prevPt, pt, nextPt, offsetX, offsetY, offsetXNegative, offsetYNegative, nextOffsetX, nextOffsetY, nextOffsetXNegative, nextOffsetYNegative, addSelectedLine, addSelectedLineWB, accuracy) {\r\n if (accuracy === void 0) { accuracy = 0.00001; }\r\n var a1 = pt.y - prevPt.y;\r\n var a2 = nextPt.y - pt.y;\r\n var b1 = prevPt.x - pt.x;\r\n var b2 = pt.x - nextPt.x;\r\n var det = a1 * b2 - a2 * b1;\r\n if (!math_1.MathUtils.numberCloseTo(det, 0, accuracy)) {\r\n var c1 = a1 * (prevPt.x + offsetX) + b1 * (prevPt.y + offsetY);\r\n var c2 = a2 * (pt.x + nextOffsetX) + b2 * (pt.y + nextOffsetY);\r\n addSelectedLine((b2 * c1 - b1 * c2) / det, (a1 * c2 - a2 * c1) / det);\r\n var c1WB = a1 * (prevPt.x + offsetXNegative) + b1 * (prevPt.y + offsetYNegative);\r\n var c2WB = a2 * (pt.x + nextOffsetXNegative) + b2 * (pt.y + nextOffsetYNegative);\r\n addSelectedLineWB((b2 * c1WB - b1 * c2WB) / det, (a1 * c2WB - a2 * c1WB) / det);\r\n }\r\n };\r\n GeometryUtils.getSelectionOffsetPoint = function (prev, current, distance) {\r\n return new point_1.Point((prev.y - current.y) / distance, (current.x - prev.x) / distance);\r\n };\r\n GeometryUtils.getSelectionTextStartEndPoints = function (prev, current, distance, center, size, align) {\r\n var cos = (current.x - prev.x) / distance;\r\n var sin = (current.y - prev.y) / distance;\r\n var width = size.width * cos + size.height * sin;\r\n switch (align) {\r\n case Style_1.TextAlignment.Left:\r\n return [center, new point_1.Point(center.x + cos * width, center.y + sin * width)];\r\n case Style_1.TextAlignment.Right:\r\n return [new point_1.Point(center.x - cos * width, center.y - sin * width), center];\r\n default:\r\n return [\r\n new point_1.Point(center.x - 0.5 * cos * width, center.y - 0.5 * sin * width),\r\n new point_1.Point(center.x + 0.5 * cos * width, center.y + 0.5 * sin * width)\r\n ];\r\n }\r\n };\r\n GeometryUtils.getPathLength = function (points) {\r\n var length = 0;\r\n var prevPt;\r\n points.forEach(function (pt) {\r\n if (prevPt !== undefined)\r\n length += metrics_1.Metrics.euclideanDistance(pt, prevPt);\r\n prevPt = pt;\r\n });\r\n return length;\r\n };\r\n GeometryUtils.getPathPointByPosition = function (points, relativePosition) {\r\n if (!points.length)\r\n throw new Error(\"Invalid points\");\r\n if (0 > relativePosition || relativePosition > 1)\r\n throw new Error(\"Invalid relative position\");\r\n var length = this.getPathLength(points);\r\n if (points.length <= 2 && length === 0 || relativePosition === 0)\r\n return [points[0], 0];\r\n var targetLength = length * relativePosition;\r\n var currentLength = 0;\r\n for (var i = 1; i < points.length; i++) {\r\n var lineLength = metrics_1.Metrics.euclideanDistance(points[i], points[i - 1]);\r\n if (currentLength + lineLength >= targetLength) {\r\n var delta = targetLength - currentLength;\r\n var cos = (points[i].x - points[i - 1].x) / lineLength;\r\n var sin = (points[i].y - points[i - 1].y) / lineLength;\r\n return [new point_1.Point(points[i - 1].x + cos * delta, points[i - 1].y + sin * delta), i];\r\n }\r\n currentLength += lineLength;\r\n }\r\n return [points[points.length - 1], points.length - 1];\r\n };\r\n GeometryUtils.getLineAngle = function (beginPoint, endPoint) {\r\n return Math.atan2(endPoint.y - beginPoint.y, endPoint.x - beginPoint.x);\r\n };\r\n GeometryUtils.getTriangleBeginAngle = function (beginPoint, endPoint, point) {\r\n var lineAngle = this.getLineAngle(beginPoint, endPoint);\r\n var beginPointAngle = this.getLineAngle(beginPoint, point);\r\n return Math.abs(beginPointAngle - lineAngle);\r\n };\r\n GeometryUtils.getTriangleEndAngle = function (beginPoint, endPoint, point) {\r\n var lineAngle = this.getLineAngle(beginPoint, endPoint);\r\n var endPointAngle = this.getLineAngle(point, endPoint);\r\n return Math.abs(lineAngle - endPointAngle);\r\n };\r\n GeometryUtils.getPathPointByPoint = function (points, point) {\r\n if (!points.length)\r\n throw new Error(\"Invalid points\");\r\n if (points.length === 1)\r\n return points[0];\r\n var distance = Number.MAX_VALUE;\r\n var result;\r\n for (var i = 1; i < points.length; i++) {\r\n var beginPoint = points[i - 1];\r\n var endPoint = points[i];\r\n if (point.equals(beginPoint)) {\r\n result = beginPoint.clone();\r\n break;\r\n }\r\n if (point.equals(endPoint)) {\r\n result = endPoint.clone();\r\n break;\r\n }\r\n var beginAngle = this.getTriangleBeginAngle(beginPoint, endPoint, point);\r\n var endAngle = this.getTriangleEndAngle(beginPoint, endPoint, point);\r\n var beginDistance = metrics_1.Metrics.euclideanDistance(point, beginPoint);\r\n var endDistance = metrics_1.Metrics.euclideanDistance(point, endPoint);\r\n var orthOffset = beginDistance * Math.sin(beginAngle);\r\n var currentDistance = void 0;\r\n if (Math.PI / 2 <= beginAngle && beginAngle <= Math.PI * 3 / 2)\r\n currentDistance = beginDistance;\r\n else if (Math.PI / 2 <= endAngle && endAngle <= Math.PI * 3 / 2)\r\n currentDistance = endDistance;\r\n else\r\n currentDistance = Math.abs(orthOffset);\r\n if (currentDistance < distance) {\r\n distance = currentDistance;\r\n if (Math.PI / 2 <= beginAngle && beginAngle <= Math.PI * 3 / 2)\r\n result = beginPoint.clone();\r\n else if (Math.PI / 2 <= endAngle && endAngle <= Math.PI * 3 / 2)\r\n result = endPoint.clone();\r\n else {\r\n var round = Math.fround || Math.round;\r\n var lineAngle = this.getLineAngle(beginPoint, endPoint);\r\n var offsetX = round(Math.abs(orthOffset * Math.sin(lineAngle)));\r\n var offsetY = round(Math.abs(orthOffset * Math.cos(lineAngle)));\r\n var isAbove = point.y - beginPoint.y < round((point.x - beginPoint.x) * Math.tan(lineAngle));\r\n if (0 <= lineAngle && lineAngle <= Math.PI / 2) {\r\n offsetX *= isAbove ? -1 : 1;\r\n offsetY *= isAbove ? 1 : -1;\r\n }\r\n else if (Math.PI / 2 <= lineAngle && lineAngle <= Math.PI) {\r\n offsetX *= isAbove ? 1 : -1;\r\n offsetY *= isAbove ? 1 : -1;\r\n }\r\n else if (0 >= lineAngle && lineAngle >= -Math.PI / 2) {\r\n offsetX *= isAbove ? 1 : -1;\r\n offsetY *= isAbove ? 1 : -1;\r\n }\r\n else if (-Math.PI / 2 >= lineAngle && lineAngle >= -Math.PI) {\r\n offsetX *= isAbove ? -1 : 1;\r\n offsetY *= isAbove ? 1 : -1;\r\n }\r\n result = point.clone().offset(offsetX, offsetY);\r\n }\r\n }\r\n }\r\n return result;\r\n };\r\n GeometryUtils.getPathPositionByPoint = function (points, point, maxPositionCount) {\r\n if (maxPositionCount === void 0) { maxPositionCount = 100; }\r\n point = this.getPathPointByPoint(points, point);\r\n var length = this.getPathLength(points);\r\n var currentLength = 0;\r\n for (var i = 1; i < points.length; i++) {\r\n var beginPoint = points[i - 1];\r\n var endPoint = points[i];\r\n var lineLength = metrics_1.Metrics.euclideanDistance(endPoint, beginPoint);\r\n var angle = Math.atan((endPoint.y - beginPoint.y) / (endPoint.x - beginPoint.x));\r\n var round = Math.fround || Math.round;\r\n if ((point.x === endPoint.x && point.x === beginPoint.x) || (point.y === endPoint.y && point.y === beginPoint.y) ||\r\n round(point.y - beginPoint.y) === round((point.x - beginPoint.x) * Math.tan(angle))) {\r\n if (Math.sin(angle) !== 0)\r\n currentLength += Math.abs((point.y - beginPoint.y) / Math.sin(angle));\r\n else\r\n currentLength += Math.abs(point.x - beginPoint.x);\r\n return Math.round(currentLength * maxPositionCount / length) / maxPositionCount;\r\n }\r\n currentLength += lineLength;\r\n }\r\n return 1;\r\n };\r\n GeometryUtils.arePointsEqual = function (points1, points2) {\r\n var count1 = points1.length;\r\n var count2 = points2.length;\r\n if (count1 !== count2)\r\n return false;\r\n for (var i = 0; i < count1; i++)\r\n if (!points1[i].equals(points2[i]))\r\n return false;\r\n return true;\r\n };\r\n GeometryUtils.getMaxRectangleEnscribedInEllipse = function (ellipseSize) {\r\n var dx = ellipseSize.width * Math.sqrt(2) / 2;\r\n var dy = ellipseSize.height * Math.sqrt(2) / 2;\r\n return new size_1.Size(dx, dy);\r\n };\r\n GeometryUtils.getEllipseByEnscribedRectangle = function (rectSize) {\r\n return new size_1.Size(2 * rectSize.width / Math.sqrt(2), 2 * rectSize.height / Math.sqrt(2));\r\n };\r\n return GeometryUtils;\r\n}());\r\nexports.GeometryUtils = GeometryUtils;\r\nvar ObjectUtils = /** @class */ (function () {\r\n function ObjectUtils() {\r\n }\r\n ObjectUtils.cloneObject = function (source) {\r\n return source && Object.assign({}, source);\r\n };\r\n ObjectUtils.compareObjects = function (obj1, obj2) {\r\n if (obj1 === obj2)\r\n return true;\r\n if (typeof obj1 === \"object\" && typeof obj2 === \"object\")\r\n return this.isDeepEqual(obj1, obj2);\r\n return false;\r\n };\r\n ObjectUtils.isDeepEqual = function (obj1, obj2) {\r\n var props1 = obj1 ? Object.getOwnPropertyNames(obj1) : [];\r\n var props2 = obj2 ? Object.getOwnPropertyNames(obj2) : [];\r\n if (props1.length !== props2.length)\r\n return false;\r\n for (var i = 0; i < props1.length; i++) {\r\n var property = props1[i];\r\n switch (typeof obj1[property]) {\r\n case \"object\": {\r\n if (!this.isDeepEqual(obj1[property], obj2[property]))\r\n return false;\r\n break;\r\n }\r\n case \"number\": {\r\n if (!isNaN(obj1[property]) || !isNaN(obj2[property]))\r\n if (obj1[property] !== obj2[property])\r\n return false;\r\n break;\r\n }\r\n default: {\r\n if (obj1[property] !== obj2[property])\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n };\r\n return ObjectUtils;\r\n}());\r\nexports.ObjectUtils = ObjectUtils;\r\nvar HtmlFocusUtils = /** @class */ (function () {\r\n function HtmlFocusUtils() {\r\n }\r\n HtmlFocusUtils.focusWithPreventScroll = function (element) {\r\n try {\r\n var isPreventScrollNotSupported = browser_1.Browser.Safari;\r\n var savedDocumentScrollPosition = isPreventScrollNotSupported && this.getHtmlScrollPosition();\r\n element.focus({ preventScroll: true });\r\n if (isPreventScrollNotSupported) {\r\n var newDocumentScrollPosition = this.getHtmlScrollPosition();\r\n if (!ObjectUtils.compareObjects(savedDocumentScrollPosition, newDocumentScrollPosition))\r\n this.setHtmlScrollPosition(savedDocumentScrollPosition);\r\n }\r\n }\r\n catch (e) {\r\n }\r\n };\r\n HtmlFocusUtils.getHtmlScrollPosition = function () {\r\n return {\r\n pos: this.getDocumentScrollPosition(window, document),\r\n iframePos: window.top !== window && this.getDocumentScrollPosition(window.top, window.top.document)\r\n };\r\n };\r\n HtmlFocusUtils.getDocumentScrollPosition = function (win, doc) {\r\n return {\r\n left: win.pageXOffset || doc.documentElement.scrollLeft || doc.body.scrollLeft,\r\n top: win.pageYOffset || doc.documentElement.scrollTop || doc.body.scrollTop\r\n };\r\n };\r\n HtmlFocusUtils.setHtmlScrollPosition = function (position) {\r\n this.setDocumentScrollPosition(document, position.pos);\r\n if (window.top !== window && position.iframePos)\r\n this.setDocumentScrollPosition(window.top.document, position.iframePos);\r\n };\r\n HtmlFocusUtils.setDocumentScrollPosition = function (doc, pos) {\r\n doc.documentElement.scrollTop = pos.top;\r\n doc.documentElement.scrollLeft = pos.left;\r\n // old Safari on iOS\r\n doc.body.scrollTop = pos.top;\r\n doc.body.scrollLeft = pos.left;\r\n };\r\n return HtmlFocusUtils;\r\n}());\r\nexports.HtmlFocusUtils = HtmlFocusUtils;\r\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ModelUtils = void 0;\r\nvar unit_converter_1 = __webpack_require__(11);\r\nvar metrics_1 = __webpack_require__(36);\r\nvar point_1 = __webpack_require__(1);\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar size_1 = __webpack_require__(2);\r\nvar vector_1 = __webpack_require__(58);\r\nvar math_1 = __webpack_require__(32);\r\nvar Enums_1 = __webpack_require__(48);\r\nvar AddConnectionHistoryItem_1 = __webpack_require__(49);\r\nvar AddConnectorHistoryItem_1 = __webpack_require__(64);\r\nvar AddConnectorPointHistoryItem_1 = __webpack_require__(188);\r\nvar AddShapeHistoryItem_1 = __webpack_require__(53);\r\nvar ChangeConnectorPointsHistoryItem_1 = __webpack_require__(86);\r\nvar ChangeShapeParametersHistoryItem_1 = __webpack_require__(114);\r\nvar DeleteConnectionHistoryItem_1 = __webpack_require__(65);\r\nvar DeleteConnectorHistoryItem_1 = __webpack_require__(115);\r\nvar DeleteShapeHistoryItem_1 = __webpack_require__(116);\r\nvar InsertToContainerHistoryItem_1 = __webpack_require__(189);\r\nvar MoveConnectorPointHistoryItem_1 = __webpack_require__(190);\r\nvar MoveShapeHistoryItem_1 = __webpack_require__(191);\r\nvar RemoveFromContainerHistoryItem_1 = __webpack_require__(192);\r\nvar ResizeShapeHistoryItem_1 = __webpack_require__(117);\r\nvar SetSelectionHistoryItem_1 = __webpack_require__(66);\r\nvar ModelResizeHistoryItem_1 = __webpack_require__(193);\r\nvar UpdatePositionsOnPageResizeHistoryItem_1 = __webpack_require__(194);\r\nvar ChangeConnectorPropertyHistoryItem_1 = __webpack_require__(88);\r\nvar ChangeConnectorTextHistoryItem_1 = __webpack_require__(67);\r\nvar ChangeLockedHistoryItem_1 = __webpack_require__(118);\r\nvar ChangeStyleHistoryItem_1 = __webpack_require__(89);\r\nvar ChangeStyleTextHistoryItem_1 = __webpack_require__(68);\r\nvar Graph_1 = __webpack_require__(69);\r\nvar GraphInfo_1 = __webpack_require__(195);\r\nvar Structures_1 = __webpack_require__(39);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar ConnectorProperties_1 = __webpack_require__(30);\r\nvar ConnectorRenderPoint_1 = __webpack_require__(29);\r\nvar ConnectorRenderPointsContext_1 = __webpack_require__(85);\r\nvar Shape_1 = __webpack_require__(13);\r\nvar ModelUtils = /** @class */ (function () {\r\n function ModelUtils() {\r\n }\r\n ModelUtils.setShapePosition = function (history, model, shape, newPosition) {\r\n if (!shape.position.equals(newPosition))\r\n history.addAndRedo(new MoveShapeHistoryItem_1.MoveShapeHistoryItem(shape.key, newPosition));\r\n };\r\n ModelUtils.setShapeSize = function (history, model, shape, newPosition, newSize) {\r\n if (!shape.size.equals(newSize) || !shape.position.equals(newPosition))\r\n history.addAndRedo(new ResizeShapeHistoryItem_1.ResizeShapeHistoryItem(shape.key, newPosition, newSize));\r\n };\r\n ModelUtils.addConnectorPoint = function (history, connectorKey, pointIndex, position) {\r\n history.addAndRedo(new AddConnectorPointHistoryItem_1.AddConnectorPointHistoryItem(connectorKey, pointIndex, position));\r\n };\r\n ModelUtils.deleteConnectorCustomPoints = function (history, connector) {\r\n if (connector.points.length > 2) {\r\n var oldContext = connector.createRenderPointsContext();\r\n if (connector.properties.lineOption === ConnectorProperties_1.ConnectorLineOption.Straight || !oldContext)\r\n history.addAndRedo(new ChangeConnectorPointsHistoryItem_1.ReplaceConnectorPointsHistoryItem(connector.key, [\r\n connector.points[0].clone(),\r\n connector.points[connector.points.length - 1].clone()\r\n ]));\r\n else {\r\n var beginPoint = connector.points[0].clone();\r\n var lastPoint = connector.points[connector.points.length - 1].clone();\r\n history.addAndRedo(new ChangeConnectorPointsHistoryItem_1.ChangeConnectorPointsHistoryItem(connector.key, [beginPoint, lastPoint], new ConnectorRenderPointsContext_1.ConnectorRenderPointsContext([\r\n new ConnectorRenderPoint_1.ConnectorRenderPoint(beginPoint.x, beginPoint.y, 0),\r\n new ConnectorRenderPoint_1.ConnectorRenderPoint(lastPoint.x, lastPoint.y, 1)\r\n ], false, oldContext.actualRoutingMode)));\r\n }\r\n }\r\n };\r\n ModelUtils.deleteConnectorUnnecessaryPoints = function (history, connector) {\r\n var oldRenderPoints = connector.getRenderPoints(true).map(function (p) { return p.clone(); });\r\n if (connector.properties.lineOption === ConnectorProperties_1.ConnectorLineOption.Straight) {\r\n var unnecessaryPoints = ModelUtils.createUnnecessaryRenderPoints(oldRenderPoints.filter(function (p) { return !p.skipped; }).map(function (p) { return p.clone(); }), connector.skippedRenderPoints, function (removedPoint) { return ModelUtils.findFirstPointIndex(oldRenderPoints, function (p) { return p.equals(removedPoint); }); });\r\n if (Object.keys(unnecessaryPoints).length)\r\n ModelUtils.replaceConnectorPoints(history, connector, unnecessaryPoints);\r\n }\r\n else {\r\n var newRenderPoints = oldRenderPoints.filter(function (p) { return !p.skipped; }).map(function (p) { return p.clone(); });\r\n var unnecessaryPoints = ModelUtils.createUnnecessaryRightAngleRenderPoints(newRenderPoints, connector.skippedRenderPoints, function (removedPoint) { return ModelUtils.findFirstPointIndex(oldRenderPoints, function (p) { return p.equals(removedPoint); }); });\r\n if (Object.keys(unnecessaryPoints).length) {\r\n var oldContext = connector.createRenderPointsContext();\r\n if (oldContext) {\r\n var newPoints = ModelUtils.createNecessaryPoints(connector.points.map(function (p) { return p.clone(); }), unnecessaryPoints);\r\n var newRenderContext = new ConnectorRenderPointsContext_1.ConnectorRenderPointsContext(ModelUtils.validateRenderPointIndexes(newPoints, newRenderPoints, 0), oldContext.lockCreateRenderPoints, oldContext.actualRoutingMode);\r\n history.addAndRedo(new ChangeConnectorPointsHistoryItem_1.ChangeConnectorPointsHistoryItem(connector.key, newPoints, newRenderContext));\r\n }\r\n else\r\n ModelUtils.replaceConnectorPoints(history, connector, unnecessaryPoints);\r\n }\r\n }\r\n };\r\n ModelUtils.replaceConnectorPoints = function (history, connector, unnecessaryPoints) {\r\n history.addAndRedo(new ChangeConnectorPointsHistoryItem_1.ReplaceConnectorPointsHistoryItem(connector.key, ModelUtils.createNecessaryPoints(connector.points.map(function (p) { return p.clone(); }), unnecessaryPoints)));\r\n };\r\n ModelUtils.skipUnnecessaryRenderPoints = function (points) {\r\n var clonedPoints = points.map(function (p) { return p.clone(); });\r\n ModelUtils.removeUnnecessaryRenderPoints(clonedPoints);\r\n points.forEach(function (p) { return p.skipped = clonedPoints.some(function (cp) { return cp.skipped && cp.equals(p); }); });\r\n points[0].skipped = false;\r\n points[points.length - 1].skipped = false;\r\n };\r\n ModelUtils.skipUnnecessaryRightAngleRenderPoints = function (points) {\r\n var clonedPoints = points.map(function (p) { return p.clone(); });\r\n ModelUtils.removeUnnecessaryRightAngleRenderPoints(clonedPoints);\r\n points.forEach(function (p) { return p.skipped = clonedPoints.some(function (cp) { return cp.skipped && cp.equals(p); }); });\r\n points[0].skipped = false;\r\n points[points.length - 1].skipped = false;\r\n };\r\n ModelUtils.removeUnnecessaryRenderPoints = function (points) {\r\n Utils_1.GeometryUtils.removeUnnecessaryPoints(points, function (pt, index) { return ModelUtils.removeUnnecessaryPoint(points, pt, index); }, function (pt) { return pt !== undefined && !pt.skipped; });\r\n points[0].skipped = false;\r\n points[points.length - 1].skipped = false;\r\n };\r\n ModelUtils.removeUnnecessaryRightAngleRenderPoints = function (points) {\r\n Utils_1.GeometryUtils.removeUnnecessaryRightAnglePoints(points, function (p, index) { return ModelUtils.removeUnnecessaryPoint(points, p, index); }, function (p) { return p !== undefined && !p.skipped; });\r\n points[0].skipped = false;\r\n points[points.length - 1].skipped = false;\r\n };\r\n ModelUtils.createUnnecessaryRenderPoints = function (renderPointsWithoutSkipped, skippedRenderPoints, getPosition, predicate) {\r\n if (predicate === void 0) { predicate = function (_) { return true; }; }\r\n var result = {};\r\n Utils_1.GeometryUtils.removeUnnecessaryPoints(renderPointsWithoutSkipped, function (removedPoint, removedIndex) {\r\n return ModelUtils.collectNotSkippedRenderPoints(result, renderPointsWithoutSkipped, removedPoint, removedIndex, getPosition, predicate);\r\n });\r\n ModelUtils.collectSkippedRenderPoints(result, skippedRenderPoints, getPosition, predicate);\r\n return result;\r\n };\r\n ModelUtils.createUnnecessaryRightAngleRenderPoints = function (renderPointsWithoutSkipped, skippedRenderPoints, getPosition, predicate) {\r\n if (predicate === void 0) { predicate = function (_) { return true; }; }\r\n var result = {};\r\n Utils_1.GeometryUtils.removeUnnecessaryRightAnglePoints(renderPointsWithoutSkipped, function (removedPoint, removedIndex) {\r\n return ModelUtils.collectNotSkippedRenderPoints(result, renderPointsWithoutSkipped, removedPoint, removedIndex, getPosition, predicate);\r\n });\r\n ModelUtils.collectSkippedRenderPoints(result, skippedRenderPoints, getPosition, predicate);\r\n return result;\r\n };\r\n ModelUtils.createNecessaryPoints = function (points, unnecessaryPoints) {\r\n var _this = this;\r\n var result = [];\r\n var lastPointIndex = points.length - 1;\r\n points.forEach(function (p, index) {\r\n if (index === 0 || index === lastPointIndex || _this.isNecessaryPoint(p, index, unnecessaryPoints))\r\n result.push(p.clone());\r\n });\r\n return result;\r\n };\r\n ModelUtils.isNecessaryPoint = function (point, pointIndex, unnecessaryPoints) {\r\n return !Object.keys(unnecessaryPoints).some(function (key) {\r\n var unnecessaryPoint = unnecessaryPoints[key];\r\n return unnecessaryPoint.pointIndex === pointIndex && Utils_1.GeometryUtils.areDuplicatedPoints(point, unnecessaryPoint);\r\n });\r\n };\r\n ModelUtils.collectSkippedRenderPoints = function (targetRenderPoints, skippedRenderPoints, getPosition, predicate) {\r\n if (predicate === void 0) { predicate = function (_) { return true; }; }\r\n skippedRenderPoints && skippedRenderPoints.forEach(function (skippedPoint) {\r\n if (predicate(skippedPoint)) {\r\n var positionIndex = getPosition(skippedPoint);\r\n if (targetRenderPoints[positionIndex] === undefined)\r\n targetRenderPoints[positionIndex] = skippedPoint;\r\n }\r\n });\r\n };\r\n ModelUtils.collectNotSkippedRenderPoints = function (targetRenderPoints, sourceRenderPoints, removedPoint, removedIndex, getPosition, predicate) {\r\n if (predicate === void 0) { predicate = function (_) { return true; }; }\r\n if (!predicate(removedPoint))\r\n return false;\r\n var positionIndex = getPosition(removedPoint);\r\n if (targetRenderPoints[positionIndex] === undefined) {\r\n targetRenderPoints[positionIndex] = removedPoint;\r\n removedPoint.skipped = true;\r\n sourceRenderPoints.splice(removedIndex, 1);\r\n }\r\n return true;\r\n };\r\n ModelUtils.removeUnnecessaryPoint = function (points, point, removedIndex) {\r\n if (point.pointIndex === -1) {\r\n points.splice(removedIndex, 1);\r\n return true;\r\n }\r\n point.skipped = true;\r\n return false;\r\n };\r\n ModelUtils.validateRenderPointIndexes = function (points, renderPoints, startIndex) {\r\n var _this = this;\r\n var result = renderPoints.map(function (rp, i) { return new ConnectorRenderPoint_1.ConnectorRenderPoint(rp.x, rp.y, i >= startIndex && rp.pointIndex >= 0 ? _this.findFirstPointIndex(points, function (p) { return p.equals(rp); }) : rp.pointIndex, rp.skipped); });\r\n result[0].skipped = false;\r\n result[result.length - 1].skipped = false;\r\n return result;\r\n };\r\n ModelUtils.findFirstPointIndex = function (points, predicate) {\r\n if (!points || !predicate)\r\n return -1;\r\n for (var i = 0; i < points.length; i++)\r\n if (predicate(points[i]))\r\n return i;\r\n return -1;\r\n };\r\n ModelUtils.moveConnectorRightAnglePoints = function (history, connector, firstPoint, firstPointIndex, lastPoint, lastPointIndex) {\r\n if (!Utils_1.GeometryUtils.areDuplicatedPoints(connector.points[firstPointIndex], firstPoint) ||\r\n !Utils_1.GeometryUtils.areDuplicatedPoints(connector.points[lastPointIndex], lastPoint))\r\n history.addAndRedo(new MoveConnectorPointHistoryItem_1.MoveConnectorRightAnglePointsHistoryItem(connector.key, firstPointIndex, firstPoint, lastPointIndex, lastPoint));\r\n };\r\n ModelUtils.moveConnectorPoint = function (history, connector, pointIndex, newPosition) {\r\n if (!connector.points[pointIndex].equals(newPosition))\r\n history.addAndRedo(new MoveConnectorPointHistoryItem_1.MoveConnectorPointHistoryItem(connector.key, pointIndex, newPosition));\r\n };\r\n ModelUtils.updateConnectorAttachedPoints = function (history, model, connector) {\r\n history.beginTransaction();\r\n var beginContainer = connector.beginItem && model.findItemCollapsedContainer(connector.beginItem);\r\n var beginAttachedToContainer = beginContainer && (!connector.endItem || !model.isContainerItem(beginContainer, connector.endItem));\r\n var endContainer = connector.endItem && model.findItemCollapsedContainer(connector.endItem);\r\n var endAttachedToContainer = endContainer && (!connector.beginItem || !model.isContainerItem(endContainer, connector.beginItem));\r\n if (beginAttachedToContainer)\r\n this.updateConnectorBeginPoint(history, connector, beginContainer, (endAttachedToContainer && endContainer) || connector.endItem, function (index) { return beginContainer.getConnectionPointIndexForItem(connector.beginItem, index); });\r\n else\r\n this.updateConnectorBeginPoint(history, connector, connector.beginItem, (endAttachedToContainer && endContainer) || connector.endItem);\r\n if (endAttachedToContainer)\r\n this.updateConnectorEndPoint(history, connector, endContainer, function (index) { return endContainer.getConnectionPointIndexForItem(connector.beginItem, index); });\r\n else\r\n this.updateConnectorEndPoint(history, connector, connector.endItem);\r\n history.endTransaction();\r\n };\r\n ModelUtils.updateConnectorBeginPoint = function (history, connector, beginItem, endItem, getConnectionPointIndex) {\r\n if (beginItem) {\r\n var connectionPointIndex = getConnectionPointIndex !== undefined ?\r\n getConnectionPointIndex(connector.beginConnectionPointIndex) : connector.beginConnectionPointIndex;\r\n var targetPoint = connector.points[1];\r\n if (endItem && connector.points.length === 2)\r\n if (connector.endConnectionPointIndex !== -1)\r\n targetPoint = endItem.getConnectionPointPosition(connector.endConnectionPointIndex, point_1.Point.zero());\r\n else\r\n targetPoint = endItem.rectangle.center;\r\n var newPoint = beginItem.getConnectionPointPosition(connectionPointIndex, targetPoint);\r\n this.moveConnectorPoint(history, connector, 0, newPoint.clone());\r\n }\r\n };\r\n ModelUtils.updateConnectorEndPoint = function (history, connector, endItem, getConnectionPointIndex) {\r\n if (endItem) {\r\n var connectionPointIndex = getConnectionPointIndex !== undefined ?\r\n getConnectionPointIndex(connector.endConnectionPointIndex) : connector.endConnectionPointIndex;\r\n var newPoint = endItem.getConnectionPointPosition(connectionPointIndex, connector.points[connector.points.length - 2]);\r\n this.moveConnectorPoint(history, connector, connector.points.length - 1, newPoint);\r\n }\r\n };\r\n ModelUtils.updateContainerConnectorsAttachedPoints = function (history, model, rootContainer, container) {\r\n var _this = this;\r\n if (container === void 0) { container = rootContainer; }\r\n history.beginTransaction();\r\n var children = model.getChildren(container);\r\n children.forEach(function (child) {\r\n if (child instanceof Shape_1.Shape) {\r\n child.attachedConnectors.forEach(function (connector) {\r\n var beginItemInContainer = connector.beginItem && model.isContainerItem(container, connector.beginItem);\r\n var endItemInContainer = connector.endItem && model.isContainerItem(container, connector.endItem);\r\n if (beginItemInContainer && !endItemInContainer) {\r\n var collapsedContainer = model.findItemTopCollapsedContainer(connector.beginItem);\r\n var endCollapsedContainer = connector.endItem && model.findItemTopCollapsedContainer(connector.endItem);\r\n if (!collapsedContainer)\r\n _this.updateConnectorBeginPoint(history, connector, connector.beginItem, endCollapsedContainer || connector.endItem);\r\n else\r\n _this.updateConnectorBeginPoint(history, connector, collapsedContainer, endCollapsedContainer || connector.endItem, function (index) { return rootContainer.getConnectionPointIndexForItem(connector.beginItem, index); });\r\n }\r\n if (endItemInContainer && !beginItemInContainer) {\r\n var collapsedContainer = model.findItemTopCollapsedContainer(connector.endItem);\r\n if (!collapsedContainer)\r\n _this.updateConnectorEndPoint(history, connector, connector.endItem);\r\n else\r\n _this.updateConnectorEndPoint(history, connector, collapsedContainer, function (index) { return rootContainer.getConnectionPointIndexForItem(connector.endItem, index); });\r\n }\r\n });\r\n _this.updateContainerConnectorsAttachedPoints(history, model, rootContainer, child);\r\n }\r\n });\r\n history.endTransaction();\r\n };\r\n ModelUtils.getConnectorsWithoutBeginItemInfo = function (model) {\r\n var connectors = model.findConnectorsWithoutBeginItem();\r\n return connectors.map(function (c) {\r\n return {\r\n connector: c,\r\n point: c.points[0].clone()\r\n };\r\n });\r\n };\r\n ModelUtils.getConnectorsWithoutEndItemInfo = function (model) {\r\n var connectors = model.findConnectorsWithoutEndItem();\r\n return connectors.map(function (c) {\r\n return {\r\n connector: c,\r\n point: c.points[c.points.length - 1].clone()\r\n };\r\n });\r\n };\r\n ModelUtils.updateShapeAttachedConnectors = function (history, model, shape) {\r\n var _this = this;\r\n shape.attachedConnectors.forEach(function (connector) {\r\n _this.removeConnectorIntermediatePoints(history, connector);\r\n _this.updateConnectorAttachedPoints(history, model, connector);\r\n });\r\n };\r\n ModelUtils.updateMovingShapeConnections = function (history, shape, beginPointsInfo, endPointsInfo, resetTargetCallback, updateTargetCallback, beforeAttachConnectorCallback) {\r\n var _this = this;\r\n resetTargetCallback();\r\n beginPointsInfo.forEach(function (pi) {\r\n var connectionPointIndex = _this.getMovingShapeConnectionPointIndex(shape, pi.point);\r\n if (shape.rectangle.containsPoint(pi.point) || connectionPointIndex > -1) {\r\n updateTargetCallback(shape, connectionPointIndex);\r\n if (connectionPointIndex !== pi.connector.beginConnectionPointIndex && pi.connector.beginItem)\r\n history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(pi.connector, Connector_1.ConnectorPosition.Begin));\r\n beforeAttachConnectorCallback(pi.connector);\r\n history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(pi.connector, shape, connectionPointIndex, Connector_1.ConnectorPosition.Begin));\r\n }\r\n else if (pi.connector.beginItem) {\r\n history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(pi.connector, Connector_1.ConnectorPosition.Begin));\r\n history.addAndRedo(new MoveConnectorPointHistoryItem_1.MoveConnectorPointHistoryItem(pi.connector.key, 0, pi.point));\r\n }\r\n });\r\n endPointsInfo.forEach(function (pi) {\r\n var connectionPointIndex = _this.getMovingShapeConnectionPointIndex(shape, pi.point);\r\n if (shape.rectangle.containsPoint(pi.point) || connectionPointIndex > -1) {\r\n updateTargetCallback(shape, connectionPointIndex);\r\n if (connectionPointIndex !== pi.connector.endConnectionPointIndex && pi.connector.endItem)\r\n history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(pi.connector, Connector_1.ConnectorPosition.End));\r\n beforeAttachConnectorCallback(pi.connector);\r\n history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(pi.connector, shape, connectionPointIndex, Connector_1.ConnectorPosition.End));\r\n }\r\n else if (pi.connector.endItem) {\r\n history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(pi.connector, Connector_1.ConnectorPosition.End));\r\n history.addAndRedo(new MoveConnectorPointHistoryItem_1.MoveConnectorPointHistoryItem(pi.connector.key, pi.connector.points.length - 1, pi.point));\r\n }\r\n });\r\n };\r\n ModelUtils.getMovingShapeConnectionPointIndex = function (shape, point) {\r\n var _this = this;\r\n var connectionPointIndex = -1;\r\n shape.getConnectionPoints().forEach(function (pt, index) {\r\n if (metrics_1.Metrics.euclideanDistance(point, pt) < _this.connectionPointActionSize)\r\n connectionPointIndex = index;\r\n });\r\n return connectionPointIndex;\r\n };\r\n ModelUtils.shouldRemoveConnectorIntermediatePoints = function (connector, shapes) {\r\n if (connector.properties.lineOption !== ConnectorProperties_1.ConnectorLineOption.Orthogonal || connector.points.length === 2 || !shapes || !shapes.length)\r\n return false;\r\n var index = 0;\r\n var shape;\r\n while (shape = shapes[index]) {\r\n if (this.isShapeIntersectConnectorCustomPoints(shape, connector))\r\n return true;\r\n index++;\r\n }\r\n return false;\r\n };\r\n ModelUtils.removeConnectorIntermediatePoints = function (history, connector) {\r\n if (this.shouldRemoveConnectorIntermediatePoints(connector, [connector.beginItem, connector.endItem]))\r\n this.deleteConnectorCustomPoints(history, connector);\r\n };\r\n ModelUtils.isShapeIntersectConnectorCustomPoints = function (shape, connector) {\r\n if (!shape)\r\n return false;\r\n var customRenderPoints = connector.getCustomRenderPoints(true);\r\n if (!customRenderPoints.length)\r\n return false;\r\n var offset = Connector_1.Connector.minOffset - unit_converter_1.UnitConverter.pixelsToTwips(1);\r\n return Utils_1.GeometryUtils.areIntersectedSegments(Utils_1.GeometryUtils.createSegments(customRenderPoints), Utils_1.GeometryUtils.createSegmentsFromRectangle(shape.rectangle.clone().inflate(offset, offset)));\r\n };\r\n ModelUtils.getSnappedPos = function (model, gridSize, pos, isHorizontal) {\r\n var snapOffset = isHorizontal ? model.snapStartPoint.x : model.snapStartPoint.y;\r\n return Math.round((pos - snapOffset) / gridSize) * gridSize + snapOffset;\r\n };\r\n ModelUtils.tryUpdateModelRectangle = function (history, processPoints) {\r\n var offset = history.modelManipulator.getModelSizeUpdateOffset();\r\n if (!offset.isEmpty()) {\r\n history.addAndRedo(new ModelResizeHistoryItem_1.ModelResizeHistoryItem(offset));\r\n if (offset.left || offset.top) {\r\n history.addAndRedo(new UpdatePositionsOnPageResizeHistoryItem_1.UpdatePositionsOnPageResizeHistoryItem(new vector_1.Vector(offset.left, offset.top)));\r\n if (processPoints !== undefined)\r\n processPoints(offset.left, offset.top);\r\n }\r\n history.modelManipulator.raiseModelRectangleChanged(history.modelManipulator.model.getRectangle(true));\r\n }\r\n };\r\n ModelUtils.deleteItems = function (history, model, selection, items, deleteLocked) {\r\n history.beginTransaction();\r\n var itemsHash = {};\r\n items.forEach(function (item) { return itemsHash[item.key] = item; });\r\n var selectionKeys = selection.getKeys().filter(function (key) { return !itemsHash[key]; });\r\n history.addAndRedo(new SetSelectionHistoryItem_1.SetSelectionHistoryItem(selection, selectionKeys));\r\n this.deleteItemsCore(history, model, items, deleteLocked);\r\n this.tryUpdateModelRectangle(history);\r\n history.endTransaction();\r\n };\r\n ModelUtils.deleteItemsCore = function (history, model, items, deleteLocked) {\r\n var _this = this;\r\n items.sort(function (a, b) {\r\n var v1 = (a instanceof Connector_1.Connector) ? 0 : 1;\r\n var v2 = (b instanceof Connector_1.Connector) ? 0 : 1;\r\n return v1 - v2;\r\n });\r\n items.forEach(function (item) {\r\n if (item.container)\r\n _this.removeFromContainer(history, model, item);\r\n if (item instanceof Shape_1.Shape) {\r\n var children = model.getChildren(item);\r\n if (children.length) {\r\n children.forEach(function (child) {\r\n history.addAndRedo(new RemoveFromContainerHistoryItem_1.RemoveFromContainerHistoryItem(child));\r\n _this.updateAttachedConnectorsContainer(history, model, child);\r\n });\r\n _this.deleteItemsCore(history, model, children.filter(function (child) { return !child.locked || deleteLocked; }), deleteLocked);\r\n }\r\n if (model.findItem(item.key))\r\n _this.deleteShape(history, item);\r\n }\r\n if (item instanceof Connector_1.Connector)\r\n if (model.findItem(item.key))\r\n _this.deleteConnector(history, item);\r\n });\r\n };\r\n ModelUtils.detachConnectors = function (history, shape) {\r\n history.beginTransaction();\r\n while (shape.attachedConnectors.length > 0) {\r\n var connector = shape.attachedConnectors[0];\r\n history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(connector, connector.beginItem === shape ? Connector_1.ConnectorPosition.Begin : Connector_1.ConnectorPosition.End));\r\n }\r\n history.endTransaction();\r\n };\r\n ModelUtils.deleteShape = function (history, shape) {\r\n var allowed = history.modelManipulator.permissionsProvider.canDeleteItems([shape]);\r\n history.beginTransaction();\r\n this.detachConnectors(history, shape);\r\n history.addAndRedo(new DeleteShapeHistoryItem_1.DeleteShapeHistoryItem(shape.key, allowed));\r\n history.endTransaction();\r\n };\r\n ModelUtils.deleteConnector = function (history, connector) {\r\n history.beginTransaction();\r\n if (connector.beginItem)\r\n history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(connector, Connector_1.ConnectorPosition.Begin));\r\n if (connector.endItem)\r\n history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(connector, Connector_1.ConnectorPosition.End));\r\n history.addAndRedo(new DeleteConnectorHistoryItem_1.DeleteConnectorHistoryItem(connector.key));\r\n history.endTransaction();\r\n };\r\n ModelUtils.deleteAllItems = function (history, model, selection) {\r\n this.deleteItems(history, model, selection, model.items.slice(), true);\r\n };\r\n ModelUtils.deleteSelection = function (history, model, selection) {\r\n this.deleteItems(history, model, selection, selection.getSelectedItems());\r\n };\r\n ModelUtils.changeSelectionLocked = function (history, model, selection, locked) {\r\n history.beginTransaction();\r\n var items = selection.getSelectedItems(true);\r\n items.forEach(function (item) {\r\n history.addAndRedo(new ChangeLockedHistoryItem_1.ChangeLockedHistoryItem(item, locked));\r\n });\r\n ModelUtils.updateSelection(history, selection);\r\n history.endTransaction();\r\n };\r\n ModelUtils.copyStylesToItem = function (history, model, fromItem, newItemKey) {\r\n var toItem = model.findItem(newItemKey);\r\n fromItem.styleText.forEach(function (propertyName) {\r\n if (fromItem.styleText[propertyName] !== toItem.styleText[propertyName])\r\n history.addAndRedo(new ChangeStyleTextHistoryItem_1.ChangeStyleTextHistoryItem(newItemKey, propertyName, fromItem.styleText[propertyName]));\r\n });\r\n fromItem.style.forEach(function (propertyName) {\r\n if (fromItem.style[propertyName] !== toItem.style[propertyName])\r\n history.addAndRedo(new ChangeStyleHistoryItem_1.ChangeStyleHistoryItem(newItemKey, propertyName, fromItem.style[propertyName]));\r\n });\r\n };\r\n // Selection\r\n ModelUtils.updateSelection = function (history, selection) {\r\n history.addAndRedo(new SetSelectionHistoryItem_1.SetSelectionHistoryItem(selection, selection.getKeys(), true));\r\n };\r\n // Cloning\r\n ModelUtils.cloneShapeToOffset = function (history, model, shape, dx, dy) {\r\n history.beginTransaction();\r\n var newPosition = shape.position.clone().offset(dx, dy);\r\n var addHistoryItem = new AddShapeHistoryItem_1.AddShapeHistoryItem(shape.description, newPosition, shape.text);\r\n history.addAndRedo(addHistoryItem);\r\n var newKey = addHistoryItem.shapeKey;\r\n history.addAndRedo(new ResizeShapeHistoryItem_1.ResizeShapeHistoryItem(newKey, newPosition, shape.size.clone()));\r\n history.addAndRedo(new ChangeShapeParametersHistoryItem_1.ChangeShapeParametersHistoryItem(newKey, shape.parameters.clone()));\r\n this.copyStylesToItem(history, model, shape, newKey);\r\n history.endTransaction();\r\n return newKey;\r\n };\r\n ModelUtils.applyOffsetToConnectorRenderPointsContext = function (context, dx, dy) {\r\n return context && context.renderPoints ? new ConnectorRenderPointsContext_1.ConnectorRenderPointsContext(context.renderPoints.map(function (p) { return p.clone().offset(dx, dy); }), true, context.actualRoutingMode) : undefined;\r\n };\r\n ModelUtils.cloneConnectorToOffset = function (history, model, connector, beginItemKey, endItemKey, dx, dy) {\r\n history.beginTransaction();\r\n var newPoints = connector.points.map(function (p) { return p.clone().offset(dx, dy); });\r\n var addHistoryItem = new AddConnectorHistoryItem_1.AddConnectorHistoryItem(newPoints, undefined, this.applyOffsetToConnectorRenderPointsContext(connector.createRenderPointsContext(), dx, dy));\r\n history.addAndRedo(addHistoryItem);\r\n var newKey = addHistoryItem.connectorKey;\r\n var newConnector = model.findConnector(newKey);\r\n connector.properties.forEach(function (propertyName) {\r\n if (connector.properties[propertyName] !== newConnector.properties[propertyName])\r\n history.addAndRedo(new ChangeConnectorPropertyHistoryItem_1.ChangeConnectorPropertyHistoryItem(newKey, propertyName, connector.properties[propertyName]));\r\n });\r\n if (beginItemKey) {\r\n var from = model.findShape(beginItemKey);\r\n history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(newConnector, from, connector.beginConnectionPointIndex, Connector_1.ConnectorPosition.Begin));\r\n }\r\n if (endItemKey) {\r\n var to = model.findShape(endItemKey);\r\n history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(newConnector, to, connector.endConnectionPointIndex, Connector_1.ConnectorPosition.End));\r\n }\r\n var newTexts = connector.texts.clone();\r\n newTexts.forEach(function (connectorText) {\r\n history.addAndRedo(new ChangeConnectorTextHistoryItem_1.ChangeConnectorTextHistoryItem(newConnector, connectorText.position, connectorText.value));\r\n });\r\n this.copyStylesToItem(history, model, connector, newKey);\r\n history.endTransaction();\r\n return newKey;\r\n };\r\n ModelUtils.cloneSelectionToOffset = function (history, model, onItemAdded, selection, dx, dy) {\r\n var _this = this;\r\n history.beginTransaction();\r\n var newShapes = {};\r\n var ids = [];\r\n selection.getSelectedShapes().forEach(function (shape) {\r\n var newKey = _this.cloneShapeToOffset(history, model, shape, dx, dy);\r\n newShapes[shape.key] = newKey;\r\n ids.push(newKey);\r\n if (onItemAdded)\r\n onItemAdded(newKey);\r\n });\r\n selection.getSelectedConnectors().forEach(function (connector) {\r\n var beginItemKey = connector.beginItem ? newShapes[connector.beginItem.key] : null;\r\n var endItemKey = connector.endItem ? newShapes[connector.endItem.key] : null;\r\n var newKey = _this.cloneConnectorToOffset(history, model, connector, beginItemKey, endItemKey, dx, dy);\r\n ids.push(newKey);\r\n if (onItemAdded)\r\n onItemAdded(newKey);\r\n });\r\n history.addAndRedo(new SetSelectionHistoryItem_1.SetSelectionHistoryItem(selection, ids));\r\n ModelUtils.tryUpdateModelRectangle(history);\r\n history.endTransaction();\r\n };\r\n // Containers\r\n ModelUtils.findContainerByEventKey = function (model, selection, key) {\r\n var container = model.findContainer(key);\r\n if (container && !container.isLocked)\r\n return container;\r\n else {\r\n var shape = model.findShape(key);\r\n if (shape && shape.container && !selection.hasKey(shape.key))\r\n return ModelUtils.findContainerByEventKey(model, selection, shape.container.key);\r\n }\r\n };\r\n ModelUtils.canInsertToContainer = function (model, item, container) {\r\n if (item === container)\r\n return false;\r\n if (item instanceof Shape_1.Shape)\r\n if (model.findChild(item, container.key))\r\n return false;\r\n return true;\r\n };\r\n ModelUtils.canInsertSelectionToContainer = function (model, selection, container) {\r\n var result = true;\r\n selection.getSelectedItems().forEach(function (item) {\r\n if (item === container) {\r\n result = false;\r\n return;\r\n }\r\n if (item instanceof Shape_1.Shape)\r\n if (model.findChild(item, container.key)) {\r\n result = false;\r\n return;\r\n }\r\n });\r\n return result;\r\n };\r\n ModelUtils.insertToContainer = function (history, model, item, container) {\r\n if (!container.enableChildren)\r\n throw Error(\"Inpossible to add children to non-container shape.\");\r\n if (!this.canInsertToContainer(model, item, container))\r\n return;\r\n var oldContainer = item.container;\r\n if (oldContainer !== container) {\r\n history.beginTransaction();\r\n if (oldContainer) {\r\n history.addAndRedo(new RemoveFromContainerHistoryItem_1.RemoveFromContainerHistoryItem(item));\r\n item.attachedConnectors.forEach(function (connector) {\r\n if (connector.container)\r\n history.addAndRedo(new RemoveFromContainerHistoryItem_1.RemoveFromContainerHistoryItem(connector));\r\n });\r\n }\r\n history.addAndRedo(new InsertToContainerHistoryItem_1.InsertToContainerHistoryItem(item, container));\r\n this.updateAttachedConnectorsContainer(history, model, item);\r\n history.endTransaction();\r\n }\r\n };\r\n ModelUtils.removeFromContainer = function (history, model, item) {\r\n if (item.container) {\r\n history.beginTransaction();\r\n history.addAndRedo(new RemoveFromContainerHistoryItem_1.RemoveFromContainerHistoryItem(item));\r\n this.updateAttachedConnectorsContainer(history, model, item);\r\n history.endTransaction();\r\n }\r\n };\r\n ModelUtils.insertSelectionToContainer = function (history, model, selection, container) {\r\n var _this = this;\r\n history.beginTransaction();\r\n var selectedItems = selection.getSelectedItems();\r\n var items = selectedItems.filter(function (item) { return !item.container || selectedItems.indexOf(item.container) === -1; });\r\n items.forEach(function (item) {\r\n _this.insertToContainer(history, model, item, container);\r\n });\r\n history.endTransaction();\r\n };\r\n ModelUtils.removeSelectionFromContainer = function (history, model, selection) {\r\n var _this = this;\r\n history.beginTransaction();\r\n selection.getSelectedItems().forEach(function (item) {\r\n if (item.container && !selection.hasKey(item.container.key)) {\r\n history.addAndRedo(new RemoveFromContainerHistoryItem_1.RemoveFromContainerHistoryItem(item));\r\n _this.updateAttachedConnectorsContainer(history, model, item);\r\n }\r\n });\r\n history.endTransaction();\r\n };\r\n ModelUtils.getConnectorContainer = function (connector) {\r\n if (connector.beginItem && connector.endItem) {\r\n var beginItemContainers = {};\r\n var containerForBeginItem = connector.beginItem.container;\r\n while (containerForBeginItem) {\r\n beginItemContainers[containerForBeginItem.key] = true;\r\n containerForBeginItem = containerForBeginItem.container;\r\n }\r\n var containerForEndItem = connector.endItem.container;\r\n while (containerForEndItem) {\r\n if (beginItemContainers[containerForEndItem.key] !== undefined)\r\n return containerForEndItem;\r\n containerForEndItem = containerForEndItem.container;\r\n }\r\n }\r\n };\r\n ModelUtils.updateAttachedConnectorsContainer = function (history, model, item) {\r\n var _this = this;\r\n history.beginTransaction();\r\n item.attachedConnectors.forEach(function (connector) {\r\n _this.updateConnectorContainer(history, model, connector);\r\n });\r\n history.endTransaction();\r\n };\r\n ModelUtils.updateConnectorContainer = function (history, model, connector) {\r\n var container = this.getConnectorContainer(connector);\r\n if (container)\r\n history.addAndRedo(new InsertToContainerHistoryItem_1.InsertToContainerHistoryItem(connector, container));\r\n else if (connector.container)\r\n history.addAndRedo(new RemoveFromContainerHistoryItem_1.RemoveFromContainerHistoryItem(connector));\r\n };\r\n ModelUtils.updateNewShapeProperties = function (history, selection, itemKey) {\r\n var style = selection.inputPosition.getDefaultStyle();\r\n style.forEach(function (propertyName) {\r\n history.addAndRedo(new ChangeStyleHistoryItem_1.ChangeStyleHistoryItem(itemKey, propertyName, selection.inputPosition.getDefaultStylePropertyValue(propertyName)));\r\n });\r\n var textStyle = selection.inputPosition.getDefaultTextStyle();\r\n textStyle.forEach(function (propertyName) {\r\n history.addAndRedo(new ChangeStyleTextHistoryItem_1.ChangeStyleTextHistoryItem(itemKey, propertyName, selection.inputPosition.getDefaultTextStylePropertyValue(propertyName)));\r\n });\r\n };\r\n ModelUtils.updateNewConnectorProperties = function (history, selection, itemKey) {\r\n var connectorProperties = selection.inputPosition.getDefaultConnectorProperties();\r\n connectorProperties.forEach(function (propertyName) {\r\n history.addAndRedo(new ChangeConnectorPropertyHistoryItem_1.ChangeConnectorPropertyHistoryItem(itemKey, propertyName, selection.inputPosition.getDefaultConnectorPropertyValue(propertyName)));\r\n });\r\n var style = selection.inputPosition.getDefaultStyle();\r\n style.forEach(function (propertyName) {\r\n history.addAndRedo(new ChangeStyleHistoryItem_1.ChangeStyleHistoryItem(itemKey, propertyName, selection.inputPosition.getDefaultStylePropertyValue(propertyName)));\r\n });\r\n var textStyle = selection.inputPosition.getDefaultTextStyle();\r\n textStyle.forEach(function (propertyName) {\r\n history.addAndRedo(new ChangeStyleTextHistoryItem_1.ChangeStyleTextHistoryItem(itemKey, propertyName, selection.inputPosition.getDefaultTextStylePropertyValue(propertyName)));\r\n });\r\n };\r\n // Layout\r\n ModelUtils.applyLayout = function (history, model, container, graph, layout, nonGraphItems, settings, snapToGrid, gridSize, skipPointIndices) {\r\n history.beginTransaction();\r\n var occupiedRectangles = this.getOccupiedRectangles(nonGraphItems, container);\r\n layout = this.offsetLayoutToFreeSpace(layout, container && container.clientRectangle, occupiedRectangles, settings.containerPadding);\r\n if (snapToGrid)\r\n this.adjustLayoutToSnapGrid(model, layout, gridSize);\r\n if (container)\r\n this.resizeContainerOnLayout(history, model, layout, container, settings.containerPadding);\r\n this.applyLayoutToNodes(history, model, layout, graph.edges.map(function (e) { return model.findConnector(e.key); }));\r\n this.applyLayoutToConnectors(history, model, layout, graph.edges.map(function (e) { return model.findConnector(e.key); }), skipPointIndices);\r\n history.endTransaction();\r\n return layout.getRectangle(true);\r\n };\r\n ModelUtils.getNonGraphItems = function (model, container, nodeKeyMap, shapes, connectors) {\r\n var allItems = container ? model.getChildren(container) : model.items.filter(function (item) { return !item.container; });\r\n return allItems.filter(function (item) {\r\n if (item instanceof Connector_1.Connector)\r\n return (!item.beginItem || !nodeKeyMap[item.beginItem.key]) && (!item.endItem || !nodeKeyMap[item.endItem.key]) &&\r\n connectors.indexOf(item) === -1;\r\n if (item instanceof Shape_1.Shape)\r\n return !nodeKeyMap[item.key] &&\r\n shapes.indexOf(item) === -1;\r\n });\r\n };\r\n ModelUtils.getOccupiedRectangles = function (nonGraphItems, container) {\r\n var occupiedRectangles = nonGraphItems.map(function (i) { return i.rectangle; });\r\n if (container && occupiedRectangles.length) {\r\n var rect = container.clientRectangle;\r\n occupiedRectangles.push(new rectangle_1.Rectangle(rect.right, rect.y, 1, 1));\r\n occupiedRectangles.push(new rectangle_1.Rectangle(rect.right, rect.bottom, 1, 1));\r\n }\r\n return occupiedRectangles;\r\n };\r\n ModelUtils.offsetLayoutToFreeSpace = function (layout, containerRect, occupiedRectangles, spacing) {\r\n var graphItemRect = layout.getRectangle(true);\r\n var freePoint = Utils_1.GeometryUtils.findFreeSpace(occupiedRectangles, graphItemRect.createSize().offset(spacing, spacing).nonNegativeSize(), false, containerRect);\r\n if (freePoint) {\r\n var x = freePoint.x + spacing;\r\n var y = freePoint.y + spacing;\r\n return layout.offsetNodes(x, y);\r\n }\r\n var maxX = occupiedRectangles && occupiedRectangles.length ?\r\n occupiedRectangles.reduce(function (max, rect) { return rect.right > max ? rect.right : max; }, 0) :\r\n (containerRect ? containerRect.x : 0);\r\n var minY = containerRect ? containerRect.y : Math.max(0, graphItemRect.y);\r\n return layout.offsetNodes(maxX + spacing, minY + spacing);\r\n };\r\n ModelUtils.resizeContainerOnLayout = function (history, model, layout, container, spacing) {\r\n var layoutRect = layout.getRectangle(true);\r\n var nonLayoutRectangles = container.children\r\n .filter(function (item) {\r\n if (item instanceof Shape_1.Shape)\r\n return layout.nodeKeys.indexOf(item.key) === -1;\r\n if (item instanceof Connector_1.Connector && item.beginItem && item.endItem)\r\n return layout.nodeKeys.indexOf(item.beginItem.key) === -1 && layout.nodeKeys.indexOf(item.endItem.key) === -1;\r\n return false;\r\n })\r\n .map(function (item) { return item.rectangle; });\r\n var right = nonLayoutRectangles.map(function (rect) { return rect.right; }).reduce(function (prev, cur) { return Math.max(prev, cur); }, layoutRect.right);\r\n var bottom = nonLayoutRectangles.map(function (rect) { return rect.bottom; }).reduce(function (prev, cur) { return Math.max(prev, cur); }, layoutRect.bottom);\r\n var width = container.rectangle.width + right + spacing - container.rectangle.right;\r\n var height = container.rectangle.height + bottom + spacing - container.rectangle.bottom;\r\n ModelUtils.setShapeSize(history, model, container, container.position, new size_1.Size(width, height));\r\n ModelUtils.updateShapeAttachedConnectors(history, model, container);\r\n };\r\n ModelUtils.applyLayoutToNodes = function (history, model, layout, connectors) {\r\n var _this = this;\r\n var connectorsSet = connectors.reduce(function (acc, c) { return acc[c.key] = true && acc; }, {});\r\n layout.forEachNode(function (nl, nk) {\r\n var shape = model.findShape(nk);\r\n _this.applyLayoutToNode(history, model, shape, nl.position, connectorsSet);\r\n });\r\n };\r\n ModelUtils.applyLayoutToNode = function (history, model, shape, position, connectorsSet) {\r\n var _this = this;\r\n var delta = position.clone().offset(-shape.position.x, -shape.position.y);\r\n ModelUtils.setShapePosition(history, model, shape, position);\r\n if (delta.x !== 0 || delta.y !== 0) {\r\n shape.attachedConnectors\r\n .filter(function (c) { return !connectorsSet[c.key]; })\r\n .forEach(function (connector) {\r\n _this.updateConnectorAttachedPoints(history, model, connector);\r\n var beginPointIndex = connector.beginItem ? 1 : 0;\r\n var endPointIndex = connector.endItem ? (connector.points.length - 2) : (connector.points.length - 1);\r\n for (var i = beginPointIndex; i <= endPointIndex; i++)\r\n _this.moveConnectorPoint(history, connector, i, connector.points[i].offset(delta.x, delta.y));\r\n });\r\n model.getChildren(shape).forEach(function (child) {\r\n if (child instanceof Shape_1.Shape) {\r\n var childPosition = child.position.clone().offset(delta.x, delta.y);\r\n _this.applyLayoutToNode(history, model, child, childPosition, connectorsSet);\r\n }\r\n });\r\n }\r\n };\r\n ModelUtils.applyLayoutToConnectors = function (history, model, layout, connectors, skipPointIndices) {\r\n var _this = this;\r\n connectors.filter(function (c) { return c.beginItem || c.endItem; }).forEach(function (connector) {\r\n var edgeLayout = layout.edgeToPosition[connector.key];\r\n if (connector.beginItem && connector.endItem && !skipPointIndices && edgeLayout) {\r\n var beginIndex = connector.beginItem.getConnectionPointIndexForSide(edgeLayout.beginIndex);\r\n if (beginIndex !== connector.beginConnectionPointIndex)\r\n history.addAndRedo(new AddConnectionHistoryItem_1.SetConnectionPointIndexHistoryItem(connector, beginIndex, Connector_1.ConnectorPosition.Begin));\r\n var endIndex = connector.endItem.getConnectionPointIndexForSide(edgeLayout.endIndex);\r\n if (endIndex !== connector.endConnectionPointIndex)\r\n history.addAndRedo(new AddConnectionHistoryItem_1.SetConnectionPointIndexHistoryItem(connector, endIndex, Connector_1.ConnectorPosition.End));\r\n }\r\n _this.updateConnectorAttachedPoints(history, model, connector);\r\n if (edgeLayout)\r\n _this.deleteConnectorCustomPoints(history, connector);\r\n });\r\n };\r\n ModelUtils.adjustLayoutToSnapGrid = function (model, layout, gridSize) {\r\n var _this = this;\r\n layout.nodeKeys.forEach(function (key) {\r\n layout.nodeToLayout[key].position.x = _this.getSnappedPos(model, gridSize, layout.nodeToLayout[key].position.x, true);\r\n layout.nodeToLayout[key].position.y = _this.getSnappedPos(model, gridSize, layout.nodeToLayout[key].position.y, false);\r\n });\r\n };\r\n ModelUtils.getGraphInfoByItems = function (model, shapes, connectors, isDatabinding) {\r\n if (isDatabinding === void 0) { isDatabinding = true; }\r\n var itemsByContainerKey = {};\r\n var items = [].concat(shapes).concat(connectors);\r\n items.forEach(function (item) {\r\n var containerKey = item.container && item.container.key;\r\n if (!itemsByContainerKey[containerKey])\r\n itemsByContainerKey[containerKey] = [];\r\n itemsByContainerKey[containerKey].push(item);\r\n });\r\n var result = [];\r\n for (var key in itemsByContainerKey) {\r\n if (!Object.prototype.hasOwnProperty.call(itemsByContainerKey, key))\r\n continue;\r\n var container = key && model.findContainer(key);\r\n if (!container || (container.expanded && !model.findItemCollapsedContainer(container))) {\r\n var containerKey = container && container.key;\r\n var graph = this.getGraphByItems(model, itemsByContainerKey[key], containerKey, !isDatabinding);\r\n var allowCreateInfo = false;\r\n if (graph.nodes.length > 1)\r\n allowCreateInfo = true;\r\n else if (graph.nodes.length)\r\n if (isDatabinding)\r\n allowCreateInfo = true;\r\n else if (container && itemsByContainerKey[container.container && container.container.key])\r\n allowCreateInfo = true;\r\n if (allowCreateInfo)\r\n result.push(new GraphInfo_1.GraphInfo(container, graph));\r\n }\r\n }\r\n return result.sort(function (a, b) { return b.level - a.level; });\r\n };\r\n ModelUtils.getGraphByItems = function (model, items, containerKey, skipLocked) {\r\n var _this = this;\r\n var graph = new Graph_1.Graph([], []);\r\n var knownIds = {};\r\n items.forEach(function (item) {\r\n _this.extendByConnectedComponents(item, graph, containerKey, knownIds, skipLocked);\r\n });\r\n graph.nodes.sort(function (a, b) { return model.getItemIndex(model.findItem(a)) - model.getItemIndex(model.findItem(b)); });\r\n graph.edges.sort(function (a, b) { return model.getItemIndex(model.findItem(a.key)) - model.getItemIndex(model.findItem(b.key)); });\r\n graph.edges = graph.edges.filter(function (e) { return graph.getNode(e.from) && graph.getNode(e.to); });\r\n return graph;\r\n };\r\n ModelUtils.extendByConnectedComponents = function (item, graph, containerKey, knownIds, skipLocked) {\r\n var _this = this;\r\n if (!item || (skipLocked && item.locked) || knownIds[item.key])\r\n return;\r\n knownIds[item.key] = true;\r\n if (item instanceof Connector_1.Connector && (item.container && item.container.key) === containerKey &&\r\n item.beginItem && (!item.beginItem.locked || !skipLocked) && item.endItem && (!item.endItem.locked || !skipLocked) &&\r\n item.beginItem !== item.endItem) {\r\n graph.addEdge(new Structures_1.Edge(item.key, item.beginItem && item.beginItem.key, item.endItem && item.endItem.key));\r\n this.extendByConnectedComponents(item.beginItem, graph, containerKey, knownIds, skipLocked);\r\n this.extendByConnectedComponents(item.endItem, graph, containerKey, knownIds, skipLocked);\r\n }\r\n else if (item instanceof Shape_1.Shape && (item.container && item.container.key) === containerKey) {\r\n graph.addNode(item);\r\n item.attachedConnectors.forEach(function (c) { return _this.extendByConnectedComponents(c, graph, containerKey, knownIds, skipLocked); });\r\n }\r\n };\r\n // Units\r\n ModelUtils.getlUnitValue = function (units, twipsValue) {\r\n switch (units) {\r\n case Enums_1.DiagramUnit.Cm:\r\n return unit_converter_1.UnitConverter.twipsToCentimeters(twipsValue);\r\n case Enums_1.DiagramUnit.In:\r\n return unit_converter_1.UnitConverter.twipsToInches(twipsValue);\r\n case Enums_1.DiagramUnit.Px:\r\n return unit_converter_1.UnitConverter.twipsToPixels(twipsValue);\r\n }\r\n };\r\n ModelUtils.getUnitText = function (units, unitItems, formatUnit, twipsValue, fractionDigits) {\r\n if (fractionDigits === void 0) { fractionDigits = 2; }\r\n var unitItemText = unitItems[units] ? \" \" + unitItems[units] : \"\";\r\n var unitValue = this.getlUnitValue(units, twipsValue);\r\n switch (units) {\r\n case Enums_1.DiagramUnit.Cm:\r\n return formatUnit(+unitValue.toFixed(fractionDigits)) + unitItemText;\r\n case Enums_1.DiagramUnit.In:\r\n return formatUnit(+unitValue.toFixed(fractionDigits)) + unitItemText;\r\n case Enums_1.DiagramUnit.Px:\r\n return formatUnit(+unitValue.toFixed(0)) + unitItemText;\r\n }\r\n };\r\n ModelUtils.getTwipsValue = function (units, value) {\r\n switch (units) {\r\n case Enums_1.DiagramUnit.Cm:\r\n return unit_converter_1.UnitConverter.centimetersToTwips(value);\r\n case Enums_1.DiagramUnit.In:\r\n return unit_converter_1.UnitConverter.inchesToTwips(value);\r\n case Enums_1.DiagramUnit.Px:\r\n return unit_converter_1.UnitConverter.pixelsToTwips(value);\r\n }\r\n };\r\n ModelUtils.getGuidItemKey = function () {\r\n return math_1.MathUtils.generateGuid();\r\n };\r\n ModelUtils.createSelectedItems = function (selection) {\r\n var result = {};\r\n selection.getSelectedItems(true).forEach(function (i) { return result[i.key] = i; });\r\n return result;\r\n };\r\n ModelUtils.canMoveConnector = function (selectedItems, connector) {\r\n var beginItem = connector.beginItem;\r\n var endItem = connector.endItem;\r\n if (!beginItem && !endItem)\r\n return !connector.isLocked;\r\n if (!selectedItems[connector.key])\r\n return false;\r\n if (beginItem === endItem)\r\n return !!selectedItems[beginItem.key];\r\n if (!beginItem)\r\n return !!selectedItems[endItem.key];\r\n if (!endItem)\r\n return !!selectedItems[beginItem.key];\r\n return !!selectedItems[beginItem.key] && !!selectedItems[endItem.key];\r\n };\r\n ModelUtils.createRectangle = function (items) {\r\n return Utils_1.GeometryUtils.getCommonRectangle(items.map(function (i) { return i.rectangle; }));\r\n };\r\n ModelUtils.connectionPointActionSize = unit_converter_1.UnitConverter.pixelsToTwips(8);\r\n return ModelUtils;\r\n}());\r\nexports.ModelUtils = ModelUtils;\r\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PathPrimitiveClosePathCommand = exports.PathPrimitiveArcToCommand = exports.PathPrimitiveQuadraticCurveToCommand = exports.PathPrimitiveCubicCurveToCommand = exports.PathPrimitiveLineToCommand = exports.PathPrimitiveMoveToCommand = exports.PathPrimitiveCommand = exports.PathPrimitive = void 0;\r\nvar RenderHelper_1 = __webpack_require__(15);\r\nvar Primitive_1 = __webpack_require__(25);\r\nvar PrimitiveObject_1 = __webpack_require__(111);\r\nvar PathPrimitive = /** @class */ (function (_super) {\r\n __extends(PathPrimitive, _super);\r\n function PathPrimitive(commands, style, className, clipPathId, onApplyProperties) {\r\n var _this = _super.call(this, style, className, clipPathId, onApplyProperties) || this;\r\n _this.commands = commands.map(function (command) {\r\n command.style = style;\r\n return command;\r\n });\r\n return _this;\r\n }\r\n PathPrimitive.prototype.createMainElement = function () {\r\n return document.createElementNS(RenderHelper_1.svgNS, \"path\");\r\n };\r\n PathPrimitive.prototype.applyElementProperties = function (element, measurer) {\r\n element.setAttribute(\"d\", this.commands.map(function (c) { return c.toString(); }).join(\" \"));\r\n this.setPositionCorrectionAttribute(element);\r\n _super.prototype.applyElementProperties.call(this, element, measurer);\r\n };\r\n return PathPrimitive;\r\n}(Primitive_1.SvgPrimitive));\r\nexports.PathPrimitive = PathPrimitive;\r\nvar PathPrimitiveCommand = /** @class */ (function (_super) {\r\n __extends(PathPrimitiveCommand, _super);\r\n function PathPrimitiveCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return PathPrimitiveCommand;\r\n}(PrimitiveObject_1.PrimitiveObject));\r\nexports.PathPrimitiveCommand = PathPrimitiveCommand;\r\nvar PathPrimitiveMoveToCommand = /** @class */ (function (_super) {\r\n __extends(PathPrimitiveMoveToCommand, _super);\r\n function PathPrimitiveMoveToCommand(x, y) {\r\n var _this = _super.call(this) || this;\r\n _this.x = x;\r\n _this.y = y;\r\n return _this;\r\n }\r\n PathPrimitiveMoveToCommand.prototype.toString = function () {\r\n return \"M \" + this.getUnitVaue(this.x) + \" \" + this.getUnitVaue(this.y);\r\n };\r\n PathPrimitiveMoveToCommand.fromPoint = function (point) {\r\n return new PathPrimitiveMoveToCommand(point.x, point.y);\r\n };\r\n return PathPrimitiveMoveToCommand;\r\n}(PathPrimitiveCommand));\r\nexports.PathPrimitiveMoveToCommand = PathPrimitiveMoveToCommand;\r\nvar PathPrimitiveLineToCommand = /** @class */ (function (_super) {\r\n __extends(PathPrimitiveLineToCommand, _super);\r\n function PathPrimitiveLineToCommand(x, y) {\r\n var _this = _super.call(this) || this;\r\n _this.x = x;\r\n _this.y = y;\r\n return _this;\r\n }\r\n PathPrimitiveLineToCommand.prototype.toString = function () {\r\n return \"L \" + this.getUnitVaue(this.x) + \" \" + this.getUnitVaue(this.y);\r\n };\r\n PathPrimitiveLineToCommand.fromPoint = function (point) {\r\n return new PathPrimitiveLineToCommand(point.x, point.y);\r\n };\r\n return PathPrimitiveLineToCommand;\r\n}(PathPrimitiveCommand));\r\nexports.PathPrimitiveLineToCommand = PathPrimitiveLineToCommand;\r\nvar PathPrimitiveCubicCurveToCommand = /** @class */ (function (_super) {\r\n __extends(PathPrimitiveCubicCurveToCommand, _super);\r\n function PathPrimitiveCubicCurveToCommand(x1, y1, x2, y2, x3, y3) {\r\n var _this = _super.call(this) || this;\r\n _this.x1 = x1;\r\n _this.y1 = y1;\r\n _this.x2 = x2;\r\n _this.y2 = y2;\r\n _this.x3 = x3;\r\n _this.y3 = y3;\r\n return _this;\r\n }\r\n PathPrimitiveCubicCurveToCommand.prototype.toString = function () {\r\n return \"C \" + this.getUnitVaue(this.x1) + \" \" + this.getUnitVaue(this.y1) + \",\" +\r\n this.getUnitVaue(this.x2) + \" \" + this.getUnitVaue(this.y2) + \",\" +\r\n this.getUnitVaue(this.x3) + \" \" + this.getUnitVaue(this.y3);\r\n };\r\n return PathPrimitiveCubicCurveToCommand;\r\n}(PathPrimitiveCommand));\r\nexports.PathPrimitiveCubicCurveToCommand = PathPrimitiveCubicCurveToCommand;\r\nvar PathPrimitiveQuadraticCurveToCommand = /** @class */ (function (_super) {\r\n __extends(PathPrimitiveQuadraticCurveToCommand, _super);\r\n function PathPrimitiveQuadraticCurveToCommand(x1, y1, x2, y2) {\r\n var _this = _super.call(this) || this;\r\n _this.x1 = x1;\r\n _this.y1 = y1;\r\n _this.x2 = x2;\r\n _this.y2 = y2;\r\n return _this;\r\n }\r\n PathPrimitiveQuadraticCurveToCommand.prototype.toString = function () {\r\n return \"Q \" + this.getUnitVaue(this.x1) + \" \" + this.getUnitVaue(this.y1) + \",\" +\r\n this.getUnitVaue(this.x2) + \" \" + this.getUnitVaue(this.y2);\r\n };\r\n return PathPrimitiveQuadraticCurveToCommand;\r\n}(PathPrimitiveCommand));\r\nexports.PathPrimitiveQuadraticCurveToCommand = PathPrimitiveQuadraticCurveToCommand;\r\nvar PathPrimitiveArcToCommand = /** @class */ (function (_super) {\r\n __extends(PathPrimitiveArcToCommand, _super);\r\n function PathPrimitiveArcToCommand(rx, ry, xAxisRotation, largeArcFlag, sweepFag, x, y) {\r\n var _this = _super.call(this) || this;\r\n _this.rx = rx;\r\n _this.ry = ry;\r\n _this.xAxisRotation = xAxisRotation;\r\n _this.largeArcFlag = largeArcFlag;\r\n _this.sweepFag = sweepFag;\r\n _this.x = x;\r\n _this.y = y;\r\n return _this;\r\n }\r\n PathPrimitiveArcToCommand.prototype.toString = function () {\r\n return \"A \" + this.getUnitVaue(this.rx) + \" \" + this.getUnitVaue(this.ry) + \" \" +\r\n this.getUnitVaue(this.xAxisRotation) + \" \" +\r\n (this.largeArcFlag ? \"1\" : \"0\") + \" \" + (this.sweepFag ? \"1\" : \"0\") +\r\n this.getUnitVaue(this.x) + \",\" + this.getUnitVaue(this.y);\r\n };\r\n return PathPrimitiveArcToCommand;\r\n}(PathPrimitiveCommand));\r\nexports.PathPrimitiveArcToCommand = PathPrimitiveArcToCommand;\r\nvar PathPrimitiveClosePathCommand = /** @class */ (function (_super) {\r\n __extends(PathPrimitiveClosePathCommand, _super);\r\n function PathPrimitiveClosePathCommand() {\r\n return _super.call(this) || this;\r\n }\r\n PathPrimitiveClosePathCommand.prototype.toString = function () {\r\n return \"z\";\r\n };\r\n return PathPrimitiveClosePathCommand;\r\n}(PathPrimitiveCommand));\r\nexports.PathPrimitiveClosePathCommand = PathPrimitiveClosePathCommand;\r\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Connector = exports.CONNECTOR_DEFAULT_TEXT_POSITION = exports.ConnectorPosition = void 0;\r\nvar unit_converter_1 = __webpack_require__(11);\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar segment_1 = __webpack_require__(33);\r\nvar size_1 = __webpack_require__(2);\r\nvar CanvasManagerBase_1 = __webpack_require__(43);\r\nvar NativeItem_1 = __webpack_require__(84);\r\nvar Event_1 = __webpack_require__(14);\r\nvar ITextMeasurer_1 = __webpack_require__(44);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar TextPrimitive_1 = __webpack_require__(62);\r\nvar Utils_1 = __webpack_require__(17);\r\nvar Settings_1 = __webpack_require__(28);\r\nvar Utils_2 = __webpack_require__(3);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar ConnectorPointsCalculator_1 = __webpack_require__(179);\r\nvar ConnectorPointsOrthogonalCalculator_1 = __webpack_require__(180);\r\nvar ConnectorLineEndingStrategies_1 = __webpack_require__(186);\r\nvar ConnectorProperties_1 = __webpack_require__(30);\r\nvar ConnectorTexts_1 = __webpack_require__(187);\r\nvar ConnectorRenderPointsContext_1 = __webpack_require__(85);\r\nvar ConnectorPosition;\r\n(function (ConnectorPosition) {\r\n ConnectorPosition[ConnectorPosition[\"Begin\"] = 0] = \"Begin\";\r\n ConnectorPosition[ConnectorPosition[\"End\"] = 1] = \"End\";\r\n})(ConnectorPosition = exports.ConnectorPosition || (exports.ConnectorPosition = {}));\r\nexports.CONNECTOR_DEFAULT_TEXT_POSITION = 0.5;\r\nvar Connector = /** @class */ (function (_super) {\r\n __extends(Connector, _super);\r\n function Connector(points) {\r\n var _this = _super.call(this) || this;\r\n _this.beginConnectionPointIndex = -1;\r\n _this.endConnectionPointIndex = -1;\r\n _this.properties = new ConnectorProperties_1.ConnectorProperties();\r\n _this.points = points.map(function (pt) { return pt.clone(); });\r\n if (points.length < 2)\r\n throw Error(\"Points count should be greater than 1\");\r\n _this.texts = new ConnectorTexts_1.ConnectorTexts();\r\n return _this;\r\n }\r\n Object.defineProperty(Connector.prototype, \"rectangle\", {\r\n get: function () {\r\n return Utils_2.GeometryUtils.createRectagle(this.getRenderPoints(true));\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Connector.prototype, \"skippedRenderPoints\", {\r\n get: function () {\r\n return this.renderPoints ? this.renderPoints.filter(function (p) { return p.skipped; }) : undefined;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Connector.prototype, \"shouldChangeRenderPoints\", {\r\n get: function () {\r\n return this.renderPoints !== undefined && this.routingStrategy !== undefined;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Connector.prototype.assign = function (item) {\r\n _super.prototype.assign.call(this, item);\r\n item.beginItem = this.beginItem;\r\n item.beginConnectionPointIndex = this.beginConnectionPointIndex;\r\n item.endItem = this.endItem;\r\n item.endConnectionPointIndex = this.endConnectionPointIndex;\r\n item.properties = this.properties.clone();\r\n item.texts = this.texts.clone();\r\n if (this.routingStrategy !== undefined)\r\n item.routingStrategy = this.routingStrategy.clone();\r\n if (this.renderPoints !== undefined)\r\n item.renderPoints = this.renderPoints.map(function (p) { return p.clone(); });\r\n if (this.renderPointsWithoutSkipped !== undefined)\r\n item.renderPointsWithoutSkipped = this.renderPointsWithoutSkipped.map(function (p) { return p.clone(); });\r\n if (this.actualRoutingMode !== undefined)\r\n item.actualRoutingMode = this.actualRoutingMode;\r\n if (this.lockCreateRenderPoints !== undefined)\r\n item.lockCreateRenderPoints = this.lockCreateRenderPoints;\r\n if (this.shouldInvalidateRenderPoints !== undefined)\r\n item.shouldInvalidateRenderPoints = this.shouldInvalidateRenderPoints;\r\n };\r\n Connector.prototype.clone = function () {\r\n var clone = new Connector(this.points);\r\n this.assign(clone);\r\n return clone;\r\n };\r\n Connector.prototype.getTextCount = function () {\r\n return this.texts.count();\r\n };\r\n Connector.prototype.getText = function (position) {\r\n if (position === void 0) { position = exports.CONNECTOR_DEFAULT_TEXT_POSITION; }\r\n var textObj = this.texts.get(position);\r\n return textObj ? textObj.value : \"\";\r\n };\r\n Connector.prototype.setText = function (text, position) {\r\n if (position === void 0) { position = exports.CONNECTOR_DEFAULT_TEXT_POSITION; }\r\n if (!text || text === \"\")\r\n this.texts.remove(position);\r\n else\r\n this.texts.set(position, new ConnectorTexts_1.ConnectorText(position, text));\r\n };\r\n Connector.prototype.getTextPoint = function (position) {\r\n var points = this.getRenderPoints();\r\n return Utils_2.GeometryUtils.getPathPointByPosition(points, position)[0];\r\n };\r\n Connector.prototype.getTextPositionByPoint = function (point) {\r\n var points = this.getRenderPoints();\r\n var length = Utils_2.GeometryUtils.getPathLength(points);\r\n var pos = Utils_2.GeometryUtils.getPathPositionByPoint(points, point);\r\n var minTextHeight = unit_converter_1.UnitConverter.pointsToTwips(parseInt(this.styleText[\"font-size\"]));\r\n if (minTextHeight > pos * length)\r\n return minTextHeight / length;\r\n if (minTextHeight > length - pos * length)\r\n return (length - minTextHeight) / length;\r\n return pos;\r\n };\r\n Connector.prototype.getTextRectangle = function (position) {\r\n return rectangle_1.Rectangle.fromGeometry(this.getTextPoint(position), new size_1.Size(0, 0));\r\n };\r\n Connector.prototype.changeRoutingStrategy = function (strategy) {\r\n this.routingStrategy = strategy;\r\n this.invalidateRenderPoints();\r\n };\r\n Connector.prototype.clearRoutingStrategy = function () {\r\n delete this.routingStrategy;\r\n delete this.renderPoints;\r\n delete this.renderPointsWithoutSkipped;\r\n delete this.lockCreateRenderPoints;\r\n delete this.actualRoutingMode;\r\n delete this.shouldInvalidateRenderPoints;\r\n this.invalidateRenderPoints();\r\n };\r\n Connector.prototype.getCustomRenderPoints = function (keepSkipped) {\r\n if (keepSkipped === void 0) { keepSkipped = false; }\r\n var renderPoints = this.getRenderPoints(keepSkipped);\r\n var result = [];\r\n renderPoints.forEach(function (p, index) {\r\n if (index > 0 && index < renderPoints.length - 1)\r\n result.push(p);\r\n });\r\n return result;\r\n };\r\n Connector.prototype.getRenderPoints = function (keepSkipped) {\r\n if (keepSkipped === void 0) { keepSkipped = false; }\r\n if (this.shouldInvalidateRenderPoints === undefined || this.shouldInvalidateRenderPoints) {\r\n this.shouldInvalidateRenderPoints = false;\r\n if (!this.routingStrategy)\r\n this.changeRenderPoints(this.getCalculator().getPoints());\r\n else if (!this.lockCreateRenderPoints) {\r\n this.changeRenderPoints(new ConnectorPointsOrthogonalCalculator_1.ConnectorPointsOrthogonalCalculator(this).getPoints());\r\n if (this.actualRoutingMode !== Settings_1.ConnectorRoutingMode.None && this.points && this.renderPoints) {\r\n var beginPoint = this.points[0];\r\n var endPoint = this.points[this.points.length - 1];\r\n if (!beginPoint.equals(endPoint)) {\r\n var newRenderPoints = this.routingStrategy.createRenderPoints(this.points, this.renderPoints, this.beginItem, this.endItem, this.beginConnectionPointIndex, this.endConnectionPointIndex, ModelUtils_1.ModelUtils.getConnectorContainer(this));\r\n if (newRenderPoints) {\r\n this.changeRenderPoints(newRenderPoints);\r\n this.actualRoutingMode = Settings_1.ConnectorRoutingMode.AllShapesOnly;\r\n }\r\n else\r\n this.actualRoutingMode = Settings_1.ConnectorRoutingMode.None;\r\n }\r\n }\r\n }\r\n }\r\n return keepSkipped ? this.renderPoints : this.renderPointsWithoutSkipped;\r\n };\r\n Connector.prototype.createRenderPointsContext = function () {\r\n return this.shouldChangeRenderPoints ? new ConnectorRenderPointsContext_1.ConnectorRenderPointsContext(this.renderPoints.map(function (p) { return p.clone(); }), this.lockCreateRenderPoints, this.actualRoutingMode) : undefined;\r\n };\r\n Connector.prototype.updatePointsOnPageResize = function (offsetX, offsetY) {\r\n this.points = this.points.map(function (p) { return p.clone().offset(offsetX, offsetY); });\r\n if (this.renderPoints)\r\n this.changeRenderPoints(this.renderPoints.map(function (p) {\r\n var result = p.clone().offset(offsetX, offsetY);\r\n result.pointIndex = p.pointIndex;\r\n result.skipped = p.skipped;\r\n return result;\r\n }));\r\n };\r\n Connector.prototype.addPoint = function (pointIndex, point) {\r\n this.points.splice(pointIndex, 0, point);\r\n };\r\n Connector.prototype.deletePoint = function (pointIndex) {\r\n this.points.splice(pointIndex, 1);\r\n };\r\n Connector.prototype.movePoint = function (pointIndex, point) {\r\n this.points[pointIndex] = point;\r\n };\r\n Connector.prototype.onAddPoint = function (pointIndex, point) {\r\n if (this.shouldChangeRenderPoints)\r\n this.replaceRenderPointsCore(this.routingStrategy.onAddPoint(this.points, pointIndex, point, this.renderPoints), true, Settings_1.ConnectorRoutingMode.AllShapesOnly);\r\n else\r\n this.invalidateRenderPoints();\r\n };\r\n Connector.prototype.onDeletePoint = function (pointIndex) {\r\n if (this.shouldChangeRenderPoints)\r\n this.replaceRenderPointsCore(this.routingStrategy.onDeletePoint(this.points, pointIndex, this.renderPoints), this.points.length > 2, Settings_1.ConnectorRoutingMode.AllShapesOnly);\r\n else\r\n this.invalidateRenderPoints();\r\n };\r\n Connector.prototype.onMovePoint = function (pointIndex, point) {\r\n if (this.shouldChangeRenderPoints) {\r\n if (pointIndex === 0 || pointIndex === this.points.length - 1)\r\n this.lockCreateRenderPoints = false;\r\n this.replaceRenderPointsCore(this.routingStrategy.onMovePoint(this.points, pointIndex, point, this.renderPoints), this.lockCreateRenderPoints, Settings_1.ConnectorRoutingMode.AllShapesOnly);\r\n }\r\n else\r\n this.invalidateRenderPoints();\r\n };\r\n Connector.prototype.onMovePoints = function (beginPointIndex, beginPoint, lastPointIndex, lastPoint) {\r\n if (this.shouldChangeRenderPoints) {\r\n if (beginPointIndex === 0 || lastPointIndex === this.points.length - 1)\r\n this.lockCreateRenderPoints = false;\r\n this.replaceRenderPointsCore(this.routingStrategy.onMovePoints(this.points, beginPointIndex, beginPoint, lastPointIndex, lastPoint, this.renderPoints), this.lockCreateRenderPoints, Settings_1.ConnectorRoutingMode.AllShapesOnly);\r\n }\r\n else\r\n this.invalidateRenderPoints();\r\n };\r\n Connector.prototype.replaceRenderPoints = function (context) {\r\n if (context !== undefined)\r\n this.replaceRenderPointsCore(context.renderPoints, context.lockCreateRenderPoints, context.actualRoutingMode);\r\n else\r\n this.invalidateRenderPoints();\r\n };\r\n Connector.prototype.clearRenderPoints = function () {\r\n this.changeRenderPoints(undefined);\r\n this.lockCreateRenderPoints = false;\r\n this.actualRoutingMode = undefined;\r\n this.invalidateRenderPoints();\r\n };\r\n Connector.prototype.replaceRenderPointsCore = function (renderPoints, lockCreateRenderPoints, mode) {\r\n this.changeRenderPoints(renderPoints);\r\n this.lockCreateRenderPoints = lockCreateRenderPoints;\r\n this.actualRoutingMode = mode;\r\n this.invalidateRenderPoints();\r\n };\r\n Connector.prototype.changeRenderPoints = function (renderPoints) {\r\n this.renderPoints = renderPoints;\r\n this.renderPointsWithoutSkipped = renderPoints ? this.renderPoints.filter(function (pt) { return !pt.skipped; }) : undefined;\r\n };\r\n Connector.prototype.getCalculator = function () {\r\n return (this.properties.lineOption === ConnectorProperties_1.ConnectorLineOption.Straight) ?\r\n new ConnectorPointsCalculator_1.ConnectorPointsCalculator(this) :\r\n new ConnectorPointsOrthogonalCalculator_1.ConnectorPointsOrthogonalCalculator(this);\r\n };\r\n Connector.prototype.invalidateRenderPoints = function () {\r\n this.shouldInvalidateRenderPoints = true;\r\n };\r\n Connector.prototype.createPrimitives = function () {\r\n var result = [];\r\n var points = this.getRenderPoints();\r\n var path = new PathPrimitive_1.PathPrimitive(points.map(function (pt, index) {\r\n return index === 0 ? new PathPrimitive_1.PathPrimitiveMoveToCommand(pt.x, pt.y) : new PathPrimitive_1.PathPrimitiveLineToCommand(pt.x, pt.y);\r\n }), this.style);\r\n result.push(path);\r\n result = result.concat(this.createLineEndingPrimitives(points, path));\r\n result = result.concat(this.createTextPrimitives());\r\n return result;\r\n };\r\n Connector.prototype.createLineEndingPrimitives = function (points, connectorPath) {\r\n var result = [];\r\n if (points.length > 1) {\r\n var lineEndingInfo = [\r\n { strategy: this.createLineEndingStrategy(this.properties.startLineEnding), point1: points[0], point2: points[1] },\r\n { strategy: this.createLineEndingStrategy(this.properties.endLineEnding), point1: points[points.length - 1], point2: points[points.length - 2] }\r\n ];\r\n lineEndingInfo.forEach(function (info) {\r\n var strategy = info.strategy;\r\n if (strategy.hasCommands()) {\r\n var lineEndingPath = connectorPath;\r\n if (strategy.needCreateSeparatePrimitive())\r\n result.push(lineEndingPath = strategy.createPrimitive());\r\n lineEndingPath.commands = lineEndingPath.commands.concat(strategy.createCommands(info.point1, info.point2));\r\n }\r\n });\r\n }\r\n return result;\r\n };\r\n Connector.prototype.createLineEndingStrategy = function (lineEnding) {\r\n switch (lineEnding) {\r\n case ConnectorProperties_1.ConnectorLineEnding.None:\r\n return new ConnectorLineEndingStrategies_1.ConnectorLineEndingNoneStrategy(this.style);\r\n case ConnectorProperties_1.ConnectorLineEnding.Arrow:\r\n return new ConnectorLineEndingStrategies_1.ConnectorLineEndingArrowStrategy(this.style);\r\n case ConnectorProperties_1.ConnectorLineEnding.OutlinedTriangle:\r\n return new ConnectorLineEndingStrategies_1.ConnectorLineEndingOutlinedTriangleStrategy(this.style);\r\n case ConnectorProperties_1.ConnectorLineEnding.FilledTriangle:\r\n return new ConnectorLineEndingStrategies_1.ConnectorLineEndingFilledTriangleStrategy(this.style);\r\n default:\r\n return new ConnectorLineEndingStrategies_1.ConnectorLineEndingStrategy(this.style);\r\n }\r\n };\r\n Connector.prototype.createSelectorPrimitives = function () {\r\n var result = [];\r\n var points = this.getRenderPoints();\r\n result.push(new PathPrimitive_1.PathPrimitive(points.map(function (pt, index) {\r\n if (index === 0)\r\n return new PathPrimitive_1.PathPrimitiveMoveToCommand(pt.x, pt.y);\r\n else\r\n return new PathPrimitive_1.PathPrimitiveLineToCommand(pt.x, pt.y);\r\n }), null, \"selector\"));\r\n return result;\r\n };\r\n Connector.prototype.createTextPrimitives = function () {\r\n var _this = this;\r\n if (!this.enableText)\r\n return [];\r\n var result = [];\r\n this.texts.forEach(function (textObj) {\r\n var text = _this.getText(textObj.position);\r\n if (text && text !== \"\") {\r\n var pt = _this.getTextPoint(textObj.position);\r\n result = result.concat([\r\n 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) {\r\n Utils_1.RenderUtils.setElementEventData(el, Event_1.MouseEventElementType.ConnectorText, _this.key, textObj.position);\r\n })\r\n ]);\r\n }\r\n });\r\n return result;\r\n };\r\n Connector.prototype.getExtremeItem = function (position) {\r\n if (position === ConnectorPosition.Begin)\r\n return this.beginItem;\r\n if (position === ConnectorPosition.End)\r\n return this.endItem;\r\n return null;\r\n };\r\n Connector.prototype.getExtremeConnectionPointIndex = function (position) {\r\n if (position === ConnectorPosition.Begin)\r\n return this.beginConnectionPointIndex;\r\n if (position === ConnectorPosition.End)\r\n return this.endConnectionPointIndex;\r\n return -1;\r\n };\r\n Connector.prototype.getMinX = function () {\r\n var points = this.getRenderPoints();\r\n var xarr = points.map(function (p) { return p.x; });\r\n return xarr.reduce(function (prev, cur) { return Math.min(prev, cur); }, Number.MAX_VALUE);\r\n };\r\n Connector.prototype.getMinY = function () {\r\n var points = this.getRenderPoints();\r\n var yarr = points.map(function (p) { return p.y; });\r\n return yarr.reduce(function (prev, cur) { return Math.min(prev, cur); }, Number.MAX_VALUE);\r\n };\r\n Connector.prototype.getConnectionPoints = function () {\r\n return [];\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Connector.prototype.getConnectionPointSide = function (point, targetPoint) {\r\n return DiagramItem_1.ConnectionPointSide.Undefined;\r\n };\r\n Connector.prototype.getSegments = function () {\r\n var result = [];\r\n var renderPoints = this.getRenderPoints();\r\n renderPoints.forEach(function (pt, index) {\r\n if (index > 0)\r\n result.push(new segment_1.Segment(renderPoints[index - 1], pt));\r\n });\r\n return result;\r\n };\r\n Connector.prototype.intersectedByRect = function (rect) {\r\n return this.getSegments().some(function (s) { return s.isIntersectedByRect(rect); });\r\n };\r\n Connector.prototype.toNative = function (units) {\r\n var item = new NativeItem_1.NativeConnector(this.key, this.dataKey);\r\n item.fromKey = this.beginItem && this.beginItem.dataKey;\r\n item.toKey = this.endItem && this.endItem.dataKey;\r\n item.texts = this.texts.map(function (t) { return t; }).sort(function (a, b) { return a.position - b.position; }).map(function (a) { return a.value; });\r\n item.fromId = this.beginItem && this.beginItem.key;\r\n item.fromPointIndex = this.beginConnectionPointIndex;\r\n item.toId = this.endItem && this.endItem.key;\r\n item.toPointIndex = this.endConnectionPointIndex;\r\n item.points = this.points.map(function (pt) { return pt.clone(); });\r\n item.applyUnits(units);\r\n return item;\r\n };\r\n Connector.minOffset = unit_converter_1.UnitConverter.pixelsToTwips(24);\r\n Connector.minTextHeight = unit_converter_1.UnitConverter.pixelsToTwips(12);\r\n return Connector;\r\n}(DiagramItem_1.DiagramItem));\r\nexports.Connector = Connector;\r\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ShapeDescription = exports.ShapeTextPadding = exports.ShapeDefaultSize = exports.ShapeMinDimension = exports.ShapeDefaultDimension = void 0;\r\nvar unit_converter_1 = __webpack_require__(11);\r\nvar size_1 = __webpack_require__(2);\r\nvar LocalizationService_1 = __webpack_require__(37);\r\nvar ITextMeasurer_1 = __webpack_require__(44);\r\nvar RectaglePrimitive_1 = __webpack_require__(21);\r\nvar TextPrimitive_1 = __webpack_require__(62);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar ConnectionPoint_1 = __webpack_require__(46);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nexports.ShapeDefaultDimension = 1440;\r\nexports.ShapeMinDimension = 360;\r\nexports.ShapeDefaultSize = new size_1.Size(exports.ShapeDefaultDimension, exports.ShapeDefaultDimension);\r\nexports.ShapeTextPadding = unit_converter_1.UnitConverter.pixelsToTwips(10);\r\nvar ShapeDescription = /** @class */ (function () {\r\n function ShapeDescription(defaultSize, hasDefaultText) {\r\n if (defaultSize === void 0) { defaultSize = exports.ShapeDefaultSize.clone(); }\r\n this.defaultSize = defaultSize;\r\n this.hasDefaultText = hasDefaultText;\r\n this.onChanged = new Utils_1.EventDispatcher();\r\n this.connectionPoints = this.createConnectionPoints();\r\n }\r\n Object.defineProperty(ShapeDescription.prototype, \"enableText\", {\r\n get: function () { return true; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ShapeDescription.prototype, \"allowEditText\", {\r\n get: function () { return true; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ShapeDescription.prototype, \"enableImage\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ShapeDescription.prototype, \"allowEditImage\", {\r\n get: function () { return true; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ShapeDescription.prototype, \"hasTemplate\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ShapeDescription.prototype, \"enableChildren\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ShapeDescription.prototype, \"minWidth\", {\r\n get: function () { return undefined; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ShapeDescription.prototype, \"minHeight\", {\r\n get: function () { return undefined; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ShapeDescription.prototype, \"maxWidth\", {\r\n get: function () { return undefined; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ShapeDescription.prototype, \"maxHeight\", {\r\n get: function () { return undefined; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ShapeDescription.prototype, \"toolboxSize\", {\r\n get: function () { return this.defaultSize; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ShapeDescription.prototype.getTitle = function () {\r\n return LocalizationService_1.DiagramLocalizationService.shapeTexts[this.key];\r\n };\r\n ShapeDescription.prototype.getDefaultText = function () {\r\n return this.hasDefaultText ? LocalizationService_1.DiagramLocalizationService.shapeTexts[this.key] : \"\";\r\n };\r\n ShapeDescription.prototype.getDefaultImageUrl = function () {\r\n return \"\";\r\n };\r\n ShapeDescription.prototype.getConnectionPoints = function () {\r\n return this.connectionPoints;\r\n };\r\n ShapeDescription.prototype.createConnectionPoints = function () {\r\n return [\r\n new ConnectionPoint_1.ConnectionPoint(0.5, 0, DiagramItem_1.ConnectionPointSide.North),\r\n new ConnectionPoint_1.ConnectionPoint(1, 0.5, DiagramItem_1.ConnectionPointSide.East),\r\n new ConnectionPoint_1.ConnectionPoint(0.5, 1, DiagramItem_1.ConnectionPointSide.South),\r\n new ConnectionPoint_1.ConnectionPoint(0, 0.5, DiagramItem_1.ConnectionPointSide.West)\r\n ];\r\n };\r\n ShapeDescription.prototype.processConnectionPoint = function (shape, point) {\r\n };\r\n ShapeDescription.prototype.getConnectionPointIndexForItem = function (item, connectionPointIndex) {\r\n return connectionPointIndex;\r\n };\r\n ShapeDescription.prototype.getConnectionPointIndexForSide = function (side) {\r\n return side;\r\n };\r\n ShapeDescription.prototype.createParameters = function (parameters) {\r\n };\r\n ShapeDescription.prototype.normalizeParameters = function (shape, parameters) {\r\n };\r\n ShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\r\n throw Error(\"Not implemented\");\r\n };\r\n ShapeDescription.prototype.changeParameterValue = function (parameters, key, change) {\r\n var p = parameters.get(key);\r\n p.value = change(p);\r\n };\r\n ShapeDescription.prototype.getParameterPoints = function (shape) {\r\n return [];\r\n };\r\n ShapeDescription.prototype.getExpandedSize = function (shape) {\r\n return shape.size;\r\n };\r\n ShapeDescription.prototype.getCollapsedSize = function (shape) {\r\n return shape.size;\r\n };\r\n ShapeDescription.prototype.getToolboxHeightToWidthRatio = function (width, height) {\r\n return height / width;\r\n };\r\n ShapeDescription.prototype.allowResizeHorizontally = function (_shape) {\r\n return true;\r\n };\r\n ShapeDescription.prototype.allowResizeVertically = function (_shape) {\r\n return true;\r\n };\r\n ShapeDescription.prototype.createPrimitives = function (shape, forToolbox) {\r\n var primitives = [];\r\n primitives = primitives.concat(this.createShapePrimitives(shape, forToolbox));\r\n if (this.enableImage)\r\n primitives = primitives.concat(this.createImagePrimitives(shape, forToolbox));\r\n if (this.enableText)\r\n primitives = primitives.concat(this.createTextPrimitives(shape, forToolbox));\r\n return primitives;\r\n };\r\n ShapeDescription.prototype.createImagePrimitives = function (_shape, _forToolbox) {\r\n return [];\r\n };\r\n ShapeDescription.prototype.createTextPrimitives = function (shape, forToolbox) {\r\n if (shape.text === undefined || shape.text === \"\")\r\n return [];\r\n var rect = this.getTextRectangle(shape);\r\n return [\r\n 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())\r\n ];\r\n };\r\n ShapeDescription.prototype.getTextClipPathId = function (_forToolbox) {\r\n return undefined;\r\n };\r\n ShapeDescription.prototype.getTextAngle = function () {\r\n return TextPrimitive_1.TextAngle.Angle0deg;\r\n };\r\n ShapeDescription.prototype.getClientRectangle = function (shape) {\r\n return shape.rectangle;\r\n };\r\n ShapeDescription.prototype.getTextEditRectangle = function (shape) {\r\n return this.getTextRectangle(shape);\r\n };\r\n ShapeDescription.prototype.createSelectorPrimitives = function (shape) {\r\n return [\r\n new RectaglePrimitive_1.RectanglePrimitive(shape.position.x, shape.position.y, shape.size.width, shape.size.height, null, \"selector\")\r\n ];\r\n };\r\n ShapeDescription.prototype.raiseShapeDescriptionChanged = function (description) {\r\n this.onChanged.raise1(function (l) { return l.notifyShapeDescriptionChanged(description); });\r\n };\r\n ShapeDescription.textSpacing = unit_converter_1.UnitConverter.pixelsToTwips(2);\r\n return ShapeDescription;\r\n}());\r\nexports.ShapeDescription = ShapeDescription;\r\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CompositionHistoryItem = exports.HistoryItem = void 0;\r\nvar HistoryItem = /** @class */ (function () {\r\n function HistoryItem() {\r\n this.uniqueId = -1;\r\n }\r\n HistoryItem.prototype.changeModified = function () {\r\n return true;\r\n };\r\n HistoryItem.prototype.getName = function () {\r\n return this.constructor.name;\r\n };\r\n return HistoryItem;\r\n}());\r\nexports.HistoryItem = HistoryItem;\r\nvar CompositionHistoryItem = /** @class */ (function (_super) {\r\n __extends(CompositionHistoryItem, _super);\r\n function CompositionHistoryItem() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.historyItems = [];\r\n _this.dataSyncItems = [];\r\n return _this;\r\n }\r\n CompositionHistoryItem.prototype.changeModified = function () {\r\n var item;\r\n for (var i = 0; item = this.historyItems[i]; i++)\r\n if (item.changeModified())\r\n return true;\r\n return false;\r\n };\r\n CompositionHistoryItem.prototype.redo = function (manipulator) {\r\n var item;\r\n for (var i = 0; item = this.historyItems[i]; i++)\r\n item.redo(manipulator);\r\n };\r\n CompositionHistoryItem.prototype.undo = function (manipulator) {\r\n var item;\r\n for (var i = this.dataSyncItems.length - 1; item = this.dataSyncItems[i]; i--)\r\n item.undo(manipulator);\r\n this.dataSyncItems = [];\r\n for (var i = this.historyItems.length - 1; item = this.historyItems[i]; i--)\r\n item.undo(manipulator);\r\n };\r\n CompositionHistoryItem.prototype.add = function (historyItem) {\r\n if (historyItem == null)\r\n throw new Error(\"cannot be null\");\r\n this.historyItems.push(historyItem);\r\n };\r\n return CompositionHistoryItem;\r\n}(HistoryItem));\r\nexports.CompositionHistoryItem = CompositionHistoryItem;\r\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DiagramItem = exports.DEFAULT_ZINDEX = exports.ConnectionPointSide = void 0;\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar metrics_1 = __webpack_require__(36);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar Style_1 = __webpack_require__(27);\r\nvar ConnectionPointSide;\r\n(function (ConnectionPointSide) {\r\n ConnectionPointSide[ConnectionPointSide[\"Undefined\"] = -1] = \"Undefined\";\r\n ConnectionPointSide[ConnectionPointSide[\"North\"] = 0] = \"North\";\r\n ConnectionPointSide[ConnectionPointSide[\"East\"] = 1] = \"East\";\r\n ConnectionPointSide[ConnectionPointSide[\"South\"] = 2] = \"South\";\r\n ConnectionPointSide[ConnectionPointSide[\"West\"] = 3] = \"West\";\r\n})(ConnectionPointSide = exports.ConnectionPointSide || (exports.ConnectionPointSide = {}));\r\nexports.DEFAULT_ZINDEX = 0;\r\nvar DiagramItem = /** @class */ (function () {\r\n function DiagramItem() {\r\n this.key = undefined;\r\n this.dataKey = undefined;\r\n this.customData = undefined;\r\n this.attachedConnectors = [];\r\n this.zIndex = exports.DEFAULT_ZINDEX;\r\n this.locked = false;\r\n this.container = undefined;\r\n this.style = new Style_1.Style();\r\n this.styleText = new Style_1.TextStyle();\r\n }\r\n DiagramItem.prototype.assign = function (item) {\r\n item.key = this.key;\r\n item.dataKey = this.dataKey;\r\n item.customData = Utils_1.ObjectUtils.cloneObject(this.customData);\r\n item.locked = this.locked;\r\n item.attachedConnectors = this.attachedConnectors.slice();\r\n item.style = this.style.clone();\r\n item.styleText = this.styleText.clone();\r\n item.zIndex = this.zIndex;\r\n item.container = this.container;\r\n };\r\n DiagramItem.prototype.getConnectionPointPosition = function (index, targetPoint) {\r\n return this.getConnectionPoint(index, targetPoint).toPoint();\r\n };\r\n DiagramItem.prototype.getConnectionPoint = function (index, targetPoint) {\r\n if (index < 0 && targetPoint)\r\n index = this.getNearestConnectionPoint(targetPoint);\r\n var connectionPoints = this.getConnectionPoints();\r\n return connectionPoints[index] || connectionPoints[0];\r\n };\r\n DiagramItem.prototype.getNearestConnectionPoint = function (targetPoint) {\r\n var distance = Number.MAX_VALUE;\r\n var result;\r\n this.getConnectionPoints().forEach(function (pt, index) {\r\n var ptDistance = metrics_1.Metrics.euclideanDistance(pt, targetPoint);\r\n if (ptDistance < distance) {\r\n distance = ptDistance;\r\n result = index;\r\n }\r\n });\r\n return result;\r\n };\r\n DiagramItem.prototype.getConnectionPointIndex = function (side) {\r\n var points = this.getConnectionPoints();\r\n return points.reduce(function (prevIndex, pt, index) {\r\n if (side === ConnectionPointSide.North && pt.y < points[prevIndex].y)\r\n return index;\r\n if (side === ConnectionPointSide.South && pt.y > points[prevIndex].y)\r\n return index;\r\n if (side === ConnectionPointSide.West && pt.x < points[prevIndex].x)\r\n return index;\r\n if (side === ConnectionPointSide.East && pt.x > points[prevIndex].x)\r\n return index;\r\n return prevIndex;\r\n }, 0);\r\n };\r\n DiagramItem.prototype.getConnectionPointSideByIndex = function (index, targetPoint) {\r\n var point = this.getConnectionPoint(index, targetPoint);\r\n return this.getConnectionPointSide(point, targetPoint);\r\n };\r\n DiagramItem.prototype.getConnectionPointIndexForSide = function (side) {\r\n return side;\r\n };\r\n Object.defineProperty(DiagramItem.prototype, \"enableText\", {\r\n get: function () { return true; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramItem.prototype, \"allowEditText\", {\r\n get: function () { return true; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramItem.prototype, \"hasTemplate\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramItem.prototype, \"enableChildren\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramItem.prototype, \"isLocked\", {\r\n get: function () { return this.locked || (this.container && this.container.isLocked); },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramItem.prototype, \"allowResizeHorizontally\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramItem.prototype, \"allowResizeVertically\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramItem.prototype, \"strokeWidth\", {\r\n get: function () { return this.style.strokeWidth; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n DiagramItem.prototype.intersectedByRect = function (rect) {\r\n return rectangle_1.Rectangle.areIntersected(this.rectangle, rect);\r\n };\r\n return DiagramItem;\r\n}());\r\nexports.DiagramItem = DiagramItem;\r\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SimpleCommandBase = void 0;\r\nvar CommandBase_1 = __webpack_require__(197);\r\nvar CommandStates_1 = __webpack_require__(198);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar LocalizationService_1 = __webpack_require__(37);\r\nvar SimpleCommandBase = /** @class */ (function (_super) {\r\n __extends(SimpleCommandBase, _super);\r\n function SimpleCommandBase() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SimpleCommandBase.prototype.getState = function () {\r\n return new CommandStates_1.SimpleCommandState(this.isEnabled(), this.getValue(), this.getDefaultValue(), this.getItems(), this.isVisible());\r\n };\r\n SimpleCommandBase.prototype.isVisible = function () {\r\n return true;\r\n };\r\n SimpleCommandBase.prototype.isEnabled = function () {\r\n return !this.control.settings.readOnly || this.isEnabledInReadOnlyMode();\r\n };\r\n SimpleCommandBase.prototype.isEnabledInReadOnlyMode = function () {\r\n return false;\r\n };\r\n SimpleCommandBase.prototype.getValue = function () {\r\n return undefined;\r\n };\r\n SimpleCommandBase.prototype.getDefaultValue = function () {\r\n return undefined;\r\n };\r\n SimpleCommandBase.prototype.getItems = function () {\r\n return undefined;\r\n };\r\n SimpleCommandBase.prototype.getModelUnit = function (value) {\r\n return ModelUtils_1.ModelUtils.getlUnitValue(this.control.model.units, value);\r\n };\r\n SimpleCommandBase.prototype.getModelUnitText = function (value) {\r\n return ModelUtils_1.ModelUtils.getUnitText(this.control.model.units, LocalizationService_1.DiagramLocalizationService.unitItems, LocalizationService_1.DiagramLocalizationService.formatUnit, value);\r\n };\r\n SimpleCommandBase.prototype.getModelUnitTwipsValue = function (value) {\r\n return ModelUtils_1.ModelUtils.getTwipsValue(this.control.model.units, value);\r\n };\r\n SimpleCommandBase.prototype.getViewUnit = function (value) {\r\n return ModelUtils_1.ModelUtils.getlUnitValue(this.control.settings.viewUnits, value);\r\n };\r\n SimpleCommandBase.prototype.getViewUnitText = function (value) {\r\n return ModelUtils_1.ModelUtils.getUnitText(this.control.settings.viewUnits, LocalizationService_1.DiagramLocalizationService.unitItems, LocalizationService_1.DiagramLocalizationService.formatUnit, value);\r\n };\r\n SimpleCommandBase.prototype.getViewUnitTwipsValue = function (value) {\r\n return ModelUtils_1.ModelUtils.getTwipsValue(this.control.settings.viewUnits, value);\r\n };\r\n return SimpleCommandBase;\r\n}(CommandBase_1.CommandBase));\r\nexports.SimpleCommandBase = SimpleCommandBase;\r\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar UnitConverter = (function () {\r\n function UnitConverter() {\r\n }\r\n UnitConverter.hundredthsOfMillimeterToTwipsRound = function (value) {\r\n return Math.round(1440 * value / 2540.0);\r\n };\r\n UnitConverter.documentsToTwips = function (value) {\r\n return 24 * value / 5;\r\n };\r\n UnitConverter.pixelsToTwips = function (value) {\r\n return Math.round(UnitConverter.pixelsToTwipsF(value));\r\n };\r\n UnitConverter.pixelsToTwipsCustomDpi = function (value, dpi) {\r\n return Math.round(UnitConverter.pixelsToTwipsFCustomDpi(value, dpi));\r\n };\r\n UnitConverter.inchesToTwips = function (value) {\r\n return Math.round(UnitConverter.inchesToTwipsF(value));\r\n };\r\n UnitConverter.pointsToTwips = function (value) {\r\n return Math.round(UnitConverter.pointsToTwipsF(value));\r\n };\r\n UnitConverter.picasToTwips = function (value) {\r\n return Math.round(value * 1440 / UnitConverter.PICAS_PER_INCH);\r\n };\r\n UnitConverter.centimetersToTwips = function (value) {\r\n return Math.round(UnitConverter.centimetersToTwipsF(value));\r\n };\r\n UnitConverter.pixelsToTwipsF = function (value) {\r\n return value * 1440 / UnitConverter.DPI;\r\n };\r\n UnitConverter.pixelsToTwipsFCustomDpi = function (value, dpi) {\r\n return value * 1440 / dpi;\r\n };\r\n UnitConverter.inchesToTwipsF = function (value) {\r\n return value * 1440;\r\n };\r\n UnitConverter.pointsToTwipsF = function (value) {\r\n return value * 20;\r\n };\r\n UnitConverter.centimetersToTwipsF = function (value) {\r\n return value * 1440 / UnitConverter.CENTIMETERS_PER_INCH;\r\n };\r\n UnitConverter.twipsToDegrees = function (value) {\r\n return value / 60000;\r\n };\r\n UnitConverter.twipsToRadians = function (value) {\r\n return value / 60000 * Math.PI / 180;\r\n };\r\n UnitConverter.degreesToTwips = function (value) {\r\n return value * 60000;\r\n };\r\n UnitConverter.radiansToTwips = function (value) {\r\n return value * 60000 / Math.PI * 180;\r\n };\r\n UnitConverter.radiansToDegrees = function (value) {\r\n return value / Math.PI * 180;\r\n };\r\n UnitConverter.twipsToFD = function (value) {\r\n return Math.round(value * 2048 / 1875);\r\n };\r\n UnitConverter.fdToTwips = function (value) {\r\n return Math.round(value * 1875 / 2048);\r\n };\r\n UnitConverter.emuToTwips = function (val) {\r\n return val / 635;\r\n };\r\n UnitConverter.twipsToPixels = function (value) {\r\n return Math.round(UnitConverter.twipsToPixelsF(value));\r\n };\r\n UnitConverter.inchesToPixels = function (value) {\r\n return Math.round(UnitConverter.DPI * value);\r\n };\r\n UnitConverter.centimeterToPixel = function (value) {\r\n return Math.round(this.centimeterToPixelF(value));\r\n };\r\n UnitConverter.centimeterToPixelF = function (value) {\r\n return value * UnitConverter.DPI / UnitConverter.CENTIMETERS_PER_INCH;\r\n };\r\n UnitConverter.millimetersToPixel = function (value) {\r\n return Math.round(value / (UnitConverter.CENTIMETERS_PER_INCH / UnitConverter.DPI) / 10);\r\n };\r\n UnitConverter.pointsToPixels = function (value) {\r\n return Math.round(value * UnitConverter.DPI / 72);\r\n };\r\n UnitConverter.pointsToPixelsF = function (value) {\r\n return value * UnitConverter.DPI / 72;\r\n };\r\n UnitConverter.twipsToPixelsF = function (value) {\r\n return value * UnitConverter.DPI / 1440;\r\n };\r\n UnitConverter.pixelsToPoints = function (value) {\r\n return Math.round(value * 72 / UnitConverter.DPI);\r\n };\r\n UnitConverter.pixelsToPointsF = function (value) {\r\n return value * 72 / UnitConverter.DPI;\r\n };\r\n UnitConverter.twipsToPoints = function (value) {\r\n return Math.round(this.twipsToPointsF(value));\r\n };\r\n UnitConverter.twipsToPointsF = function (value) {\r\n return value / 20;\r\n };\r\n UnitConverter.twipsToInches = function (value) {\r\n return value / 1440;\r\n };\r\n UnitConverter.pixelsToInches = function (value) {\r\n return value / UnitConverter.DPI;\r\n };\r\n UnitConverter.twipsToCentimeters = function (value) {\r\n return value * UnitConverter.CENTIMETERS_PER_INCH / 1440;\r\n };\r\n UnitConverter.pixelToCentimeters = function (value) {\r\n return value * UnitConverter.CENTIMETERS_PER_INCH / UnitConverter.DPI;\r\n };\r\n UnitConverter.twipsToHundredthsOfMillimeter = function (value) {\r\n return Math.round(127 * value / 72);\r\n };\r\n UnitConverter.pixelsToHundredthsOfMillimeter = function (value) {\r\n return Math.round(2540 * value / UnitConverter.DPI);\r\n };\r\n UnitConverter.hundredthsOfMillimeterToTwips = function (value) {\r\n return 15 * value / 127;\r\n };\r\n UnitConverter.twipsToEmu = function (val) {\r\n return val * 635;\r\n };\r\n UnitConverter.twipsToDegree = function (value) {\r\n return value / 60000;\r\n };\r\n UnitConverter.DPI = 96;\r\n UnitConverter.CENTIMETERS_PER_INCH = 2.54;\r\n UnitConverter.PICAS_PER_INCH = 6;\r\n return UnitConverter;\r\n}());\r\nexports.UnitConverter = UnitConverter;\r\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar flag_1 = __webpack_require__(163);\r\nvar algorithms_1 = __webpack_require__(164);\r\nvar fixed_1 = __webpack_require__(108);\r\nvar point_1 = __webpack_require__(1);\r\nvar size_1 = __webpack_require__(2);\r\nvar Rectangle = (function () {\r\n function Rectangle(x, y, width, height) {\r\n this.x = x;\r\n this.y = y;\r\n this.width = width;\r\n this.height = height;\r\n }\r\n Object.defineProperty(Rectangle.prototype, \"right\", {\r\n get: function () {\r\n return this.x + this.width;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Rectangle.prototype, \"bottom\", {\r\n get: function () {\r\n return this.y + this.height;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Rectangle.prototype, \"center\", {\r\n get: function () {\r\n return Rectangle.center(this);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Rectangle.prototype.createRectangle = function () {\r\n return new Rectangle(this.x, this.y, this.width, this.height);\r\n };\r\n Rectangle.prototype.createSize = function () {\r\n return new size_1.Size(this.width, this.height);\r\n };\r\n Rectangle.prototype.createPosition = function () {\r\n return new point_1.Point(this.x, this.y);\r\n };\r\n Rectangle.prototype.createVerticalInterval = function () {\r\n return new fixed_1.FixedInterval(this.y, this.height);\r\n };\r\n Rectangle.prototype.createHorizontalInterval = function () {\r\n return new fixed_1.FixedInterval(this.x, this.width);\r\n };\r\n Rectangle.fromGeometry = function (point, size) {\r\n return new Rectangle(point.x, point.y, size.width, size.height);\r\n };\r\n Rectangle.fromPoints = function (pointA, pointB) {\r\n var x = Math.min(pointA.x, pointB.x);\r\n var y = Math.min(pointA.y, pointB.y);\r\n var width = Math.abs(pointA.x - pointB.x);\r\n var height = Math.abs(pointA.y - pointB.y);\r\n return new Rectangle(x, y, width, height);\r\n };\r\n Rectangle.fromPositions = function (x1, y1, x2, y2) {\r\n var x = Math.min(x1, x2);\r\n var y = Math.min(y1, y2);\r\n var width = Math.abs(x2 - x1);\r\n var height = Math.abs(y2 - y1);\r\n return new Rectangle(x, y, width, height);\r\n };\r\n Rectangle.fromCenter = function (center, minRadius) {\r\n return new Rectangle(center.x - minRadius, center.y - minRadius, minRadius * 2, minRadius * 2);\r\n };\r\n Rectangle.prototype.isCollapsed = function () {\r\n return this.width === 0 || this.height === 0;\r\n };\r\n Rectangle.prototype.isEmpty = function () {\r\n return this.x === 0 && this.y === 0 &&\r\n this.width === 0 && this.height === 0;\r\n };\r\n Rectangle.prototype.toString = function () {\r\n return JSON.stringify(this);\r\n };\r\n Rectangle.prototype.setPosition = function (pos) {\r\n this.x = pos.x;\r\n this.y = pos.y;\r\n return this;\r\n };\r\n Rectangle.prototype.setSize = function (size) {\r\n this.width = size.width;\r\n this.height = size.height;\r\n return this;\r\n };\r\n Rectangle.prototype.setGeomerty = function (rect) {\r\n this.x = rect.x;\r\n this.y = rect.y;\r\n this.width = rect.width;\r\n this.height = rect.height;\r\n return this;\r\n };\r\n Rectangle.prototype.moveRectangle = function (offsetX, offsetY) {\r\n this.x += offsetX;\r\n this.y += offsetY;\r\n return this;\r\n };\r\n Rectangle.prototype.moveRectangleByPoint = function (offset) {\r\n this.x += offset.x;\r\n this.y += offset.y;\r\n return this;\r\n };\r\n Rectangle.prototype.resize = function (deltaX, deltaY) {\r\n this.width += deltaX;\r\n this.height += deltaY;\r\n return this;\r\n };\r\n Rectangle.prototype.nonNegativeSize = function () {\r\n if (this.width < 0)\r\n this.width = 0;\r\n if (this.height < 0)\r\n this.height = 0;\r\n return this;\r\n };\r\n Rectangle.prototype.multiply = function (multiplierX, multiplierY) {\r\n this.x *= multiplierX;\r\n this.y *= multiplierY;\r\n this.width *= multiplierX;\r\n this.height *= multiplierY;\r\n return this;\r\n };\r\n Rectangle.prototype.equals = function (obj) {\r\n return Rectangle.equals(this, obj);\r\n };\r\n Rectangle.prototype.clone = function () {\r\n var rect = new Rectangle(0, 0, 0, 0);\r\n rect.copyFrom(this);\r\n return rect;\r\n };\r\n Rectangle.prototype.copyFrom = function (obj) {\r\n this.x = obj.x;\r\n this.y = obj.y;\r\n this.width = obj.width;\r\n this.height = obj.height;\r\n };\r\n Rectangle.prototype.containsPoint = function (point) {\r\n return Rectangle.containsPoint(this, point);\r\n };\r\n Rectangle.prototype.containsRectangle = function (rectangle) {\r\n return this.x <= rectangle.x &&\r\n this.right >= rectangle.right &&\r\n this.y <= rectangle.y &&\r\n this.bottom >= rectangle.bottom;\r\n };\r\n Rectangle.prototype.inflate = function (deltaX, deltaY) {\r\n if (deltaY === void 0) { deltaY = deltaX; }\r\n this.x -= deltaX;\r\n this.y -= deltaY;\r\n this.width += deltaX * 2;\r\n this.height += deltaY * 2;\r\n return this;\r\n };\r\n Rectangle.prototype.applyOffsetsInside = function (offsets) {\r\n this.x += offsets.left;\r\n this.y += offsets.top;\r\n this.width -= offsets.left + offsets.right;\r\n this.height -= offsets.top + offsets.bottom;\r\n return this;\r\n };\r\n Rectangle.prototype.applyNormalizedOffsetsInside = function (offsets) {\r\n var left = Math.max(0, offsets.left);\r\n var right = Math.max(0, offsets.right);\r\n var horSum = left + right;\r\n if (horSum !== 0) {\r\n if (horSum <= this.width) {\r\n this.x += left;\r\n this.width -= horSum;\r\n }\r\n else {\r\n this.x += this.width * (left / horSum);\r\n this.width = 0;\r\n }\r\n }\r\n var top = Math.max(0, offsets.top);\r\n var bottom = Math.max(0, offsets.bottom);\r\n var vertSum = top + bottom;\r\n if (vertSum !== 0) {\r\n if (vertSum <= this.height) {\r\n this.y += top;\r\n this.height -= vertSum;\r\n }\r\n else {\r\n this.y += this.height * (top / vertSum);\r\n this.height = 0;\r\n }\r\n }\r\n return this;\r\n };\r\n Rectangle.prototype.applyOffsetsOutside = function (offsets) {\r\n this.x -= offsets.left;\r\n this.y -= offsets.top;\r\n this.width += offsets.left + offsets.right;\r\n this.height += offsets.top + offsets.bottom;\r\n return this;\r\n };\r\n Rectangle.prototype.applyConverter = function (converter) {\r\n this.x = converter(this.x);\r\n this.y = converter(this.y);\r\n this.width = converter(this.width);\r\n this.height = converter(this.height);\r\n return this;\r\n };\r\n Rectangle.getHorizIntersection = function (objA, objB) {\r\n return algorithms_1.IntervalAlgorithms.getIntersection(new fixed_1.FixedInterval(objA.x, objA.width), new fixed_1.FixedInterval(objB.x, objB.width));\r\n };\r\n Rectangle.getVertIntersection = function (objA, objB) {\r\n return algorithms_1.IntervalAlgorithms.getIntersection(new fixed_1.FixedInterval(objA.y, objA.height), new fixed_1.FixedInterval(objB.y, objB.height));\r\n };\r\n Rectangle.getIntersection = function (objA, objB) {\r\n var horInters = algorithms_1.IntervalAlgorithms.getIntersection(new fixed_1.FixedInterval(objA.x, objA.width), new fixed_1.FixedInterval(objB.x, objB.width));\r\n if (!horInters)\r\n return null;\r\n var vertInters = algorithms_1.IntervalAlgorithms.getIntersection(new fixed_1.FixedInterval(objA.y, objA.height), new fixed_1.FixedInterval(objB.y, objB.height));\r\n if (!vertInters)\r\n return null;\r\n return new Rectangle(horInters.start, vertInters.start, horInters.length, vertInters.length);\r\n };\r\n Rectangle.getHorNonCollapsedIntersection = function (objA, objB) {\r\n var inters = Rectangle.getHorizIntersection(objA, objB);\r\n return inters && !inters.isCollapsed() ? inters : null;\r\n };\r\n Rectangle.getVertNonCollapsedIntersection = function (objA, objB) {\r\n var inters = Rectangle.getVertIntersection(objA, objB);\r\n return inters && !inters.isCollapsed() ? inters : null;\r\n };\r\n Rectangle.getNonCollapsedIntersection = function (objA, objB) {\r\n var inters = Rectangle.getIntersection(objA, objB);\r\n return inters && !inters.isCollapsed() ? inters : null;\r\n };\r\n Rectangle.areIntersected = function (rectA, rectB) {\r\n return !(rectA.x > rectB.x + rectB.width || rectB.x > rectA.x + rectA.width) &&\r\n !(rectA.y > rectB.y + rectB.height || rectB.y > rectA.y + rectA.height);\r\n };\r\n Rectangle.union = function (rectA, rectB) {\r\n var right = Math.max(rectA.x + rectA.width, rectB.x + rectB.width);\r\n var bottom = Math.max(rectA.y + rectA.height, rectB.y + rectB.height);\r\n var x = Math.min(rectA.x, rectB.x);\r\n var y = Math.min(rectA.y, rectB.y);\r\n return new Rectangle(x, y, right - x, bottom - y);\r\n };\r\n Rectangle.equals = function (a, b) {\r\n return a.x === b.x &&\r\n a.y === b.y &&\r\n a.width === b.width &&\r\n a.height === b.height;\r\n };\r\n Rectangle.center = function (rect) {\r\n return new point_1.Point(rect.x + rect.width / 2, rect.y + rect.height / 2);\r\n };\r\n Rectangle.containsPoint = function (rect, point) {\r\n var right = rect.x + rect.width;\r\n var bottom = rect.y + rect.height;\r\n return point.y >= rect.y && bottom >= point.y &&\r\n point.x >= rect.x && right >= point.x;\r\n };\r\n return Rectangle;\r\n}());\r\nexports.Rectangle = Rectangle;\r\nvar HitTestDeviation;\r\n(function (HitTestDeviation) {\r\n HitTestDeviation[HitTestDeviation[\"None\"] = 0] = \"None\";\r\n HitTestDeviation[HitTestDeviation[\"Top\"] = 1] = \"Top\";\r\n HitTestDeviation[HitTestDeviation[\"Bottom\"] = 2] = \"Bottom\";\r\n HitTestDeviation[HitTestDeviation[\"Left\"] = 4] = \"Left\";\r\n HitTestDeviation[HitTestDeviation[\"Right\"] = 8] = \"Right\";\r\n})(HitTestDeviation = exports.HitTestDeviation || (exports.HitTestDeviation = {}));\r\nvar RectangleDeviation = (function () {\r\n function RectangleDeviation(initRectangle, initPoint) {\r\n this.initRectangle = initRectangle;\r\n this.initPoint = initPoint;\r\n this.deviation = new flag_1.Flag(HitTestDeviation.None);\r\n }\r\n RectangleDeviation.prototype.calcDeviation = function () {\r\n if (this.initPoint.x < this.initRectangle.x)\r\n this.deviation.set(HitTestDeviation.Left, true);\r\n else if (this.initPoint.x > this.initRectangle.right)\r\n this.deviation.set(HitTestDeviation.Right, true);\r\n if (this.initPoint.y < this.initRectangle.y)\r\n this.deviation.set(HitTestDeviation.Top, true);\r\n else if (this.initPoint.y > this.initRectangle.bottom)\r\n this.deviation.set(HitTestDeviation.Bottom, true);\r\n return this;\r\n };\r\n RectangleDeviation.prototype.calcAdditionalParams = function () {\r\n this.insidePoint = this.initPoint.clone();\r\n this.offsetToInside = new point_1.Point(0, 0);\r\n if (this.deviation.get(HitTestDeviation.Left)) {\r\n this.insidePoint.x = this.initRectangle.x;\r\n this.offsetToInside.x = this.insidePoint.x - this.initPoint.x;\r\n }\r\n else if (this.deviation.get(HitTestDeviation.Right)) {\r\n this.insidePoint.x = this.initRectangle.right;\r\n this.offsetToInside.x = this.initPoint.x - this.insidePoint.x;\r\n }\r\n if (this.deviation.get(HitTestDeviation.Top)) {\r\n this.insidePoint.y = this.initRectangle.y;\r\n this.offsetToInside.y = this.insidePoint.y - this.initPoint.y;\r\n }\r\n else if (this.deviation.get(HitTestDeviation.Bottom)) {\r\n this.insidePoint.y = this.initRectangle.bottom;\r\n this.offsetToInside.y = this.initPoint.y - this.insidePoint.y;\r\n }\r\n return this;\r\n };\r\n return RectangleDeviation;\r\n}());\r\nexports.RectangleDeviation = RectangleDeviation;\r\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Shape = void 0;\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar ShapeParameters_1 = __webpack_require__(38);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar ConnectionPoint_1 = __webpack_require__(46);\r\nvar ImageInfo_1 = __webpack_require__(51);\r\nvar NativeItem_1 = __webpack_require__(84);\r\nvar Shape = /** @class */ (function (_super) {\r\n __extends(Shape, _super);\r\n function Shape(description, position, forToolbox) {\r\n var _this = _super.call(this) || this;\r\n _this.description = description;\r\n // Containers\r\n _this.children = [];\r\n _this.expanded = true;\r\n _this.expandedSize = undefined;\r\n if (!description)\r\n throw Error(\"Shape type is incorrect\");\r\n _this.position = position.clone();\r\n var defaultSize = forToolbox ? description.toolboxSize : description.defaultSize;\r\n _this.size = defaultSize.clone();\r\n _this.text = description.getDefaultText();\r\n _this.image = new ImageInfo_1.ImageInfo(description.getDefaultImageUrl());\r\n _this.parameters = new ShapeParameters_1.ShapeParameters();\r\n description.createParameters(_this.parameters);\r\n return _this;\r\n }\r\n Shape.prototype.assign = function (item) {\r\n _super.prototype.assign.call(this, item);\r\n item.size = this.size.clone();\r\n item.text = this.text;\r\n item.image = this.image.clone();\r\n item.parameters = this.parameters.clone();\r\n item.children = this.children.slice();\r\n item.expanded = this.expanded;\r\n if (this.expandedSize)\r\n item.expandedSize = this.expandedSize.clone();\r\n };\r\n Shape.prototype.clone = function () {\r\n var clone = new Shape(this.description, this.position.clone());\r\n this.assign(clone);\r\n return clone;\r\n };\r\n Object.defineProperty(Shape.prototype, \"enableText\", {\r\n get: function () { return this.description.enableText; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Shape.prototype, \"allowEditText\", {\r\n get: function () { return this.description.allowEditText; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Shape.prototype, \"hasTemplate\", {\r\n get: function () { return this.description.hasTemplate; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Shape.prototype, \"enableChildren\", {\r\n get: function () { return this.description.enableChildren; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Shape.prototype, \"enableImage\", {\r\n get: function () { return this.description.enableImage; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Shape.prototype, \"allowEditImage\", {\r\n get: function () { return this.description.allowEditImage; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Shape.prototype.getMinWidth = function (settingsMinWidth) {\r\n return typeof (this.description.minWidth) === \"number\" ? this.description.minWidth :\r\n typeof (settingsMinWidth) === \"number\" ? settingsMinWidth : ShapeDescription_1.ShapeMinDimension;\r\n };\r\n Shape.prototype.getMinHeight = function (settingsMinHeight) {\r\n return typeof (this.description.minHeight) === \"number\" ? this.description.minHeight :\r\n typeof (settingsMinHeight) === \"number\" ? settingsMinHeight : ShapeDescription_1.ShapeMinDimension;\r\n };\r\n Shape.prototype.getMaxWidth = function (settingsMaxWidth) {\r\n return typeof (this.description.maxWidth) === \"number\" ? this.description.maxWidth :\r\n typeof (settingsMaxWidth) === \"number\" ? settingsMaxWidth : undefined;\r\n };\r\n Shape.prototype.getMaxHeight = function (settingsMaxHeight) {\r\n return typeof (this.description.maxHeight) === \"number\" ? this.description.maxHeight :\r\n typeof (settingsMaxHeight) === \"number\" ? settingsMaxHeight : undefined;\r\n };\r\n Shape.prototype.createPrimitives = function () {\r\n return this.description.createPrimitives(this);\r\n };\r\n Shape.prototype.createSelectorPrimitives = function () {\r\n return this.description.createSelectorPrimitives(this);\r\n };\r\n Shape.prototype.normalizeX = function (x) {\r\n return Math.max(this.position.x, Math.min(x, this.position.x + this.size.width));\r\n };\r\n Shape.prototype.normalizeY = function (y) {\r\n return Math.max(this.position.y, Math.min(y, this.position.y + this.size.height));\r\n };\r\n Shape.prototype.getConnectionPoints = function () {\r\n var _this = this;\r\n var result = this.description.getConnectionPoints().map(function (pt) {\r\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);\r\n _this.description.processConnectionPoint(_this, point);\r\n return point;\r\n });\r\n return result;\r\n };\r\n Shape.prototype.getConnectionPointSide = function (point, targetPoint) {\r\n if (point.side !== DiagramItem_1.ConnectionPointSide.Undefined)\r\n return point.side;\r\n return this.getConnectionPointSideByGeometry(point);\r\n };\r\n Shape.prototype.getConnectionPointSideByGeometry = function (point) {\r\n var pt = point.clone().offset(-this.position.x, -this.position.y).multiply(1 / this.size.width, 1 / this.size.height);\r\n if (pt.x >= pt.y && (pt.x > 0 || pt.y > 0)) {\r\n if (pt.x < 0.5 || (1 - pt.x) >= pt.y)\r\n return DiagramItem_1.ConnectionPointSide.North;\r\n return DiagramItem_1.ConnectionPointSide.East;\r\n }\r\n else {\r\n if (pt.x > 0.5 || (1 - pt.x) <= pt.y)\r\n return DiagramItem_1.ConnectionPointSide.South;\r\n return DiagramItem_1.ConnectionPointSide.West;\r\n }\r\n };\r\n Shape.prototype.getConnectionPointIndexForItem = function (item, connectionPointIndex) {\r\n return this.description.getConnectionPointIndexForItem(item, connectionPointIndex);\r\n };\r\n Shape.prototype.getConnectionPointIndexForSide = function (side) {\r\n return this.description.getConnectionPointIndexForSide(side);\r\n };\r\n Shape.prototype.toggleExpandedSize = function () {\r\n if (!this.expanded) {\r\n this.expandedSize = this.size.clone();\r\n this.size = this.getCollapsedSize();\r\n }\r\n else {\r\n this.size = this.getExpandedSize();\r\n this.expandedSize = undefined;\r\n }\r\n };\r\n Shape.prototype.getExpandedSize = function () {\r\n return this.description.getExpandedSize(this);\r\n };\r\n Shape.prototype.getCollapsedSize = function () {\r\n return this.description.getCollapsedSize(this);\r\n };\r\n Shape.prototype.getToolboxHeightToWidthRatio = function () {\r\n return this.description.getToolboxHeightToWidthRatio(this.size.width, this.size.height);\r\n };\r\n Object.defineProperty(Shape.prototype, \"allowResizeHorizontally\", {\r\n get: function () {\r\n return this.description.allowResizeHorizontally(this);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Shape.prototype, \"allowResizeVertically\", {\r\n get: function () {\r\n return this.description.allowResizeVertically(this);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Shape.prototype, \"rectangle\", {\r\n get: function () {\r\n return rectangle_1.Rectangle.fromGeometry(this.position, this.size);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Shape.prototype, \"clientRectangle\", {\r\n get: function () {\r\n return this.description.getClientRectangle(this);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Shape.prototype, \"textRectangle\", {\r\n get: function () {\r\n return this.description.getTextRectangle(this);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Shape.prototype, \"textEditRectangle\", {\r\n get: function () {\r\n return this.description.getTextEditRectangle(this);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Shape.prototype, \"textAngle\", {\r\n get: function () {\r\n return this.description.getTextAngle();\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Shape.prototype.toNative = function (units) {\r\n var item = new NativeItem_1.NativeShape(this.key, this.dataKey);\r\n item.type = this.description.key;\r\n item.text = this.text;\r\n item.position = this.position.clone();\r\n item.size = this.size.clone();\r\n item.attachedConnectorIds = this.attachedConnectors.map(function (c) { return c.key; });\r\n item.applyUnits(units);\r\n item.containerId = this.container ? this.container.key : null;\r\n item.containerChildItemIds = this.children.map(function (item) { return item.key; });\r\n item.containerExpanded = this.expanded;\r\n return item;\r\n };\r\n return Shape;\r\n}(DiagramItem_1.DiagramItem));\r\nexports.Shape = Shape;\r\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.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;\r\nvar key_1 = __webpack_require__(26);\r\nvar common_1 = __webpack_require__(34);\r\nvar MouseButton;\r\n(function (MouseButton) {\r\n MouseButton[MouseButton[\"None\"] = 0] = \"None\";\r\n MouseButton[MouseButton[\"Left\"] = 1] = \"Left\";\r\n MouseButton[MouseButton[\"Right\"] = 2] = \"Right\";\r\n MouseButton[MouseButton[\"Middle\"] = 4] = \"Middle\";\r\n})(MouseButton = exports.MouseButton || (exports.MouseButton = {}));\r\nvar MouseEventElementType;\r\n(function (MouseEventElementType) {\r\n MouseEventElementType[MouseEventElementType[\"Undefined\"] = 0] = \"Undefined\";\r\n MouseEventElementType[MouseEventElementType[\"Background\"] = 1] = \"Background\";\r\n MouseEventElementType[MouseEventElementType[\"Document\"] = 2] = \"Document\";\r\n MouseEventElementType[MouseEventElementType[\"Connector\"] = 3] = \"Connector\";\r\n MouseEventElementType[MouseEventElementType[\"ConnectorPoint\"] = 4] = \"ConnectorPoint\";\r\n MouseEventElementType[MouseEventElementType[\"ConnectorSide\"] = 5] = \"ConnectorSide\";\r\n MouseEventElementType[MouseEventElementType[\"ConnectorOrthogonalSide\"] = 6] = \"ConnectorOrthogonalSide\";\r\n MouseEventElementType[MouseEventElementType[\"ConnectorText\"] = 7] = \"ConnectorText\";\r\n MouseEventElementType[MouseEventElementType[\"Shape\"] = 8] = \"Shape\";\r\n MouseEventElementType[MouseEventElementType[\"ShapeResizeBox\"] = 9] = \"ShapeResizeBox\";\r\n MouseEventElementType[MouseEventElementType[\"ShapeParameterBox\"] = 10] = \"ShapeParameterBox\";\r\n MouseEventElementType[MouseEventElementType[\"SelectionRect\"] = 11] = \"SelectionRect\";\r\n MouseEventElementType[MouseEventElementType[\"ShapeConnectionPoint\"] = 12] = \"ShapeConnectionPoint\";\r\n MouseEventElementType[MouseEventElementType[\"ShapeExpandButton\"] = 13] = \"ShapeExpandButton\";\r\n})(MouseEventElementType = exports.MouseEventElementType || (exports.MouseEventElementType = {}));\r\nvar MouseEventSource = /** @class */ (function () {\r\n function MouseEventSource(type, key, value) {\r\n this.type = type;\r\n this.key = key;\r\n this.value = value;\r\n }\r\n return MouseEventSource;\r\n}());\r\nexports.MouseEventSource = MouseEventSource;\r\nvar ResizeEventSource;\r\n(function (ResizeEventSource) {\r\n ResizeEventSource[ResizeEventSource[\"Undefined\"] = 0] = \"Undefined\";\r\n ResizeEventSource[ResizeEventSource[\"ResizeBox_NW\"] = 1] = \"ResizeBox_NW\";\r\n ResizeEventSource[ResizeEventSource[\"ResizeBox_NE\"] = 2] = \"ResizeBox_NE\";\r\n ResizeEventSource[ResizeEventSource[\"ResizeBox_SE\"] = 3] = \"ResizeBox_SE\";\r\n ResizeEventSource[ResizeEventSource[\"ResizeBox_SW\"] = 4] = \"ResizeBox_SW\";\r\n ResizeEventSource[ResizeEventSource[\"ResizeBox_N\"] = 5] = \"ResizeBox_N\";\r\n ResizeEventSource[ResizeEventSource[\"ResizeBox_E\"] = 6] = \"ResizeBox_E\";\r\n ResizeEventSource[ResizeEventSource[\"ResizeBox_S\"] = 7] = \"ResizeBox_S\";\r\n ResizeEventSource[ResizeEventSource[\"ResizeBox_W\"] = 8] = \"ResizeBox_W\";\r\n})(ResizeEventSource = exports.ResizeEventSource || (exports.ResizeEventSource = {}));\r\nvar DiagramEvent = /** @class */ (function () {\r\n function DiagramEvent(modifiers) {\r\n this.modifiers = modifiers;\r\n }\r\n return DiagramEvent;\r\n}());\r\nexports.DiagramEvent = DiagramEvent;\r\nvar DiagramFocusEvent = /** @class */ (function (_super) {\r\n __extends(DiagramFocusEvent, _super);\r\n function DiagramFocusEvent(inputText) {\r\n var _this = _super.call(this, key_1.ModifierKey.None) || this;\r\n _this.inputText = inputText;\r\n return _this;\r\n }\r\n return DiagramFocusEvent;\r\n}(DiagramEvent));\r\nexports.DiagramFocusEvent = DiagramFocusEvent;\r\nvar DiagramMouseEventTouch = /** @class */ (function () {\r\n function DiagramMouseEventTouch(offsetPoint, modelPoint) {\r\n this.offsetPoint = offsetPoint;\r\n this.modelPoint = modelPoint;\r\n }\r\n return DiagramMouseEventTouch;\r\n}());\r\nexports.DiagramMouseEventTouch = DiagramMouseEventTouch;\r\nvar DiagramMouseEventBase = /** @class */ (function (_super) {\r\n __extends(DiagramMouseEventBase, _super);\r\n function DiagramMouseEventBase(modifiers, offsetPoint, modelPoint, source) {\r\n var _this = _super.call(this, modifiers) || this;\r\n _this.offsetPoint = offsetPoint;\r\n _this.modelPoint = modelPoint;\r\n _this.source = source;\r\n return _this;\r\n }\r\n return DiagramMouseEventBase;\r\n}(DiagramEvent));\r\nexports.DiagramMouseEventBase = DiagramMouseEventBase;\r\nvar DiagramMouseEvent = /** @class */ (function (_super) {\r\n __extends(DiagramMouseEvent, _super);\r\n function DiagramMouseEvent(modifiers, button, offsetPoint, modelPoint, source, touches, pointerType) {\r\n if (touches === void 0) { touches = []; }\r\n var _this = _super.call(this, modifiers, offsetPoint, modelPoint, source) || this;\r\n _this.button = button;\r\n _this.touches = touches;\r\n _this.pointerType = pointerType;\r\n _this.scrollX = 0;\r\n _this.scrollY = 0;\r\n return _this;\r\n }\r\n Object.defineProperty(DiagramMouseEvent.prototype, \"isTouchEvent\", {\r\n get: function () {\r\n if (!common_1.isDefined(this.touches) || this.touches.length === 0)\r\n return false;\r\n if (common_1.isDefined(this.pointerType) && this.pointerType === \"mouse\")\r\n return false;\r\n return true;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n DiagramMouseEvent.prototype.clone = function () {\r\n return new DiagramMouseEvent(this.modifiers, this.button, this.offsetPoint.clone(), this.modelPoint.clone(), this.source, this.cloneTouches(), this.pointerType);\r\n };\r\n DiagramMouseEvent.prototype.cloneTouches = function () {\r\n if (common_1.isDefined(this.touches))\r\n return this.touches.map(function (t) { return new DiagramMouseEventTouch(t.offsetPoint.clone(), t.modelPoint.clone()); });\r\n };\r\n return DiagramMouseEvent;\r\n}(DiagramMouseEventBase));\r\nexports.DiagramMouseEvent = DiagramMouseEvent;\r\nvar DiagramWheelEvent = /** @class */ (function (_super) {\r\n __extends(DiagramWheelEvent, _super);\r\n function DiagramWheelEvent(modifiers, deltaX, deltaY, offsetPoint, modelPoint, source) {\r\n var _this = _super.call(this, modifiers, offsetPoint, modelPoint, source) || this;\r\n _this.deltaX = deltaX;\r\n _this.deltaY = deltaY;\r\n return _this;\r\n }\r\n return DiagramWheelEvent;\r\n}(DiagramMouseEventBase));\r\nexports.DiagramWheelEvent = DiagramWheelEvent;\r\nvar DiagramContextMenuEvent = /** @class */ (function (_super) {\r\n __extends(DiagramContextMenuEvent, _super);\r\n function DiagramContextMenuEvent(modifiers, eventPoint, modelPoint) {\r\n var _this = _super.call(this, modifiers) || this;\r\n _this.eventPoint = eventPoint;\r\n _this.modelPoint = modelPoint;\r\n return _this;\r\n }\r\n return DiagramContextMenuEvent;\r\n}(DiagramEvent));\r\nexports.DiagramContextMenuEvent = DiagramContextMenuEvent;\r\nvar DiagramKeyboardEvent = /** @class */ (function (_super) {\r\n __extends(DiagramKeyboardEvent, _super);\r\n function DiagramKeyboardEvent(modifiers, keyCode, inputText) {\r\n var _this = _super.call(this, modifiers) || this;\r\n _this.keyCode = keyCode;\r\n _this.inputText = inputText;\r\n return _this;\r\n }\r\n DiagramKeyboardEvent.prototype.getShortcutCode = function () {\r\n return this.modifiers | this.keyCode;\r\n };\r\n return DiagramKeyboardEvent;\r\n}(DiagramEvent));\r\nexports.DiagramKeyboardEvent = DiagramKeyboardEvent;\r\nvar DiagramClipboardEvent = /** @class */ (function (_super) {\r\n __extends(DiagramClipboardEvent, _super);\r\n function DiagramClipboardEvent(clipboardData) {\r\n var _this = _super.call(this, key_1.ModifierKey.None) || this;\r\n _this.clipboardData = clipboardData;\r\n return _this;\r\n }\r\n return DiagramClipboardEvent;\r\n}(DiagramEvent));\r\nexports.DiagramClipboardEvent = DiagramClipboardEvent;\r\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RenderHelper = exports.svgNS = void 0;\r\nvar Diagnostics_1 = __webpack_require__(59);\r\nexports.svgNS = \"http://www.w3.org/2000/svg\";\r\nvar RenderHelper = /** @class */ (function () {\r\n function RenderHelper() {\r\n }\r\n RenderHelper.createSvgElement = function (parent, forExport) {\r\n if (forExport === void 0) { forExport = false; }\r\n var svgElement = document.createElementNS(exports.svgNS, \"svg\");\r\n svgElement.className.baseVal = \"dxdi-canvas\" + (forExport ? \" export\" : \"\");\r\n parent && parent.appendChild(svgElement);\r\n return svgElement;\r\n };\r\n RenderHelper.createMainElement = function (parent, forMeasurer) {\r\n if (forMeasurer === void 0) { forMeasurer = false; }\r\n var element = document.createElement(\"div\");\r\n element.setAttribute(\"class\", \"dxdi-control\" + (forMeasurer ? \" measurer\" : \"\"));\r\n if (Diagnostics_1.Diagnostics.optimizeLayers)\r\n element.style.transform = \"translateZ(0)\";\r\n parent && parent.appendChild(element);\r\n return element;\r\n };\r\n RenderHelper.addEventListener = function (element, eventName, handler) {\r\n element.addEventListener(eventName, handler);\r\n };\r\n RenderHelper.removeEventListener = function (element, eventName, handler) {\r\n element.removeEventListener(eventName, handler);\r\n };\r\n return RenderHelper;\r\n}());\r\nexports.RenderHelper = RenderHelper;\r\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DiagramModelOperation = exports.ModelOperationSettings = void 0;\r\nvar ModelOperationSettings = /** @class */ (function () {\r\n function ModelOperationSettings() {\r\n this._addShape = true;\r\n this._addShapeFromToolbox = true;\r\n this._deleteShape = true;\r\n this._deleteConnector = true;\r\n this._changeConnection = true;\r\n this._changeConnectorPoints = true;\r\n this._changeShapeText = true;\r\n this._changeConnectorText = true;\r\n this._resizeShape = true;\r\n this._moveShape = true;\r\n }\r\n Object.defineProperty(ModelOperationSettings.prototype, \"addShape\", {\r\n get: function () { return this._addShape; },\r\n set: function (value) {\r\n if (value !== this._addShape)\r\n this._addShape = value;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ModelOperationSettings.prototype, \"addShapeFromToolbox\", {\r\n get: function () { return this._addShapeFromToolbox; },\r\n set: function (value) {\r\n if (value !== this._addShapeFromToolbox)\r\n this._addShapeFromToolbox = value;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ModelOperationSettings.prototype, \"deleteShape\", {\r\n get: function () { return this._deleteShape; },\r\n set: function (value) {\r\n if (value !== this._deleteShape)\r\n this._deleteShape = value;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ModelOperationSettings.prototype, \"deleteConnector\", {\r\n get: function () { return this._deleteConnector; },\r\n set: function (value) {\r\n if (value !== this._deleteConnector)\r\n this._deleteConnector = value;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ModelOperationSettings.prototype, \"changeConnection\", {\r\n get: function () { return this._changeConnection; },\r\n set: function (value) {\r\n if (value !== this._changeConnection)\r\n this._changeConnection = value;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ModelOperationSettings.prototype, \"changeConnectorPoints\", {\r\n get: function () { return this._changeConnectorPoints; },\r\n set: function (value) {\r\n if (value !== this._changeConnectorPoints)\r\n this._changeConnectorPoints = value;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ModelOperationSettings.prototype, \"changeShapeText\", {\r\n get: function () { return this._changeShapeText; },\r\n set: function (value) {\r\n if (value !== this._changeShapeText)\r\n this._changeShapeText = value;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ModelOperationSettings.prototype, \"changeConnectorText\", {\r\n get: function () { return this._changeConnectorText; },\r\n set: function (value) {\r\n if (value !== this._changeConnectorText)\r\n this._changeConnectorText = value;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ModelOperationSettings.prototype, \"resizeShape\", {\r\n get: function () { return this._resizeShape; },\r\n set: function (value) {\r\n if (value !== this._resizeShape)\r\n this._resizeShape = value;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ModelOperationSettings.prototype, \"moveShape\", {\r\n get: function () { return this._moveShape; },\r\n set: function (value) {\r\n if (value !== this._moveShape)\r\n this._moveShape = value;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ModelOperationSettings.prototype.applySettings = function (settings) {\r\n if (!settings)\r\n return;\r\n if (typeof settings.addShape === \"boolean\")\r\n this.addShape = settings.addShape;\r\n if (typeof settings.addShapeFromToolbox === \"boolean\")\r\n this.addShapeFromToolbox = settings.addShapeFromToolbox;\r\n if (typeof settings.deleteShape === \"boolean\")\r\n this.deleteShape = settings.deleteShape;\r\n if (typeof settings.deleteConnector === \"boolean\")\r\n this.deleteConnector = settings.deleteConnector;\r\n if (typeof settings.changeConnection === \"boolean\")\r\n this.changeConnection = settings.changeConnection;\r\n if (typeof settings.changeConnectorPoints === \"boolean\")\r\n this.changeConnectorPoints = settings.changeConnectorPoints;\r\n if (typeof settings.changeShapeText === \"boolean\")\r\n this.changeShapeText = settings.changeShapeText;\r\n if (typeof settings.changeConnectorText === \"boolean\")\r\n this.changeConnectorText = settings.changeConnectorText;\r\n if (typeof settings.resizeShape === \"boolean\")\r\n this.resizeShape = settings.resizeShape;\r\n if (typeof settings.moveShape === \"boolean\")\r\n this.moveShape = settings.moveShape;\r\n };\r\n return ModelOperationSettings;\r\n}());\r\nexports.ModelOperationSettings = ModelOperationSettings;\r\nvar DiagramModelOperation;\r\n(function (DiagramModelOperation) {\r\n DiagramModelOperation[DiagramModelOperation[\"AddShape\"] = 0] = \"AddShape\";\r\n DiagramModelOperation[DiagramModelOperation[\"AddShapeFromToolbox\"] = 1] = \"AddShapeFromToolbox\";\r\n DiagramModelOperation[DiagramModelOperation[\"DeleteShape\"] = 2] = \"DeleteShape\";\r\n DiagramModelOperation[DiagramModelOperation[\"DeleteConnector\"] = 3] = \"DeleteConnector\";\r\n DiagramModelOperation[DiagramModelOperation[\"ChangeConnection\"] = 4] = \"ChangeConnection\";\r\n DiagramModelOperation[DiagramModelOperation[\"ChangeConnectorPoints\"] = 5] = \"ChangeConnectorPoints\";\r\n DiagramModelOperation[DiagramModelOperation[\"BeforeChangeShapeText\"] = 6] = \"BeforeChangeShapeText\";\r\n DiagramModelOperation[DiagramModelOperation[\"ChangeShapeText\"] = 7] = \"ChangeShapeText\";\r\n DiagramModelOperation[DiagramModelOperation[\"BeforeChangeConnectorText\"] = 8] = \"BeforeChangeConnectorText\";\r\n DiagramModelOperation[DiagramModelOperation[\"ChangeConnectorText\"] = 9] = \"ChangeConnectorText\";\r\n DiagramModelOperation[DiagramModelOperation[\"ResizeShape\"] = 10] = \"ResizeShape\";\r\n DiagramModelOperation[DiagramModelOperation[\"MoveShape\"] = 11] = \"MoveShape\";\r\n})(DiagramModelOperation = exports.DiagramModelOperation || (exports.DiagramModelOperation = {}));\r\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.raiseEvent = exports.isLeftButtonPressed = exports.RenderUtils = void 0;\r\nvar Event_1 = __webpack_require__(14);\r\nvar math_1 = __webpack_require__(32);\r\nvar browser_1 = __webpack_require__(19);\r\nvar evt_1 = __webpack_require__(60);\r\nvar RenderUtils = /** @class */ (function () {\r\n function RenderUtils() {\r\n }\r\n RenderUtils.updateSvgElementSize = function (svgElement, width, height, forExport) {\r\n svgElement.style.width = width + \"px\";\r\n svgElement.style.height = height + \"px\";\r\n svgElement.setAttribute(\"viewBox\", \"0 0 \" + width + \" \" + height);\r\n if (forExport) {\r\n svgElement.setAttribute(\"width\", width.toString());\r\n svgElement.setAttribute(\"height\", height.toString());\r\n }\r\n };\r\n RenderUtils.removeElement = function (element) {\r\n element && element.parentNode && element.parentNode.removeChild(element);\r\n };\r\n RenderUtils.removeContent = function (element) {\r\n while (element && element.firstChild)\r\n element.removeChild(element.firstChild);\r\n };\r\n RenderUtils.setElementEventData = function (element, type, key, value) {\r\n if (type === Event_1.MouseEventElementType.Undefined)\r\n return;\r\n element.setAttribute(\"data-type\", type.toString());\r\n if (key !== undefined)\r\n element.setAttribute(\"data-key\", key.toString());\r\n if (value !== undefined)\r\n element.setAttribute(\"data-value\", value.toString());\r\n };\r\n RenderUtils.getElementEventData = function (element) {\r\n if (element.getAttribute && element.getAttribute(\"data-type\"))\r\n return new Event_1.MouseEventSource(parseInt(element.getAttribute(\"data-type\")), element.getAttribute(\"data-key\"), element.getAttribute(\"data-value\"));\r\n var className = element.getAttribute && element.getAttribute(\"class\");\r\n if (className === \"dxdi-page\" || className === \"dxdi-main\")\r\n return new Event_1.MouseEventSource(Event_1.MouseEventElementType.Document);\r\n };\r\n RenderUtils.getHtmlElementStylePropertyName = function (propertyName) {\r\n switch (propertyName) {\r\n case \"fill\":\r\n return \"color\";\r\n case \"text-anchor\":\r\n return \"text-align\";\r\n }\r\n return propertyName;\r\n };\r\n RenderUtils.getTextAnchorValue = function (propertyValue, reverseTextAnchor) {\r\n if (reverseTextAnchor === void 0) { reverseTextAnchor = false; }\r\n if (reverseTextAnchor) {\r\n if (propertyValue === \"start\")\r\n return \"end\";\r\n if (propertyValue === \"end\")\r\n return \"start\";\r\n }\r\n return propertyValue;\r\n };\r\n RenderUtils.getStrokeDasharrayValue = function (propertyValue, strokeWidth) {\r\n if (strokeWidth) {\r\n var dashArray = propertyValue && propertyValue.toString();\r\n var dashArrayParts = dashArray ? dashArray.split(/[\\s,]+/) : [];\r\n return dashArrayParts.map(function (v) { return parseInt(v) / 2 * strokeWidth; }).join(\",\");\r\n }\r\n return propertyValue;\r\n };\r\n RenderUtils.applyStyleToElement = function (style, element, reverseTextAnchor) {\r\n var _this = this;\r\n if (reverseTextAnchor === void 0) { reverseTextAnchor = false; }\r\n var defaultStyle = style.getDefaultInstance();\r\n style.forEach(function (propertyName) {\r\n var propertyValue = style[propertyName];\r\n var elPropertyName = (element instanceof HTMLElement) ? _this.getHtmlElementStylePropertyName(propertyName) : propertyName;\r\n if (propertyValue !== undefined && propertyValue !== \"\" && propertyValue !== defaultStyle[propertyName]) {\r\n switch (propertyName) {\r\n case \"text-anchor\":\r\n propertyValue = _this.getTextAnchorValue(propertyValue, reverseTextAnchor);\r\n break;\r\n case \"stroke-dasharray\":\r\n propertyValue = _this.getStrokeDasharrayValue(propertyValue, parseInt(style[\"stroke-width\"]));\r\n break;\r\n }\r\n element.style.setProperty(elPropertyName, propertyValue);\r\n }\r\n else\r\n element.style.setProperty(elPropertyName, \"\");\r\n });\r\n };\r\n RenderUtils.generateSvgElementId = function (prefix) {\r\n return prefix + \"_\" + math_1.MathUtils.generateGuid();\r\n };\r\n RenderUtils.getUrlPathById = function (id) {\r\n return \"url(#\" + id + \")\";\r\n };\r\n return RenderUtils;\r\n}());\r\nexports.RenderUtils = RenderUtils;\r\nfunction isLeftButtonPressed(evt) {\r\n return browser_1.Browser.MSTouchUI ? evt.button !== 2 : evt_1.EvtUtils.isLeftButtonPressed(evt);\r\n}\r\nexports.isLeftButtonPressed = isLeftButtonPressed;\r\nfunction raiseEvent(evt, _evt, raiseFunc) {\r\n raiseFunc(_evt);\r\n if (_evt.preventDefault)\r\n evt.preventDefault();\r\n}\r\nexports.raiseEvent = raiseEvent;\r\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RectangleShapeDescription = void 0;\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar size_1 = __webpack_require__(2);\r\nvar RectaglePrimitive_1 = __webpack_require__(21);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar RectangleShapeDescription = /** @class */ (function (_super) {\r\n __extends(RectangleShapeDescription, _super);\r\n function RectangleShapeDescription(defaultSize, hasDefaultText) {\r\n if (defaultSize === void 0) { defaultSize = new size_1.Size(ShapeDescription_1.ShapeDefaultDimension, ShapeDescription_1.ShapeDefaultDimension * 0.75); }\r\n return _super.call(this, defaultSize, hasDefaultText) || this;\r\n }\r\n Object.defineProperty(RectangleShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.Rectangle; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(RectangleShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n RectangleShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var _a = shape.rectangle, left = _a.x, top = _a.y, width = _a.width, height = _a.height;\r\n return [\r\n new RectaglePrimitive_1.RectanglePrimitive(left, top, width, height, shape.style),\r\n ];\r\n };\r\n RectangleShapeDescription.prototype.getTextRectangle = function (shape) {\r\n return shape.rectangle.clone().inflate(-ShapeDescription_1.ShapeTextPadding, -ShapeDescription_1.ShapeTextPadding);\r\n };\r\n RectangleShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\r\n return textSize.clone().offset(ShapeDescription_1.ShapeTextPadding * 2, ShapeDescription_1.ShapeTextPadding * 2);\r\n };\r\n return RectangleShapeDescription;\r\n}(ShapeDescription_1.ShapeDescription));\r\nexports.RectangleShapeDescription = RectangleShapeDescription;\r\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Browser = (function () {\r\n function Browser() {\r\n }\r\n Browser.IdentUserAgent = function (userAgent, ignoreDocumentMode) {\r\n if (ignoreDocumentMode === void 0) { ignoreDocumentMode = false; }\r\n var browserTypesOrderedList = ['Mozilla', 'IE', 'Firefox', 'Netscape', 'Safari', 'Chrome', 'Opera', 'Opera10', 'Edge'];\r\n var defaultBrowserType = 'IE';\r\n var defaultPlatform = 'Win';\r\n var defaultVersions = { Safari: 2, Chrome: 0.1, Mozilla: 1.9, Netscape: 8, Firefox: 2, Opera: 9, IE: 6, Edge: 12 };\r\n if (!userAgent || userAgent.length === 0) {\r\n Browser.fillUserAgentInfo(browserTypesOrderedList, defaultBrowserType, defaultVersions[defaultBrowserType], defaultPlatform);\r\n return;\r\n }\r\n userAgent = userAgent.toLowerCase();\r\n Browser.indentPlatformMajorVersion(userAgent);\r\n try {\r\n var platformIdentStrings = {\r\n 'Windows': 'Win',\r\n 'Macintosh': 'Mac',\r\n 'Mac OS': 'Mac',\r\n 'Mac_PowerPC': 'Mac',\r\n 'cpu os': 'MacMobile',\r\n 'cpu iphone os': 'MacMobile',\r\n 'Android': 'Android',\r\n '!Windows Phone': 'WinPhone',\r\n '!WPDesktop': 'WinPhone',\r\n '!ZuneWP': 'WinPhone'\r\n };\r\n var optSlashOrSpace = '(?:/|\\\\s*)?';\r\n var versionString = '(\\\\d+)(?:\\\\.((?:\\\\d+?[1-9])|\\\\d)0*?)?';\r\n var optVersion = '(?:' + versionString + ')?';\r\n var patterns = {\r\n Safari: 'applewebkit(?:.*?(?:version/' + versionString + '[\\\\.\\\\w\\\\d]*?(?:\\\\s+mobile/\\\\S*)?\\\\s+safari))?',\r\n Chrome: '(?:chrome|crios)(?!frame)' + optSlashOrSpace + optVersion,\r\n Mozilla: 'mozilla(?:.*rv:' + optVersion + '.*Gecko)?',\r\n Netscape: '(?:netscape|navigator)\\\\d*/?\\\\s*' + optVersion,\r\n Firefox: 'firefox' + optSlashOrSpace + optVersion,\r\n Opera: '(?:opera|\\\\sopr)' + optSlashOrSpace + optVersion,\r\n Opera10: 'opera.*\\\\s*version' + optSlashOrSpace + optVersion,\r\n IE: 'msie\\\\s*' + optVersion,\r\n Edge: 'edge' + optSlashOrSpace + optVersion\r\n };\r\n var browserType = null;\r\n var version = -1;\r\n for (var i = 0; i < browserTypesOrderedList.length; i++) {\r\n var browserTypeCandidate = browserTypesOrderedList[i];\r\n var regExp = new RegExp(patterns[browserTypeCandidate], 'i');\r\n var matches = regExp.exec(userAgent);\r\n if (matches && matches.index >= 0) {\r\n if (browserType === 'IE' && version >= 11 && browserTypeCandidate === 'Safari')\r\n continue;\r\n browserType = browserTypeCandidate;\r\n if (browserType === 'Opera10')\r\n browserType = 'Opera';\r\n var tridentPattern = 'trident' + optSlashOrSpace + optVersion;\r\n version = Browser.GetBrowserVersion(userAgent, matches, tridentPattern, Browser.getIECompatibleVersionString());\r\n if (browserType === 'Mozilla' && version >= 11)\r\n browserType = 'IE';\r\n }\r\n }\r\n if (!browserType)\r\n browserType = defaultBrowserType;\r\n var browserVersionDetected = version !== -1;\r\n if (!browserVersionDetected)\r\n version = defaultVersions[browserType];\r\n var platform = null;\r\n var minOccurenceIndex = Number.MAX_VALUE;\r\n for (var identStr in platformIdentStrings) {\r\n if (!Object.prototype.hasOwnProperty.call(platformIdentStrings, identStr))\r\n continue;\r\n var importantIdent = identStr.substr(0, 1) === '!';\r\n var occurenceIndex = userAgent.indexOf((importantIdent ? identStr.substr(1) : identStr).toLowerCase());\r\n if (occurenceIndex >= 0 && (occurenceIndex < minOccurenceIndex || importantIdent)) {\r\n minOccurenceIndex = importantIdent ? 0 : occurenceIndex;\r\n platform = platformIdentStrings[identStr];\r\n }\r\n }\r\n var samsungPattern = 'SM-[A-Z]';\r\n var m = userAgent.toUpperCase().match(samsungPattern);\r\n var isSamsungAndroidDevice = m && m.length > 0;\r\n if (platform === 'WinPhone' && version < 9)\r\n version = Math.floor(Browser.getVersionFromTrident(userAgent, 'trident' + optSlashOrSpace + optVersion));\r\n if (!ignoreDocumentMode && browserType === 'IE' && version > 7 && document.documentMode < version)\r\n version = document.documentMode;\r\n if (platform === 'WinPhone')\r\n version = Math.max(9, version);\r\n if (!platform)\r\n platform = defaultPlatform;\r\n if (platform === platformIdentStrings['cpu os'] && !browserVersionDetected)\r\n version = 4;\r\n Browser.fillUserAgentInfo(browserTypesOrderedList, browserType, version, platform, isSamsungAndroidDevice);\r\n }\r\n catch (e) {\r\n Browser.fillUserAgentInfo(browserTypesOrderedList, defaultBrowserType, defaultVersions[defaultBrowserType], defaultPlatform);\r\n }\r\n };\r\n Browser.GetBrowserVersion = function (userAgent, matches, tridentPattern, ieCompatibleVersionString) {\r\n var version = Browser.getVersionFromMatches(matches);\r\n if (ieCompatibleVersionString) {\r\n var versionFromTrident = Browser.getVersionFromTrident(userAgent, tridentPattern);\r\n if (ieCompatibleVersionString === 'edge' || parseInt(ieCompatibleVersionString) === versionFromTrident)\r\n return versionFromTrident;\r\n }\r\n return version;\r\n };\r\n Browser.getIECompatibleVersionString = function () {\r\n if (document.compatible) {\r\n for (var i = 0; i < document.compatible.length; i++) {\r\n if (document.compatible[i].userAgent === 'IE' && document.compatible[i].version)\r\n return document.compatible[i].version.toLowerCase();\r\n }\r\n }\r\n return '';\r\n };\r\n Browser.isTouchEnabled = function () {\r\n return Browser.hasTouchStart() || Browser.hasMaxTouchPoints() || Browser.hasMsMaxTouchPoints();\r\n };\r\n Browser.hasTouchStart = function () {\r\n return ('ontouchstart' in window);\r\n };\r\n Browser.hasMaxTouchPoints = function () {\r\n return navigator['maxTouchPoints'] > 0;\r\n };\r\n Browser.hasMsMaxTouchPoints = function () {\r\n return navigator['msMaxTouchPoints'] > 0;\r\n };\r\n Browser.hasNavigator = function () {\r\n return typeof navigator !== 'undefined';\r\n };\r\n Browser.fillUserAgentInfo = function (browserTypesOrderedList, browserType, version, platform, isSamsungAndroidDevice) {\r\n if (isSamsungAndroidDevice === void 0) { isSamsungAndroidDevice = false; }\r\n for (var i = 0; i < browserTypesOrderedList.length; i++) {\r\n var type = browserTypesOrderedList[i];\r\n Browser[type] = type === browserType;\r\n }\r\n Browser.Version = Math.floor(10.0 * version) / 10.0;\r\n Browser.MajorVersion = Math.floor(Browser.Version);\r\n Browser.WindowsPlatform = platform === 'Win' || platform === 'WinPhone';\r\n Browser.MacOSMobilePlatform = platform === 'MacMobile' || (platform === 'Mac' && Browser.isTouchEnabled());\r\n Browser.MacOSPlatform = platform === 'Mac' && !Browser.MacOSMobilePlatform;\r\n Browser.AndroidMobilePlatform = platform === 'Android';\r\n Browser.WindowsPhonePlatform = platform === 'WinPhone';\r\n Browser.WebKitFamily = Browser.Safari || Browser.Chrome || Browser.Opera && Browser.MajorVersion >= 15;\r\n Browser.NetscapeFamily = Browser.Netscape || Browser.Mozilla || Browser.Firefox;\r\n Browser.HardwareAcceleration = (Browser.IE && Browser.MajorVersion >= 9) || (Browser.Firefox && Browser.MajorVersion >= 4) ||\r\n (Browser.AndroidMobilePlatform && Browser.Chrome) || (Browser.Chrome && Browser.MajorVersion >= 37) ||\r\n (Browser.Safari && !Browser.WindowsPlatform) || Browser.Edge || (Browser.Opera && Browser.MajorVersion >= 46);\r\n Browser.WebKitTouchUI = Browser.MacOSMobilePlatform || Browser.AndroidMobilePlatform;\r\n var isIETouchUI = Browser.IE && Browser.MajorVersion > 9 && Browser.WindowsPlatform && Browser.UserAgent.toLowerCase().indexOf('touch') >= 0;\r\n Browser.MSTouchUI = isIETouchUI || (Browser.Edge && !!window.navigator.maxTouchPoints);\r\n Browser.TouchUI = Browser.WebKitTouchUI || Browser.MSTouchUI;\r\n Browser.MobileUI = Browser.WebKitTouchUI || Browser.WindowsPhonePlatform;\r\n Browser.AndroidDefaultBrowser = Browser.AndroidMobilePlatform && !Browser.Chrome;\r\n Browser.AndroidChromeBrowser = Browser.AndroidMobilePlatform && Browser.Chrome;\r\n if (isSamsungAndroidDevice)\r\n Browser.SamsungAndroidDevice = isSamsungAndroidDevice;\r\n if (Browser.MSTouchUI) {\r\n var isARMArchitecture = Browser.UserAgent.toLowerCase().indexOf('arm;') > -1;\r\n Browser.VirtualKeyboardSupported = isARMArchitecture || Browser.WindowsPhonePlatform;\r\n }\r\n else\r\n Browser.VirtualKeyboardSupported = Browser.WebKitTouchUI;\r\n Browser.fillDocumentElementBrowserTypeClassNames(browserTypesOrderedList);\r\n };\r\n Browser.indentPlatformMajorVersion = function (userAgent) {\r\n var regex = /(?:(?:windows nt|macintosh|mac os|cpu os|cpu iphone os|android|windows phone|linux) )(\\d+)(?:[-0-9_.])*/;\r\n var matches = regex.exec(userAgent);\r\n if (matches)\r\n Browser.PlaformMajorVersion = matches[1];\r\n };\r\n Browser.getVersionFromMatches = function (matches) {\r\n var result = -1;\r\n var versionStr = '';\r\n if (matches) {\r\n if (matches[1]) {\r\n versionStr += matches[1];\r\n if (matches[2])\r\n versionStr += '.' + matches[2];\r\n }\r\n if (versionStr !== '') {\r\n result = parseFloat(versionStr);\r\n if (isNaN(result))\r\n result = -1;\r\n }\r\n }\r\n return result;\r\n };\r\n Browser.getVersionFromTrident = function (userAgent, tridentPattern) {\r\n var tridentDiffFromVersion = 4;\r\n var matches = new RegExp(tridentPattern, 'i').exec(userAgent);\r\n return Browser.getVersionFromMatches(matches) + tridentDiffFromVersion;\r\n };\r\n Browser.fillDocumentElementBrowserTypeClassNames = function (browserTypesOrderedList) {\r\n var documentElementClassName = '';\r\n var browserTypeslist = browserTypesOrderedList.concat(['WindowsPlatform', 'MacOSPlatform', 'MacOSMobilePlatform', 'AndroidMobilePlatform',\r\n 'WindowsPhonePlatform', 'WebKitFamily', 'WebKitTouchUI', 'MSTouchUI', 'TouchUI', 'AndroidDefaultBrowser']);\r\n for (var i = 0; i < browserTypeslist.length; i++) {\r\n var type = browserTypeslist[i];\r\n if (Browser[type])\r\n documentElementClassName += 'dx' + type + ' ';\r\n }\r\n documentElementClassName += 'dxBrowserVersion-' + Browser.MajorVersion;\r\n if (typeof document !== 'undefined' && document && document.documentElement) {\r\n if (document.documentElement.className !== '')\r\n documentElementClassName = ' ' + documentElementClassName;\r\n document.documentElement.className += documentElementClassName;\r\n Browser.Info = documentElementClassName;\r\n }\r\n };\r\n Browser.getUserAgent = function () {\r\n return Browser.hasNavigator() && navigator.userAgent ? navigator.userAgent.toLowerCase() : '';\r\n };\r\n Browser.UserAgent = Browser.getUserAgent();\r\n Browser._foo = Browser.IdentUserAgent(Browser.UserAgent);\r\n return Browser;\r\n}());\r\nexports.Browser = Browser;\r\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Alignment = exports.DataLayoutOrientation = exports.LogicalDirectionKind = exports.TreeLayoutSettings = exports.LayoutSettings = void 0;\r\nvar Connector_1 = __webpack_require__(6);\r\nvar LayoutSettings = /** @class */ (function () {\r\n function LayoutSettings(gridSize) {\r\n this.orientation = DataLayoutOrientation.Vertical;\r\n this.direction = LogicalDirectionKind.Forward;\r\n var baseSpacing = (gridSize && gridSize * 2 > Connector_1.Connector.minOffset) ? gridSize * 2 : Connector_1.Connector.minOffset;\r\n this.columnSpacing = baseSpacing;\r\n this.layerSpacing = baseSpacing * 2;\r\n this.containerPadding = baseSpacing * 2;\r\n this.componentSpacing = baseSpacing * 2;\r\n }\r\n return LayoutSettings;\r\n}());\r\nexports.LayoutSettings = LayoutSettings;\r\nvar TreeLayoutSettings = /** @class */ (function (_super) {\r\n __extends(TreeLayoutSettings, _super);\r\n function TreeLayoutSettings(gridSize) {\r\n var _this = _super.call(this, gridSize) || this;\r\n _this.alignment = Alignment.Center;\r\n _this.subTreeColumnSpacing = _this.componentSpacing / 2;\r\n return _this;\r\n }\r\n return TreeLayoutSettings;\r\n}(LayoutSettings));\r\nexports.TreeLayoutSettings = TreeLayoutSettings;\r\nvar LogicalDirectionKind;\r\n(function (LogicalDirectionKind) {\r\n LogicalDirectionKind[LogicalDirectionKind[\"Backward\"] = 0] = \"Backward\";\r\n LogicalDirectionKind[LogicalDirectionKind[\"Forward\"] = 1] = \"Forward\";\r\n})(LogicalDirectionKind = exports.LogicalDirectionKind || (exports.LogicalDirectionKind = {}));\r\nvar DataLayoutOrientation;\r\n(function (DataLayoutOrientation) {\r\n DataLayoutOrientation[DataLayoutOrientation[\"Horizontal\"] = 0] = \"Horizontal\";\r\n DataLayoutOrientation[DataLayoutOrientation[\"Vertical\"] = 1] = \"Vertical\";\r\n})(DataLayoutOrientation = exports.DataLayoutOrientation || (exports.DataLayoutOrientation = {}));\r\nvar Alignment;\r\n(function (Alignment) {\r\n Alignment[Alignment[\"Left\"] = 0] = \"Left\";\r\n Alignment[Alignment[\"Center\"] = 1] = \"Center\";\r\n})(Alignment = exports.Alignment || (exports.Alignment = {}));\r\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RectanglePrimitive = void 0;\r\nvar RenderHelper_1 = __webpack_require__(15);\r\nvar Primitive_1 = __webpack_require__(25);\r\nvar RectanglePrimitive = /** @class */ (function (_super) {\r\n __extends(RectanglePrimitive, _super);\r\n function RectanglePrimitive(x, y, width, height, style, className, clipPathId, onApplyProperties) {\r\n var _this = _super.call(this, style, className, clipPathId, onApplyProperties) || this;\r\n _this.x = x;\r\n _this.y = y;\r\n _this.width = width;\r\n _this.height = height;\r\n return _this;\r\n }\r\n RectanglePrimitive.prototype.createMainElement = function () {\r\n return document.createElementNS(RenderHelper_1.svgNS, \"rect\");\r\n };\r\n RectanglePrimitive.prototype.applyElementProperties = function (element, measurer) {\r\n this.setUnitAttribute(element, \"x\", this.x);\r\n this.setUnitAttribute(element, \"y\", this.y);\r\n this.setUnitAttribute(element, \"width\", this.width);\r\n this.setUnitAttribute(element, \"height\", this.height);\r\n this.setPositionCorrectionAttribute(element);\r\n _super.prototype.applyElementProperties.call(this, element, measurer);\r\n };\r\n return RectanglePrimitive;\r\n}(Primitive_1.SvgPrimitive));\r\nexports.RectanglePrimitive = RectanglePrimitive;\r\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar string_1 = __webpack_require__(50);\r\nvar ColorUtils = (function () {\r\n function ColorUtils() {\r\n }\r\n ColorUtils.getAlpha = function (color) {\r\n return (color >> 24) & 255;\r\n };\r\n ColorUtils.getRed = function (color) {\r\n return (color >> 16) & 255;\r\n };\r\n ColorUtils.getGreen = function (color) {\r\n return (color >> 8) & 255;\r\n };\r\n ColorUtils.getBlue = function (color) {\r\n return color & 255;\r\n };\r\n ColorUtils.redPartToString = function (color) {\r\n var redStr = ColorUtils.getRed(color).toString(16);\r\n return redStr.length > 1 ? redStr : '0' + redStr;\r\n };\r\n ColorUtils.greenPartToString = function (color) {\r\n var greenStr = ColorUtils.getGreen(color).toString(16);\r\n return greenStr.length > 1 ? greenStr : '0' + greenStr;\r\n };\r\n ColorUtils.bluePartToString = function (color) {\r\n var blueStr = ColorUtils.getBlue(color).toString(16);\r\n return blueStr.length > 1 ? blueStr : '0' + blueStr;\r\n };\r\n ColorUtils.fromArgbNumber = function (alpha, red, green, blue) {\r\n return (alpha << 24) | (red << 16) | (green << 8) | blue;\r\n };\r\n ColorUtils.fromRgbaString = function (color, alpha) {\r\n if (alpha === void 0) { alpha = 255; }\r\n var matchesRGBA = color.replace(/ +/g, '').match(/(rgba?)|(\\d+(\\.\\d+)?%?)|(\\.\\d+)/g);\r\n if (matchesRGBA && matchesRGBA.length > 3) {\r\n var result = [];\r\n for (var i = 1, matchItem = void 0; matchItem = matchesRGBA[i]; i++) {\r\n var item = matchItem.indexOf('%') !== -1 ?\r\n Math.round(parseFloat(matchItem) * 2.55) :\r\n parseInt(matchItem);\r\n if (item < 0 || item > 255)\r\n return null;\r\n result.push(item);\r\n }\r\n if (color.indexOf('rgba') === 0) {\r\n if (isNaN(result[3]) || result[3] < 0 || result[3] > 1)\r\n return null;\r\n else if (result[3] <= 1)\r\n result[3] = Math.round(result[3] * 255);\r\n }\r\n else if (result[3])\r\n return null;\r\n return ((result[0] & 255) << 16) | ((result[1] & 255) << 8) | (result[2] & 255) |\r\n (((result.length > 3 ? result[3] : alpha) & 255) << 24);\r\n }\r\n return null;\r\n };\r\n ColorUtils.fromHashString = function (hash, alpha) {\r\n if (alpha === void 0) { alpha = 255; }\r\n if (!ColorUtils.isHashColorString(hash))\r\n return null;\r\n if (hash.charAt(0) === '#')\r\n hash = hash.substr(1);\r\n if (hash.length === 3)\r\n 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);\r\n return parseInt(hash, 16) | (alpha << 24);\r\n };\r\n ColorUtils.fromColorName = function (color, alpha) {\r\n if (alpha === void 0) { alpha = 255; }\r\n var colorNameAsHash = ColorUtils.colorNames[color.toLowerCase()];\r\n return colorNameAsHash ? ColorUtils.fromHashString(colorNameAsHash, alpha) : null;\r\n };\r\n ColorUtils.fromString = function (color, alpha) {\r\n if (alpha === void 0) { alpha = 255; }\r\n var rgbaColor = ColorUtils.fromRgbaString(color, alpha);\r\n if (rgbaColor !== null)\r\n return rgbaColor;\r\n var hashColor = ColorUtils.fromHashString(color, alpha);\r\n if (hashColor !== null)\r\n return hashColor;\r\n return ColorUtils.fromColorName(color, alpha);\r\n };\r\n ColorUtils.colorToHash = function (color) {\r\n return '#' + ColorUtils.redPartToString(color) + ColorUtils.greenPartToString(color) + ColorUtils.bluePartToString(color);\r\n };\r\n ColorUtils.stringToHash = function (color) {\r\n var result = this.fromString(color);\r\n return result !== null ? this.colorToHash(result) : null;\r\n };\r\n ColorUtils.isHashColorString = function (color) {\r\n return /^#?([0-9a-f]{6})$/i.test(color) || /^#?([0-9a-f]{3})$/i.test(color);\r\n };\r\n ColorUtils.isKnownColorName = function (color) {\r\n return !!ColorUtils.colorNames[color.toLowerCase()];\r\n };\r\n ColorUtils.isGray = function (color) {\r\n var red = ColorUtils.getRed(color);\r\n return red === ColorUtils.getGreen(color) && red === ColorUtils.getBlue(color);\r\n };\r\n ColorUtils.DARK_COLOR = -16777216;\r\n ColorUtils.LIGHT_COLOR = -1;\r\n ColorUtils.colorNames = {\r\n aliceblue: '#f0f8ff', antiquewhite: '#faebd7', aqua: '#00ffff',\r\n aquamarine: '#7fffd4', azure: '#f0ffff', beige: '#f5f5dc',\r\n bisque: '#ffe4c4', black: '#000000', blanchedalmond: '#ffebcd',\r\n blue: '#0000ff', blueviolet: '#8a2be2', brown: '#a52a2a',\r\n burlywood: '#deb887', cadetblue: '#5f9ea0', chartreuse: '#7fff00',\r\n chocolate: '#d2691e', coral: '#ff7f50', cornflowerblue: '#6495ed',\r\n cornsilk: '#fff8dc', crimson: '#dc143c', cyan: '#00ffff',\r\n darkblue: '#00008b', darkcyan: '#008b8b', darkgoldenrod: '#b8860b',\r\n darkgray: '#a9a9a9', darkgreen: '#006400', darkkhaki: '#bdb76b',\r\n darkmagenta: '#8b008b', darkolivegreen: '#556b2f', darkorange: '#ff8c00',\r\n darkorchid: '#9932cc', darkred: '#8b0000', darksalmon: '#e9967a',\r\n darkseagreen: '#8fbc8f', darkslateblue: '#483d8b', darkslategray: '#2f4f4f',\r\n darkturquoise: '#00ced1', darkviolet: '#9400d3', deeppink: '#ff1493',\r\n deepskyblue: '#00bfff', dimgray: '#696969', dodgerblue: '#1e90ff',\r\n feldspar: '#d19275', firebrick: '#b22222', floralwhite: '#fffaf0',\r\n forestgreen: '#228b22', fuchsia: '#ff00ff', gainsboro: '#dcdcdc',\r\n ghostwhite: '#f8f8ff', gold: '#ffd700', goldenrod: '#daa520', gray: '#808080',\r\n green: '#00ff00', greenyellow: '#adff2f', honeydew: '#f0fff0', hotpink: '#ff69b4',\r\n indianred: '#cd5c5c', indigo: '#4b0082', ivory: '#fffff0', khaki: '#f0e68c',\r\n lavender: '#e6e6fa', lavenderblush: '#fff0f5', lawngreen: '#7cfc00',\r\n lemonchiffon: '#fffacd', lightblue: '#add8e6', lightcoral: '#f08080',\r\n lightcyan: '#e0ffff', lightgoldenrodyellow: '#fafad2', lightgray: '#d3d3d3',\r\n lightgreen: '#90ee90', lightpink: '#ffb6c1', lightsalmon: '#ffa07a',\r\n lightseagreen: '#20b2aa', lightskyblue: '#87cefa', lightslateblue: '#8470ff',\r\n lightslategray: '#778899', lightsteelblue: '#b0c4de', lightyellow: '#ffffe0',\r\n lime: '#00ff00', limegreen: '#32cd32', linen: '#faf0e6', magenta: '#ff00ff',\r\n maroon: '#800000', mediumaquamarine: '#66cdaa', mediumblue: '#0000cd',\r\n mediumorchid: '#ba55d3', mediumpurple: '#9370d8', mediumseagreen: '#3cb371',\r\n mediumslateblue: '#7b68ee', mediumspringgreen: '#00fa9a', mediumturquoise: '#48d1cc',\r\n mediumvioletred: '#c71585', midnightblue: '#191970', mintcream: '#f5fffa',\r\n mistyrose: '#ffe4e1', moccasin: '#ffe4b5', navajowhite: '#ffdead', navy: '#000080',\r\n oldlace: '#fdf5e6', olive: '#808000', olivedrab: '#6b8e23', orange: '#ffa500',\r\n orangered: '#ff4500', orchid: '#da70d6', palegoldenrod: '#eee8aa', palegreen: '#98fb98',\r\n paleturquoise: '#afeeee', palevioletred: '#d87093', papayawhip: '#ffefd5',\r\n peachpuff: '#ffdab9', peru: '#cd853f', pink: '#ffc0cb', plum: '#dda0dd',\r\n powderblue: '#b0e0e6', purple: '#800080', red: '#ff0000', rosybrown: '#bc8f8f',\r\n royalblue: '#4169e1', saddlebrown: '#8b4513', salmon: '#fa8072', sandybrown: '#f4a460',\r\n seagreen: '#2e8b57', seashell: '#fff5ee', sienna: '#a0522d', silver: '#c0c0c0',\r\n skyblue: '#87ceeb', slateblue: '#6a5acd', slategray: '#708090', snow: '#fffafa',\r\n springgreen: '#00ff7f', steelblue: '#4682b4', tan: '#d2b48c', teal: '#008080',\r\n thistle: '#d8bfd8', tomato: '#ff6347', turquoise: '#40e0d0', violet: '#ee82ee',\r\n violetred: '#d02090', wheat: '#f5deb3', white: '#ffffff', whitesmoke: '#f5f5f5',\r\n yellow: '#ffff00', yellowgreen: '#9acd32', windowtext: '#000000'\r\n };\r\n return ColorUtils;\r\n}());\r\nexports.ColorUtils = ColorUtils;\r\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar browser_1 = __webpack_require__(19);\r\nvar common_1 = __webpack_require__(34);\r\nvar math_1 = __webpack_require__(32);\r\nvar string_1 = __webpack_require__(50);\r\nvar DomUtils = (function () {\r\n function DomUtils() {\r\n }\r\n DomUtils.clearInnerHtml = function (element) {\r\n while (element.firstChild)\r\n element.removeChild(element.firstChild);\r\n };\r\n DomUtils.setStylePosition = function (style, point) {\r\n style.left = math_1.MathUtils.round(point.x, 3) + 'px';\r\n style.top = math_1.MathUtils.round(point.y, 3) + 'px';\r\n };\r\n DomUtils.setStyleSize = function (style, size) {\r\n style.width = math_1.MathUtils.round(size.width, 3) + 'px';\r\n style.height = math_1.MathUtils.round(size.height, 3) + 'px';\r\n };\r\n DomUtils.setStyleSizeAndPosition = function (style, rectangle) {\r\n DomUtils.setStylePosition(style, rectangle);\r\n DomUtils.setStyleSize(style, rectangle);\r\n };\r\n DomUtils.hideNode = function (node) {\r\n if (node) {\r\n var parentNode = node.parentNode;\r\n if (parentNode)\r\n parentNode.removeChild(node);\r\n }\r\n };\r\n DomUtils.isHTMLElementNode = function (node) {\r\n return node.nodeType === Node.ELEMENT_NODE;\r\n };\r\n DomUtils.isTextNode = function (node) {\r\n return node.nodeType === Node.TEXT_NODE;\r\n };\r\n DomUtils.isElementNode = function (node) {\r\n return node.nodeType === Node.ELEMENT_NODE;\r\n };\r\n DomUtils.isHTMLTableRowElement = function (element) {\r\n return element.tagName === 'TR';\r\n };\r\n DomUtils.isItParent = function (parentElement, element) {\r\n if (!parentElement || !element)\r\n return false;\r\n while (element) {\r\n if (element === parentElement)\r\n return true;\r\n if (element.tagName === 'BODY')\r\n return false;\r\n element = element.parentNode;\r\n }\r\n return false;\r\n };\r\n DomUtils.getParentByTagName = function (element, tagName) {\r\n tagName = tagName.toUpperCase();\r\n while (element) {\r\n if (element.tagName === 'BODY')\r\n return null;\r\n if (element.tagName === tagName)\r\n return element;\r\n element = element.parentNode;\r\n }\r\n return null;\r\n };\r\n DomUtils.getDocumentScrollTop = function () {\r\n var isScrollBodyIE = browser_1.Browser.IE && DomUtils.getCurrentStyle(document.body).overflow === 'hidden' && document.body.scrollTop > 0;\r\n if (browser_1.Browser.WebKitFamily || browser_1.Browser.Edge || isScrollBodyIE) {\r\n if (browser_1.Browser.MacOSMobilePlatform)\r\n return window.pageYOffset;\r\n if (browser_1.Browser.WebKitFamily)\r\n return document.documentElement.scrollTop || document.body.scrollTop;\r\n return document.body.scrollTop;\r\n }\r\n else\r\n return document.documentElement.scrollTop;\r\n };\r\n DomUtils.getDocumentScrollLeft = function () {\r\n var isScrollBodyIE = browser_1.Browser.IE && DomUtils.getCurrentStyle(document.body).overflow === 'hidden' && document.body.scrollLeft > 0;\r\n if (browser_1.Browser.Edge || isScrollBodyIE)\r\n return document.body ? document.body.scrollLeft : document.documentElement.scrollLeft;\r\n if (browser_1.Browser.WebKitFamily)\r\n return document.documentElement.scrollLeft || document.body.scrollLeft;\r\n return document.documentElement.scrollLeft;\r\n };\r\n DomUtils.getCurrentStyle = function (element) {\r\n if (element.currentStyle)\r\n return element.currentStyle;\r\n else if (document.defaultView && document.defaultView.getComputedStyle) {\r\n var result = document.defaultView.getComputedStyle(element, null);\r\n if (!result && browser_1.Browser.Firefox && window.frameElement) {\r\n var changes = [];\r\n var curElement = window.frameElement;\r\n while (!(result = document.defaultView.getComputedStyle(element, null))) {\r\n changes.push([curElement, curElement.style.display]);\r\n curElement.style.setProperty('display', 'block', 'important');\r\n curElement = curElement.tagName === 'BODY' ? curElement.ownerDocument.defaultView.frameElement : curElement.parentNode;\r\n }\r\n result = cloneObject(result);\r\n for (var ch = void 0, i = 0; ch = changes[i]; i++)\r\n ch[0].style.display = ch[1];\r\n document.body.offsetWidth;\r\n }\r\n return result;\r\n }\r\n return window.getComputedStyle(element, null);\r\n };\r\n DomUtils.setFocus = function (element) {\r\n function focusCore() {\r\n try {\r\n element.focus();\r\n if (browser_1.Browser.IE && document.activeElement !== element)\r\n element.focus();\r\n }\r\n catch (e) {\r\n }\r\n }\r\n if (browser_1.Browser.MacOSMobilePlatform)\r\n focusCore();\r\n else {\r\n setTimeout(function () {\r\n focusCore();\r\n }, 100);\r\n }\r\n };\r\n DomUtils.hasClassName = function (element, className) {\r\n try {\r\n var classNames = className.split(' ');\r\n var classList = element.classList;\r\n if (classList) {\r\n for (var i = classNames.length - 1; i >= 0; i--) {\r\n if (!classList.contains(classNames[i]))\r\n return false;\r\n }\r\n }\r\n else {\r\n var elementClassName = element.getAttribute && element.getAttribute('class');\r\n if (!elementClassName)\r\n return false;\r\n var elementClasses = elementClassName.split(' ');\r\n for (var i = classNames.length - 1; i >= 0; i--) {\r\n if (elementClasses.indexOf(classNames[i]) < 0)\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n };\r\n DomUtils.addClassName = function (element, className) {\r\n if (!DomUtils.hasClassName(element, className)) {\r\n var elementClassName = element.getAttribute && element.getAttribute('class');\r\n element.setAttribute('class', elementClassName === '' ? className : elementClassName + \" \" + className);\r\n }\r\n };\r\n DomUtils.removeClassName = function (element, className) {\r\n var elementClassName = element.getAttribute && element.getAttribute('class');\r\n var updClassName = \" \" + elementClassName + \" \";\r\n var newClassName = updClassName.replace(\" \" + className + \" \", ' ');\r\n if (updClassName.length !== newClassName.length)\r\n element.setAttribute('class', string_1.StringUtils.trim(newClassName));\r\n };\r\n DomUtils.toggleClassName = function (element, className, toggle) {\r\n if (toggle === undefined) {\r\n if (DomUtils.hasClassName(element, className))\r\n DomUtils.removeClassName(element, className);\r\n else\r\n DomUtils.addClassName(element, className);\r\n }\r\n else {\r\n if (toggle)\r\n DomUtils.addClassName(element, className);\r\n else\r\n DomUtils.removeClassName(element, className);\r\n }\r\n };\r\n DomUtils.pxToInt = function (px) {\r\n return pxToNumber(px, parseInt);\r\n };\r\n DomUtils.pxToFloat = function (px) {\r\n return pxToNumber(px, parseFloat);\r\n };\r\n DomUtils.getAbsolutePositionY = function (element) {\r\n function getAbsolutePositionY_IE(element) {\r\n return browser_1.Browser.IE && element.parentNode === null ?\r\n 0 :\r\n element.getBoundingClientRect().top + DomUtils.getDocumentScrollTop();\r\n }\r\n function getAbsolutePositionY_FF3(element) {\r\n return Math.round(element.getBoundingClientRect().top + DomUtils.getDocumentScrollTop());\r\n }\r\n function getAbsolutePositionY_Opera(curEl) {\r\n var isFirstCycle = true;\r\n if (curEl && DomUtils.isHTMLTableRowElement(curEl) && curEl.cells.length > 0)\r\n curEl = curEl.cells[0];\r\n var pos = getAbsoluteScrollOffset_OperaFF(curEl, false);\r\n while (curEl != null) {\r\n pos += curEl.offsetTop;\r\n if (!isFirstCycle)\r\n pos -= curEl.scrollTop;\r\n curEl = curEl.offsetParent;\r\n isFirstCycle = false;\r\n }\r\n pos += document.body.scrollTop;\r\n return pos;\r\n }\r\n function getAbsolutePositionY_NS(curEl) {\r\n var pos = getAbsoluteScrollOffset_OperaFF(curEl, false);\r\n var isFirstCycle = true;\r\n while (curEl != null) {\r\n pos += curEl.offsetTop;\r\n if (!isFirstCycle && curEl.offsetParent != null)\r\n pos -= curEl.scrollTop;\r\n if (!isFirstCycle && browser_1.Browser.Firefox) {\r\n var style = DomUtils.getCurrentStyle(curEl);\r\n if (curEl.tagName === 'DIV' && style.overflow !== 'visible')\r\n pos += DomUtils.pxToInt(style.borderTopWidth);\r\n }\r\n isFirstCycle = false;\r\n curEl = curEl.offsetParent;\r\n }\r\n return pos;\r\n }\r\n function getAbsolutePositionY_Other(curEl) {\r\n var pos = 0;\r\n var isFirstCycle = true;\r\n while (curEl != null) {\r\n pos += curEl.offsetTop;\r\n if (!isFirstCycle && curEl.offsetParent != null)\r\n pos -= curEl.scrollTop;\r\n isFirstCycle = false;\r\n curEl = curEl.offsetParent;\r\n }\r\n return pos;\r\n }\r\n if (!element)\r\n return 0;\r\n if (browser_1.Browser.IE)\r\n return getAbsolutePositionY_IE(element);\r\n else if (browser_1.Browser.Firefox && browser_1.Browser.Version >= 3)\r\n return getAbsolutePositionY_FF3(element);\r\n else if (browser_1.Browser.Opera)\r\n return getAbsolutePositionY_Opera(element);\r\n else if (browser_1.Browser.NetscapeFamily && (!browser_1.Browser.Firefox || browser_1.Browser.Version < 3))\r\n return getAbsolutePositionY_NS(element);\r\n else if (browser_1.Browser.WebKitFamily || browser_1.Browser.Edge)\r\n return getAbsolutePositionY_FF3(element);\r\n return getAbsolutePositionY_Other(element);\r\n };\r\n DomUtils.getAbsolutePositionX = function (element) {\r\n function getAbsolutePositionX_IE(element) {\r\n return browser_1.Browser.IE && element.parentNode === null ?\r\n 0 :\r\n element.getBoundingClientRect().left + DomUtils.getDocumentScrollLeft();\r\n }\r\n function getAbsolutePositionX_FF3(element) {\r\n return Math.round(element.getBoundingClientRect().left + DomUtils.getDocumentScrollLeft());\r\n }\r\n function getAbsolutePositionX_Opera(curEl) {\r\n var isFirstCycle = true;\r\n var pos = getAbsoluteScrollOffset_OperaFF(curEl, true);\r\n while (curEl != null) {\r\n pos += curEl.offsetLeft;\r\n if (!isFirstCycle)\r\n pos -= curEl.scrollLeft;\r\n curEl = curEl.offsetParent;\r\n isFirstCycle = false;\r\n }\r\n pos += document.body.scrollLeft;\r\n return pos;\r\n }\r\n function getAbsolutePositionX_NS(curEl) {\r\n var pos = getAbsoluteScrollOffset_OperaFF(curEl, true);\r\n var isFirstCycle = true;\r\n while (curEl != null) {\r\n pos += curEl.offsetLeft;\r\n if (!isFirstCycle && curEl.offsetParent != null)\r\n pos -= curEl.scrollLeft;\r\n if (!isFirstCycle && browser_1.Browser.Firefox) {\r\n var style = DomUtils.getCurrentStyle(curEl);\r\n if (curEl.tagName === 'DIV' && style.overflow !== 'visible')\r\n pos += DomUtils.pxToInt(style.borderLeftWidth);\r\n }\r\n isFirstCycle = false;\r\n curEl = curEl.offsetParent;\r\n }\r\n return pos;\r\n }\r\n function getAbsolutePositionX_Other(curEl) {\r\n var pos = 0;\r\n var isFirstCycle = true;\r\n while (curEl != null) {\r\n pos += curEl.offsetLeft;\r\n if (!isFirstCycle && curEl.offsetParent != null)\r\n pos -= curEl.scrollLeft;\r\n isFirstCycle = false;\r\n curEl = curEl.offsetParent;\r\n }\r\n return pos;\r\n }\r\n if (!element)\r\n return 0;\r\n if (browser_1.Browser.IE)\r\n return getAbsolutePositionX_IE(element);\r\n else if (browser_1.Browser.Firefox && browser_1.Browser.Version >= 3)\r\n return getAbsolutePositionX_FF3(element);\r\n else if (browser_1.Browser.Opera && browser_1.Browser.Version <= 12)\r\n return getAbsolutePositionX_Opera(element);\r\n else if (browser_1.Browser.NetscapeFamily && (!browser_1.Browser.Firefox || browser_1.Browser.Version < 3))\r\n return getAbsolutePositionX_NS(element);\r\n else if (browser_1.Browser.WebKitFamily || browser_1.Browser.Edge)\r\n return getAbsolutePositionX_FF3(element);\r\n else\r\n return getAbsolutePositionX_Other(element);\r\n };\r\n DomUtils.isInteractiveControl = function (element) {\r\n return ['A', 'INPUT', 'SELECT', 'OPTION', 'TEXTAREA', 'BUTTON', 'IFRAME'].indexOf(element.tagName) > -1;\r\n };\r\n DomUtils.getClearClientHeight = function (element) {\r\n return element.offsetHeight - (DomUtils.getTopBottomPaddings(element) + DomUtils.getVerticalBordersWidth(element));\r\n };\r\n DomUtils.getTopBottomPaddings = function (element, style) {\r\n var currentStyle = style ? style : DomUtils.getCurrentStyle(element);\r\n return DomUtils.pxToInt(currentStyle.paddingTop) + DomUtils.pxToInt(currentStyle.paddingBottom);\r\n };\r\n DomUtils.getVerticalBordersWidth = function (element, style) {\r\n if (!common_1.isDefined(style))\r\n style = (browser_1.Browser.IE && browser_1.Browser.MajorVersion !== 9 && window.getComputedStyle) ? window.getComputedStyle(element) : DomUtils.getCurrentStyle(element);\r\n var res = 0;\r\n if (style.borderTopStyle !== 'none')\r\n res += DomUtils.pxToFloat(style.borderTopWidth);\r\n if (style.borderBottomStyle !== 'none')\r\n res += DomUtils.pxToFloat(style.borderBottomWidth);\r\n return res;\r\n };\r\n DomUtils.getNodes = function (parent, predicate) {\r\n var collection = parent.all || parent.getElementsByTagName('*');\r\n var result = [];\r\n for (var i = 0; i < collection.length; i++) {\r\n var element = collection[i];\r\n if (predicate(element))\r\n result.push(element);\r\n }\r\n return result;\r\n };\r\n DomUtils.getChildNodes = function (parent, predicate) {\r\n var collection = parent.childNodes;\r\n var result = [];\r\n for (var i = 0; i < collection.length; i++) {\r\n var element = collection[i];\r\n if (predicate(element))\r\n result.push(element);\r\n }\r\n return result;\r\n };\r\n DomUtils.getNodesByClassName = function (parent, className) {\r\n if (parent.querySelectorAll) {\r\n var children = parent.querySelectorAll(\".\" + className);\r\n var result_1 = [];\r\n children.forEach(function (element) { return result_1.push(element); });\r\n return result_1;\r\n }\r\n else\r\n return DomUtils.getNodes(parent, function (elem) { return DomUtils.hasClassName(elem, className); });\r\n };\r\n DomUtils.getChildNodesByClassName = function (parent, className) {\r\n function nodeListToArray(nodeList, filter) {\r\n var result = [];\r\n for (var i = 0; i < nodeList.length; i++) {\r\n var element = nodeList[i];\r\n if (filter(element))\r\n result.push(element);\r\n }\r\n return result;\r\n }\r\n if (parent.querySelectorAll) {\r\n var children = parent.querySelectorAll(\".\" + className);\r\n return nodeListToArray(children, function (element) { return element.parentNode === parent; });\r\n }\r\n else {\r\n return DomUtils.getChildNodes(parent, function (elem) {\r\n if (DomUtils.isElementNode(elem))\r\n return common_1.isNonNullString(elem.className) && DomUtils.hasClassName(elem, elem.className);\r\n else\r\n return false;\r\n });\r\n }\r\n };\r\n DomUtils.getVerticalScrollBarWidth = function () {\r\n if (DomUtils.verticalScrollBarWidth === undefined) {\r\n var container = document.createElement('DIV');\r\n container.style.cssText = 'position: absolute; top: 0px; left: 0px; visibility: hidden; width: 200px; height: 150px; overflow: hidden; box-sizing: content-box';\r\n document.body.appendChild(container);\r\n var child = document.createElement('P');\r\n container.appendChild(child);\r\n child.style.cssText = 'width: 100%; height: 200px;';\r\n var widthWithoutScrollBar = child.offsetWidth;\r\n container.style.overflow = 'scroll';\r\n var widthWithScrollBar = child.offsetWidth;\r\n if (widthWithoutScrollBar === widthWithScrollBar)\r\n widthWithScrollBar = container.clientWidth;\r\n DomUtils.verticalScrollBarWidth = widthWithoutScrollBar - widthWithScrollBar;\r\n document.body.removeChild(container);\r\n }\r\n return DomUtils.verticalScrollBarWidth;\r\n };\r\n DomUtils.getHorizontalBordersWidth = function (element, style) {\r\n if (!common_1.isDefined(style))\r\n style = (browser_1.Browser.IE && window.getComputedStyle) ? window.getComputedStyle(element) : DomUtils.getCurrentStyle(element);\r\n var res = 0;\r\n if (style.borderLeftStyle !== 'none')\r\n res += DomUtils.pxToFloat(style.borderLeftWidth);\r\n if (style.borderRightStyle !== 'none')\r\n res += DomUtils.pxToFloat(style.borderRightWidth);\r\n return res;\r\n };\r\n DomUtils.getFontFamiliesFromCssString = function (cssString) {\r\n return cssString.split(',').map(function (fam) { return string_1.StringUtils.trim(fam.replace(/'|\"/gi, '')); });\r\n };\r\n DomUtils.getInnerText = function (container) {\r\n if (browser_1.Browser.Safari && browser_1.Browser.MajorVersion <= 5) {\r\n if (DomUtils.html2PlainTextFilter === null) {\r\n DomUtils.html2PlainTextFilter = document.createElement('DIV');\r\n DomUtils.html2PlainTextFilter.style.width = '0';\r\n DomUtils.html2PlainTextFilter.style.height = '0';\r\n DomUtils.html2PlainTextFilter.style.overflow = 'visible';\r\n DomUtils.html2PlainTextFilter.style.display = 'none';\r\n document.body.appendChild(DomUtils.html2PlainTextFilter);\r\n }\r\n var filter = DomUtils.html2PlainTextFilter;\r\n filter.innerHTML = container.innerHTML;\r\n filter.style.display = '';\r\n var innerText = filter.innerText;\r\n filter.style.display = 'none';\r\n return innerText;\r\n }\r\n else if (browser_1.Browser.NetscapeFamily || browser_1.Browser.WebKitFamily || (browser_1.Browser.IE && browser_1.Browser.Version >= 9) || browser_1.Browser.Edge)\r\n return container.textContent;\r\n else\r\n return container.innerText;\r\n };\r\n DomUtils.html2PlainTextFilter = null;\r\n DomUtils.verticalScrollBarWidth = undefined;\r\n return DomUtils;\r\n}());\r\nexports.DomUtils = DomUtils;\r\nfunction cloneObject(srcObject) {\r\n if (typeof (srcObject) !== 'object' || !common_1.isDefined(srcObject))\r\n return srcObject;\r\n var newObject = {};\r\n for (var i in srcObject)\r\n newObject[i] = srcObject[i];\r\n return newObject;\r\n}\r\nfunction pxToNumber(px, parseFunction) {\r\n var result = 0;\r\n if (common_1.isDefined(px) && px !== '') {\r\n try {\r\n var indexOfPx = px.indexOf('px');\r\n if (indexOfPx > -1)\r\n result = parseFunction(px.substr(0, indexOfPx));\r\n }\r\n catch (e) { }\r\n }\r\n return result;\r\n}\r\nfunction getAbsoluteScrollOffset_OperaFF(curEl, isX) {\r\n var pos = 0;\r\n var isFirstCycle = true;\r\n while (curEl != null) {\r\n if (curEl.tagName === 'BODY')\r\n break;\r\n var style = DomUtils.getCurrentStyle(curEl);\r\n if (style.position === 'absolute')\r\n break;\r\n if (!isFirstCycle && curEl.tagName === 'DIV' && (style.position === '' || style.position === 'static'))\r\n pos -= isX ? curEl.scrollLeft : curEl.scrollTop;\r\n curEl = curEl.parentNode;\r\n isFirstCycle = false;\r\n }\r\n return pos;\r\n}\r\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PermissionRequestEventArgs = exports.RequestedEntity = void 0;\r\nvar RequestedEntity = /** @class */ (function () {\r\n function RequestedEntity(apiController) {\r\n this.apiController = apiController;\r\n }\r\n Object.defineProperty(RequestedEntity.prototype, \"allowed\", {\r\n get: function () {\r\n return this.eventArgs.allowed;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(RequestedEntity.prototype, \"updateUI\", {\r\n get: function () {\r\n return this.eventArgs.updateUI;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(RequestedEntity.prototype, \"eventArgs\", {\r\n get: function () {\r\n if (!this._eventArgs)\r\n this._eventArgs = this.createEventArgs();\r\n return this._eventArgs;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return RequestedEntity;\r\n}());\r\nexports.RequestedEntity = RequestedEntity;\r\nvar PermissionRequestEventArgs = /** @class */ (function () {\r\n function PermissionRequestEventArgs() {\r\n this.allowed = true;\r\n this.updateUI = false;\r\n }\r\n return PermissionRequestEventArgs;\r\n}());\r\nexports.PermissionRequestEventArgs = PermissionRequestEventArgs;\r\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SvgPrimitive = void 0;\r\nvar Utils_1 = __webpack_require__(17);\r\nvar PrimitiveObject_1 = __webpack_require__(111);\r\nvar SvgPrimitive = /** @class */ (function (_super) {\r\n __extends(SvgPrimitive, _super);\r\n function SvgPrimitive(style, className, clipPathId, onApplyProperties) {\r\n var _this = _super.call(this, style) || this;\r\n _this.className = className;\r\n _this.clipPathId = clipPathId;\r\n _this.onApplyProperties = onApplyProperties;\r\n _this.children = [];\r\n return _this;\r\n }\r\n SvgPrimitive.prototype.createElement = function (insertInDOM) {\r\n var el = this.createMainElement();\r\n this.createChildElements(el);\r\n insertInDOM(el);\r\n this.createCustomContent(el);\r\n return el;\r\n };\r\n SvgPrimitive.prototype.createChildElements = function (parent) {\r\n for (var i = 0; i < this.children.length; i++)\r\n this.children[i].createElement(function (el) { return parent.appendChild(el); });\r\n };\r\n SvgPrimitive.prototype.applyElementProperties = function (element, measurer) {\r\n this.applyElementStyleProperties(element);\r\n if (this.className)\r\n element.setAttribute(\"class\", this.className);\r\n if (typeof this.clipPathId === \"string\")\r\n if (this.clipPathId)\r\n element.setAttribute(\"clip-path\", Utils_1.RenderUtils.getUrlPathById(this.clipPathId));\r\n else\r\n element.removeAttribute(\"clip-path\");\r\n if (this.onApplyProperties)\r\n this.onApplyProperties(element);\r\n this.applyChildrenProperties(element, measurer);\r\n };\r\n SvgPrimitive.prototype.applyChildrenProperties = function (element, measurer) {\r\n for (var i = 0; i < this.children.length; i++)\r\n this.children[i].applyElementProperties(element.childNodes[i], measurer);\r\n };\r\n SvgPrimitive.prototype.applyElementStyleProperties = function (element) {\r\n this.applyElementStylePropertiesCore(element);\r\n };\r\n SvgPrimitive.prototype.applyElementStylePropertiesCore = function (element, reverseTextAnchor) {\r\n if (reverseTextAnchor === void 0) { reverseTextAnchor = false; }\r\n if (this.style)\r\n Utils_1.RenderUtils.applyStyleToElement(this.style, element, reverseTextAnchor);\r\n };\r\n SvgPrimitive.prototype.createCustomContent = function (parent) {\r\n };\r\n SvgPrimitive.prototype.destroyCustomContent = function (parent) {\r\n };\r\n SvgPrimitive.prototype.dispose = function () {\r\n if (this.children)\r\n this.children.forEach(function (primitive) { return primitive.dispose(); });\r\n };\r\n return SvgPrimitive;\r\n}(PrimitiveObject_1.PrimitiveObject));\r\nexports.SvgPrimitive = SvgPrimitive;\r\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar browser_1 = __webpack_require__(19);\r\nvar encode_1 = __webpack_require__(173);\r\nvar string_1 = __webpack_require__(50);\r\nvar KeyUtils = (function () {\r\n function KeyUtils() {\r\n }\r\n KeyUtils.getKeyModifiers = function (evt) {\r\n var result = 0;\r\n if (evt.altKey)\r\n result |= ModifierKey.Alt;\r\n if (evt.ctrlKey)\r\n result |= ModifierKey.Ctrl;\r\n if (evt.shiftKey)\r\n result |= ModifierKey.Shift;\r\n if (evt.metaKey)\r\n result |= ModifierKey.Meta;\r\n return result;\r\n };\r\n KeyUtils.getShortcutCode = function (keyCode, isCtrlKey, isShiftKey, isAltKey, isMetaKey) {\r\n var value = keyCode;\r\n value |= isCtrlKey ? ModifierKey.Ctrl : 0;\r\n value |= isShiftKey ? ModifierKey.Shift : 0;\r\n value |= isAltKey ? ModifierKey.Alt : 0;\r\n value |= isMetaKey ? ModifierKey.Meta : 0;\r\n return value;\r\n };\r\n KeyUtils.getShortcutCodeByEvent = function (evt) {\r\n return KeyUtils.getShortcutCode(KeyUtils.getEventKeyCode(evt), evt.ctrlKey, evt.shiftKey, evt.altKey, browser_1.Browser.MacOSPlatform ? evt.metaKey : false);\r\n };\r\n KeyUtils.getEventKeyCode = function (evt) {\r\n return browser_1.Browser.NetscapeFamily || browser_1.Browser.Opera ? evt.which : evt.keyCode;\r\n };\r\n KeyUtils.parseShortcutString = function (shortcutString) {\r\n if (!shortcutString)\r\n return 0;\r\n var isCtrlKey = false;\r\n var isShiftKey = false;\r\n var isAltKey = false;\r\n var isMetaKey = false;\r\n var keyCode = null;\r\n var shcKeys = shortcutString.toString().split('+');\r\n if (shcKeys.length > 0) {\r\n for (var i = 0; i < shcKeys.length; i++) {\r\n var key = string_1.StringUtils.trim(shcKeys[i].toUpperCase());\r\n switch (key) {\r\n case 'CONTROL':\r\n case 'CONTROLKEY':\r\n case 'CTRL':\r\n isCtrlKey = true;\r\n break;\r\n case 'SHIFT':\r\n case 'SHIFTKEY':\r\n isShiftKey = true;\r\n break;\r\n case 'ALT':\r\n isAltKey = true;\r\n break;\r\n case 'CMD':\r\n isMetaKey = true;\r\n break;\r\n case 'F1':\r\n keyCode = KeyCode.F1;\r\n break;\r\n case 'F2':\r\n keyCode = KeyCode.F2;\r\n break;\r\n case 'F3':\r\n keyCode = KeyCode.F3;\r\n break;\r\n case 'F4':\r\n keyCode = KeyCode.F4;\r\n break;\r\n case 'F5':\r\n keyCode = KeyCode.F5;\r\n break;\r\n case 'F6':\r\n keyCode = KeyCode.F6;\r\n break;\r\n case 'F7':\r\n keyCode = KeyCode.F7;\r\n break;\r\n case 'F8':\r\n keyCode = KeyCode.F8;\r\n break;\r\n case 'F9':\r\n keyCode = KeyCode.F9;\r\n break;\r\n case 'F10':\r\n keyCode = KeyCode.F10;\r\n break;\r\n case 'F11':\r\n keyCode = KeyCode.F11;\r\n break;\r\n case 'F12':\r\n keyCode = KeyCode.F12;\r\n break;\r\n case 'RETURN':\r\n case 'ENTER':\r\n keyCode = KeyCode.Enter;\r\n break;\r\n case 'HOME':\r\n keyCode = KeyCode.Home;\r\n break;\r\n case 'END':\r\n keyCode = KeyCode.End;\r\n break;\r\n case 'LEFT':\r\n keyCode = KeyCode.Left;\r\n break;\r\n case 'RIGHT':\r\n keyCode = KeyCode.Right;\r\n break;\r\n case 'UP':\r\n keyCode = KeyCode.Up;\r\n break;\r\n case 'DOWN':\r\n keyCode = KeyCode.Down;\r\n break;\r\n case 'PAGEUP':\r\n keyCode = KeyCode.PageUp;\r\n break;\r\n case 'PAGEDOWN':\r\n keyCode = KeyCode.PageDown;\r\n break;\r\n case 'SPACE':\r\n keyCode = KeyCode.Space;\r\n break;\r\n case 'TAB':\r\n keyCode = KeyCode.Tab;\r\n break;\r\n case 'BACKSPACE':\r\n case 'BACK':\r\n keyCode = KeyCode.Backspace;\r\n break;\r\n case 'CONTEXT':\r\n keyCode = KeyCode.ContextMenu;\r\n break;\r\n case 'ESCAPE':\r\n case 'ESC':\r\n keyCode = KeyCode.Esc;\r\n break;\r\n case 'DELETE':\r\n case 'DEL':\r\n keyCode = KeyCode.Delete;\r\n break;\r\n case 'INSERT':\r\n case 'INS':\r\n keyCode = KeyCode.Insert;\r\n break;\r\n case 'PLUS':\r\n keyCode = '+'.charCodeAt(0);\r\n break;\r\n default:\r\n keyCode = key.charCodeAt(0);\r\n break;\r\n }\r\n }\r\n }\r\n else\r\n alert(encode_1.EncodeUtils.decodeViaTextArea('Invalid shortcut'));\r\n return KeyUtils.getShortcutCode(keyCode, isCtrlKey, isShiftKey, isAltKey, isMetaKey);\r\n };\r\n return KeyUtils;\r\n}());\r\nexports.KeyUtils = KeyUtils;\r\nvar ModifierKey;\r\n(function (ModifierKey) {\r\n ModifierKey[ModifierKey[\"None\"] = 0] = \"None\";\r\n ModifierKey[ModifierKey[\"Ctrl\"] = 65536] = \"Ctrl\";\r\n ModifierKey[ModifierKey[\"Shift\"] = 262144] = \"Shift\";\r\n ModifierKey[ModifierKey[\"Alt\"] = 1048576] = \"Alt\";\r\n ModifierKey[ModifierKey[\"Meta\"] = 16777216] = \"Meta\";\r\n})(ModifierKey = exports.ModifierKey || (exports.ModifierKey = {}));\r\nvar KeyCode;\r\n(function (KeyCode) {\r\n KeyCode[KeyCode[\"Backspace\"] = 8] = \"Backspace\";\r\n KeyCode[KeyCode[\"Tab\"] = 9] = \"Tab\";\r\n KeyCode[KeyCode[\"Enter\"] = 13] = \"Enter\";\r\n KeyCode[KeyCode[\"Pause\"] = 19] = \"Pause\";\r\n KeyCode[KeyCode[\"CapsLock\"] = 20] = \"CapsLock\";\r\n KeyCode[KeyCode[\"Esc\"] = 27] = \"Esc\";\r\n KeyCode[KeyCode[\"Space\"] = 32] = \"Space\";\r\n KeyCode[KeyCode[\"PageUp\"] = 33] = \"PageUp\";\r\n KeyCode[KeyCode[\"PageDown\"] = 34] = \"PageDown\";\r\n KeyCode[KeyCode[\"End\"] = 35] = \"End\";\r\n KeyCode[KeyCode[\"Home\"] = 36] = \"Home\";\r\n KeyCode[KeyCode[\"Left\"] = 37] = \"Left\";\r\n KeyCode[KeyCode[\"Up\"] = 38] = \"Up\";\r\n KeyCode[KeyCode[\"Right\"] = 39] = \"Right\";\r\n KeyCode[KeyCode[\"Down\"] = 40] = \"Down\";\r\n KeyCode[KeyCode[\"Insert\"] = 45] = \"Insert\";\r\n KeyCode[KeyCode[\"Delete\"] = 46] = \"Delete\";\r\n KeyCode[KeyCode[\"Key_0\"] = 48] = \"Key_0\";\r\n KeyCode[KeyCode[\"Key_1\"] = 49] = \"Key_1\";\r\n KeyCode[KeyCode[\"Key_2\"] = 50] = \"Key_2\";\r\n KeyCode[KeyCode[\"Key_3\"] = 51] = \"Key_3\";\r\n KeyCode[KeyCode[\"Key_4\"] = 52] = \"Key_4\";\r\n KeyCode[KeyCode[\"Key_5\"] = 53] = \"Key_5\";\r\n KeyCode[KeyCode[\"Key_6\"] = 54] = \"Key_6\";\r\n KeyCode[KeyCode[\"Key_7\"] = 55] = \"Key_7\";\r\n KeyCode[KeyCode[\"Key_8\"] = 56] = \"Key_8\";\r\n KeyCode[KeyCode[\"Key_9\"] = 57] = \"Key_9\";\r\n KeyCode[KeyCode[\"Key_a\"] = 65] = \"Key_a\";\r\n KeyCode[KeyCode[\"Key_b\"] = 66] = \"Key_b\";\r\n KeyCode[KeyCode[\"Key_c\"] = 67] = \"Key_c\";\r\n KeyCode[KeyCode[\"Key_d\"] = 68] = \"Key_d\";\r\n KeyCode[KeyCode[\"Key_e\"] = 69] = \"Key_e\";\r\n KeyCode[KeyCode[\"Key_f\"] = 70] = \"Key_f\";\r\n KeyCode[KeyCode[\"Key_g\"] = 71] = \"Key_g\";\r\n KeyCode[KeyCode[\"Key_h\"] = 72] = \"Key_h\";\r\n KeyCode[KeyCode[\"Key_i\"] = 73] = \"Key_i\";\r\n KeyCode[KeyCode[\"Key_j\"] = 74] = \"Key_j\";\r\n KeyCode[KeyCode[\"Key_k\"] = 75] = \"Key_k\";\r\n KeyCode[KeyCode[\"Key_l\"] = 76] = \"Key_l\";\r\n KeyCode[KeyCode[\"Key_m\"] = 77] = \"Key_m\";\r\n KeyCode[KeyCode[\"Key_n\"] = 78] = \"Key_n\";\r\n KeyCode[KeyCode[\"Key_o\"] = 79] = \"Key_o\";\r\n KeyCode[KeyCode[\"Key_p\"] = 80] = \"Key_p\";\r\n KeyCode[KeyCode[\"Key_q\"] = 81] = \"Key_q\";\r\n KeyCode[KeyCode[\"Key_r\"] = 82] = \"Key_r\";\r\n KeyCode[KeyCode[\"Key_s\"] = 83] = \"Key_s\";\r\n KeyCode[KeyCode[\"Key_t\"] = 84] = \"Key_t\";\r\n KeyCode[KeyCode[\"Key_u\"] = 85] = \"Key_u\";\r\n KeyCode[KeyCode[\"Key_v\"] = 86] = \"Key_v\";\r\n KeyCode[KeyCode[\"Key_w\"] = 87] = \"Key_w\";\r\n KeyCode[KeyCode[\"Key_x\"] = 88] = \"Key_x\";\r\n KeyCode[KeyCode[\"Key_y\"] = 89] = \"Key_y\";\r\n KeyCode[KeyCode[\"Key_z\"] = 90] = \"Key_z\";\r\n KeyCode[KeyCode[\"Windows\"] = 91] = \"Windows\";\r\n KeyCode[KeyCode[\"ContextMenu\"] = 93] = \"ContextMenu\";\r\n KeyCode[KeyCode[\"Numpad_0\"] = 96] = \"Numpad_0\";\r\n KeyCode[KeyCode[\"Numpad_1\"] = 97] = \"Numpad_1\";\r\n KeyCode[KeyCode[\"Numpad_2\"] = 98] = \"Numpad_2\";\r\n KeyCode[KeyCode[\"Numpad_3\"] = 99] = \"Numpad_3\";\r\n KeyCode[KeyCode[\"Numpad_4\"] = 100] = \"Numpad_4\";\r\n KeyCode[KeyCode[\"Numpad_5\"] = 101] = \"Numpad_5\";\r\n KeyCode[KeyCode[\"Numpad_6\"] = 102] = \"Numpad_6\";\r\n KeyCode[KeyCode[\"Numpad_7\"] = 103] = \"Numpad_7\";\r\n KeyCode[KeyCode[\"Numpad_8\"] = 104] = \"Numpad_8\";\r\n KeyCode[KeyCode[\"Numpad_9\"] = 105] = \"Numpad_9\";\r\n KeyCode[KeyCode[\"Multiply\"] = 106] = \"Multiply\";\r\n KeyCode[KeyCode[\"Add\"] = 107] = \"Add\";\r\n KeyCode[KeyCode[\"Subtract\"] = 109] = \"Subtract\";\r\n KeyCode[KeyCode[\"Decimal\"] = 110] = \"Decimal\";\r\n KeyCode[KeyCode[\"Divide\"] = 111] = \"Divide\";\r\n KeyCode[KeyCode[\"F1\"] = 112] = \"F1\";\r\n KeyCode[KeyCode[\"F2\"] = 113] = \"F2\";\r\n KeyCode[KeyCode[\"F3\"] = 114] = \"F3\";\r\n KeyCode[KeyCode[\"F4\"] = 115] = \"F4\";\r\n KeyCode[KeyCode[\"F5\"] = 116] = \"F5\";\r\n KeyCode[KeyCode[\"F6\"] = 117] = \"F6\";\r\n KeyCode[KeyCode[\"F7\"] = 118] = \"F7\";\r\n KeyCode[KeyCode[\"F8\"] = 119] = \"F8\";\r\n KeyCode[KeyCode[\"F9\"] = 120] = \"F9\";\r\n KeyCode[KeyCode[\"F10\"] = 121] = \"F10\";\r\n KeyCode[KeyCode[\"F11\"] = 122] = \"F11\";\r\n KeyCode[KeyCode[\"F12\"] = 123] = \"F12\";\r\n KeyCode[KeyCode[\"NumLock\"] = 144] = \"NumLock\";\r\n KeyCode[KeyCode[\"ScrollLock\"] = 145] = \"ScrollLock\";\r\n KeyCode[KeyCode[\"Semicolon\"] = 186] = \"Semicolon\";\r\n KeyCode[KeyCode[\"Equals\"] = 187] = \"Equals\";\r\n KeyCode[KeyCode[\"Comma\"] = 188] = \"Comma\";\r\n KeyCode[KeyCode[\"Dash\"] = 189] = \"Dash\";\r\n KeyCode[KeyCode[\"Period\"] = 190] = \"Period\";\r\n KeyCode[KeyCode[\"ForwardSlash\"] = 191] = \"ForwardSlash\";\r\n KeyCode[KeyCode[\"GraveAccent\"] = 192] = \"GraveAccent\";\r\n KeyCode[KeyCode[\"OpenBracket\"] = 219] = \"OpenBracket\";\r\n KeyCode[KeyCode[\"BackSlash\"] = 220] = \"BackSlash\";\r\n KeyCode[KeyCode[\"CloseBracket\"] = 221] = \"CloseBracket\";\r\n KeyCode[KeyCode[\"SingleQuote\"] = 222] = \"SingleQuote\";\r\n})(KeyCode = exports.KeyCode || (exports.KeyCode = {}));\r\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.EmptyStyle = exports.StrokeStyle = exports.TextAlignment = exports.TextStyle = exports.Style = exports.DEFAULT_STROKE_DASHARRAY = exports.DEFAULT_STROKE_WIDTH = exports.StyleBase = void 0;\r\nvar color_1 = __webpack_require__(22);\r\nvar Svg_1 = __webpack_require__(112);\r\nvar unit_converter_1 = __webpack_require__(11);\r\nvar StyleBase = /** @class */ (function () {\r\n function StyleBase() {\r\n this.createDefaultProperties();\r\n }\r\n StyleBase.prototype.clone = function () {\r\n var _this = this;\r\n var style = this.createInstance();\r\n this.forEach(function (propertyName) { style[propertyName] = _this[propertyName]; });\r\n return style;\r\n };\r\n StyleBase.prototype.forEach = function (callback) {\r\n for (var propertyName in this)\r\n if (Object.prototype.hasOwnProperty.call(this, propertyName))\r\n callback(propertyName);\r\n };\r\n Object.defineProperty(StyleBase.prototype, \"strokeWidthPx\", {\r\n get: function () {\r\n return 0;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(StyleBase.prototype, \"strokeWidth\", {\r\n get: function () {\r\n return unit_converter_1.UnitConverter.pixelsToTwips(this.strokeWidthPx);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(StyleBase.prototype, \"strokeOffset\", {\r\n get: function () {\r\n return 0.5;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n StyleBase.prototype.toHash = function () {\r\n var obj = this.toObject();\r\n return !obj ? \"\" : Object.keys(obj).map(function (k) { return k + \"|\" + obj[k]; }).join(\"\");\r\n };\r\n StyleBase.prototype.toObject = function () {\r\n var _this = this;\r\n var result = {};\r\n var modified = false;\r\n var defaultStyle = this.getDefaultInstance();\r\n this.forEach(function (key) {\r\n if (_this[key] !== defaultStyle[key]) {\r\n result[key] = _this[key];\r\n modified = true;\r\n }\r\n });\r\n return modified ? result : null;\r\n };\r\n StyleBase.prototype.fromObject = function (obj) {\r\n for (var key in obj)\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var value = Svg_1.isColorProperty(key) ? color_1.ColorUtils.stringToHash(obj[key]) : obj[key];\r\n this[key] = value;\r\n }\r\n };\r\n return StyleBase;\r\n}());\r\nexports.StyleBase = StyleBase;\r\nexports.DEFAULT_STROKE_WIDTH = 2;\r\nexports.DEFAULT_STROKE_DASHARRAY = \"\";\r\nvar Style = /** @class */ (function (_super) {\r\n __extends(Style, _super);\r\n function Style() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Style.prototype.createInstance = function () {\r\n return new Style();\r\n };\r\n Style.prototype.createDefaultProperties = function () {\r\n // Default values must be the same with css\r\n this[\"fill\"] = \"#ffffff\";\r\n this[\"stroke\"] = \"#000000\";\r\n this[\"stroke-width\"] = exports.DEFAULT_STROKE_WIDTH.toString();\r\n this[\"stroke-dasharray\"] = exports.DEFAULT_STROKE_DASHARRAY;\r\n };\r\n Style.prototype.getDefaultInstance = function () {\r\n return Style.defaultInstance;\r\n };\r\n Style.prototype.isDefaultStrokeDashArray = function () {\r\n return this[\"stroke-dasharray\"] === exports.DEFAULT_STROKE_DASHARRAY;\r\n };\r\n Style.prototype.resetStrokeDashArray = function () {\r\n this[\"stroke-dasharray\"] = exports.DEFAULT_STROKE_DASHARRAY;\r\n };\r\n Object.defineProperty(Style.prototype, \"strokeWidthPx\", {\r\n get: function () {\r\n return parseInt(this[\"stroke-width\"]);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Style.defaultInstance = new Style();\r\n return Style;\r\n}(StyleBase));\r\nexports.Style = Style;\r\nvar TextStyle = /** @class */ (function (_super) {\r\n __extends(TextStyle, _super);\r\n function TextStyle() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TextStyle.prototype.createInstance = function () {\r\n return new TextStyle();\r\n };\r\n TextStyle.prototype.createDefaultProperties = function () {\r\n // Default values must be the same with css\r\n this[\"fill\"] = \"#000000\";\r\n this[\"font-family\"] = \"Arial\";\r\n this[\"font-size\"] = \"10pt\";\r\n this[\"font-weight\"] = \"\";\r\n this[\"font-style\"] = \"\";\r\n this[\"text-decoration\"] = \"\";\r\n this[\"text-anchor\"] = \"middle\";\r\n };\r\n TextStyle.prototype.getDefaultInstance = function () {\r\n return TextStyle.defaultInstance;\r\n };\r\n TextStyle.prototype.getAlignment = function () {\r\n switch (this[\"text-anchor\"]) {\r\n case \"left\":\r\n return TextAlignment.Left;\r\n case \"right\":\r\n return TextAlignment.Right;\r\n default:\r\n return TextAlignment.Center;\r\n }\r\n };\r\n TextStyle.defaultInstance = new TextStyle();\r\n return TextStyle;\r\n}(StyleBase));\r\nexports.TextStyle = TextStyle;\r\nvar TextAlignment;\r\n(function (TextAlignment) {\r\n TextAlignment[TextAlignment[\"Left\"] = 0] = \"Left\";\r\n TextAlignment[TextAlignment[\"Right\"] = 1] = \"Right\";\r\n TextAlignment[TextAlignment[\"Center\"] = 2] = \"Center\";\r\n})(TextAlignment = exports.TextAlignment || (exports.TextAlignment = {}));\r\nvar StrokeStyle = /** @class */ (function (_super) {\r\n __extends(StrokeStyle, _super);\r\n function StrokeStyle(strokeWidthPx, strokeOffset) {\r\n var _this = _super.call(this) || this;\r\n _this._strokeWidthPx = strokeWidthPx;\r\n _this._strokeOffset = strokeOffset;\r\n return _this;\r\n }\r\n StrokeStyle.prototype.createInstance = function () {\r\n return new StrokeStyle();\r\n };\r\n StrokeStyle.prototype.createDefaultProperties = function () {\r\n };\r\n StrokeStyle.prototype.getDefaultInstance = function () {\r\n return TextStyle.defaultInstance;\r\n };\r\n Object.defineProperty(StrokeStyle.prototype, \"strokeWidthPx\", {\r\n get: function () {\r\n return this._strokeWidthPx || 0;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(StrokeStyle.prototype, \"strokeOffset\", {\r\n get: function () {\r\n return this._strokeOffset || 0;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n StrokeStyle.default1pxInstance = new StrokeStyle(1, 0.5);\r\n StrokeStyle.default1pxNegativeOffsetInstance = new StrokeStyle(1, -0.5);\r\n StrokeStyle.default2pxInstance = new StrokeStyle(2);\r\n return StrokeStyle;\r\n}(Style));\r\nexports.StrokeStyle = StrokeStyle;\r\nvar EmptyStyle = /** @class */ (function (_super) {\r\n __extends(EmptyStyle, _super);\r\n function EmptyStyle(styles) {\r\n var _this = _super.call(this) || this;\r\n if (styles)\r\n Object.keys(styles).forEach(function (k) { return _this[k] = styles[k]; });\r\n return _this;\r\n }\r\n EmptyStyle.prototype.createInstance = function () {\r\n return new EmptyStyle();\r\n };\r\n EmptyStyle.prototype.createDefaultProperties = function () {\r\n };\r\n EmptyStyle.prototype.getDefaultInstance = function () {\r\n return TextStyle.defaultInstance;\r\n };\r\n EmptyStyle.defaultInstance = new EmptyStyle();\r\n return EmptyStyle;\r\n}(Style));\r\nexports.EmptyStyle = EmptyStyle;\r\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ConnectorRoutingMode = exports.AutoZoomMode = exports.DiagramSettings = void 0;\r\nvar Utils_1 = __webpack_require__(3);\r\nvar size_1 = __webpack_require__(2);\r\nvar Enums_1 = __webpack_require__(48);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar DiagramSettings = /** @class */ (function () {\r\n function DiagramSettings() {\r\n this.onZoomChanged = new Utils_1.EventDispatcher();\r\n this.onViewChanged = new Utils_1.EventDispatcher();\r\n this.onReadOnlyChanged = new Utils_1.EventDispatcher();\r\n this.onConnectorRoutingModeChanged = new Utils_1.EventDispatcher();\r\n this._zoomLevel = 1;\r\n this._zoomLevelWasChanged = false;\r\n this._zoomLevelItems = [0.5, 0.75, 1, 1.25, 1.5, 2, 3];\r\n this._simpleView = false;\r\n this._fullscreen = false;\r\n this._readOnly = false;\r\n this._autoZoom = AutoZoomMode.Disabled;\r\n this._snapToGrid = true;\r\n this._showGrid = true;\r\n this._contextMenuEnabled = true;\r\n this._gridSize = 180;\r\n this._gridSizeItems = [90, 180, 360, 720];\r\n this._pageSizeItems = [\r\n { size: new size_1.Size(12240, 15840), text: \"US-Letter ({width} x {height})\" },\r\n { size: new size_1.Size(12240, 20160), text: \"US-Legal ({width} x {height})\" },\r\n { size: new size_1.Size(15817, 24491), text: \"US-Tabloid ({width} x {height})\" },\r\n { size: new size_1.Size(47679, 67408), text: \"A0 ({width} x {height})\" },\r\n { size: new size_1.Size(33676, 47679), text: \"A1 ({width} x {height})\" },\r\n { size: new size_1.Size(23811, 33676), text: \"A2 ({width} x {height})\" },\r\n { size: new size_1.Size(16838, 23811), text: \"A3 ({width} x {height})\" },\r\n { size: new size_1.Size(11906, 16838), text: \"A4 ({width} x {height})\" },\r\n { size: new size_1.Size(8391, 11906), text: \"A5 ({width} x {height})\" },\r\n { size: new size_1.Size(5953, 8391), text: \"A6 ({width} x {height})\" },\r\n { size: new size_1.Size(4195, 5953), text: \"A7 ({width} x {height})\" }\r\n ];\r\n this._viewUnits = Enums_1.DiagramUnit.In;\r\n this._connectorRoutingMode = ConnectorRoutingMode.AllShapesOnly;\r\n this._reloadInsertedItemRequired = false;\r\n }\r\n Object.defineProperty(DiagramSettings.prototype, \"zoomLevel\", {\r\n get: function () { return this._zoomLevel; },\r\n set: function (value) {\r\n var _this = this;\r\n value = DiagramSettings.correctZoomLevel(value);\r\n if (value !== this._zoomLevel) {\r\n this._zoomLevel = value;\r\n this._zoomLevelWasChanged = true;\r\n this.onZoomChanged.raise1(function (listener) { return listener.notifyZoomChanged(value, _this._autoZoom); });\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramSettings.prototype, \"zoomLevelWasChanged\", {\r\n get: function () { return this._zoomLevelWasChanged; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramSettings.prototype, \"zoomLevelItems\", {\r\n get: function () { return this._zoomLevelItems; },\r\n set: function (value) {\r\n value = value.map(function (l) { return DiagramSettings.correctZoomLevel(l); });\r\n if (value !== this._zoomLevelItems)\r\n this._zoomLevelItems = value;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramSettings.prototype, \"autoZoom\", {\r\n get: function () { return this._autoZoom; },\r\n set: function (value) {\r\n var _this = this;\r\n if (value !== this._autoZoom) {\r\n this._autoZoom = value;\r\n this.onZoomChanged.raise1(function (l) { return l.notifyZoomChanged(_this._zoomLevel, value); });\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramSettings.prototype, \"simpleView\", {\r\n get: function () { return this._simpleView; },\r\n set: function (value) {\r\n if (value !== this._simpleView) {\r\n this._simpleView = value;\r\n this.notifyViewChanged();\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramSettings.prototype, \"readOnly\", {\r\n get: function () { return this._readOnly; },\r\n set: function (value) {\r\n if (value !== this._readOnly) {\r\n this._readOnly = value;\r\n this.onReadOnlyChanged.raise1(function (listener) { return listener.notifyReadOnlyChanged(value); });\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramSettings.prototype, \"fullscreen\", {\r\n get: function () { return this._fullscreen; },\r\n set: function (value) { this._fullscreen = value; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramSettings.prototype, \"snapToGrid\", {\r\n get: function () { return this._snapToGrid; },\r\n set: function (value) { this._snapToGrid = value; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramSettings.prototype, \"showGrid\", {\r\n get: function () { return this._showGrid; },\r\n set: function (value) {\r\n var _this = this;\r\n if (value !== this._showGrid) {\r\n this._showGrid = value;\r\n this.onViewChanged.raise1(function (l) { return l.notifyGridChanged(_this.showGrid, _this.gridSize); });\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramSettings.prototype, \"contextMenuEnabled\", {\r\n get: function () { return this._contextMenuEnabled; },\r\n set: function (value) {\r\n this._contextMenuEnabled = value;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramSettings.prototype, \"gridSize\", {\r\n get: function () { return this._gridSize; },\r\n set: function (value) {\r\n var _this = this;\r\n if (value !== this._gridSize) {\r\n this._gridSize = value;\r\n this.onViewChanged.raise1(function (l) { return l.notifyGridChanged(_this.showGrid, _this.gridSize); });\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramSettings.prototype, \"gridSizeItems\", {\r\n get: function () { return this._gridSizeItems; },\r\n set: function (value) {\r\n if (value !== this._gridSizeItems)\r\n this._gridSizeItems = value;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramSettings.prototype, \"pageSizeItems\", {\r\n get: function () { return this._pageSizeItems; },\r\n set: function (value) {\r\n if (value !== this._pageSizeItems)\r\n this._pageSizeItems = value;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramSettings.prototype, \"viewUnits\", {\r\n get: function () { return this._viewUnits; },\r\n set: function (value) { this._viewUnits = value; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramSettings.prototype, \"connectorRoutingMode\", {\r\n get: function () { return this._connectorRoutingMode; },\r\n set: function (value) {\r\n if (value !== this._connectorRoutingMode) {\r\n this._connectorRoutingMode = value;\r\n this.onConnectorRoutingModeChanged.raise1(function (listener) { return listener.notifyConnectorRoutingModeChanged(value); });\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramSettings.prototype, \"reloadInsertedItemRequired\", {\r\n get: function () { return this._reloadInsertedItemRequired; },\r\n set: function (value) {\r\n this._reloadInsertedItemRequired = value;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramSettings.prototype, \"shapeMinWidth\", {\r\n get: function () { return this._shapeMinWidth; },\r\n set: function (value) { this._shapeMinWidth = value; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramSettings.prototype, \"shapeMinHeight\", {\r\n get: function () { return this._shapeMinHeight; },\r\n set: function (value) { this._shapeMinHeight = value; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramSettings.prototype, \"shapeMaxWidth\", {\r\n get: function () { return this._shapeMaxWidth; },\r\n set: function (value) { this._shapeMaxWidth = value; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramSettings.prototype, \"shapeMaxHeight\", {\r\n get: function () { return this._shapeMaxHeight; },\r\n set: function (value) { this._shapeMaxHeight = value; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n DiagramSettings.prototype.applyShapeSizeSettings = function (settings, units) {\r\n if (!settings)\r\n return;\r\n if (typeof (settings.shapeMaxHeight) === \"number\")\r\n this.shapeMaxHeight = ModelUtils_1.ModelUtils.getTwipsValue(units, settings.shapeMaxHeight);\r\n if (typeof (settings.shapeMinHeight) === \"number\")\r\n this.shapeMinHeight = ModelUtils_1.ModelUtils.getTwipsValue(units, settings.shapeMinHeight);\r\n if (typeof (settings.shapeMaxWidth) === \"number\")\r\n this.shapeMaxWidth = ModelUtils_1.ModelUtils.getTwipsValue(units, settings.shapeMaxWidth);\r\n if (typeof (settings.shapeMinWidth) === \"number\")\r\n this.shapeMinWidth = ModelUtils_1.ModelUtils.getTwipsValue(units, settings.shapeMinWidth);\r\n };\r\n DiagramSettings.prototype.notifyViewChanged = function () {\r\n var _this = this;\r\n this.onViewChanged.raise1(function (listener) { return listener.notifyViewChanged(_this._simpleView); });\r\n };\r\n DiagramSettings.correctZoomLevel = function (level) {\r\n return Math.min(10, Math.max(level, 0.01));\r\n };\r\n return DiagramSettings;\r\n}());\r\nexports.DiagramSettings = DiagramSettings;\r\nvar AutoZoomMode;\r\n(function (AutoZoomMode) {\r\n AutoZoomMode[AutoZoomMode[\"Disabled\"] = 0] = \"Disabled\";\r\n AutoZoomMode[AutoZoomMode[\"FitContent\"] = 1] = \"FitContent\";\r\n AutoZoomMode[AutoZoomMode[\"FitToWidth\"] = 2] = \"FitToWidth\";\r\n})(AutoZoomMode = exports.AutoZoomMode || (exports.AutoZoomMode = {}));\r\nvar ConnectorRoutingMode;\r\n(function (ConnectorRoutingMode) {\r\n ConnectorRoutingMode[ConnectorRoutingMode[\"None\"] = 0] = \"None\";\r\n ConnectorRoutingMode[ConnectorRoutingMode[\"ConnectorShapesOnly\"] = 1] = \"ConnectorShapesOnly\";\r\n ConnectorRoutingMode[ConnectorRoutingMode[\"AllShapesOnly\"] = 2] = \"AllShapesOnly\";\r\n // AllDiagramItems = 3,\r\n})(ConnectorRoutingMode = exports.ConnectorRoutingMode || (exports.ConnectorRoutingMode = {}));\r\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ConnectorRenderPoint = void 0;\r\nvar point_1 = __webpack_require__(1);\r\nvar ConnectorRenderPoint = /** @class */ (function (_super) {\r\n __extends(ConnectorRenderPoint, _super);\r\n function ConnectorRenderPoint(x, y, pointIndex, skipped) {\r\n if (pointIndex === void 0) { pointIndex = -1; }\r\n if (skipped === void 0) { skipped = false; }\r\n var _this = _super.call(this, x, y) || this;\r\n _this.pointIndex = pointIndex;\r\n _this.skipped = skipped;\r\n return _this;\r\n }\r\n // todo delete that\r\n ConnectorRenderPoint.prototype.offset = function (offsetX, offsetY) {\r\n _super.prototype.offset.call(this, offsetX, offsetY);\r\n this.pointIndex = -1;\r\n this.skipped = false;\r\n return this;\r\n };\r\n // todo delete that\r\n ConnectorRenderPoint.prototype.multiply = function (multiplierX, multiplierY) {\r\n _super.prototype.multiply.call(this, multiplierX, multiplierY);\r\n this.pointIndex = -1;\r\n this.skipped = false;\r\n return this;\r\n };\r\n ConnectorRenderPoint.prototype.clone = function () { return new ConnectorRenderPoint(this.x, this.y, this.pointIndex, this.skipped); };\r\n return ConnectorRenderPoint;\r\n}(point_1.Point));\r\nexports.ConnectorRenderPoint = ConnectorRenderPoint;\r\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ConnectorProperties = exports.DEFAULT_CONNECTOR_ENDLINEENDING = exports.DEFAULT_CONNECTOR_STARTLINEENDING = exports.DEFAULT_CONNECTOR_LINEOPTION = exports.ConnectorLineEnding = exports.ConnectorLineOption = void 0;\r\nvar ConnectorLineOption;\r\n(function (ConnectorLineOption) {\r\n ConnectorLineOption[ConnectorLineOption[\"Straight\"] = 0] = \"Straight\";\r\n ConnectorLineOption[ConnectorLineOption[\"Orthogonal\"] = 1] = \"Orthogonal\";\r\n})(ConnectorLineOption = exports.ConnectorLineOption || (exports.ConnectorLineOption = {}));\r\nvar ConnectorLineEnding;\r\n(function (ConnectorLineEnding) {\r\n ConnectorLineEnding[ConnectorLineEnding[\"None\"] = 0] = \"None\";\r\n ConnectorLineEnding[ConnectorLineEnding[\"Arrow\"] = 1] = \"Arrow\";\r\n ConnectorLineEnding[ConnectorLineEnding[\"OutlinedTriangle\"] = 2] = \"OutlinedTriangle\";\r\n ConnectorLineEnding[ConnectorLineEnding[\"FilledTriangle\"] = 3] = \"FilledTriangle\";\r\n})(ConnectorLineEnding = exports.ConnectorLineEnding || (exports.ConnectorLineEnding = {}));\r\nexports.DEFAULT_CONNECTOR_LINEOPTION = ConnectorLineOption.Orthogonal;\r\nexports.DEFAULT_CONNECTOR_STARTLINEENDING = ConnectorLineEnding.None;\r\nexports.DEFAULT_CONNECTOR_ENDLINEENDING = ConnectorLineEnding.Arrow;\r\nvar ConnectorProperties = /** @class */ (function () {\r\n function ConnectorProperties() {\r\n this.lineOption = exports.DEFAULT_CONNECTOR_LINEOPTION;\r\n this.startLineEnding = exports.DEFAULT_CONNECTOR_STARTLINEENDING;\r\n this.endLineEnding = exports.DEFAULT_CONNECTOR_ENDLINEENDING;\r\n }\r\n ConnectorProperties.prototype.clone = function () {\r\n var clone = new ConnectorProperties();\r\n clone.lineOption = this.lineOption;\r\n clone.startLineEnding = this.startLineEnding;\r\n clone.endLineEnding = this.endLineEnding;\r\n return clone;\r\n };\r\n ConnectorProperties.prototype.forEach = function (callback) {\r\n for (var propertyName in this)\r\n if (Object.prototype.hasOwnProperty.call(this, propertyName))\r\n callback(propertyName);\r\n };\r\n ConnectorProperties.prototype.toObject = function () {\r\n var result = {};\r\n var modified = false;\r\n if (this.lineOption !== exports.DEFAULT_CONNECTOR_LINEOPTION) {\r\n result[\"lineOption\"] = this.lineOption;\r\n modified = true;\r\n }\r\n if (this.startLineEnding !== exports.DEFAULT_CONNECTOR_STARTLINEENDING) {\r\n result[\"startLineEnding\"] = this.startLineEnding;\r\n modified = true;\r\n }\r\n if (this.endLineEnding !== exports.DEFAULT_CONNECTOR_ENDLINEENDING) {\r\n result[\"endLineEnding\"] = this.endLineEnding;\r\n modified = true;\r\n }\r\n return modified ? result : null;\r\n };\r\n ConnectorProperties.prototype.fromObject = function (obj) {\r\n if (typeof obj[\"lineOption\"] === \"number\")\r\n this.lineOption = obj[\"lineOption\"];\r\n if (typeof obj[\"startLineEnding\"] === \"number\")\r\n this.startLineEnding = obj[\"startLineEnding\"];\r\n if (typeof obj[\"endLineEnding\"] === \"number\")\r\n this.endLineEnding = obj[\"endLineEnding\"];\r\n };\r\n return ConnectorProperties;\r\n}());\r\nexports.ConnectorProperties = ConnectorProperties;\r\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ShapeParameterPoint = void 0;\r\nvar ShapeParameterPoint = /** @class */ (function () {\r\n function ShapeParameterPoint(key, point) {\r\n this.key = key;\r\n this.point = point;\r\n }\r\n return ShapeParameterPoint;\r\n}());\r\nexports.ShapeParameterPoint = ShapeParameterPoint;\r\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar list_1 = __webpack_require__(82);\r\nvar MathUtils = (function () {\r\n function MathUtils() {\r\n }\r\n MathUtils.round = function (value, digits) {\r\n if (digits === void 0) { digits = 0; }\r\n var factor = MathUtils.powFactor[digits];\r\n return Math.round(value * factor) / factor;\r\n };\r\n MathUtils.numberCloseTo = function (num, to, accuracy) {\r\n if (accuracy === void 0) { accuracy = 0.00001; }\r\n return Math.abs(num - to) < accuracy;\r\n };\r\n MathUtils.restrictValue = function (val, minVal, maxVal) {\r\n if (maxVal < minVal)\r\n maxVal = minVal;\r\n if (val > maxVal)\r\n return maxVal;\r\n else if (val < minVal)\r\n return minVal;\r\n return val;\r\n };\r\n MathUtils.getRandomInt = function (min, max) {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n };\r\n MathUtils.generateGuid = function () {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = Math.random() * 16 | 0;\r\n var v = c === 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n };\r\n MathUtils.powFactor = list_1.ListUtils.initByCallback(20, function (ind) { return Math.pow(10, ind); });\r\n MathUtils.somePrimes = [1009, 1013,\r\n 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069,\r\n 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151,\r\n 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223,\r\n 1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291,\r\n 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373,\r\n 1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451,\r\n 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511,\r\n 1523, 1531, 1543, 1549, 1553, 1559, 1567, 1571, 1579, 1583,\r\n 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657,\r\n 1663, 1667, 1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733,\r\n 1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811,\r\n 1823, 1831, 1847, 1861, 1867, 1871, 1873, 1877, 1879, 1889,\r\n 1901, 1907, 1913, 1931, 1933, 1949, 1951, 1973, 1979, 1987,\r\n 1993, 1997, 1999, 2003];\r\n return MathUtils;\r\n}());\r\nexports.MathUtils = MathUtils;\r\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar math_1 = __webpack_require__(32);\r\nvar metrics_1 = __webpack_require__(36);\r\nvar point_1 = __webpack_require__(1);\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar Segment = (function () {\r\n function Segment(startPoint, endPoint) {\r\n this.startPoint = startPoint;\r\n this.endPoint = endPoint;\r\n }\r\n Object.defineProperty(Segment.prototype, \"length\", {\r\n get: function () {\r\n return metrics_1.Metrics.euclideanDistance(this.startPoint, this.endPoint);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Segment.prototype, \"xLength\", {\r\n get: function () {\r\n return Math.abs(this.endPoint.x - this.startPoint.x);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Segment.prototype, \"yLength\", {\r\n get: function () {\r\n return Math.abs(this.endPoint.y - this.startPoint.y);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Segment.prototype, \"center\", {\r\n get: function () {\r\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);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Segment.prototype.isIntersected = function (segment) {\r\n return this.startPoint.equals(segment.startPoint) || this.endPoint.equals(segment.startPoint) ||\r\n this.startPoint.equals(segment.endPoint) || this.endPoint.equals(segment.endPoint) ||\r\n (this.intersectCore(segment) && segment.intersectCore(this));\r\n };\r\n Segment.prototype.containsPoint = function (point, accuracy) {\r\n if (accuracy === void 0) { accuracy = 0.0000001; }\r\n return this.startPoint.equals(point) || this.endPoint.equals(point) ||\r\n math_1.MathUtils.numberCloseTo(this.length, metrics_1.Metrics.euclideanDistance(this.startPoint, point) + metrics_1.Metrics.euclideanDistance(this.endPoint, point), accuracy);\r\n };\r\n Segment.prototype.isIntersectedByRect = function (rect) {\r\n if (rectangle_1.Rectangle.containsPoint(rect, this.startPoint) || rectangle_1.Rectangle.containsPoint(rect, this.endPoint))\r\n return true;\r\n var left = rect.x;\r\n var right = rect.x + rect.width;\r\n var top = rect.y;\r\n var bottom = rect.y + rect.height;\r\n return this.isIntersected(new Segment(new point_1.Point(left, top), new point_1.Point(left, bottom))) ||\r\n this.isIntersected(new Segment(new point_1.Point(right, top), new point_1.Point(right, bottom))) ||\r\n this.isIntersected(new Segment(new point_1.Point(left, top), new point_1.Point(right, top))) ||\r\n this.isIntersected(new Segment(new point_1.Point(left, bottom), new point_1.Point(right, bottom)));\r\n };\r\n Segment.prototype.intersectCore = function (segment) {\r\n if (this.startPoint.x === this.endPoint.x) {\r\n if (this.startPoint.x - segment.endPoint.x !== 0)\r\n return (this.startPoint.x - segment.startPoint.x) / (this.startPoint.x - segment.endPoint.x) <= 0;\r\n if (segment.endPoint.y - this.endPoint.y !== 0)\r\n return (segment.endPoint.y - this.startPoint.y) / (segment.endPoint.y - this.endPoint.y) <= 0;\r\n }\r\n if (this.startPoint.y === this.endPoint.y) {\r\n if (this.startPoint.y - segment.endPoint.y !== 0)\r\n return (this.startPoint.y - segment.startPoint.y) / (this.startPoint.y - segment.endPoint.y) <= 0;\r\n if (segment.endPoint.x - this.endPoint.x !== 0)\r\n return (segment.endPoint.x - this.startPoint.x) / (segment.endPoint.x - this.endPoint.x) <= 0;\r\n }\r\n var tg = (this.endPoint.y - this.startPoint.y) / (this.endPoint.x - this.startPoint.x);\r\n var y1 = this.startPoint.y + (segment.startPoint.x - this.startPoint.x) * tg;\r\n var y2 = this.startPoint.y + (segment.endPoint.x - this.startPoint.x) * tg;\r\n var dy1 = segment.startPoint.y - y1;\r\n var dy2 = segment.endPoint.y - y2;\r\n if (dy1 === 0 && dy2 === 0) {\r\n return (this.startPoint.y - y1) / (this.endPoint.y - y1) <= 0 ||\r\n (this.startPoint.y - y2) / (this.endPoint.y - y2) <= 0;\r\n }\r\n return dy1 === 0 || dy2 === 0 || dy1 / dy2 < 0;\r\n };\r\n return Segment;\r\n}());\r\nexports.Segment = Segment;\r\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar string_1 = __webpack_require__(50);\r\nfunction isDefined(value) {\r\n return value !== undefined && value !== null;\r\n}\r\nexports.isDefined = isDefined;\r\nfunction boolToInt(value) {\r\n return value ? 1 : 0;\r\n}\r\nexports.boolToInt = boolToInt;\r\nfunction boolToString(value) {\r\n return value ? '1' : '0';\r\n}\r\nexports.boolToString = boolToString;\r\nfunction isNumber(obj) {\r\n return typeof obj === 'number';\r\n}\r\nexports.isNumber = isNumber;\r\nfunction isString(obj) {\r\n return typeof obj === 'string';\r\n}\r\nexports.isString = isString;\r\nfunction isNonNullString(str) {\r\n return !!str;\r\n}\r\nexports.isNonNullString = isNonNullString;\r\nfunction isEven(num) {\r\n return (num % 2) !== 0;\r\n}\r\nexports.isEven = isEven;\r\nfunction isOdd(num) {\r\n return (num % 2) === 0;\r\n}\r\nexports.isOdd = isOdd;\r\nfunction numberToStringBin(num, minLength) {\r\n if (minLength === void 0) { minLength = 0; }\r\n return string_1.StringUtils.padLeft(num.toString(2), minLength, '0');\r\n}\r\nexports.numberToStringBin = numberToStringBin;\r\nfunction numberToStringHex(num, minLength) {\r\n if (minLength === void 0) { minLength = 0; }\r\n return string_1.StringUtils.padLeft(num.toString(16), minLength, '0');\r\n}\r\nexports.numberToStringHex = numberToStringHex;\r\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerDraggingState = void 0;\r\nvar MouseHandlerStateBase_1 = __webpack_require__(41);\r\nvar Event_1 = __webpack_require__(14);\r\nvar unit_converter_1 = __webpack_require__(11);\r\nvar MouseHandlerDraggingState = /** @class */ (function (_super) {\r\n __extends(MouseHandlerDraggingState, _super);\r\n function MouseHandlerDraggingState(handler, history) {\r\n var _this = _super.call(this, handler) || this;\r\n _this.history = history;\r\n return _this;\r\n }\r\n MouseHandlerDraggingState.prototype.canApplyChangesOnMouseMove = function (initPosition, position) {\r\n return !initPosition || !position ||\r\n Math.abs(initPosition.x - position.x) > MouseHandlerDraggingState.dragStartLimit ||\r\n Math.abs(initPosition.y - position.y) > MouseHandlerDraggingState.dragStartLimit;\r\n };\r\n MouseHandlerDraggingState.prototype.onAfterApplyChanges = function () {\r\n if (!this.modified)\r\n this.handler.onDocumentDragStart(this.getDraggingElementKeys());\r\n this.modified = true;\r\n this.mouseDownPoint = undefined;\r\n };\r\n MouseHandlerDraggingState.prototype.onMouseDown = function (evt) {\r\n this.mouseDownPoint = evt.modelPoint.clone();\r\n };\r\n MouseHandlerDraggingState.prototype.onMouseMove = function (evt) {\r\n this.mouseMoveEvent = evt;\r\n if (evt.button !== Event_1.MouseButton.Left) {\r\n this.cancelChanges();\r\n this.handler.switchToDefaultState();\r\n }\r\n else if (evt.button === Event_1.MouseButton.Left && this.canApplyChangesOnMouseMove(this.mouseDownPoint, evt.modelPoint)) {\r\n this.onApplyChanges(evt);\r\n this.onAfterApplyChanges();\r\n }\r\n };\r\n MouseHandlerDraggingState.prototype.onKeyDown = function (evt) {\r\n if (this.mouseMoveEvent && (evt.keyCode === 16 || evt.keyCode === 17 || evt.keyCode === 18)) // Shift, Ctrl, Alt\r\n this.performMouseMoveEvent(evt.modifiers);\r\n };\r\n MouseHandlerDraggingState.prototype.onKeyUp = function (evt) {\r\n if (this.mouseMoveEvent && (evt.keyCode === 16 || evt.keyCode === 17 || evt.keyCode === 18)) // Shift, Ctrl, Alt\r\n this.performMouseMoveEvent(evt.modifiers);\r\n };\r\n MouseHandlerDraggingState.prototype.onMouseUp = function (evt) {\r\n this.mouseDownPoint = undefined;\r\n this.mouseMoveEvent = undefined;\r\n this.handler.switchToDefaultState();\r\n };\r\n MouseHandlerDraggingState.prototype.performMouseMoveEvent = function (modifiers) {\r\n this.mouseMoveEvent.modifiers = modifiers;\r\n this.onMouseMove(this.mouseMoveEvent);\r\n };\r\n MouseHandlerDraggingState.prototype.start = function () {\r\n this.handler.beginStorePermissions();\r\n this.history.beginTransaction();\r\n };\r\n MouseHandlerDraggingState.prototype.finish = function () {\r\n this.checkStoredPermissionsOnFinish();\r\n if (this.modified) {\r\n this.onFinishWithChanges();\r\n this.modified = false;\r\n this.history.endTransaction();\r\n this.handler.onDocumentDragEnd(this.getDraggingElementKeys());\r\n }\r\n else\r\n this.history.endTransaction();\r\n this.handler.endStorePermissions();\r\n this.handler.clearInteractingItems();\r\n };\r\n MouseHandlerDraggingState.prototype.checkStoredPermissionsOnFinish = function () {\r\n if (!this.handler.isStoredPermissionsGranted()) {\r\n this.cancelChanges();\r\n this.modified = false;\r\n }\r\n };\r\n MouseHandlerDraggingState.prototype.onFinishWithChanges = function () { };\r\n MouseHandlerDraggingState.prototype.cancelChanges = function () {\r\n this.handler.lockPermissions();\r\n this.history.undoTransaction();\r\n this.handler.unlockPermissions();\r\n if (this.modified)\r\n this.handler.onDocumentDragEnd(this.getDraggingElementKeys());\r\n this.modified = false;\r\n };\r\n MouseHandlerDraggingState.prototype.getSnappedPoint = function (evt, point) {\r\n return this.handler.getSnappedPointOnDragPoint(evt, point);\r\n };\r\n MouseHandlerDraggingState.dragStartLimit = unit_converter_1.UnitConverter.pixelsToTwips(4);\r\n return MouseHandlerDraggingState;\r\n}(MouseHandlerStateBase_1.MouseHandlerCancellableState));\r\nexports.MouseHandlerDraggingState = MouseHandlerDraggingState;\r\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Metrics = (function () {\r\n function Metrics() {\r\n }\r\n Metrics.euclideanDistance = function (a, b) {\r\n var xDist = a.x - b.x;\r\n var yDist = a.y - b.y;\r\n return Math.sqrt(xDist * xDist + yDist * yDist);\r\n };\r\n Metrics.manhattanDistance = function (a, b) {\r\n return Math.abs(a.x - b.x) + Math.abs(a.y - b.y);\r\n };\r\n return Metrics;\r\n}());\r\nexports.Metrics = Metrics;\r\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DiagramLocalizationService = void 0;\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar Enums_1 = __webpack_require__(48);\r\nvar DiagramLocalizationService = /** @class */ (function () {\r\n function DiagramLocalizationService() {\r\n }\r\n DiagramLocalizationService.unitItems = {};\r\n DiagramLocalizationService.formatUnit = function (value) { return value.toString(); };\r\n DiagramLocalizationService.shapeTexts = {};\r\n return DiagramLocalizationService;\r\n}());\r\nexports.DiagramLocalizationService = DiagramLocalizationService;\r\nDiagramLocalizationService.unitItems[Enums_1.DiagramUnit.In] = \"in\";\r\nDiagramLocalizationService.unitItems[Enums_1.DiagramUnit.Cm] = \"cm\";\r\nDiagramLocalizationService.unitItems[Enums_1.DiagramUnit.Px] = \"px\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Text] = \"Text\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Rectangle] = \"Rectangle\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Ellipse] = \"Ellipse\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Cross] = \"Cross\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Triangle] = \"Triangle\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Diamond] = \"Diamond\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Heart] = \"Heart\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Pentagon] = \"Pentagon\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Hexagon] = \"Hexagon\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Octagon] = \"Octagon\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Star] = \"Star\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.ArrowLeft] = \"Left Arrow\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.ArrowUp] = \"Up Arrow\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.ArrowRight] = \"Right Arrow\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.ArrowDown] = \"Down Arrow\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.ArrowUpDown] = \"Up Down Arrow\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.ArrowLeftRight] = \"Left Right Arrow\";\r\n// Flowchart\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Process] = \"Process\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Decision] = \"Decision\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Terminator] = \"Terminator\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.PredefinedProcess] = \"Predefined Process\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Document] = \"Document\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.MultipleDocuments] = \"Multiple Documents\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.ManualInput] = \"Manual Input\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Preparation] = \"Preparation\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Data] = \"Data\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Database] = \"Database\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.HardDisk] = \"Hard Disk\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.InternalStorage] = \"Internal Storage\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.PaperTape] = \"Paper Tape\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.ManualOperation] = \"Manual Operation\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Delay] = \"Delay\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.StoredData] = \"Stored Data\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Display] = \"Display\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Merge] = \"Merge\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Connector] = \"Connector\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Or] = \"Or\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.SummingJunction] = \"Summing Junction\";\r\n// Containers\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Container] = \"Container\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.VerticalContainer] = \"Vertical Container\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.HorizontalContainer] = \"Horizontal Container\";\r\n// Shapes with images\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Card] = \"Person's Name\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.CardWithImageOnLeft] = \"Card with Image on the Left\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.CardWithImageOnTop] = \"Card with Image on the Top\";\r\nDiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.CardWithImageOnRight] = \"Card with Image on the Right\";\r\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ShapeParameters = exports.ShapeParameter = void 0;\r\nvar ShapeParameter = /** @class */ (function () {\r\n function ShapeParameter(key, value) {\r\n this.key = key;\r\n this.value = value;\r\n }\r\n return ShapeParameter;\r\n}());\r\nexports.ShapeParameter = ShapeParameter;\r\nvar ShapeParameters = /** @class */ (function () {\r\n function ShapeParameters() {\r\n this.items = {};\r\n }\r\n ShapeParameters.prototype.add = function (parameter) {\r\n this.items[parameter.key] = parameter;\r\n };\r\n ShapeParameters.prototype.addRange = function (parameters) {\r\n for (var i = 0; i < parameters.length; i++)\r\n this.add(parameters[i]);\r\n };\r\n ShapeParameters.prototype.get = function (key) {\r\n return this.items[key];\r\n };\r\n ShapeParameters.prototype.forEach = function (callback) {\r\n for (var key in this.items)\r\n if (Object.prototype.hasOwnProperty.call(this.items, key))\r\n callback(this.items[key]);\r\n };\r\n ShapeParameters.prototype.clone = function () {\r\n var result = new ShapeParameters();\r\n this.forEach(function (p) { result.add(new ShapeParameter(p.key, p.value)); });\r\n return result;\r\n };\r\n ShapeParameters.prototype.toObject = function () {\r\n var result = {};\r\n var modified = false;\r\n this.forEach(function (p) {\r\n result[p.key] = { \"value\": p.value };\r\n modified = true;\r\n });\r\n return modified ? result : null;\r\n };\r\n ShapeParameters.prototype.fromObject = function (obj) {\r\n this.forEach(function (p) {\r\n var paramObj = obj[p.key];\r\n if (paramObj)\r\n if (typeof paramObj[\"value\"] === \"number\")\r\n p.value = paramObj[\"value\"];\r\n });\r\n };\r\n return ShapeParameters;\r\n}());\r\nexports.ShapeParameters = ShapeParameters;\r\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ConnectionMode = exports.PositionInfo = exports.Edge = void 0;\r\nvar Edge = /** @class */ (function () {\r\n function Edge(key, from, to, weight) {\r\n if (weight === void 0) { weight = 1; }\r\n this.weight = weight;\r\n this.key = key;\r\n this.from = from;\r\n this.to = to;\r\n }\r\n Edge.prototype.getHashKey = function () {\r\n return this.from + \"_\" + this.to;\r\n };\r\n Edge.prototype.reverse = function () {\r\n return new Edge(this.key, this.to, this.from, this.weight);\r\n };\r\n return Edge;\r\n}());\r\nexports.Edge = Edge;\r\nvar PositionInfo = /** @class */ (function () {\r\n function PositionInfo(item, position) {\r\n this.item = item;\r\n this.position = position;\r\n }\r\n return PositionInfo;\r\n}());\r\nexports.PositionInfo = PositionInfo;\r\nvar ConnectionMode;\r\n(function (ConnectionMode) {\r\n ConnectionMode[ConnectionMode[\"Outgoing\"] = 1] = \"Outgoing\";\r\n ConnectionMode[ConnectionMode[\"Incoming\"] = 2] = \"Incoming\";\r\n ConnectionMode[ConnectionMode[\"OutgoingAndIncoming\"] = 3] = \"OutgoingAndIncoming\";\r\n})(ConnectionMode = exports.ConnectionMode || (exports.ConnectionMode = {}));\r\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.GroupPrimitive = void 0;\r\nvar RenderHelper_1 = __webpack_require__(15);\r\nvar Primitive_1 = __webpack_require__(25);\r\nvar GroupPrimitive = /** @class */ (function (_super) {\r\n __extends(GroupPrimitive, _super);\r\n function GroupPrimitive(children, className, zIndex, clipPathId, onApplyProperties, onBeforeDispose) {\r\n var _this = _super.call(this, null, className, clipPathId, onApplyProperties) || this;\r\n _this.zIndex = zIndex;\r\n _this.onBeforeDispose = onBeforeDispose;\r\n _this.children = children;\r\n return _this;\r\n }\r\n GroupPrimitive.prototype.createMainElement = function () {\r\n return document.createElementNS(RenderHelper_1.svgNS, \"g\");\r\n };\r\n GroupPrimitive.prototype.applyElementProperties = function (element, measurer) {\r\n if (this.zIndex || this.zIndex === 0)\r\n element.style.setProperty(\"z-index\", this.zIndex.toString());\r\n _super.prototype.applyElementProperties.call(this, element, measurer);\r\n };\r\n GroupPrimitive.prototype.dispose = function () {\r\n if (this.onBeforeDispose)\r\n this.onBeforeDispose();\r\n _super.prototype.dispose.call(this);\r\n };\r\n return GroupPrimitive;\r\n}(Primitive_1.SvgPrimitive));\r\nexports.GroupPrimitive = GroupPrimitive;\r\n\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerCancellableState = exports.MouseHandlerStateBase = void 0;\r\nvar key_1 = __webpack_require__(26);\r\nvar MouseHandlerStateBase = /** @class */ (function () {\r\n function MouseHandlerStateBase(handler) {\r\n this.handler = handler;\r\n }\r\n MouseHandlerStateBase.prototype.start = function () { };\r\n MouseHandlerStateBase.prototype.finish = function () { };\r\n MouseHandlerStateBase.prototype.onMouseClick = function (_evt) { };\r\n MouseHandlerStateBase.prototype.onMouseDblClick = function (_evt) {\r\n this.handler.switchToDefaultState();\r\n };\r\n MouseHandlerStateBase.prototype.onMouseDown = function (_evt) { };\r\n MouseHandlerStateBase.prototype.onMouseUp = function (_evt) { };\r\n MouseHandlerStateBase.prototype.onMouseMove = function (_evt) { };\r\n MouseHandlerStateBase.prototype.onMouseWheel = function (_evt) { return false; };\r\n MouseHandlerStateBase.prototype.onDragStart = function (_evt) { };\r\n MouseHandlerStateBase.prototype.onDragEnd = function (_evt) { };\r\n MouseHandlerStateBase.prototype.onShortcut = function (_shortcutCode) { return false; };\r\n MouseHandlerStateBase.prototype.onKeyDown = function (_evt) { };\r\n MouseHandlerStateBase.prototype.onKeyUp = function (_evt) { };\r\n MouseHandlerStateBase.prototype.onConnectionPointsShow = function (key, points) { };\r\n MouseHandlerStateBase.prototype.onConnectionTargetShow = function (key, info) { };\r\n return MouseHandlerStateBase;\r\n}());\r\nexports.MouseHandlerStateBase = MouseHandlerStateBase;\r\nvar MouseHandlerCancellableState = /** @class */ (function (_super) {\r\n __extends(MouseHandlerCancellableState, _super);\r\n function MouseHandlerCancellableState() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MouseHandlerCancellableState.prototype.onShortcut = function (code) {\r\n if (code === key_1.KeyCode.Esc) {\r\n this.cancelChanges();\r\n this.handler.switchToDefaultState();\r\n return true;\r\n }\r\n return false;\r\n };\r\n return MouseHandlerCancellableState;\r\n}(MouseHandlerStateBase));\r\nexports.MouseHandlerCancellableState = MouseHandlerCancellableState;\r\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar SearchUtils = (function () {\r\n function SearchUtils() {\r\n }\r\n SearchUtils.binaryIndexOf = function (array, comparer, minIndex, maxIndex) {\r\n if (minIndex === void 0) { minIndex = 0; }\r\n if (maxIndex === void 0) { maxIndex = -2; }\r\n var findFromZeroPosition = minIndex === 0;\r\n if (maxIndex === -2)\r\n maxIndex = array.length - 1;\r\n while (minIndex <= maxIndex) {\r\n var currentIndex = (minIndex + ((maxIndex - minIndex) >> 1));\r\n var compare = comparer(array[currentIndex]);\r\n if (compare < 0)\r\n minIndex = currentIndex + 1;\r\n else if (compare > 0)\r\n maxIndex = currentIndex - 1;\r\n else\r\n return currentIndex;\r\n }\r\n return findFromZeroPosition ? ~minIndex : -1;\r\n };\r\n SearchUtils.normedBinaryIndexOf = function (array, comparer, minIndex, maxIndex) {\r\n if (minIndex === void 0) { minIndex = 0; }\r\n if (maxIndex === void 0) { maxIndex = -2; }\r\n var index = SearchUtils.binaryIndexOf(array, comparer, minIndex, maxIndex);\r\n return SearchUtils.binaryIndexNormalizator(index);\r\n };\r\n SearchUtils.binaryIndexNormalizator = function (index) {\r\n return index < 0 ? ~index - 1 : index;\r\n };\r\n SearchUtils.normedInterpolationIndexOf = function (array, getValue, toFind, lowIndex, highIndex) {\r\n if (lowIndex === void 0) { lowIndex = 0; }\r\n if (highIndex === void 0) { highIndex = -2; }\r\n if (highIndex === -2)\r\n highIndex = array.length - 1;\r\n var firstObject = array[Math.min(lowIndex, highIndex)];\r\n if (firstObject === undefined || toFind < getValue(firstObject))\r\n return -1;\r\n var lowValue = getValue(array[lowIndex]);\r\n var highValue = getValue(array[highIndex]);\r\n while (true) {\r\n if (toFind > lowValue && toFind < highValue) {\r\n var midIndex = lowIndex + Math.floor(((toFind - lowValue) * (highIndex - lowIndex)) / (highValue - lowValue));\r\n var midValue = getValue(array[midIndex]);\r\n if (toFind > midValue) {\r\n lowIndex = midIndex + 1;\r\n lowValue = getValue(array[lowIndex]);\r\n if (toFind < lowValue)\r\n return midIndex;\r\n }\r\n else if (toFind < midValue) {\r\n highIndex = midIndex - 1;\r\n highValue = getValue(array[highIndex]);\r\n }\r\n else\r\n return midIndex;\r\n }\r\n else\r\n return toFind === lowValue ? lowIndex : highIndex;\r\n }\r\n };\r\n return SearchUtils;\r\n}());\r\nexports.SearchUtils = SearchUtils;\r\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CanvasManagerBase = exports.PAGE_BG_TEXTFLOOR_FILTER_ID = void 0;\r\nvar TextFilterPrimitive_1 = __webpack_require__(172);\r\nvar unit_converter_1 = __webpack_require__(11);\r\nexports.PAGE_BG_TEXTFLOOR_FILTER_ID = \"page-text-flood\";\r\nvar CanvasManagerBase = /** @class */ (function () {\r\n function CanvasManagerBase(actualZoom, dom) {\r\n this.elements = {};\r\n this.actualZoom = actualZoom;\r\n this.dom = dom;\r\n }\r\n CanvasManagerBase.prototype.createAndChangePrimitivesElements = function (primitives, parent) {\r\n var _this = this;\r\n primitives.forEach(function (primitive) {\r\n _this.createAndChangePrimitiveElement(primitive, parent);\r\n });\r\n };\r\n CanvasManagerBase.prototype.createPrimitiveElement = function (primitive, parent, sibling) {\r\n return this.dom.createElement(primitive, parent, sibling);\r\n };\r\n CanvasManagerBase.prototype.createAndChangePrimitiveElement = function (primitive, parent, sibling) {\r\n var element = this.createPrimitiveElement(primitive, parent, sibling);\r\n this.dom.changeByPrimitive(element, primitive);\r\n return element;\r\n };\r\n CanvasManagerBase.prototype.changePrimitiveElement = function (primitive, element) {\r\n this.dom.changeByPrimitive(element, primitive);\r\n };\r\n CanvasManagerBase.prototype.getOrCreateElement = function (key, primitive, parent, sibling) {\r\n var element = (key && this.elements[key]) || (this.elements[key] = this.createPrimitiveElement(primitive, parent, sibling));\r\n this.changePrimitiveElement(primitive, element);\r\n return element;\r\n };\r\n CanvasManagerBase.prototype.createTextFloodFilter = function (key, parent, pageColor) {\r\n this.getOrCreateElement(key, new TextFilterPrimitive_1.TextFloodFilterPrimitive(exports.PAGE_BG_TEXTFLOOR_FILTER_ID, pageColor), parent);\r\n };\r\n CanvasManagerBase.prototype.getAbsoluteSize = function (modelSize) {\r\n return modelSize\r\n .clone().applyConverter(unit_converter_1.UnitConverter.twipsToPixelsF)\r\n .clone().multiply(this.actualZoom, this.actualZoom);\r\n };\r\n return CanvasManagerBase;\r\n}());\r\nexports.CanvasManagerBase = CanvasManagerBase;\r\n\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.TextOwner = void 0;\r\nvar TextOwner;\r\n(function (TextOwner) {\r\n TextOwner[TextOwner[\"Shape\"] = 0] = \"Shape\";\r\n TextOwner[TextOwner[\"Connector\"] = 1] = \"Connector\";\r\n TextOwner[TextOwner[\"ExtensionLine\"] = 2] = \"ExtensionLine\";\r\n TextOwner[TextOwner[\"Resize\"] = 3] = \"Resize\";\r\n})(TextOwner = exports.TextOwner || (exports.TextOwner = {}));\r\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Data = exports.SetAbsoluteY = exports.SetAbsoluteX = void 0;\r\nvar dom_1 = __webpack_require__(23);\r\nvar common_1 = __webpack_require__(34);\r\nfunction IsNumber(str) {\r\n return !isNaN(parseFloat(str)) && isFinite(str);\r\n}\r\nfunction SetAbsoluteX(element, x) {\r\n element.style.left = prepareClientPosForElement(x, element, true) + \"px\";\r\n}\r\nexports.SetAbsoluteX = SetAbsoluteX;\r\nfunction SetAbsoluteY(element, y) {\r\n element.style.top = prepareClientPosForElement(y, element, false) + \"px\";\r\n}\r\nexports.SetAbsoluteY = SetAbsoluteY;\r\nfunction prepareClientPosForElement(pos, element, isX) {\r\n pos -= getPositionElementOffset(element, isX);\r\n return pos;\r\n}\r\nfunction getPositionElementOffset(element, isX) {\r\n var div = createElementMock(element);\r\n if (div.style.position === \"static\")\r\n div.style.position = \"absolute\";\r\n element.parentNode.appendChild(div);\r\n var realPos = isX ? dom_1.DomUtils.getAbsolutePositionX(div) : dom_1.DomUtils.getAbsolutePositionY(div);\r\n element.parentNode.removeChild(div);\r\n return Math.round(realPos);\r\n}\r\nfunction createElementMock(element) {\r\n var div = document.createElement(\"DIV\");\r\n div.style.top = \"0px\";\r\n div.style.left = \"0px\";\r\n div.style.visibility = \"hidden\";\r\n div.style.position = dom_1.DomUtils.getCurrentStyle(element).position;\r\n return div;\r\n}\r\nvar Data = /** @class */ (function () {\r\n function Data() {\r\n }\r\n Data.ArrayInsert = function (array, element, position) {\r\n if (0 <= position && position < array.length) {\r\n for (var i = array.length; i > position; i--)\r\n array[i] = array[i - 1];\r\n array[position] = element;\r\n }\r\n else\r\n array.push(element);\r\n };\r\n Data.ArrayRemove = function (array, element) {\r\n var index = Data.ArrayIndexOf(array, element);\r\n if (index > -1)\r\n Data.ArrayRemoveAt(array, index);\r\n };\r\n Data.ArrayRemoveAt = function (array, index) {\r\n if (index >= 0 && index < array.length) {\r\n for (var i = index; i < array.length - 1; i++)\r\n array[i] = array[i + 1];\r\n array.pop();\r\n }\r\n };\r\n Data.ArrayClear = function (array) {\r\n while (array.length > 0)\r\n array.pop();\r\n };\r\n Data.ArrayIndexOf = function (array, element, comparer) {\r\n if (!comparer)\r\n for (var i = 0; i < array.length; i++) {\r\n if (array[i] === element)\r\n return i;\r\n }\r\n else\r\n for (var i = 0; i < array.length; i++)\r\n if (comparer(array[i], element))\r\n return i;\r\n return -1;\r\n };\r\n Data.ArrayContains = function (array, element) {\r\n return Data.ArrayIndexOf(array, element) >= 0;\r\n };\r\n Data.ArrayEqual = function (array1, array2) {\r\n var count1 = array1.length;\r\n var count2 = array2.length;\r\n if (count1 !== count2)\r\n return false;\r\n for (var i = 0; i < count1; i++)\r\n if (array1[i] !== array2[i])\r\n return false;\r\n return true;\r\n };\r\n Data.ArraySame = function (array1, array2) {\r\n if (array1.length !== array2.length)\r\n return false;\r\n return array1.every(function (elem) { return Data.ArrayContains(array2, elem); });\r\n };\r\n Data.ArrayGetIntegerEdgeValues = function (array) {\r\n var arrayToSort = Data.CollectionToArray(array);\r\n Data.ArrayIntegerAscendingSort(arrayToSort);\r\n return {\r\n start: arrayToSort[0],\r\n end: arrayToSort[arrayToSort.length - 1]\r\n };\r\n };\r\n Data.ArrayIntegerAscendingSort = function (array) {\r\n Data.ArrayIntegerSort(array, false);\r\n };\r\n Data.ArrayIntegerSort = function (array, desc) {\r\n array.sort(function (i1, i2) {\r\n var res = 0;\r\n if (i1 > i2)\r\n res = 1;\r\n else if (i1 < i2)\r\n res = -1;\r\n if (desc)\r\n res *= -1;\r\n return res;\r\n });\r\n };\r\n Data.CollectionsUnionToArray = function (firstCollection, secondCollection) {\r\n var result = [];\r\n var firstCollectionLength = firstCollection.length;\r\n var secondCollectionLength = secondCollection.length;\r\n for (var i = 0; i < firstCollectionLength + secondCollectionLength; i++)\r\n if (i < firstCollectionLength)\r\n result.push(firstCollection[i]);\r\n else\r\n result.push(secondCollection[i - firstCollectionLength]);\r\n return result;\r\n };\r\n Data.CollectionToArray = function (collection) {\r\n var array = [];\r\n for (var i = 0; i < collection.length; i++)\r\n array.push(collection[i]);\r\n return array;\r\n };\r\n Data.CreateHashTableFromArray = function (array) {\r\n var hash = [];\r\n for (var i = 0; i < array.length; i++)\r\n hash[array[i]] = 1;\r\n return hash;\r\n };\r\n Data.CreateIndexHashTableFromArray = function (array) {\r\n var hash = [];\r\n for (var i = 0; i < array.length; i++)\r\n hash[array[i]] = i;\r\n return hash;\r\n };\r\n Data.ArrayToHash = function (array, getKeyFunc, getValueFunc) {\r\n if (!(array instanceof Array))\r\n return {};\r\n return array.reduce(function (map, element, index) {\r\n var key = getKeyFunc(element, index);\r\n var value = getValueFunc(element, index);\r\n map[key] = value;\r\n return map;\r\n }, {});\r\n };\r\n Data.Sum = function (array, getValueFunc) {\r\n if (!(array instanceof Array))\r\n return 0;\r\n return array.reduce(function (prevValue, item) {\r\n var value = getValueFunc ? getValueFunc(item) : item;\r\n if (!IsNumber(value))\r\n value = 0;\r\n return prevValue + value;\r\n }, 0);\r\n };\r\n Data.Min = function (array, getValueFunc) { return Data.CalculateArrayMinMax(array, getValueFunc, false); };\r\n Data.Max = function (array, getValueFunc) { return Data.CalculateArrayMinMax(array, getValueFunc, true); };\r\n Data.NearestLeftBinarySearchComparer = function (array, index, value) {\r\n var arrayElement = array[index];\r\n var leftPoint = arrayElement < value;\r\n var lastLeftPoint = leftPoint && index === array.length - 1;\r\n var nearestLeftPoint = lastLeftPoint || (leftPoint && array[index + 1] >= value);\r\n if (nearestLeftPoint)\r\n return 0;\r\n else\r\n return arrayElement < value ? -1 : 1;\r\n };\r\n Data.ArrayBinarySearch = function (array, value, binarySearchComparer, startIndex, length) {\r\n if (!binarySearchComparer)\r\n binarySearchComparer = Data.defaultBinarySearchComparer;\r\n if (!common_1.isDefined(startIndex))\r\n startIndex = 0;\r\n if (!common_1.isDefined(length))\r\n length = array.length - startIndex;\r\n var endIndex = (startIndex + length) - 1;\r\n while (startIndex <= endIndex) {\r\n var middle = (startIndex + ((endIndex - startIndex) >> 1));\r\n var compareResult = binarySearchComparer(array, middle, value);\r\n if (compareResult === 0)\r\n return middle;\r\n if (compareResult < 0)\r\n startIndex = middle + 1;\r\n else\r\n endIndex = middle - 1;\r\n }\r\n return -(startIndex + 1);\r\n };\r\n Data.ArrayFlatten = function (arrayOfArrays) {\r\n var result = [];\r\n arrayOfArrays.forEach(function (arr) {\r\n result = result.concat(arr);\r\n });\r\n return result;\r\n };\r\n Data.GetDistinctArray = function (array) {\r\n var resultArray = [];\r\n for (var i = 0; i < array.length; i++) {\r\n var currentEntry = array[i];\r\n if (Data.ArrayIndexOf(resultArray, currentEntry) === -1)\r\n resultArray.push(currentEntry);\r\n }\r\n return resultArray;\r\n };\r\n Data.ForEach = function (arr, callback) {\r\n if (Array.prototype.forEach)\r\n Array.prototype.forEach.call(arr, callback);\r\n else\r\n for (var i = 0, len = arr.length; i < len; i++)\r\n callback(arr[i], i, arr);\r\n };\r\n Data.MergeHashTables = function (target, object) {\r\n if (!object || typeof (object) === \"string\")\r\n return target;\r\n if (!target)\r\n target = {};\r\n for (var key in object)\r\n if (key && !(key in target))\r\n target[key] = object[key];\r\n return target;\r\n };\r\n Data.Range = function (count, start) {\r\n count = parseInt(count) || 0;\r\n start = parseInt(start) || 0;\r\n if (count < 0)\r\n count = 0;\r\n if (start < 0)\r\n start = 0;\r\n var result = Array(count);\r\n return result.map(function (_val, i) { return start + i; });\r\n };\r\n Data.CalculateArrayMinMax = function (array, getValueFunc, isMax) {\r\n if (!(array instanceof Array))\r\n return 0;\r\n var startValue = isMax ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY;\r\n return array.reduce(function (prevValue, item) {\r\n var value = getValueFunc ? getValueFunc(item) : item;\r\n if (!IsNumber(value))\r\n value = startValue;\r\n var func = isMax ? Math.max : Math.min;\r\n return func(value, prevValue);\r\n }, startValue);\r\n };\r\n Data.byRange = function (value, min, max) {\r\n return Math.min(Math.max(value, min), max);\r\n };\r\n Data.defaultBinarySearchComparer = function (array, index, value) {\r\n var arrayElement = array[index];\r\n if (arrayElement === value)\r\n return 0;\r\n else\r\n return arrayElement < value ? -1 : 1;\r\n };\r\n Data.cssTextToObject = function (cssText) {\r\n if (!cssText)\r\n return {};\r\n cssText = cssText.replace(/\\/\\*(.|\\s)*?\\*\\//g, \"\").replace(/\\s+/g, \" \");\r\n return cssText.split(\";\").reduce(function (acc, val) {\r\n if (val) {\r\n var matches = /\\s*([^:]+?)\\s*:\\s*([^;]*)\\s*$/.exec(val);\r\n if (matches) {\r\n var name_1 = matches[1], value = matches[2];\r\n name_1 && value && (acc[name_1.trim()] = value.trim());\r\n }\r\n return acc;\r\n }\r\n return acc;\r\n }, {});\r\n };\r\n Data.objectToCssText = function (obj) {\r\n if (!obj)\r\n return \"\";\r\n return Object.keys(obj).reduce(function (acc, key) {\r\n var name = key.trim();\r\n var value = obj[key];\r\n if (name && value)\r\n acc.push(name + \": \" + value.toString().trim());\r\n return acc;\r\n }, []).join(\"; \");\r\n };\r\n return Data;\r\n}());\r\nexports.Data = Data;\r\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ConnectionPoint = void 0;\r\nvar point_1 = __webpack_require__(1);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar ConnectionPoint = /** @class */ (function (_super) {\r\n __extends(ConnectionPoint, _super);\r\n function ConnectionPoint(x, y, side) {\r\n if (side === void 0) { side = DiagramItem_1.ConnectionPointSide.Undefined; }\r\n var _this = _super.call(this, x, y) || this;\r\n _this.side = side;\r\n return _this;\r\n }\r\n // todo delete that\r\n ConnectionPoint.prototype.offset = function (offsetX, offsetY) {\r\n _super.prototype.offset.call(this, offsetX, offsetY);\r\n this.side = DiagramItem_1.ConnectionPointSide.Undefined;\r\n return this;\r\n };\r\n // todo delete that\r\n ConnectionPoint.prototype.multiply = function (multiplierX, multiplierY) {\r\n _super.prototype.multiply.call(this, multiplierX, multiplierY);\r\n this.side = DiagramItem_1.ConnectionPointSide.Undefined;\r\n return this;\r\n };\r\n ConnectionPoint.prototype.clone = function () { return new ConnectionPoint(this.x, this.y, this.side); };\r\n ConnectionPoint.prototype.toPoint = function () { return new point_1.Point(this.x, this.y); };\r\n return ConnectionPoint;\r\n}(point_1.Point));\r\nexports.ConnectionPoint = ConnectionPoint;\r\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ImageCache = exports.CacheImageInfo = void 0;\r\nvar base64_1 = __webpack_require__(83);\r\nvar ImageInfo_1 = __webpack_require__(51);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar CacheImageInfo = /** @class */ (function () {\r\n function CacheImageInfo(base64, actualId, imageUrl, referenceInfo, isLoaded) {\r\n this._base64 = base64 !== undefined ? base64_1.Base64Utils.normalizeToDataUrl(base64, \"image/png\") : undefined;\r\n this.actualId = actualId;\r\n this._referenceInfo = referenceInfo;\r\n this._isLoaded = isLoaded !== undefined ? isLoaded : false;\r\n this.imageUrl = imageUrl;\r\n }\r\n Object.defineProperty(CacheImageInfo.prototype, \"isLoaded\", {\r\n get: function () { return this._referenceInfo ? this._referenceInfo._isLoaded : this._isLoaded; },\r\n set: function (val) { this._isLoaded = val; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(CacheImageInfo.prototype, \"base64\", {\r\n get: function () { return this._base64; },\r\n set: function (val) { this._base64 = base64_1.Base64Utils.normalizeToDataUrl(val, \"image/png\"); },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(CacheImageInfo.prototype, \"referenceInfo\", {\r\n get: function () { return this._referenceInfo; },\r\n set: function (val) {\r\n this._referenceInfo = val;\r\n this._base64 = undefined;\r\n this._isLoaded = undefined;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(CacheImageInfo.prototype, \"isLoading\", {\r\n get: function () { return this._referenceInfo ? this.referenceInfo._isLoading : this._isLoading; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n CacheImageInfo.prototype.startLoading = function () {\r\n if (this._referenceInfo)\r\n this._referenceInfo.startLoading();\r\n else\r\n this._isLoading = true;\r\n };\r\n CacheImageInfo.prototype.finalizeLoading = function () {\r\n if (this._referenceInfo)\r\n this._referenceInfo.finalizeLoading();\r\n else\r\n this._isLoading = false;\r\n };\r\n return CacheImageInfo;\r\n}());\r\nexports.CacheImageInfo = CacheImageInfo;\r\nvar ImageCache = /** @class */ (function () {\r\n function ImageCache() {\r\n this.emptyImageId = 0;\r\n this.lastActualId = 0;\r\n this.onReadyStateChanged = new Utils_1.EventDispatcher();\r\n this.cache = [];\r\n this.nonLoadedImages = [];\r\n var emptyImage = this.createUnloadedInfoByBase64(ImageInfo_1.ImageInfo.transparentOnePixelImage);\r\n emptyImage.isLoaded = true;\r\n }\r\n ImageCache.prototype.reset = function () {\r\n this.cache.splice(1);\r\n this.nonLoadedImages = [];\r\n this.lastActualId = 1;\r\n };\r\n Object.defineProperty(ImageCache.prototype, \"emptyImage\", {\r\n get: function () { return this.cache[this.emptyImageId]; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ImageCache.prototype.getImageData = function (id) {\r\n return this.cache[id];\r\n };\r\n ImageCache.prototype.createUnloadedInfoByUrl = function (imageUrl) {\r\n var info = this.findInfoByUrl(imageUrl);\r\n if (info)\r\n return info;\r\n return this.registerImageData(new CacheImageInfo(undefined, this.getNextActualId(), imageUrl));\r\n };\r\n ImageCache.prototype.createUnloadedInfoByBase64 = function (base64) {\r\n var info = this.findInfoByBase64(base64);\r\n if (info)\r\n return info;\r\n return this.registerImageData(new CacheImageInfo(base64, this.getNextActualId()));\r\n };\r\n ImageCache.prototype.createUnloadedInfoByShapeImageInfo = function (imageInfo) {\r\n var data = imageInfo.exportUrl;\r\n return base64_1.Base64Utils.checkPrependDataUrl(data) ?\r\n this.createUnloadedInfoByBase64(data) :\r\n this.createUnloadedInfoByUrl(data);\r\n };\r\n ImageCache.prototype.registerImageData = function (data) {\r\n var existingData = this.cache[data.actualId];\r\n if (!existingData)\r\n existingData = data;\r\n if (data.actualId !== undefined)\r\n this.cache[data.actualId] = existingData;\r\n if (data.actualId !== 0) {\r\n this.nonLoadedImages.push(data);\r\n if (this.nonLoadedImages.length === 1)\r\n this.raiseReadyStateChanged(false);\r\n }\r\n return existingData;\r\n };\r\n ImageCache.prototype.loadAllImages = function (loader) {\r\n var _this = this;\r\n this.cache.forEach(function (cacheInfo) {\r\n if (_this.emptyImageId !== cacheInfo.actualId && !cacheInfo.isLoaded && !cacheInfo.isLoading)\r\n loader.load(cacheInfo);\r\n });\r\n };\r\n ImageCache.prototype.finalizeLoading = function (existingInfo, loadedInfo) {\r\n existingInfo.finalizeLoading();\r\n existingInfo.isLoaded = true;\r\n var imageInfoIndex = this.nonLoadedImages.indexOf(existingInfo);\r\n this.nonLoadedImages.splice(imageInfoIndex, 1);\r\n if (this.nonLoadedImages.length === 0)\r\n this.raiseReadyStateChanged(true);\r\n if (existingInfo.referenceInfo)\r\n return;\r\n if (loadedInfo.base64) {\r\n var base64_2 = base64_1.Base64Utils.normalizeToDataUrl(loadedInfo.base64, \"image/png\");\r\n this.cache.forEach(function (cacheElem) {\r\n var isReference = cacheElem.base64 === base64_2 && cacheElem !== existingInfo && cacheElem.isLoaded;\r\n if (isReference)\r\n existingInfo.referenceInfo = cacheElem.referenceInfo ? cacheElem.referenceInfo : cacheElem;\r\n return isReference;\r\n });\r\n existingInfo.base64 = base64_2;\r\n }\r\n };\r\n ImageCache.prototype.hasNonLoadedImages = function () {\r\n return this.nonLoadedImages.length !== 0;\r\n };\r\n ImageCache.prototype.getNextActualId = function () {\r\n return this.lastActualId++;\r\n };\r\n ImageCache.prototype.findInfoByBase64 = function (base64) {\r\n base64 = base64_1.Base64Utils.normalizeToDataUrl(base64, \"image/png\");\r\n return this.findInfoCore(function (cacheImageInfo) { return cacheImageInfo.base64 === base64; });\r\n };\r\n ImageCache.prototype.findInfoByUrl = function (imageUrl) {\r\n return this.findInfoCore(function (cacheImageInfo) { return cacheImageInfo.imageUrl === imageUrl; });\r\n };\r\n ImageCache.prototype.findInfoCore = function (callback) {\r\n var cacheInfo;\r\n this.cache.forEach(function (item) {\r\n if (callback(item))\r\n cacheInfo = item;\r\n });\r\n return cacheInfo;\r\n };\r\n ImageCache.prototype.raiseReadyStateChanged = function (ready) {\r\n this.onReadyStateChanged.raise1(function (l) { return l.notifyImageCacheReadyStateChanged(ready); });\r\n };\r\n ImageCache.instance = new ImageCache();\r\n return ImageCache;\r\n}());\r\nexports.ImageCache = ImageCache;\r\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PageOrientation = exports.DiagramUnit = void 0;\r\nvar DiagramUnit;\r\n(function (DiagramUnit) {\r\n DiagramUnit[DiagramUnit[\"In\"] = 0] = \"In\";\r\n DiagramUnit[DiagramUnit[\"Cm\"] = 1] = \"Cm\";\r\n DiagramUnit[DiagramUnit[\"Px\"] = 2] = \"Px\";\r\n})(DiagramUnit = exports.DiagramUnit || (exports.DiagramUnit = {}));\r\nvar PageOrientation;\r\n(function (PageOrientation) {\r\n PageOrientation[PageOrientation[\"Portrait\"] = 0] = \"Portrait\";\r\n PageOrientation[PageOrientation[\"Landscape\"] = 1] = \"Landscape\";\r\n})(PageOrientation = exports.PageOrientation || (exports.PageOrientation = {}));\r\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SetConnectionPointIndexHistoryItem = exports.AddConnectionHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar AddConnectionHistoryItem = /** @class */ (function (_super) {\r\n __extends(AddConnectionHistoryItem, _super);\r\n function AddConnectionHistoryItem(connector, item, connectionPointIndex, position) {\r\n var _this = _super.call(this) || this;\r\n _this.connectorKey = connector.key;\r\n _this.itemKey = item.key;\r\n _this.connectionPointIndex = connectionPointIndex;\r\n _this.position = position;\r\n return _this;\r\n }\r\n AddConnectionHistoryItem.prototype.redo = function (manipulator) {\r\n var connector = manipulator.model.findConnector(this.connectorKey);\r\n var item = manipulator.model.findItem(this.itemKey);\r\n manipulator.addConnection(connector, item, this.connectionPointIndex, this.position);\r\n };\r\n AddConnectionHistoryItem.prototype.undo = function (manipulator) {\r\n var connector = manipulator.model.findConnector(this.connectorKey);\r\n manipulator.deleteConnection(connector, this.position);\r\n };\r\n return AddConnectionHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.AddConnectionHistoryItem = AddConnectionHistoryItem;\r\nvar SetConnectionPointIndexHistoryItem = /** @class */ (function (_super) {\r\n __extends(SetConnectionPointIndexHistoryItem, _super);\r\n function SetConnectionPointIndexHistoryItem(connector, connectionPointIndex, position) {\r\n var _this = _super.call(this) || this;\r\n _this.connectorKey = connector.key;\r\n _this.connectionPointIndex = connectionPointIndex;\r\n _this.position = position;\r\n return _this;\r\n }\r\n SetConnectionPointIndexHistoryItem.prototype.redo = function (manipulator) {\r\n var connector = manipulator.model.findConnector(this.connectorKey);\r\n this.oldConnectionPointIndex = this.position === Connector_1.ConnectorPosition.Begin ? connector.beginConnectionPointIndex : connector.endConnectionPointIndex;\r\n manipulator.setConnectionPointIndex(connector, this.connectionPointIndex, this.position);\r\n };\r\n SetConnectionPointIndexHistoryItem.prototype.undo = function (manipulator) {\r\n var connector = manipulator.model.findConnector(this.connectorKey);\r\n manipulator.setConnectionPointIndex(connector, this.oldConnectionPointIndex, this.position);\r\n };\r\n return SetConnectionPointIndexHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.SetConnectionPointIndexHistoryItem = SetConnectionPointIndexHistoryItem;\r\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar StringUtils = (function () {\r\n function StringUtils() {\r\n }\r\n StringUtils.isAlpha = function (ch) {\r\n return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z');\r\n };\r\n StringUtils.isDigit = function (ch) {\r\n return ch >= '0' && ch <= '9';\r\n };\r\n StringUtils.stringHashCode = function (str) {\r\n var hash = 0;\r\n if (str.length === 0)\r\n return hash;\r\n var strLen = str.length;\r\n for (var i = 0; i < strLen; i++) {\r\n hash = ((hash << 5) - hash) + str.charCodeAt(i);\r\n hash |= 0;\r\n }\r\n return hash;\r\n };\r\n StringUtils.endsAt = function (str, template) {\r\n var strInd = str.length - 1;\r\n var tmplInd = template.length - 1;\r\n var strStartInd = strInd - tmplInd;\r\n if (strStartInd < 0)\r\n return false;\r\n for (; strInd >= strStartInd; strInd--, tmplInd--) {\r\n if (str[strInd] !== template[tmplInd])\r\n return false;\r\n }\r\n return true;\r\n };\r\n StringUtils.startsAt = function (str, template) {\r\n return str.substr(0, template.length) === template;\r\n };\r\n StringUtils.stringInLowerCase = function (str) {\r\n return str.toLowerCase() === str;\r\n };\r\n StringUtils.stringInUpperCase = function (str) {\r\n return str.toUpperCase() === str;\r\n };\r\n StringUtils.atLeastOneSymbolInUpperCase = function (str) {\r\n for (var i = 0, char = void 0; char = str[i]; i++) {\r\n if (StringUtils.stringInUpperCase(char) && !StringUtils.stringInLowerCase(char))\r\n return true;\r\n }\r\n return false;\r\n };\r\n StringUtils.getSymbolFromEnd = function (text, posFromEnd) {\r\n return text[text.length - posFromEnd];\r\n };\r\n StringUtils.trim = function (str, trimChars) {\r\n if (trimChars === undefined)\r\n return StringUtils.trimInternal(str, true, true);\r\n else {\r\n var joinedChars = trimChars.join('');\r\n return str.replace(new RegExp(\"(^[\" + joinedChars + \"]*)|([\" + joinedChars + \"]*$)\", 'g'), '');\r\n }\r\n };\r\n StringUtils.trimStart = function (str, trimChars) {\r\n if (trimChars === undefined)\r\n return StringUtils.trimInternal(str, true, false);\r\n else {\r\n var joinedChars = trimChars.join('');\r\n return str.replace(new RegExp(\"^[\" + joinedChars + \"]*\", 'g'), '');\r\n }\r\n };\r\n StringUtils.trimEnd = function (str, trimChars) {\r\n if (trimChars === undefined)\r\n return StringUtils.trimInternal(str, false, true);\r\n else {\r\n var joinedChars = trimChars.join('');\r\n return str.replace(new RegExp(\"[\" + joinedChars + \"]*$\", 'g'), '');\r\n }\r\n };\r\n StringUtils.getDecimalSeparator = function () {\r\n return (1.1).toLocaleString().substr(1, 1);\r\n };\r\n StringUtils.repeat = function (str, count) {\r\n return new Array(count <= 0 ? 0 : count + 1).join(str);\r\n };\r\n StringUtils.isNullOrEmpty = function (str) {\r\n return !str || !str.length;\r\n };\r\n StringUtils.padLeft = function (str, totalWidth, paddingChar) {\r\n return StringUtils.repeat(paddingChar, Math.max(0, totalWidth - str.length)) + str;\r\n };\r\n StringUtils.trimInternal = function (source, trimStart, trimEnd) {\r\n var len = source.length;\r\n if (!len)\r\n return source;\r\n if (len < 0xBABA1) {\r\n var result = source;\r\n if (trimStart)\r\n result = result.replace(/^\\s+/, '');\r\n if (trimEnd)\r\n result = result.replace(/\\s+$/, '');\r\n return result;\r\n }\r\n else {\r\n var start = 0;\r\n if (trimEnd) {\r\n while (len > 0 && /\\s/.test(source[len - 1]))\r\n len--;\r\n }\r\n if (trimStart && len > 0) {\r\n while (start < len && /\\s/.test(source[start]))\r\n start++;\r\n }\r\n return source.substring(start, len);\r\n }\r\n };\r\n return StringUtils;\r\n}());\r\nexports.StringUtils = StringUtils;\r\n\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ImageInfo = void 0;\r\nvar base64_1 = __webpack_require__(83);\r\nvar ImageInfo = /** @class */ (function () {\r\n function ImageInfo(imageUrlOrBase64) {\r\n this.url = undefined;\r\n this.base64 = undefined;\r\n if (imageUrlOrBase64)\r\n if (base64_1.Base64Utils.checkPrependDataUrl(imageUrlOrBase64))\r\n this.base64 = imageUrlOrBase64;\r\n else\r\n this.url = imageUrlOrBase64;\r\n this.loadFailed = false;\r\n }\r\n ImageInfo.prototype.clone = function () {\r\n var result = new ImageInfo();\r\n result.url = this.url;\r\n result.base64 = this.base64;\r\n return result;\r\n };\r\n Object.defineProperty(ImageInfo.prototype, \"isEmpty\", {\r\n get: function () { return this.url === undefined && this.base64 === undefined; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ImageInfo.prototype, \"unableToLoad\", {\r\n get: function () { return this.loadFailed; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ImageInfo.prototype, \"renderUrl\", {\r\n get: function () { return this.base64 || \"\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ImageInfo.prototype, \"exportUrl\", {\r\n get: function () { return this.base64 ? this.base64 : this.url; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ImageInfo.prototype, \"actualUrl\", {\r\n get: function () { return this.url ? this.url : this.base64; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ImageInfo, \"transparentOnePixelImage\", {\r\n get: function () { return this.transparentWhiteImage1_1; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ImageInfo.prototype.loadBase64Content = function (base64Content) {\r\n this.base64 = base64_1.Base64Utils.normalizeToDataUrl(base64Content, \"image/png\");\r\n };\r\n ImageInfo.prototype.setUnableToLoadFlag = function () {\r\n this.loadFailed = true;\r\n };\r\n ImageInfo.transparentWhiteImage1_1 = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAANSURBVBhXY/j///9/AAn7A/0FQ0XKAAAAAElFTkSuQmCC\";\r\n return ImageInfo;\r\n}());\r\nexports.ImageInfo = ImageInfo;\r\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ConnectorPointsOrthogonalSideCalculatorBase = void 0;\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar ConnectorPointsOrthogonalSideCalculatorBase = /** @class */ (function () {\r\n function ConnectorPointsOrthogonalSideCalculatorBase(parent) {\r\n this.parent = parent;\r\n }\r\n Object.defineProperty(ConnectorPointsOrthogonalSideCalculatorBase.prototype, \"connector\", {\r\n get: function () { return this.parent.connector; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ConnectorPointsOrthogonalSideCalculatorBase.prototype, \"beginRect\", {\r\n get: function () { return this.parent.beginRect; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ConnectorPointsOrthogonalSideCalculatorBase.prototype, \"endRect\", {\r\n get: function () { return this.parent.endRect; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ConnectorPointsOrthogonalSideCalculatorBase.prototype.getBeginOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n originPoint = this.getCorrectOriginPoint(originPoint, originRect);\r\n if (targetSide !== DiagramItem_1.ConnectionPointSide.Undefined) {\r\n if (this.isBeginEndSame())\r\n return this.getSameShapeOffsetPoints(targetSide, originPoint, targetPoint, originRect);\r\n else if (this.isBeginEndOverlappedPoints(originPoint, targetPoint))\r\n return this.getOverlappedPointsOffsetPoints(targetSide, originPoint, targetPoint, originRect);\r\n else if (this.isBeginEndOverlapped())\r\n return this.getBeginOverlappedShapeOffsetPoints(targetSide, originPoint, targetPoint, originRect);\r\n }\r\n else if (this.isOriginRectContainsTargetPoint(originRect, targetPoint))\r\n return this.getOverlappedPointsOffsetPoints(targetSide, originPoint, targetPoint, originRect);\r\n if (this.isOnSidePoint(originPoint, targetPoint))\r\n return this.getBeginOnSideOffsetPoints(targetSide, originPoint, targetPoint, originRect);\r\n return this.getBeginOffSideOffsetPoints(targetSide, originPoint, targetPoint, originRect);\r\n };\r\n ConnectorPointsOrthogonalSideCalculatorBase.prototype.getEndOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n originPoint = this.getCorrectOriginPoint(originPoint, originRect);\r\n if (targetSide !== DiagramItem_1.ConnectionPointSide.Undefined) {\r\n if (this.isBeginEndSame())\r\n return this.getSameShapeOffsetPoints(targetSide, originPoint, targetPoint, originRect);\r\n else if (this.isBeginEndOverlappedPoints(targetPoint, originPoint))\r\n return this.getOverlappedPointsOffsetPoints(targetSide, originPoint, targetPoint, originRect);\r\n else if (this.isBeginEndOverlapped())\r\n return this.getEndOverlappedShapeOffsetPoints(targetSide, originPoint, targetPoint, originRect);\r\n }\r\n else if (this.isOriginRectContainsTargetPoint(originRect, targetPoint))\r\n return this.getOverlappedPointsOffsetPoints(targetSide, originPoint, targetPoint, originRect);\r\n if (this.isOnSidePoint(originPoint, targetPoint))\r\n return this.getEndOnSideOffsetPoints(targetSide, originPoint, targetPoint, originRect);\r\n return this.getEndOffSideOffsetPoints(targetSide, originPoint, targetPoint, originRect);\r\n };\r\n ConnectorPointsOrthogonalSideCalculatorBase.prototype.getSide = function (originPoint, targetPoint) {\r\n var diffX = Math.abs(targetPoint.x - originPoint.x);\r\n var diffY = Math.abs(targetPoint.y - originPoint.y);\r\n if (diffX > diffY)\r\n if (targetPoint.x > originPoint.x)\r\n return DiagramItem_1.ConnectionPointSide.East;\r\n else\r\n return DiagramItem_1.ConnectionPointSide.West;\r\n else if (targetPoint.y > originPoint.y)\r\n return DiagramItem_1.ConnectionPointSide.South;\r\n else\r\n return DiagramItem_1.ConnectionPointSide.North;\r\n };\r\n ConnectorPointsOrthogonalSideCalculatorBase.prototype.getSideCalculator = function (originPoint, targetPoint) {\r\n return this.parent.getSideCalculator(this.getSide(originPoint, targetPoint));\r\n };\r\n ConnectorPointsOrthogonalSideCalculatorBase.prototype.getMinOffset = function () {\r\n return Connector_1.Connector.minOffset;\r\n };\r\n ConnectorPointsOrthogonalSideCalculatorBase.prototype.isBeginEndSame = function () {\r\n return this.connector.beginItem === this.connector.endItem;\r\n };\r\n ConnectorPointsOrthogonalSideCalculatorBase.prototype.isBeginEndOverlapped = function () {\r\n return this.beginRect && this.endRect && rectangle_1.Rectangle.areIntersected(this.beginRect, this.endRect);\r\n };\r\n ConnectorPointsOrthogonalSideCalculatorBase.prototype.isBeginEndOverlappedX = function () {\r\n return this.beginRect && this.endRect && !!rectangle_1.Rectangle.getHorizIntersection(this.beginRect, this.endRect);\r\n };\r\n ConnectorPointsOrthogonalSideCalculatorBase.prototype.isBeginEndOverlappedY = function () {\r\n return this.beginRect && this.endRect && !!rectangle_1.Rectangle.getVertIntersection(this.beginRect, this.endRect);\r\n };\r\n ConnectorPointsOrthogonalSideCalculatorBase.prototype.isBeginEndOverlappedPoints = function (beginPoint, endPoint) {\r\n return this.beginRect && this.endRect && (this.beginRect.containsPoint(endPoint) || this.endRect.containsPoint(beginPoint));\r\n };\r\n ConnectorPointsOrthogonalSideCalculatorBase.prototype.isOriginRectContainsTargetPoint = function (originRect, targetPoint) {\r\n return originRect && targetPoint && originRect.containsPoint(targetPoint);\r\n };\r\n return ConnectorPointsOrthogonalSideCalculatorBase;\r\n}());\r\nexports.ConnectorPointsOrthogonalSideCalculatorBase = ConnectorPointsOrthogonalSideCalculatorBase;\r\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.AddShapeHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar Shape_1 = __webpack_require__(13);\r\nvar AddShapeHistoryItem = /** @class */ (function (_super) {\r\n __extends(AddShapeHistoryItem, _super);\r\n function AddShapeHistoryItem(shapeDescription, position, text, dataKey) {\r\n var _this = _super.call(this) || this;\r\n _this.shapeDescription = shapeDescription;\r\n _this.position = position;\r\n _this.text = text;\r\n _this.dataKey = dataKey;\r\n return _this;\r\n }\r\n AddShapeHistoryItem.prototype.redo = function (manipulator) {\r\n var shape = new Shape_1.Shape(this.shapeDescription, this.position);\r\n if (typeof this.text === \"string\")\r\n shape.text = this.text;\r\n if (this.dataKey !== undefined)\r\n shape.dataKey = this.dataKey;\r\n manipulator.addShape(shape, this.shapeKey);\r\n this.shapeKey = shape.key;\r\n };\r\n AddShapeHistoryItem.prototype.undo = function (manipulator) {\r\n manipulator.deleteShape(manipulator.model.findShape(this.shapeKey), true);\r\n };\r\n return AddShapeHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.AddShapeHistoryItem = AddShapeHistoryItem;\r\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.EllipsePrimitive = void 0;\r\nvar RenderHelper_1 = __webpack_require__(15);\r\nvar Primitive_1 = __webpack_require__(25);\r\nvar EllipsePrimitive = /** @class */ (function (_super) {\r\n __extends(EllipsePrimitive, _super);\r\n function EllipsePrimitive(cx, cy, rx, ry, style, className, onApplyProperties) {\r\n var _this = _super.call(this, style, className, undefined, onApplyProperties) || this;\r\n _this.cx = cx;\r\n _this.cy = cy;\r\n _this.rx = rx;\r\n _this.ry = ry;\r\n return _this;\r\n }\r\n EllipsePrimitive.prototype.createMainElement = function () {\r\n return document.createElementNS(RenderHelper_1.svgNS, \"ellipse\");\r\n };\r\n EllipsePrimitive.prototype.applyElementProperties = function (element, measurer) {\r\n this.setUnitAttribute(element, \"cx\", this.cx);\r\n this.setUnitAttribute(element, \"cy\", this.cy);\r\n this.setUnitAttribute(element, \"rx\", this.rx);\r\n this.setUnitAttribute(element, \"ry\", this.ry);\r\n this.setPositionCorrectionAttribute(element);\r\n _super.prototype.applyElementProperties.call(this, element, measurer);\r\n };\r\n return EllipsePrimitive;\r\n}(Primitive_1.SvgPrimitive));\r\nexports.EllipsePrimitive = EllipsePrimitive;\r\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ClipPathPrimitive = void 0;\r\nvar RenderHelper_1 = __webpack_require__(15);\r\nvar Primitive_1 = __webpack_require__(25);\r\nvar ClipPathPrimitive = /** @class */ (function (_super) {\r\n __extends(ClipPathPrimitive, _super);\r\n function ClipPathPrimitive(id, children) {\r\n var _this = _super.call(this) || this;\r\n _this.id = id;\r\n _this.children = children;\r\n return _this;\r\n }\r\n ClipPathPrimitive.prototype.createMainElement = function () {\r\n var element = document.createElementNS(RenderHelper_1.svgNS, \"clipPath\");\r\n element.setAttribute(\"id\", this.id);\r\n return element;\r\n };\r\n ClipPathPrimitive.prototype.applyElementProperties = function (element, measurer) {\r\n if (this.id)\r\n element.setAttribute(\"id\", this.id);\r\n _super.prototype.applyElementProperties.call(this, element, measurer);\r\n };\r\n return ClipPathPrimitive;\r\n}(Primitive_1.SvgPrimitive));\r\nexports.ClipPathPrimitive = ClipPathPrimitive;\r\n\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ExportImportCommandBase = void 0;\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar ExportImportCommandBase = /** @class */ (function (_super) {\r\n __extends(ExportImportCommandBase, _super);\r\n function ExportImportCommandBase() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ExportImportCommandBase.prototype.isEnabledInReadOnlyMode = function () {\r\n return true;\r\n };\r\n return ExportImportCommandBase;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.ExportImportCommandBase = ExportImportCommandBase;\r\n\n\n/***/ }),\n/* 57 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__extends\", function() { return __extends; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__assign\", function() { return __assign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__rest\", function() { return __rest; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__decorate\", function() { return __decorate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__param\", function() { return __param; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__metadata\", function() { return __metadata; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__awaiter\", function() { return __awaiter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__generator\", function() { return __generator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__createBinding\", function() { return __createBinding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__exportStar\", function() { return __exportStar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__values\", function() { return __values; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__read\", function() { return __read; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__spread\", function() { return __spread; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__spreadArrays\", function() { return __spreadArrays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__await\", function() { return __await; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__asyncGenerator\", function() { return __asyncGenerator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__asyncDelegator\", function() { return __asyncDelegator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__asyncValues\", function() { return __asyncValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__makeTemplateObject\", function() { return __makeTemplateObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__importStar\", function() { return __importStar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__importDefault\", function() { return __importDefault; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__classPrivateFieldGet\", function() { return __classPrivateFieldGet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__classPrivateFieldSet\", function() { return __classPrivateFieldSet; });\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nfunction __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nfunction __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nvar __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nfunction __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nfunction __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nfunction __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nfunction __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nfunction __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\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 () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nfunction __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nfunction __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nfunction __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nfunction __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nfunction __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Vector = (function () {\r\n function Vector(x, y) {\r\n if (x === void 0) { x = 0; }\r\n if (y === void 0) { y = 0; }\r\n this.x = x;\r\n this.y = y;\r\n }\r\n Object.defineProperty(Vector.prototype, \"length\", {\r\n get: function () {\r\n return Math.sqrt(this.x * this.x + this.y * this.y);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Vector.fromPoints = function (begin, end) {\r\n return new Vector(end.x - begin.x, end.y - begin.y);\r\n };\r\n Vector.fromSegment = function (segment) {\r\n return new Vector(segment.endPoint.x - segment.startPoint.x, segment.endPoint.y - segment.startPoint.y);\r\n };\r\n Vector.prototype.normalize = function () {\r\n var length = this.length;\r\n if (length !== 0) {\r\n this.x /= length;\r\n this.y /= length;\r\n }\r\n return this;\r\n };\r\n Vector.prototype.negative = function () {\r\n this.x *= -1;\r\n this.y *= -1;\r\n return this;\r\n };\r\n Object.defineProperty(Vector, \"axisX\", {\r\n get: function () {\r\n return new Vector(1, 0);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Vector, \"axisY\", {\r\n get: function () {\r\n return new Vector(0, 1);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Vector.angleBetween = function (a, b) {\r\n var cosFi = Vector.scalarProduct(a, b) / (a.length * b.length);\r\n return Math.acos(cosFi);\r\n };\r\n Vector.scalarProduct = function (a, b) {\r\n return a.x * b.x + a.y * b.y;\r\n };\r\n return Vector;\r\n}());\r\nexports.Vector = Vector;\r\n\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Diagnostics = void 0;\r\nvar LoggerDisplayMode;\r\n(function (LoggerDisplayMode) {\r\n LoggerDisplayMode[LoggerDisplayMode[\"Disabled\"] = 0] = \"Disabled\";\r\n LoggerDisplayMode[LoggerDisplayMode[\"Console\"] = 1] = \"Console\";\r\n LoggerDisplayMode[LoggerDisplayMode[\"Document\"] = 2] = \"Document\";\r\n})(LoggerDisplayMode || (LoggerDisplayMode = {}));\r\nvar Diagnostics = /** @class */ (function () {\r\n function Diagnostics() {\r\n }\r\n Diagnostics.beginAverage = function (groupName) {\r\n if (!this.enableLogsAndTimers)\r\n return;\r\n this.lastAverageGroupName = groupName;\r\n };\r\n Diagnostics.endAverage = function () {\r\n if (!this.enableLogsAndTimers)\r\n return;\r\n this.lastAverageGroupName = null;\r\n };\r\n Diagnostics.tryLogAverage = function (groupName) {\r\n var _this = this;\r\n if (this.lastAverageGroupName === groupName)\r\n return;\r\n var sameGroupTimers = Object.keys(this.timers)\r\n .map(function (t) { return _this.timers[t]; })\r\n .filter(function (t) { return t.groupName === groupName; });\r\n if (!sameGroupTimers.filter(function (t) { return !t.endTime; }).length) {\r\n var average = sameGroupTimers.reduce(function (acc, t) { return acc + (t.endTime - t.startTime); }, 0) / sameGroupTimers.length;\r\n this.log(\"average: \" + average);\r\n }\r\n };\r\n Diagnostics.timer = function (message) {\r\n if (!this.enableLogsAndTimers)\r\n return;\r\n this.lastCreatedTimer = {\r\n message: message,\r\n startTime: performance.now(),\r\n groupName: this.lastAverageGroupName\r\n };\r\n };\r\n Diagnostics.endTimer = function () {\r\n var _this = this;\r\n if (!this.enableLogsAndTimers)\r\n return;\r\n var timer = this.lastCreatedTimer;\r\n var timeoutID = setTimeout(function () {\r\n timer.endTime = performance.now();\r\n _this.showMessage(\"timer \\\"\" + timer.message + \"\\\": \" + (timer.endTime - timer.startTime));\r\n timer.groupName && _this.tryLogAverage(timer.groupName);\r\n }, 0);\r\n this.timers[timeoutID] = timer;\r\n this.lastCreatedTimer = null;\r\n };\r\n Diagnostics.logPerfInfo = function () {\r\n var nodesCount = document.querySelector(\".dxdi-control > svg\").querySelectorAll(\"*\").length;\r\n var memory = performance[\"memory\"];\r\n this.log(\"nodes: \" + nodesCount.toLocaleString() + (memory ? \" memory: \" : \"\") + (memory ? memory[\"usedJSHeapSize\"].toLocaleString() : \"\"));\r\n };\r\n Diagnostics.log = function (message) {\r\n this.showMessage(message);\r\n };\r\n Diagnostics.showMessage = function (message) {\r\n switch (Diagnostics.mode) {\r\n case LoggerDisplayMode.Console:\r\n // eslint-disable-next-line no-console\r\n console.log(message);\r\n break;\r\n case LoggerDisplayMode.Document: {\r\n var existText = this.getElement().value;\r\n if (this.lastMessage === message) {\r\n var lastLineLength = existText.indexOf(\"\\r\\n\");\r\n if (lastLineLength < 0)\r\n lastLineLength = existText.indexOf(\"\\n\");\r\n var lastLine = existText.substr(0, lastLineLength);\r\n var regex = /( \\()([0-9]+)(\\))$/;\r\n if (regex.test(lastLine))\r\n lastLine = lastLine.replace(/( \\()([0-9]+)(\\))$/, function (str, before, val, after) { return before + (++val) + after; });\r\n else\r\n lastLine += \" (1)\";\r\n this.getElement().value = lastLine + existText.substr(lastLineLength);\r\n }\r\n else {\r\n this.getElement().value = message + \"\\r\\n\" + existText;\r\n this.lastMessage = message;\r\n }\r\n }\r\n }\r\n };\r\n Diagnostics.getElement = function () {\r\n var _this = this;\r\n if (!this.el) {\r\n this.el = document.createElement(\"textarea\");\r\n this.el.style.top = \"0px\";\r\n this.el.style.right = \"0px\";\r\n this.el.style.position = \"fixed\";\r\n this.el.style.background = \"transparent\";\r\n this.el.style.fontSize = \"11px\";\r\n this.el.style.fontFamily = \"monospace\";\r\n this.el.style.overflow = \"auto\";\r\n this.el.style.width = \"400px\";\r\n document.body.appendChild(this.el);\r\n var clr = document.createElement(\"button\");\r\n clr.innerHTML = \"x\";\r\n clr.addEventListener(\"click\", function () { _this.el.value = \"\"; _this.lastMessage = \"\"; });\r\n clr.style.top = \"0px\";\r\n clr.style.right = \"400px\";\r\n clr.style.position = \"fixed\";\r\n clr.style.opacity = \"0.1\";\r\n document.body.appendChild(clr);\r\n }\r\n return this.el;\r\n };\r\n Diagnostics.mode = LoggerDisplayMode.Document;\r\n Diagnostics.optimizeUsingRAF = true;\r\n Diagnostics.optimizeLayers = true;\r\n Diagnostics.timers = {};\r\n Diagnostics.enableLogsAndTimers = false;\r\n return Diagnostics;\r\n}());\r\nexports.Diagnostics = Diagnostics;\r\n\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar browser_1 = __webpack_require__(19);\r\nvar common_1 = __webpack_require__(34);\r\nvar dom_1 = __webpack_require__(23);\r\nvar touch_1 = __webpack_require__(174);\r\nvar EvtUtils = (function () {\r\n function EvtUtils() {\r\n }\r\n EvtUtils.preventEvent = function (evt) {\r\n if (!evt.cancelable)\r\n return;\r\n if (evt.preventDefault)\r\n evt.preventDefault();\r\n else\r\n evt.returnValue = false;\r\n };\r\n EvtUtils.getEventSource = function (evt) {\r\n return common_1.isDefined(evt) ? EvtUtils.getEventSourceCore(evt) : null;\r\n };\r\n EvtUtils.getEventSourceByPosition = function (evt) {\r\n if (!common_1.isDefined(evt))\r\n return null;\r\n if (!document.elementFromPoint)\r\n return EvtUtils.getEventSourceCore(evt);\r\n var eventX = EvtUtils.getEventX(evt);\r\n var eventY = EvtUtils.getEventY(evt);\r\n if (eventX === undefined || eventY === undefined)\r\n return EvtUtils.getEventSourceCore(evt);\r\n return document.elementFromPoint(eventX, eventY);\r\n };\r\n EvtUtils.getEventSourceCore = function (evt) {\r\n return evt.srcElement ? evt.srcElement : evt.target;\r\n };\r\n EvtUtils.getMouseWheelEventName = function () {\r\n if (browser_1.Browser.Safari)\r\n return 'mousewheel';\r\n if (browser_1.Browser.NetscapeFamily && browser_1.Browser.MajorVersion < 17)\r\n return 'DOMMouseScroll';\r\n return 'wheel';\r\n };\r\n EvtUtils.isLeftButtonPressed = function (evt) {\r\n if (touch_1.TouchUtils.isTouchEvent(evt))\r\n return true;\r\n evt = (browser_1.Browser.IE && common_1.isDefined(event)) ? event : evt;\r\n if (!evt)\r\n return false;\r\n if (browser_1.Browser.IE && browser_1.Browser.Version < 11)\r\n return browser_1.Browser.MSTouchUI ? true : evt.button % 2 === 1;\r\n if (browser_1.Browser.WebKitFamily)\r\n return evt.type === 'pointermove' ? evt.buttons === 1 : evt.which === 1;\r\n if (browser_1.Browser.NetscapeFamily || browser_1.Browser.Edge || (browser_1.Browser.IE && browser_1.Browser.Version >= 11))\r\n return EvtUtils.isMoveEventName(evt.type) ? evt.buttons === 1 : evt.which === 1;\r\n return browser_1.Browser.Opera ? evt.button === 0 : true;\r\n };\r\n EvtUtils.isMoveEventName = function (type) {\r\n return type === touch_1.TouchUtils.touchMouseMoveEventName || type === EvtUtils.getMoveEventName();\r\n };\r\n EvtUtils.getMoveEventName = function () {\r\n return window.PointerEvent ? 'pointermove' : (browser_1.Browser.TouchUI ? 'touchmove' : 'mousemove');\r\n };\r\n EvtUtils.preventEventAndBubble = function (evt) {\r\n EvtUtils.preventEvent(evt);\r\n if (evt.stopPropagation)\r\n evt.stopPropagation();\r\n evt.cancelBubble = true;\r\n };\r\n EvtUtils.clientEventRequiresDocScrollCorrection = function () {\r\n var isSafariVerLess3 = browser_1.Browser.Safari && browser_1.Browser.Version < 3;\r\n var isMacOSMobileVerLess51 = browser_1.Browser.MacOSMobilePlatform && browser_1.Browser.Version < 5.1;\r\n return browser_1.Browser.AndroidDefaultBrowser || browser_1.Browser.AndroidChromeBrowser || !(isSafariVerLess3 || isMacOSMobileVerLess51);\r\n };\r\n EvtUtils.getEventX = function (evt) {\r\n if (touch_1.TouchUtils.isTouchEvent(evt))\r\n return touch_1.TouchUtils.getEventX(evt);\r\n return evt.clientX + (EvtUtils.clientEventRequiresDocScrollCorrection() ? dom_1.DomUtils.getDocumentScrollLeft() : 0);\r\n };\r\n EvtUtils.getEventY = function (evt) {\r\n if (touch_1.TouchUtils.isTouchEvent(evt))\r\n return touch_1.TouchUtils.getEventY(evt);\r\n return evt.clientY + (EvtUtils.clientEventRequiresDocScrollCorrection() ? dom_1.DomUtils.getDocumentScrollTop() : 0);\r\n };\r\n EvtUtils.cancelBubble = function (evt) {\r\n evt.cancelBubble = true;\r\n };\r\n EvtUtils.getWheelDelta = function (evt) {\r\n var ret;\r\n if (browser_1.Browser.NetscapeFamily && browser_1.Browser.MajorVersion < 17)\r\n ret = -evt.detail;\r\n else if (browser_1.Browser.Safari)\r\n ret = evt.wheelDelta;\r\n else\r\n ret = -evt.deltaY;\r\n if (browser_1.Browser.Opera && browser_1.Browser.Version < 9)\r\n ret = -ret;\r\n return ret;\r\n };\r\n return EvtUtils;\r\n}());\r\nexports.EvtUtils = EvtUtils;\r\n\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DiagramModel = void 0;\r\nvar Shape_1 = __webpack_require__(13);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar size_1 = __webpack_require__(2);\r\nvar point_1 = __webpack_require__(1);\r\nvar ImageCache_1 = __webpack_require__(47);\r\nvar color_1 = __webpack_require__(22);\r\nvar Enums_1 = __webpack_require__(48);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar DiagramModel = /** @class */ (function () {\r\n function DiagramModel(pageSize) {\r\n if (pageSize === void 0) { pageSize = new size_1.Size(8391, 11906); }\r\n this.items = [];\r\n this.itemIndexByKey = {};\r\n this.keyCounter = 0;\r\n this.pageSize = new size_1.Size(8391, 11906);\r\n this.pageLandscape = false;\r\n this.pageColor = DiagramModel.defaultPageColor;\r\n this.units = Enums_1.DiagramUnit.In;\r\n this.snapStartPoint = new point_1.Point(0, 0);\r\n this.pageSize = pageSize;\r\n this.size = this.pageSize.clone();\r\n this.rectangle = rectangle_1.Rectangle.fromGeometry(new point_1.Point(0, 0), new size_1.Size(0, 0));\r\n this.initializeKeyCounter();\r\n }\r\n Object.defineProperty(DiagramModel.prototype, \"pageWidth\", {\r\n get: function () {\r\n return this.pageLandscape ? this.pageSize.height : this.pageSize.width;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramModel.prototype, \"pageHeight\", {\r\n get: function () {\r\n return this.pageLandscape ? this.pageSize.width : this.pageSize.height;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n DiagramModel.prototype.getRectangle = function (forceUpdate) {\r\n if (forceUpdate)\r\n this.rectangle = ModelUtils_1.ModelUtils.createRectangle(this.items);\r\n return this.rectangle;\r\n };\r\n DiagramModel.prototype.pushItem = function (item) {\r\n var index = this.items.push(item);\r\n this.itemIndexByKey[item.key] = index - 1;\r\n if (item instanceof Shape_1.Shape && !item.image.isEmpty)\r\n this.cacheShapeImage(item);\r\n };\r\n DiagramModel.prototype.removeItem = function (item) {\r\n var index = this.getItemIndex(item);\r\n delete this.itemIndexByKey[item.key];\r\n this.items.splice(index, 1);\r\n this.updateIndicesHash(index);\r\n };\r\n DiagramModel.prototype.updateIndicesHash = function (startIndex) {\r\n for (var i = startIndex; i < this.items.length; i++)\r\n this.itemIndexByKey[this.items[i].key] = i;\r\n };\r\n DiagramModel.prototype.getItemIndex = function (item) {\r\n return this.itemIndexByKey[item.key];\r\n };\r\n DiagramModel.prototype.findShape = function (key) {\r\n var shape = this.findItem(key);\r\n return shape instanceof Shape_1.Shape ? shape : undefined;\r\n };\r\n DiagramModel.prototype.findShapesCore = function (callback) {\r\n var shapes = [];\r\n this.items.forEach(function (item) {\r\n if (item instanceof Shape_1.Shape)\r\n if (callback(item)) {\r\n shapes.push(item);\r\n return;\r\n }\r\n });\r\n return shapes;\r\n };\r\n DiagramModel.prototype.findShapeCore = function (callback) {\r\n for (var i = 0; i < this.items.length; i++) {\r\n var item = this.items[i];\r\n if (item instanceof Shape_1.Shape)\r\n if (callback(item))\r\n return item;\r\n }\r\n };\r\n DiagramModel.prototype.findShapeAtPosition = function (position) {\r\n return this.findShapeCore(function (shape) { return shape.position.equals(position); });\r\n };\r\n DiagramModel.prototype.findShapeByDataKey = function (key) {\r\n return this.findShapeCore(function (shape) { return shape.dataKey === key; });\r\n };\r\n DiagramModel.prototype.findShapesByImageUrl = function (imageUrl) {\r\n return this.findShapesCore(function (shape) { return shape.image.url === imageUrl; });\r\n };\r\n DiagramModel.prototype.findShapesByDescription = function (description) {\r\n return this.findShapesCore(function (shape) { return shape.description.key === description.key; });\r\n };\r\n DiagramModel.prototype.cacheShapeImage = function (shape) {\r\n var cacheImageInfo = ImageCache_1.ImageCache.instance.createUnloadedInfoByShapeImageInfo(shape.image);\r\n if (cacheImageInfo.isLoaded)\r\n shape.image.loadBase64Content(cacheImageInfo.base64);\r\n };\r\n DiagramModel.prototype.loadAllImages = function (imageLoader) {\r\n ImageCache_1.ImageCache.instance.loadAllImages(imageLoader);\r\n };\r\n DiagramModel.prototype.findContainer = function (key) {\r\n var shape = this.findShape(key);\r\n return shape && shape.enableChildren ? shape : undefined;\r\n };\r\n DiagramModel.prototype.findNearestContainer = function (key) {\r\n var shape = this.findShape(key);\r\n if (shape)\r\n return shape.enableChildren ? shape : shape.container;\r\n else\r\n return undefined;\r\n };\r\n DiagramModel.prototype.getChildren = function (container) {\r\n var _this = this;\r\n return container.children.map(function (child) { return _this.findItem(child.key); }).filter(function (item) { return item; });\r\n };\r\n DiagramModel.prototype.findChild = function (container, key, recursive) {\r\n var _this = this;\r\n if (recursive === void 0) { recursive = true; }\r\n var result;\r\n container.children.forEach(function (child) {\r\n if (result)\r\n return;\r\n if (child.key === key) {\r\n result = child;\r\n return;\r\n }\r\n if (recursive && child instanceof Shape_1.Shape) {\r\n result = _this.findChild(child, key, recursive);\r\n if (result)\r\n return;\r\n }\r\n });\r\n return result;\r\n };\r\n DiagramModel.prototype.findItemContainerCore = function (item, callback) {\r\n var container = item.container;\r\n while (container) {\r\n if (!callback || callback(container))\r\n break;\r\n container = container.container;\r\n }\r\n return container;\r\n };\r\n DiagramModel.prototype.findItemContainer = function (item) {\r\n return this.findItemContainerCore(item);\r\n };\r\n DiagramModel.prototype.findItemCollapsedContainer = function (item) {\r\n return this.findItemContainerCore(item, function (c) { return !c.expanded; });\r\n };\r\n DiagramModel.prototype.findItemTopCollapsedContainer = function (item) {\r\n var container = item.container;\r\n var collapsedContainer;\r\n while (container) {\r\n if (!container.expanded)\r\n collapsedContainer = container;\r\n container = container.container;\r\n }\r\n return collapsedContainer;\r\n };\r\n DiagramModel.prototype.isContainerItem = function (container, item) {\r\n return this.findItemContainerCore(item, function (c) { return c.key === container.key; }) !== undefined;\r\n };\r\n DiagramModel.prototype.findConnector = function (key) {\r\n var connector = this.findItem(key);\r\n return connector instanceof Connector_1.Connector ? connector : undefined;\r\n };\r\n DiagramModel.prototype.findConnectorCore = function (callback) {\r\n for (var i = 0; i < this.items.length; i++) {\r\n var item = this.items[i];\r\n if (item instanceof Connector_1.Connector)\r\n if (callback(item))\r\n return item;\r\n }\r\n };\r\n DiagramModel.prototype.findConnectorAtPoints = function (points) {\r\n return this.findConnectorCore(function (connector) { return Utils_1.GeometryUtils.arePointsEqual(connector.points, points); });\r\n };\r\n DiagramModel.prototype.findConnectorByDataKey = function (key) {\r\n return this.findConnectorCore(function (connector) { return connector.dataKey === key; });\r\n };\r\n DiagramModel.prototype.findConnectorByBeginEndDataKeys = function (beginDataKey, endDataKey) {\r\n return this.findConnectorCore(function (connector) { return (connector.beginItem && connector.beginItem.dataKey === beginDataKey) &&\r\n (connector.endItem && connector.endItem.dataKey === endDataKey); });\r\n };\r\n DiagramModel.prototype.findConnectorsCore = function (callback) {\r\n var result = [];\r\n this.items.forEach(function (item) {\r\n if (item instanceof Connector_1.Connector)\r\n if (callback(item)) {\r\n result.push(item);\r\n return;\r\n }\r\n });\r\n return result;\r\n };\r\n DiagramModel.prototype.findConnectorsWithoutBeginItem = function () {\r\n return this.findConnectorsCore(function (connector) { return !connector.beginItem; });\r\n };\r\n DiagramModel.prototype.findConnectorsWithoutEndItem = function () {\r\n return this.findConnectorsCore(function (connector) { return !connector.endItem; });\r\n };\r\n DiagramModel.prototype.findItem = function (key) {\r\n return this.items[this.itemIndexByKey[key]];\r\n };\r\n DiagramModel.prototype.findItemByDataKey = function (key) {\r\n return this.findItemCore(function (item) { return item.dataKey === key; });\r\n };\r\n DiagramModel.prototype.findItemCore = function (callback) {\r\n for (var i = 0; i < this.items.length; i++)\r\n if (callback(this.items[i]))\r\n return this.items[i];\r\n };\r\n DiagramModel.isIntersectedItems = function (item1, item2) {\r\n var result = false;\r\n if (item1 instanceof Shape_1.Shape)\r\n result = item2.intersectedByRect(item1.rectangle);\r\n else if (item1 instanceof Connector_1.Connector)\r\n item1.getSegments().forEach(function (s1) {\r\n if (item2 instanceof Shape_1.Shape)\r\n result = result || s1.isIntersectedByRect(item2.rectangle);\r\n else if (item2 instanceof Connector_1.Connector)\r\n item2.getSegments().forEach(function (s2) {\r\n result = result || s1.isIntersected(s2);\r\n });\r\n });\r\n return result;\r\n };\r\n DiagramModel.prototype.getIntersectItems = function (item) {\r\n var result = [];\r\n this.items.forEach(function (i) {\r\n if (i.container !== item.container)\r\n return;\r\n if (item !== i && (!(i instanceof Connector_1.Connector) || item.attachedConnectors.indexOf(i) === -1) &&\r\n DiagramModel.isIntersectedItems(i, item))\r\n result.push(i);\r\n });\r\n return result;\r\n };\r\n DiagramModel.prototype.getIntersectItemsMinZIndex = function (item) {\r\n var items = this.getIntersectItems(item);\r\n return items.map(function (i) { return i.zIndex; }).reduce(function (prev, cur) { return Math.min(prev, cur); }, Number.MAX_VALUE);\r\n };\r\n DiagramModel.prototype.getIntersectItemsMaxZIndex = function (item) {\r\n var items = this.getIntersectItems(item);\r\n return items.map(function (i) { return i.zIndex; }).reduce(function (prev, cur) { return Math.max(prev, cur); }, -Number.MAX_VALUE);\r\n };\r\n DiagramModel.prototype.iterateItems = function (callback) {\r\n this.items.forEach(callback);\r\n };\r\n DiagramModel.prototype.getNextKey = function () {\r\n return (this.keyCounter++).toString();\r\n };\r\n DiagramModel.prototype.initializeKeyCounter = function () {\r\n this.keyCounter = this.items.reduce(function (prev, cur) {\r\n var num = parseInt(cur.key);\r\n return Math.max(prev, isNaN(num) ? 0 : num + 1);\r\n }, this.items.length);\r\n };\r\n DiagramModel.defaultPageColor = color_1.ColorUtils.LIGHT_COLOR;\r\n return DiagramModel;\r\n}());\r\nexports.DiagramModel = DiagramModel;\r\n\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.TextPrimitive270degRenderHelper = exports.TextPrimitive180degRenderHelper = exports.TextPrimitive90degRenderHelper = exports.TextPrimitiveRenderHelper = exports.TextPrimitive = exports.TextAngle = void 0;\r\nvar unit_converter_1 = __webpack_require__(11);\r\nvar RenderHelper_1 = __webpack_require__(15);\r\nvar Primitive_1 = __webpack_require__(25);\r\nvar Utils_1 = __webpack_require__(17);\r\nvar TextUtils_1 = __webpack_require__(63);\r\nvar TextAngle;\r\n(function (TextAngle) {\r\n TextAngle[TextAngle[\"Angle0deg\"] = 0] = \"Angle0deg\";\r\n TextAngle[TextAngle[\"Angle90deg\"] = 90] = \"Angle90deg\";\r\n TextAngle[TextAngle[\"Angle180deg\"] = 180] = \"Angle180deg\";\r\n TextAngle[TextAngle[\"Angle270deg\"] = 270] = \"Angle270deg\";\r\n})(TextAngle = exports.TextAngle || (exports.TextAngle = {}));\r\nvar TextPrimitive = /** @class */ (function (_super) {\r\n __extends(TextPrimitive, _super);\r\n function TextPrimitive(x, y, text, owner, textWidth, textHeight, textSpacing, style, reverseTextAhchor, clipPathId, filterId, angle, onApplyProperties) {\r\n var _this = _super.call(this, style, \"\", clipPathId, onApplyProperties) || this;\r\n _this.x = x;\r\n _this.y = y;\r\n _this.text = text;\r\n _this.owner = owner;\r\n _this.textWidth = textWidth;\r\n _this.textHeight = textHeight;\r\n _this.textSpacing = textSpacing;\r\n _this.reverseTextAhchor = reverseTextAhchor;\r\n _this.angle = angle;\r\n _this.filterId = filterId;\r\n _this.textSegmens = TextUtils_1.textToParagraphs(_this.text);\r\n _this.renderHelper = _this.createRenderHelper();\r\n if (_this.textWidth !== undefined && _this.textWidth !== undefined) {\r\n _this.x = _this.renderHelper.getTextX(_this.x);\r\n _this.y = _this.renderHelper.getTextY(_this.y);\r\n }\r\n return _this;\r\n }\r\n TextPrimitive.prototype.createMainElement = function () {\r\n return document.createElementNS(RenderHelper_1.svgNS, \"text\");\r\n };\r\n TextPrimitive.prototype.applyElementProperties = function (element, measurer) {\r\n this.setUnitAttribute(element, \"x\", this.x);\r\n this.setUnitAttribute(element, \"y\", this.y);\r\n if (this.filterId)\r\n element.setAttribute(\"filter\", Utils_1.RenderUtils.getUrlPathById(this.filterId));\r\n _super.prototype.applyElementProperties.call(this, element, measurer);\r\n if (element.getAttribute(\"appliedText\") !== this.text || element.getAttribute(\"appliedSize\") !== (this.fitToSize && this.fitToSize.toString())) {\r\n this.createTSpanElements(element, measurer);\r\n element.setAttribute(\"appliedText\", this.text);\r\n element.setAttribute(\"appliedSize\", (this.fitToSize && this.fitToSize.toString()));\r\n }\r\n else\r\n this.prepareTSpanElements(element);\r\n this.renderHelper.prepareMainElement(element, this.x, this.y);\r\n };\r\n TextPrimitive.prototype.createTSpanElements = function (element, measurer) {\r\n var _this = this;\r\n Utils_1.RenderUtils.removeContent(element);\r\n this.textSegmens.forEach(function (txt, index) {\r\n if (!txt && _this.textSegmens.length > 1) {\r\n var span = _this.createTSpanElement(element);\r\n span.textContent = \" \";\r\n }\r\n else if (_this.fitToSize) {\r\n var words_1 = TextUtils_1.textToWords(txt);\r\n var lines = TextUtils_1.wordsByLines(unit_converter_1.UnitConverter.twipsToPixels(_this.fitToSize), words_1, function () { return measurer.measureWords(words_1, _this.style, _this.owner); });\r\n lines.forEach(function (line) {\r\n var span = _this.createTSpanElement(element);\r\n span.textContent = line;\r\n });\r\n if (!lines.length) {\r\n var span = _this.createTSpanElement(element);\r\n span.textContent = \" \";\r\n }\r\n }\r\n else {\r\n var tSpan = _this.createTSpanElement(element);\r\n tSpan.textContent = txt;\r\n }\r\n });\r\n var firstTSpan = element.firstChild;\r\n if (firstTSpan)\r\n this.prepareFirstTSpanElement(firstTSpan, element.childNodes.length);\r\n };\r\n TextPrimitive.prototype.createTSpanElement = function (parent) {\r\n var tSpan = document.createElementNS(RenderHelper_1.svgNS, \"tspan\");\r\n parent.appendChild(tSpan);\r\n this.prepareTSpanElement(tSpan);\r\n return tSpan;\r\n };\r\n TextPrimitive.prototype.prepareTSpanElements = function (element) {\r\n for (var i = 0; i < element.childNodes.length; i++) {\r\n var tSpan = element.childNodes[i];\r\n this.prepareTSpanElement(tSpan);\r\n }\r\n var firstTSpan = element.firstChild;\r\n if (firstTSpan)\r\n this.prepareFirstTSpanElement(firstTSpan, element.childNodes.length);\r\n };\r\n TextPrimitive.prototype.prepareTSpanElement = function (tSpan) {\r\n this.renderHelper.prepareTSpanElement(tSpan, this.x, this.y);\r\n };\r\n TextPrimitive.prototype.prepareFirstTSpanElement = function (tSpan, lineCount) {\r\n this.renderHelper.prepareFirstTSpanElement(tSpan, lineCount);\r\n };\r\n TextPrimitive.prototype.applyElementStyleProperties = function (element) {\r\n this.applyElementStylePropertiesCore(element, this.reverseTextAhchor);\r\n };\r\n Object.defineProperty(TextPrimitive.prototype, \"fitToSize\", {\r\n get: function () { return this.renderHelper.fitToSize; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n TextPrimitive.prototype.createRenderHelper = function () {\r\n switch (this.angle) {\r\n case TextAngle.Angle90deg:\r\n return new TextPrimitive90degRenderHelper(this);\r\n case TextAngle.Angle180deg:\r\n return new TextPrimitive180degRenderHelper(this);\r\n case TextAngle.Angle270deg:\r\n return new TextPrimitive270degRenderHelper(this);\r\n default:\r\n return new TextPrimitiveRenderHelper(this);\r\n }\r\n };\r\n TextPrimitive.baselineCorrection = 0.35;\r\n return TextPrimitive;\r\n}(Primitive_1.SvgPrimitive));\r\nexports.TextPrimitive = TextPrimitive;\r\nvar TextPrimitiveRenderHelper = /** @class */ (function () {\r\n function TextPrimitiveRenderHelper(primitive) {\r\n this.primitive = primitive;\r\n }\r\n Object.defineProperty(TextPrimitiveRenderHelper.prototype, \"textWidth\", {\r\n get: function () { return this.primitive.textWidth; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextPrimitiveRenderHelper.prototype, \"textHeight\", {\r\n get: function () { return this.primitive.textHeight; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextPrimitiveRenderHelper.prototype, \"fitToSize\", {\r\n get: function () { return this.textWidth; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextPrimitiveRenderHelper.prototype, \"textAnchor\", {\r\n get: function () { return this.primitive.style[\"text-anchor\"]; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextPrimitiveRenderHelper.prototype, \"textSpacing\", {\r\n get: function () { return this.primitive.textSpacing; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextPrimitiveRenderHelper.prototype, \"angle\", {\r\n get: function () { return undefined; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextPrimitiveRenderHelper.prototype, \"needRotation\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n TextPrimitiveRenderHelper.prototype.prepareMainElement = function (element, x, y) {\r\n if (this.needRotation)\r\n element.setAttribute(\"transform\", \"rotate(\" + this.angle + \", \" +\r\n unit_converter_1.UnitConverter.twipsToPixels(x) + \", \" + unit_converter_1.UnitConverter.twipsToPixels(y) + \")\");\r\n };\r\n TextPrimitiveRenderHelper.prototype.prepareTSpanElement = function (tSpan, x, y) {\r\n this.primitive.setUnitAttribute(tSpan, \"x\", x);\r\n tSpan.setAttribute(\"dy\", TextUtils_1.LINE_HEIGHT + \"em\");\r\n };\r\n TextPrimitiveRenderHelper.prototype.prepareFirstTSpanElement = function (tSpan, lineCount) {\r\n var dy = -((lineCount - 1) / 2) + TextPrimitive.baselineCorrection;\r\n tSpan.setAttribute(\"dy\", dy.toFixed(2) + \"em\");\r\n };\r\n TextPrimitiveRenderHelper.prototype.getTextX = function (x) {\r\n if (!this.textAnchor || this.textAnchor === \"middle\")\r\n return x + this.textWidth / 2;\r\n else if (this.textAnchor === \"end\")\r\n return x + this.textWidth - this.textSpacing;\r\n else if (this.textAnchor === \"start\")\r\n return x + this.textSpacing;\r\n return x;\r\n };\r\n TextPrimitiveRenderHelper.prototype.getTextY = function (y) {\r\n return y + this.textHeight / 2;\r\n };\r\n TextPrimitiveRenderHelper.prototype.setUnitAttribute = function (element, key, value) {\r\n this.primitive.setUnitAttribute(element, key, value);\r\n };\r\n return TextPrimitiveRenderHelper;\r\n}());\r\nexports.TextPrimitiveRenderHelper = TextPrimitiveRenderHelper;\r\nvar TextPrimitive90degRenderHelper = /** @class */ (function (_super) {\r\n __extends(TextPrimitive90degRenderHelper, _super);\r\n function TextPrimitive90degRenderHelper(primitive) {\r\n return _super.call(this, primitive) || this;\r\n }\r\n Object.defineProperty(TextPrimitive90degRenderHelper.prototype, \"fitToSize\", {\r\n get: function () { return this.textHeight; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextPrimitive90degRenderHelper.prototype, \"angle\", {\r\n get: function () { return 90; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextPrimitive90degRenderHelper.prototype, \"needRotation\", {\r\n get: function () { return true; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n TextPrimitive90degRenderHelper.prototype.getTextX = function (x) {\r\n return x + this.textWidth / 2;\r\n };\r\n TextPrimitive90degRenderHelper.prototype.getTextY = function (y) {\r\n if (!this.textAnchor || this.textAnchor === \"middle\")\r\n return y + this.textHeight / 2;\r\n else if (this.textAnchor === \"end\")\r\n return y + this.textHeight - this.textSpacing;\r\n else if (this.textAnchor === \"start\")\r\n return y + this.textSpacing;\r\n return y;\r\n };\r\n return TextPrimitive90degRenderHelper;\r\n}(TextPrimitiveRenderHelper));\r\nexports.TextPrimitive90degRenderHelper = TextPrimitive90degRenderHelper;\r\nvar TextPrimitive180degRenderHelper = /** @class */ (function (_super) {\r\n __extends(TextPrimitive180degRenderHelper, _super);\r\n function TextPrimitive180degRenderHelper(primitive) {\r\n return _super.call(this, primitive) || this;\r\n }\r\n Object.defineProperty(TextPrimitive180degRenderHelper.prototype, \"angle\", {\r\n get: function () { return 180; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextPrimitive180degRenderHelper.prototype, \"needRotation\", {\r\n get: function () { return true; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n TextPrimitive180degRenderHelper.prototype.getTextX = function (x) {\r\n if (!this.textAnchor || this.textAnchor === \"middle\")\r\n return x + this.textWidth / 2;\r\n else if (this.textAnchor === \"start\")\r\n return x + this.textWidth - this.textSpacing;\r\n else if (this.textAnchor === \"end\")\r\n return x + this.textSpacing;\r\n return x;\r\n };\r\n return TextPrimitive180degRenderHelper;\r\n}(TextPrimitiveRenderHelper));\r\nexports.TextPrimitive180degRenderHelper = TextPrimitive180degRenderHelper;\r\nvar TextPrimitive270degRenderHelper = /** @class */ (function (_super) {\r\n __extends(TextPrimitive270degRenderHelper, _super);\r\n function TextPrimitive270degRenderHelper(primitive) {\r\n return _super.call(this, primitive) || this;\r\n }\r\n Object.defineProperty(TextPrimitive270degRenderHelper.prototype, \"angle\", {\r\n get: function () { return 270; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n TextPrimitive270degRenderHelper.prototype.getTextY = function (y) {\r\n if (!this.textAnchor || this.textAnchor === \"middle\")\r\n return y + this.textHeight / 2;\r\n else if (this.textAnchor === \"start\")\r\n return y + this.textHeight - this.textSpacing;\r\n else if (this.textAnchor === \"end\")\r\n return y + this.textSpacing;\r\n return y;\r\n };\r\n return TextPrimitive270degRenderHelper;\r\n}(TextPrimitive90degRenderHelper));\r\nexports.TextPrimitive270degRenderHelper = TextPrimitive270degRenderHelper;\r\n\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.getLineHeight = exports.getTextHeight = exports.getTextLineSize = exports.getOptimalTextRectangle = exports.TEXTRECT_RATIO_EPS = exports.textToParagraphs = exports.textToWords = exports.wordsByLines = exports.LINE_HEIGHT = void 0;\r\nvar Utils_1 = __webpack_require__(3);\r\nvar size_1 = __webpack_require__(2);\r\nvar Data_1 = __webpack_require__(45);\r\nvar WHITESPACES = /\\s/gm;\r\nexports.LINE_HEIGHT = 1.05;\r\nfunction wordsByLines(absLineWidth, words, measureWords) {\r\n if (words.length === 1)\r\n return words;\r\n var measuredWords = measureWords();\r\n var spaceWidth = measuredWords.words[\" \"].width;\r\n var result = [];\r\n var lastLineWidth = 0;\r\n var lastLineIndex = -1;\r\n for (var i = 0; i < words.length; i++) {\r\n var word = words[i];\r\n var wordWidth = measuredWords.words[word].width;\r\n if (lastLineIndex === -1 || lastLineWidth + spaceWidth + wordWidth > absLineWidth) {\r\n lastLineIndex = result.push(word) - 1;\r\n lastLineWidth = wordWidth;\r\n }\r\n else {\r\n lastLineWidth += spaceWidth + wordWidth;\r\n result[lastLineIndex] += \" \" + word;\r\n }\r\n }\r\n return result;\r\n}\r\nexports.wordsByLines = wordsByLines;\r\nfunction textToWords(text) {\r\n return text.split(WHITESPACES).filter(function (t) { return t.length; });\r\n}\r\nexports.textToWords = textToWords;\r\nfunction textToParagraphs(text) {\r\n return text.split(\"\\n\");\r\n}\r\nexports.textToParagraphs = textToParagraphs;\r\nexports.TEXTRECT_RATIO_EPS = 1.2;\r\nvar TEXTRECT_WIDTH_DIFF_EPS = 1;\r\nfunction getOptimalTextRectangle(text, style, owner, measurer, initialSize, keepRatio, minWidth, maxWidth, minHeight, maxHeight) {\r\n if (minWidth === void 0) { minWidth = 0; }\r\n if (maxWidth === void 0) { maxWidth = Number.MAX_SAFE_INTEGER || Number.MAX_VALUE; }\r\n if (minHeight === void 0) { minHeight = 0; }\r\n if (maxHeight === void 0) { maxHeight = Number.MAX_SAFE_INTEGER || Number.MAX_VALUE; }\r\n if (!text)\r\n return new size_1.Size(Data_1.Data.byRange(initialSize.width, minWidth, maxWidth), Data_1.Data.byRange(initialSize.height, minHeight, maxHeight));\r\n if (minWidth > maxWidth || minHeight > maxHeight)\r\n throw new Error(\"Min size cannot exceed max size\");\r\n if (minWidth === maxWidth && minHeight === maxHeight)\r\n return new size_1.Size(minWidth, minHeight);\r\n var measureResult = measurer.measureWords(text, style, owner);\r\n var paragraphs = textToParagraphs(text);\r\n var maxWordWidth = Object.keys(measureResult.words).reduce(function (acc, word) { return Math.max(acc, measureResult.words[word].width); }, 0);\r\n var xRange = new Utils_1.Range(Data_1.Data.byRange(Math.max(initialSize.width, maxWordWidth), minWidth, maxWidth), maxWidth);\r\n var yRange = new Utils_1.Range(Data_1.Data.byRange(initialSize.height, minHeight, maxHeight), maxHeight);\r\n if (maxWordWidth <= initialSize.width && getTextHeight(paragraphs, initialSize.width, measureResult, false) <= initialSize.height && xRange.includes(initialSize.width) && yRange.includes(initialSize.height))\r\n return initialSize;\r\n var ratio = initialSize.width / initialSize.height;\r\n return getOptimalTextRectangleCore(paragraphs, measureResult, ratio, xRange, yRange, keepRatio);\r\n}\r\nexports.getOptimalTextRectangle = getOptimalTextRectangle;\r\nfunction getOptimalTextRectangleCore(paragraphs, measureResult, initRatio, xRange, yRange, incHeightToRatio) {\r\n var _a;\r\n var maxParagraphWidth = paragraphs.reduce(function (acc, val) { return Math.max(acc, getTextLineSize(val, measureResult).width); }, 0);\r\n var size = new size_1.Size(0, 0);\r\n var newSize = new size_1.Size(0, 0);\r\n var newFitToHeight;\r\n var deltaWidth = 0;\r\n var error = 0;\r\n for (var attempt = 0; attempt < 5; attempt++) {\r\n if (attempt === 0)\r\n newSize.width = calcByFit(maxParagraphWidth, xRange)[0];\r\n else if (Math.abs(deltaWidth) > TEXTRECT_WIDTH_DIFF_EPS)\r\n newSize.width = calcByFit(size.width + deltaWidth, xRange)[0];\r\n else\r\n break;\r\n _a = calcHeight(paragraphs, newSize.width, measureResult, yRange), newSize.height = _a[0], newFitToHeight = _a[1];\r\n if (attempt === 0) {\r\n size = newSize.clone();\r\n error = (size.width / size.height) / initRatio;\r\n }\r\n if (attempt === 0 && !newFitToHeight)\r\n break;\r\n var newRatio = (newSize.width / newSize.height);\r\n var newError = newRatio / initRatio;\r\n if (attempt === 0)\r\n deltaWidth = (newSize.width / newError - newSize.width) / 2;\r\n else if (!newFitToHeight)\r\n deltaWidth /= 2;\r\n else if (!compareRatio(initRatio, newRatio, exports.TEXTRECT_RATIO_EPS)) {\r\n size = newSize.clone();\r\n error = newError;\r\n break;\r\n }\r\n else if (compareRatio(error, newError, 1) < 0) {\r\n size = newSize.clone();\r\n error = newError;\r\n deltaWidth = (newSize.width / newError - newSize.width) / 2;\r\n if (newError < 1)\r\n deltaWidth /= 2;\r\n }\r\n else\r\n break;\r\n }\r\n if (incHeightToRatio)\r\n size.height = Data_1.Data.byRange(size.width / initRatio, size.height, yRange.to);\r\n return size;\r\n}\r\nfunction compareRatio(a, b, eps) {\r\n var an = a < 1 ? 1 / a : a;\r\n var bn = b < 1 ? 1 / b : b;\r\n var e = an / bn;\r\n var en = e < 1 ? 1 / e : e;\r\n return en <= eps ? 0 : bn > an ? 1 : -1;\r\n}\r\nfunction calcHeight(paragraphs, width, measureResult, yRange) {\r\n var height = getTextHeight(paragraphs, width, measureResult, false);\r\n return calcByFit(height, yRange);\r\n}\r\nfunction calcByFit(value, range) {\r\n return [\r\n Data_1.Data.byRange(value, range.from, range.to),\r\n value <= range.to\r\n ];\r\n}\r\nfunction getTextLineSize(text, measureResult) {\r\n var words = textToWords(text);\r\n return words.reduce(function (acc, word, index) {\r\n var wordSize = measureResult.words[word];\r\n acc.width += wordSize.width;\r\n acc.height = Math.max(acc.height, wordSize.height);\r\n if (index > 0)\r\n acc.width += measureResult.words[\" \"].width;\r\n return acc;\r\n }, new size_1.Size(0, 0));\r\n}\r\nexports.getTextLineSize = getTextLineSize;\r\nfunction getTextHeight(textOrParagraphs, width, measureResult, emptyTextAsSingleLine) {\r\n var paragraphs = Array.isArray(textOrParagraphs) ? textOrParagraphs : textToParagraphs(textOrParagraphs);\r\n if (emptyTextAsSingleLine && (!paragraphs.length || (paragraphs.length === 1 && !paragraphs[0].length)))\r\n return getLineHeight(measureResult);\r\n return paragraphs.reduce(function (acc, line) { return acc + wordsByLines(width, textToWords(line), function () { return measureResult; }).length; }, 0) * getLineHeight(measureResult);\r\n}\r\nexports.getTextHeight = getTextHeight;\r\nfunction getLineHeight(measureResult) {\r\n return measureResult.fontSize * exports.LINE_HEIGHT;\r\n}\r\nexports.getLineHeight = getLineHeight;\r\n\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.AddConnectorHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar AddConnectorHistoryItem = /** @class */ (function (_super) {\r\n __extends(AddConnectorHistoryItem, _super);\r\n function AddConnectorHistoryItem(points, dataKey, renderPointsContext) {\r\n var _this = _super.call(this) || this;\r\n _this.points = points;\r\n _this.dataKey = dataKey;\r\n _this.renderPointsContext = renderPointsContext;\r\n return _this;\r\n }\r\n AddConnectorHistoryItem.prototype.redo = function (manipulator) {\r\n var connector = new Connector_1.Connector(this.points);\r\n if (this.dataKey !== undefined)\r\n connector.dataKey = this.dataKey;\r\n if (this.renderPointsContext !== undefined)\r\n connector.replaceRenderPoints(this.renderPointsContext);\r\n manipulator.addConnector(connector, this.connectorKey);\r\n this.connectorKey = connector.key;\r\n };\r\n AddConnectorHistoryItem.prototype.undo = function (manipulator) {\r\n var connector = manipulator.model.findConnector(this.connectorKey);\r\n manipulator.deleteConnector(connector);\r\n };\r\n return AddConnectorHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.AddConnectorHistoryItem = AddConnectorHistoryItem;\r\n\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DeleteConnectionHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar DeleteConnectionHistoryItem = /** @class */ (function (_super) {\r\n __extends(DeleteConnectionHistoryItem, _super);\r\n function DeleteConnectionHistoryItem(connector, position) {\r\n var _this = _super.call(this) || this;\r\n _this.connectorKey = connector.key;\r\n _this.position = position;\r\n _this.itemKey = connector.getExtremeItem(_this.position).key;\r\n return _this;\r\n }\r\n DeleteConnectionHistoryItem.prototype.redo = function (manipulator) {\r\n var connector = manipulator.model.findConnector(this.connectorKey);\r\n this.oldConnectionPointIndex = this.position === Connector_1.ConnectorPosition.Begin ? connector.beginConnectionPointIndex : connector.endConnectionPointIndex;\r\n manipulator.deleteConnection(connector, this.position);\r\n };\r\n DeleteConnectionHistoryItem.prototype.undo = function (manipulator) {\r\n var connector = manipulator.model.findConnector(this.connectorKey);\r\n var item = manipulator.model.findItem(this.itemKey);\r\n manipulator.addConnection(connector, item, this.oldConnectionPointIndex, this.position);\r\n };\r\n return DeleteConnectionHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.DeleteConnectionHistoryItem = DeleteConnectionHistoryItem;\r\n\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SetSelectionHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar SetSelectionHistoryItem = /** @class */ (function (_super) {\r\n __extends(SetSelectionHistoryItem, _super);\r\n function SetSelectionHistoryItem(selection, selectedKeys, forceChange) {\r\n var _this = _super.call(this) || this;\r\n _this.selectedKeys = selectedKeys;\r\n _this.selection = selection;\r\n _this.forceChange = forceChange;\r\n return _this;\r\n }\r\n SetSelectionHistoryItem.prototype.redo = function () {\r\n this.oldSelection = this.selection.getKeys().slice(0);\r\n this.selection.set(this.selectedKeys, this.forceChange);\r\n };\r\n SetSelectionHistoryItem.prototype.undo = function () {\r\n this.selection.set(this.oldSelection, this.forceChange);\r\n };\r\n return SetSelectionHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.SetSelectionHistoryItem = SetSelectionHistoryItem;\r\n\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeConnectorTextHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar ChangeConnectorTextHistoryItem = /** @class */ (function (_super) {\r\n __extends(ChangeConnectorTextHistoryItem, _super);\r\n function ChangeConnectorTextHistoryItem(connector, position, text) {\r\n var _this = _super.call(this) || this;\r\n _this.connectorKey = connector.key;\r\n _this.text = text;\r\n _this.position = position;\r\n return _this;\r\n }\r\n ChangeConnectorTextHistoryItem.prototype.redo = function (manipulator) {\r\n var connector = manipulator.model.findConnector(this.connectorKey);\r\n this.oldText = connector.getText(this.position);\r\n manipulator.changeConnectorText(connector, this.text, this.position);\r\n };\r\n ChangeConnectorTextHistoryItem.prototype.undo = function (manipulator) {\r\n var connector = manipulator.model.findConnector(this.connectorKey);\r\n manipulator.changeConnectorText(connector, this.oldText, this.position);\r\n };\r\n return ChangeConnectorTextHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.ChangeConnectorTextHistoryItem = ChangeConnectorTextHistoryItem;\r\n\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeStyleTextHistoryItem = void 0;\r\nvar ChangeStyleHistoryItemBase_1 = __webpack_require__(119);\r\nvar ChangeStyleTextHistoryItem = /** @class */ (function (_super) {\r\n __extends(ChangeStyleTextHistoryItem, _super);\r\n function ChangeStyleTextHistoryItem(itemKey, styleProperty, styleValue) {\r\n return _super.call(this, itemKey, styleProperty, styleValue) || this;\r\n }\r\n ChangeStyleTextHistoryItem.prototype.redo = function (manipulator) {\r\n var item = manipulator.model.findItem(this.itemKey);\r\n this.oldStyleValue = item.styleText[this.styleProperty];\r\n manipulator.changeStyleText(item, this.styleProperty, this.styleValue);\r\n };\r\n ChangeStyleTextHistoryItem.prototype.undo = function (manipulator) {\r\n var item = manipulator.model.findItem(this.itemKey);\r\n manipulator.changeStyleText(item, this.styleProperty, this.oldStyleValue);\r\n };\r\n return ChangeStyleTextHistoryItem;\r\n}(ChangeStyleHistoryItemBase_1.ChangeStyleHistoryItemBase));\r\nexports.ChangeStyleTextHistoryItem = ChangeStyleTextHistoryItem;\r\n\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.GraphIterator = exports.FastGraph = exports.Graph = void 0;\r\nvar Structures_1 = __webpack_require__(39);\r\nvar Shape_1 = __webpack_require__(13);\r\nvar search_1 = __webpack_require__(42);\r\nvar ListUtils_1 = __webpack_require__(90);\r\nvar GraphBase = /** @class */ (function () {\r\n function GraphBase(nodes, edges) {\r\n this.nodeMap = {};\r\n this.edgeMap = {};\r\n this.nodes = [];\r\n this.edges = [];\r\n this.onInit();\r\n nodes.forEach(this.addNode.bind(this));\r\n edges.forEach(this.addEdge.bind(this));\r\n }\r\n Object.defineProperty(GraphBase.prototype, \"items\", {\r\n get: function () {\r\n return this.nodes.map(this.getNode.bind(this));\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n GraphBase.prototype.onInit = function () { };\r\n GraphBase.prototype.addEdge = function (edge) {\r\n this.edgeMap[edge.key] = edge;\r\n this.edges.push(edge);\r\n };\r\n GraphBase.prototype.addNode = function (node) {\r\n this.nodeMap[node.key] = node;\r\n this.nodes.push(node.key);\r\n };\r\n GraphBase.prototype.getNode = function (key) {\r\n return this.nodeMap[key];\r\n };\r\n GraphBase.prototype.getEdge = function (key) {\r\n return this.edgeMap[key];\r\n };\r\n GraphBase.prototype.isEmpty = function () {\r\n return !this.nodes.length && !this.edges.length;\r\n };\r\n GraphBase.prototype.getAdjacentEdges = function (nodeKey, connectionMode) {\r\n if (connectionMode === void 0) { connectionMode = Structures_1.ConnectionMode.OutgoingAndIncoming; }\r\n return this.edges.filter(function (e) {\r\n return connectionMode & Structures_1.ConnectionMode.Incoming && e.to === nodeKey ||\r\n connectionMode & Structures_1.ConnectionMode.Outgoing && e.from === nodeKey;\r\n });\r\n };\r\n return GraphBase;\r\n}());\r\nvar Graph = /** @class */ (function (_super) {\r\n __extends(Graph, _super);\r\n function Graph() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Graph.prototype.cast = function (castNode, castEdge) {\r\n var _this = this;\r\n var newNodes = this.nodes.map(function (nk) { return castNode(_this.getNode(nk)); });\r\n var newEdges = this.edges.map(function (e) { return castEdge ? castEdge(e) : e; });\r\n return new Graph(newNodes, newEdges);\r\n };\r\n Graph.prototype.getConnectedComponents = function () {\r\n var iterator = this.createIterator(Structures_1.ConnectionMode.OutgoingAndIncoming);\r\n iterator.visitEachEdgeOnce = true;\r\n var components = [];\r\n var _loop_1 = function (i) {\r\n var nodes = [];\r\n var edges = [];\r\n iterator.onNode = function (n) { return nodes.push(n); };\r\n iterator.onEdge = function (e) { return edges.push(e); };\r\n iterator.iterate(this_1.nodes[i]);\r\n if (nodes.length)\r\n components.push(new Graph(nodes, edges));\r\n };\r\n var this_1 = this;\r\n for (var i = 0; i < this.nodes.length; i++) {\r\n _loop_1(i);\r\n }\r\n return components;\r\n };\r\n Graph.prototype.createIterator = function (connectionMode) {\r\n var iterator = new GraphIterator(this, connectionMode);\r\n iterator.comparer = function (a, b) { return a.weight - b.weight; };\r\n return iterator;\r\n };\r\n Graph.prototype.getSpanningGraph = function (rootKey, connectionMode, edgeWeightFunc) {\r\n var _this = this;\r\n if (edgeWeightFunc === void 0) { edgeWeightFunc = undefined; }\r\n if (!this.nodes.length)\r\n return new Graph([], []);\r\n if (!edgeWeightFunc)\r\n edgeWeightFunc = function (e) { return e.weight; };\r\n var sortedAdjacentEdges = [];\r\n var spanningTreeNodesSet = new ListUtils_1.HashSet();\r\n var spanningTreeEdgesSet = new ListUtils_1.HashSet([], function (e) { return e.getHashKey(); });\r\n this.addNodeToSpanningGraph(rootKey, connectionMode, sortedAdjacentEdges, spanningTreeNodesSet, spanningTreeEdgesSet, edgeWeightFunc);\r\n while (sortedAdjacentEdges.length && spanningTreeNodesSet.length !== this.nodes.length) {\r\n var minWeighedEdge = sortedAdjacentEdges.shift();\r\n spanningTreeEdgesSet.tryPush(minWeighedEdge);\r\n var node = spanningTreeNodesSet.contains(minWeighedEdge.from) ? minWeighedEdge.to : minWeighedEdge.from;\r\n this.addNodeToSpanningGraph(node, connectionMode, sortedAdjacentEdges, spanningTreeNodesSet, spanningTreeEdgesSet, edgeWeightFunc);\r\n sortedAdjacentEdges = sortedAdjacentEdges.filter(function (e) { return !spanningTreeNodesSet.contains(e.from) || !spanningTreeNodesSet.contains(e.to); });\r\n }\r\n return new Graph(spanningTreeNodesSet.list().map(function (nk) { return _this.getNode(nk); }), spanningTreeEdgesSet.list());\r\n };\r\n Graph.prototype.addNodeToSpanningGraph = function (nodeKey, connectionMode, adjacentEdges, spanningTreeNodesSet, spanningTreeEdgesSet, edgeWeightFunc) {\r\n spanningTreeNodesSet.tryPush(nodeKey);\r\n this.getAdjacentEdges(nodeKey, connectionMode)\r\n .filter(function (e) { return !spanningTreeEdgesSet.contains(e); })\r\n .forEach(function (e) {\r\n var weight = edgeWeightFunc(e);\r\n var pos = search_1.SearchUtils.binaryIndexOf(adjacentEdges, function (a) { return a.weight - weight; });\r\n pos = pos < 0 ? ~pos : pos;\r\n while (pos < adjacentEdges.length && edgeWeightFunc(adjacentEdges[pos]) === weight)\r\n pos++;\r\n adjacentEdges.splice(pos, 0, new Structures_1.Edge(e.key, e.from, e.to, weight));\r\n });\r\n };\r\n Graph.create = function (shapes, connectors) {\r\n var nodes = shapes;\r\n var edges = connectors\r\n .filter(function (i) { return i.beginItem && i.endItem instanceof Shape_1.Shape && i.endItem && i.endItem instanceof Shape_1.Shape && i.beginItem !== i.endItem; }) // TBD: ShapeItem?\r\n .map(function (i) { return new Structures_1.Edge(i.key, i.beginItem && i.beginItem.key, i.endItem && i.endItem.key); });\r\n return new Graph(nodes, edges);\r\n };\r\n return Graph;\r\n}(GraphBase));\r\nexports.Graph = Graph;\r\nvar FastGraph = /** @class */ (function (_super) {\r\n __extends(FastGraph, _super);\r\n function FastGraph() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FastGraph.prototype.onInit = function () {\r\n this.parentToChildren = {};\r\n this.childToParents = {};\r\n };\r\n FastGraph.prototype.addEdge = function (edge) {\r\n _super.prototype.addEdge.call(this, edge);\r\n (this.parentToChildren[edge.from] || (this.parentToChildren[edge.from] = [])).push(edge.to);\r\n (this.childToParents[edge.to] || (this.childToParents[edge.to] = [])).push(edge.from);\r\n };\r\n FastGraph.prototype.getChildren = function (parent) {\r\n return this.parentToChildren[parent] || [];\r\n };\r\n FastGraph.prototype.getParents = function (child) {\r\n return this.childToParents[child] || [];\r\n };\r\n FastGraph.prototype.createIterator = function (connectionMode) {\r\n return new GraphIterator(this, connectionMode);\r\n };\r\n return FastGraph;\r\n}(GraphBase));\r\nexports.FastGraph = FastGraph;\r\nvar GraphIterator = /** @class */ (function () {\r\n function GraphIterator(graph, connectionMode) {\r\n if (connectionMode === void 0) { connectionMode = Structures_1.ConnectionMode.OutgoingAndIncoming; }\r\n this.graph = graph;\r\n this.connectionMode = connectionMode;\r\n this.visitEachEdgeOnce = true;\r\n this.visitEachNodeOnce = true;\r\n this.visitedNodes = {};\r\n this.visitedEdges = {};\r\n }\r\n GraphIterator.prototype.iterate = function (nodeKey) {\r\n if (!this.visitEachNodeOnce && !this.visitEachEdgeOnce && !this.skipNode)\r\n throw \"skipNode or visitEachNodeOnce or visitEachEdgeOnce must be set to avoid SOF\";\r\n this.iterateCore(nodeKey);\r\n };\r\n GraphIterator.prototype.iterateCore = function (nodeKey) {\r\n var _this = this;\r\n var node = this.graph.getNode(nodeKey);\r\n if (!node || (this.skipNode && this.skipNode(node)) || (this.visitEachNodeOnce && this.isNodeVisited(nodeKey)))\r\n return;\r\n this.visitedNodes[nodeKey] = true;\r\n this.onNode && this.onNode(node);\r\n var edges = this.graph.getAdjacentEdges(nodeKey, this.connectionMode);\r\n if (this.skipEdge)\r\n edges = edges.filter(function (e) { return !_this.skipEdge(e); });\r\n if (this.connectionMode & Structures_1.ConnectionMode.Outgoing) {\r\n var outgoing = edges.filter(function (e) { return e.from === nodeKey; });\r\n if (this.comparer)\r\n outgoing.sort(this.comparer);\r\n outgoing.forEach(function (e) {\r\n if (_this.visitEachEdgeOnce && _this.visitedEdges[e.key])\r\n return;\r\n _this.visitedEdges[e.key] = true;\r\n _this.onEdge && _this.onEdge(e, true);\r\n _this.iterateCore(e.to);\r\n _this.onAfterEdge && _this.onAfterEdge(e, true);\r\n });\r\n }\r\n this.onAllEdges && this.onAllEdges(node, true);\r\n if (this.connectionMode & Structures_1.ConnectionMode.Incoming) {\r\n var incoming = edges.filter(function (e) { return e.to === nodeKey; });\r\n if (this.comparer)\r\n incoming.sort(this.comparer);\r\n incoming.forEach(function (e) {\r\n if (_this.visitEachEdgeOnce && _this.visitedEdges[e.key])\r\n return;\r\n _this.visitedEdges[e.key] = true;\r\n _this.onEdge && _this.onEdge(e, false);\r\n _this.iterateCore(e.from);\r\n _this.onAfterEdge && _this.onAfterEdge(e, false);\r\n });\r\n }\r\n this.onAllEdges && this.onAllEdges(node, false);\r\n };\r\n GraphIterator.prototype.isNodeVisited = function (nodeKey) {\r\n return !!this.visitedNodes[nodeKey];\r\n };\r\n GraphIterator.prototype.isEdgeVisited = function (edgeKey) {\r\n return !!this.visitedEdges[edgeKey];\r\n };\r\n return GraphIterator;\r\n}());\r\nexports.GraphIterator = GraphIterator;\r\n\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Margin = exports.EdgeLayout = exports.NodeLayout = exports.NodeInfo = void 0;\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar NodeInfo = /** @class */ (function () {\r\n function NodeInfo(key, margin, size, connectionPoints) {\r\n if (connectionPoints === void 0) { connectionPoints = []; }\r\n this.key = key;\r\n this.margin = margin;\r\n this.size = size;\r\n this.connectionPoints = connectionPoints;\r\n }\r\n return NodeInfo;\r\n}());\r\nexports.NodeInfo = NodeInfo;\r\nvar NodeLayout = /** @class */ (function () {\r\n function NodeLayout(info, position) {\r\n this.info = info;\r\n this.position = position;\r\n }\r\n Object.defineProperty(NodeLayout.prototype, \"key\", {\r\n get: function () { return this.info.key; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(NodeLayout.prototype, \"rectangle\", {\r\n get: function () {\r\n return rectangle_1.Rectangle.fromGeometry(this.position, this.info.size);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return NodeLayout;\r\n}());\r\nexports.NodeLayout = NodeLayout;\r\nvar EdgeLayout = /** @class */ (function () {\r\n function EdgeLayout(key, beginIndex, endIndex) {\r\n this.key = key;\r\n this.beginIndex = beginIndex;\r\n this.endIndex = endIndex;\r\n }\r\n return EdgeLayout;\r\n}());\r\nexports.EdgeLayout = EdgeLayout;\r\nvar Margin = /** @class */ (function () {\r\n function Margin(top, right, bottom, left) {\r\n if (right === void 0) { right = top; }\r\n if (bottom === void 0) { bottom = top; }\r\n if (left === void 0) { left = top; }\r\n this.top = top;\r\n this.right = right;\r\n this.bottom = bottom;\r\n this.left = left;\r\n }\r\n Margin.empty = function () {\r\n return new Margin(0);\r\n };\r\n return Margin;\r\n}());\r\nexports.Margin = Margin;\r\n\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.EllipseShapeDescription = void 0;\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar size_1 = __webpack_require__(2);\r\nvar EllipsePrimitive_1 = __webpack_require__(54);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar EllipseShapeDescription = /** @class */ (function (_super) {\r\n __extends(EllipseShapeDescription, _super);\r\n function EllipseShapeDescription(hasDefaultText) {\r\n return _super.call(this, new size_1.Size(ShapeDescription_1.ShapeDefaultDimension, ShapeDescription_1.ShapeDefaultDimension * 0.75), hasDefaultText) || this;\r\n }\r\n Object.defineProperty(EllipseShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.Ellipse; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(EllipseShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n EllipseShapeDescription.prototype.getTextRectangle = function (shape) {\r\n var textSize = Utils_1.GeometryUtils.getMaxRectangleEnscribedInEllipse(shape.size);\r\n return rectangle_1.Rectangle.fromGeometry(shape.position.clone().offset((shape.size.width - textSize.width) / 2, (shape.size.height - textSize.height) / 2), textSize);\r\n };\r\n EllipseShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\r\n return Utils_1.GeometryUtils.getEllipseByEnscribedRectangle(textSize);\r\n };\r\n EllipseShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var width = rect.width, height = rect.height;\r\n var _a = rect.center, cx = _a.x, cy = _a.y;\r\n return [\r\n new EllipsePrimitive_1.EllipsePrimitive(cx, cy, width / 2, height / 2, shape.style),\r\n ];\r\n };\r\n return EllipseShapeDescription;\r\n}(ShapeDescription_1.ShapeDescription));\r\nexports.EllipseShapeDescription = EllipseShapeDescription;\r\n\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Exporter = void 0;\r\nvar Shape_1 = __webpack_require__(13);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar Exporter = /** @class */ (function () {\r\n function Exporter() {\r\n }\r\n Exporter.prototype.export = function (model) {\r\n var obj = {\r\n page: {},\r\n connectors: [],\r\n shapes: []\r\n };\r\n obj.page = {\r\n \"width\": model.size.width,\r\n \"height\": model.size.height,\r\n \"pageColor\": model.pageColor,\r\n \"pageWidth\": model.pageSize.width,\r\n \"pageHeight\": model.pageSize.height,\r\n \"pageLandscape\": model.pageLandscape\r\n };\r\n this.exportItemsCore(model.items, obj);\r\n return JSON.stringify(obj);\r\n };\r\n Exporter.prototype.exportItems = function (items) {\r\n var obj = {\r\n connectors: [],\r\n shapes: []\r\n };\r\n this.exportItemsCore(items, obj);\r\n return JSON.stringify(obj);\r\n };\r\n Exporter.prototype.exportItemsCore = function (items, obj) {\r\n var _this = this;\r\n items.forEach(function (item) {\r\n if (item instanceof Shape_1.Shape)\r\n obj.shapes.push(_this.exportShape(item));\r\n else if (item instanceof Connector_1.Connector) {\r\n var connectorObj = _this.exportConnector(item);\r\n if (item.beginItem) {\r\n connectorObj[\"beginItemKey\"] = item.beginItem.key;\r\n connectorObj[\"beginConnectionPointIndex\"] = item.beginConnectionPointIndex;\r\n }\r\n if (item.endItem) {\r\n connectorObj[\"endItemKey\"] = item.endItem.key;\r\n connectorObj[\"endConnectionPointIndex\"] = item.endConnectionPointIndex;\r\n }\r\n obj.connectors.push(connectorObj);\r\n }\r\n });\r\n };\r\n Exporter.prototype.exportItem = function (item) {\r\n return {\r\n \"key\": item.key,\r\n \"dataKey\": item.dataKey,\r\n \"customData\": Utils_1.ObjectUtils.cloneObject(item.customData),\r\n \"locked\": item.locked,\r\n \"zIndex\": item.zIndex\r\n };\r\n };\r\n Exporter.prototype.exportShape = function (shape) {\r\n var result = this.exportItem(shape);\r\n result[\"type\"] = shape.description.key;\r\n result[\"text\"] = shape.text;\r\n if (!shape.image.isEmpty)\r\n result[\"imageUrl\"] = shape.image.exportUrl;\r\n result[\"x\"] = shape.position.x;\r\n result[\"y\"] = shape.position.y;\r\n result[\"width\"] = shape.size.width;\r\n result[\"height\"] = shape.size.height;\r\n var paramsObj = shape.parameters.toObject();\r\n if (paramsObj)\r\n result[\"parameters\"] = paramsObj;\r\n var styleObj = shape.style.toObject();\r\n if (styleObj)\r\n result[\"style\"] = styleObj;\r\n var styleTextObj = shape.styleText.toObject();\r\n if (styleTextObj)\r\n result[\"styleText\"] = styleTextObj;\r\n if (shape.children.length)\r\n result[\"childKeys\"] = shape.children.map(function (child) { return child.key; });\r\n if (!shape.expanded)\r\n result[\"expanded\"] = false;\r\n if (shape.expandedSize) {\r\n result[\"expandedWidth\"] = shape.expandedSize.width;\r\n result[\"expandedHeight\"] = shape.expandedSize.height;\r\n }\r\n return result;\r\n };\r\n Exporter.prototype.exportConnector = function (connector) {\r\n var result = this.exportItem(connector);\r\n result[\"points\"] = connector.points.map(function (p) { return { \"x\": p.x, \"y\": p.y }; });\r\n var textObj = connector.texts.toObject();\r\n if (textObj)\r\n result[\"texts\"] = textObj;\r\n var propsObj = connector.properties.toObject();\r\n if (propsObj)\r\n result[\"properties\"] = propsObj;\r\n var styleObj = connector.style.toObject();\r\n if (styleObj)\r\n result[\"style\"] = styleObj;\r\n var styleTextObj = connector.styleText.toObject();\r\n if (styleTextObj)\r\n result[\"styleText\"] = styleTextObj;\r\n return result;\r\n };\r\n // Images\r\n Exporter.prototype.exportSvg = function (modelSize, pageColor, exportManager, callback) {\r\n exportManager.exportSvgImage(modelSize, pageColor, callback);\r\n };\r\n Exporter.prototype.exportPng = function (modelSize, pageColor, exportManager, callback) {\r\n exportManager.exportPngImage(modelSize, pageColor, callback);\r\n };\r\n Exporter.prototype.exportJpg = function (modelSize, pageColor, exportManager, callback) {\r\n exportManager.exportJpgImage(modelSize, pageColor, callback);\r\n };\r\n return Exporter;\r\n}());\r\nexports.Exporter = Exporter;\r\n\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ToggleStyleTextPropertyCommand = void 0;\r\nvar StylePropertyCommandBase_1 = __webpack_require__(135);\r\nvar ChangeStyleTextHistoryItem_1 = __webpack_require__(68);\r\nvar Style_1 = __webpack_require__(27);\r\nvar ToggleStyleTextPropertyCommand = /** @class */ (function (_super) {\r\n __extends(ToggleStyleTextPropertyCommand, _super);\r\n function ToggleStyleTextPropertyCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ToggleStyleTextPropertyCommand.prototype.getValue = function () {\r\n var value = this.control.selection.inputPosition.getCurrentTextStylePropertyValue(this.getStyleProperty());\r\n return value === this.getStylePropertyValue();\r\n };\r\n ToggleStyleTextPropertyCommand.prototype.executeCore = function (state) {\r\n var _this = this;\r\n this.control.history.beginTransaction();\r\n var styleProperty = this.getStyleProperty();\r\n var styleValue = state.value ? Style_1.TextStyle.defaultInstance[styleProperty] : this.getStylePropertyValue();\r\n var items = this.control.selection.getSelectedItems();\r\n items.forEach(function (item) {\r\n _this.control.history.addAndRedo(new ChangeStyleTextHistoryItem_1.ChangeStyleTextHistoryItem(item.key, styleProperty, styleValue));\r\n });\r\n this.control.selection.inputPosition.setTextStylePropertyValue(this.getStyleProperty(), styleValue);\r\n this.control.history.endTransaction();\r\n return true;\r\n };\r\n ToggleStyleTextPropertyCommand.prototype.getStyleObj = function (item) {\r\n return item.styleText;\r\n };\r\n ToggleStyleTextPropertyCommand.prototype.getDefaultStyleObj = function () {\r\n return new Style_1.TextStyle();\r\n };\r\n return ToggleStyleTextPropertyCommand;\r\n}(StylePropertyCommandBase_1.StylePropertyCommandBase));\r\nexports.ToggleStyleTextPropertyCommand = ToggleStyleTextPropertyCommand;\r\n\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeStylePropertyCommand = void 0;\r\nvar ChangeStylePropertyCommandBase_1 = __webpack_require__(136);\r\nvar ChangeStyleHistoryItem_1 = __webpack_require__(89);\r\nvar Style_1 = __webpack_require__(27);\r\nvar ChangeStylePropertyCommand = /** @class */ (function (_super) {\r\n __extends(ChangeStylePropertyCommand, _super);\r\n function ChangeStylePropertyCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeStylePropertyCommand.prototype.getValue = function () {\r\n return this.control.selection.inputPosition.getCurrentStylePropertyValue(this.getStyleProperty());\r\n };\r\n ChangeStylePropertyCommand.prototype.getStyleObj = function (item) {\r\n return item.style;\r\n };\r\n ChangeStylePropertyCommand.prototype.getDefaultStyleObj = function () {\r\n return new Style_1.Style();\r\n };\r\n ChangeStylePropertyCommand.prototype.createHistoryItem = function (item, styleProperty, styleValue) {\r\n return new ChangeStyleHistoryItem_1.ChangeStyleHistoryItem(item.key, styleProperty, styleValue);\r\n };\r\n ChangeStylePropertyCommand.prototype.updateInputPosition = function (value) {\r\n this.control.selection.inputPosition.setStylePropertyValue(this.getStyleProperty(), value);\r\n };\r\n return ChangeStylePropertyCommand;\r\n}(ChangeStylePropertyCommandBase_1.ChangeStylePropertyCommandBase));\r\nexports.ChangeStylePropertyCommand = ChangeStylePropertyCommand;\r\n\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.AutoLayoutCommandBase = void 0;\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar Shape_1 = __webpack_require__(13);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar ScrollIntoViewHistoryItem_1 = __webpack_require__(251);\r\nvar AutoLayoutCommandBase = /** @class */ (function (_super) {\r\n __extends(AutoLayoutCommandBase, _super);\r\n function AutoLayoutCommandBase() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n AutoLayoutCommandBase.prototype.executeCore = function (state, parameter) {\r\n var _this = this;\r\n this.control.history.beginTransaction();\r\n var shapes = this.getAffectedShapes();\r\n var connectors = this.getAffectedConnectors();\r\n var settings = this.createLayoutSettings();\r\n var graphInfo = ModelUtils_1.ModelUtils.getGraphInfoByItems(this.control.model, shapes, connectors, false);\r\n if (graphInfo.length) {\r\n var rectangle_2;\r\n var model_1 = this.control.model;\r\n var commonRect = Utils_1.GeometryUtils.getCommonRectangle(Utils_1.Utils.flatten(graphInfo.map(function (g) { return g.graph.items.map(function (i) { return model_1.findItem(i.key); }); }))\r\n .concat(graphInfo.map(function (g) { return g.container; }))\r\n .filter(function (i) { return i; })\r\n .map(function (i) { return i.rectangle; }));\r\n this.control.history.addAndRedo(new ScrollIntoViewHistoryItem_1.ScrollIntoViewOnUndoHistoryItem(this.control.view, commonRect));\r\n graphInfo.forEach(function (info) {\r\n var layout = _this.createLayout(settings, info.graph);\r\n var nonGraphItems = ModelUtils_1.ModelUtils.getNonGraphItems(_this.control.model, info.container, layout.nodeToLayout, shapes, connectors);\r\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);\r\n rectangle_2 = rectangle_2 && rectangle_1.Rectangle.union(rectangle_2, layoutRect) || layoutRect;\r\n });\r\n ModelUtils_1.ModelUtils.tryUpdateModelRectangle(this.control.history);\r\n this.control.history.addAndRedo(new ScrollIntoViewHistoryItem_1.ScrollIntoViewOnRedoHistoryItem(this.control.view, rectangle_2));\r\n }\r\n this.control.history.endTransaction();\r\n return true;\r\n };\r\n AutoLayoutCommandBase.prototype.getAffectedShapes = function () {\r\n return this.control.selection.isEmpty() ?\r\n this.control.model.items.filter((function (i) { return i instanceof Shape_1.Shape && !i.locked; })) :\r\n this.control.selection.getSelectedShapes(false, true);\r\n };\r\n AutoLayoutCommandBase.prototype.getAffectedConnectors = function () {\r\n return this.control.selection.isEmpty() ?\r\n this.control.model.items.filter((function (i) { return i instanceof Connector_1.Connector && !i.locked; })) :\r\n this.control.selection.getSelectedConnectors(false, true);\r\n };\r\n return AutoLayoutCommandBase;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.AutoLayoutCommandBase = AutoLayoutCommandBase;\r\n\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangePagePropertyCommand = void 0;\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar ChangePagePropertyCommand = /** @class */ (function (_super) {\r\n __extends(ChangePagePropertyCommand, _super);\r\n function ChangePagePropertyCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangePagePropertyCommand.prototype.executeCore = function (state, parameter) {\r\n var _this = this;\r\n this.control.history.beginTransaction();\r\n var items = this.createHistoryItems(parameter);\r\n items.forEach(function (item) { _this.control.history.addAndRedo(item); });\r\n ModelUtils_1.ModelUtils.tryUpdateModelRectangle(this.control.history);\r\n this.control.history.endTransaction();\r\n return true;\r\n };\r\n ChangePagePropertyCommand.prototype.getItems = function () {\r\n return null;\r\n };\r\n return ChangePagePropertyCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.ChangePagePropertyCommand = ChangePagePropertyCommand;\r\n\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CanvasItemsManager = exports.CONNECTOR_CAN_MOVE = exports.NOT_VALID_CSSCLASS = void 0;\r\nvar ModelChange_1 = __webpack_require__(99);\r\nvar Event_1 = __webpack_require__(14);\r\nvar GroupPrimitive_1 = __webpack_require__(40);\r\nvar Utils_1 = __webpack_require__(17);\r\nvar Shape_1 = __webpack_require__(13);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar dom_1 = __webpack_require__(23);\r\nvar CanvasManager_1 = __webpack_require__(141);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nexports.NOT_VALID_CSSCLASS = \"not-valid\";\r\nexports.CONNECTOR_CAN_MOVE = \"can-move\";\r\nvar CanvasItemsManager = /** @class */ (function (_super) {\r\n __extends(CanvasItemsManager, _super);\r\n function CanvasItemsManager(viewElement, zoomLevel, dom) {\r\n var _this = _super.call(this, zoomLevel, dom) || this;\r\n _this.itemSelectorGroupContainers = {};\r\n _this.itemSelectorElements = {};\r\n _this.itemGroupContainers = {};\r\n _this.itemElements = {};\r\n _this.itemChildElements = {};\r\n _this.primitives = {};\r\n _this.selectorPrimitives = {};\r\n _this.selectedItems = {};\r\n _this.initializeContainerElements(viewElement);\r\n return _this;\r\n }\r\n CanvasItemsManager.prototype.initializeContainerElements = function (view) {\r\n this.itemSelectorsContainer = this.createAndChangePrimitiveElement(new GroupPrimitive_1.GroupPrimitive([], null), view);\r\n this.itemsContainer = this.createAndChangePrimitiveElement(new GroupPrimitive_1.GroupPrimitive([], null), view);\r\n };\r\n CanvasItemsManager.prototype.clear = function () {\r\n this.primitives = {};\r\n this.selectorPrimitives = {};\r\n Utils_1.RenderUtils.removeContent(this.itemSelectorsContainer);\r\n Utils_1.RenderUtils.removeContent(this.itemsContainer);\r\n this.itemSelectorGroupContainers = {};\r\n this.itemSelectorElements = {};\r\n this.itemGroupContainers = {};\r\n this.itemElements = {};\r\n this.itemChildElements = {};\r\n this.selectedItems = {};\r\n };\r\n CanvasItemsManager.prototype.applyChange = function (change) {\r\n var item = change.item;\r\n var itemParent = this.getItemParent(item.zIndex, item.container && item.container.key);\r\n if (!itemParent)\r\n return false;\r\n if (item instanceof Shape_1.Shape)\r\n this.applyShapeChange(item, change.type, change.isValid);\r\n else if (item instanceof Connector_1.Connector)\r\n this.applyConnectorChange(item, change.type, change.isValid);\r\n return true;\r\n };\r\n // Notifications\r\n CanvasItemsManager.prototype.setPointerEventsNone = function (element, value) {\r\n var style = element.style;\r\n if (style !== undefined && style.pointerEvents !== undefined)\r\n style.pointerEvents = value ? \"none\" : \"\";\r\n var childNodes = element.childNodes;\r\n for (var i = 0; i < childNodes.length; i++)\r\n this.setPointerEventsNone(childNodes[i], value);\r\n };\r\n CanvasItemsManager.prototype.notifyDragStart = function (itemKeys) {\r\n var _this = this;\r\n itemKeys.forEach(function (itemKey) {\r\n if (_this.itemElements[itemKey])\r\n _this.setPointerEventsNone(_this.itemElements[itemKey], true);\r\n if (_this.itemChildElements[itemKey])\r\n _this.setPointerEventsNone(_this.itemChildElements[itemKey], true);\r\n if (_this.itemSelectorElements[itemKey])\r\n _this.setPointerEventsNone(_this.itemSelectorElements[itemKey], true);\r\n });\r\n };\r\n CanvasItemsManager.prototype.notifyDragEnd = function (itemKeys) {\r\n var _this = this;\r\n itemKeys.forEach(function (itemKey) {\r\n if (_this.itemElements[itemKey])\r\n _this.setPointerEventsNone(_this.itemElements[itemKey], false);\r\n if (_this.itemChildElements[itemKey])\r\n _this.setPointerEventsNone(_this.itemChildElements[itemKey], false);\r\n if (_this.itemSelectorElements[itemKey])\r\n _this.setPointerEventsNone(_this.itemSelectorElements[itemKey], false);\r\n });\r\n };\r\n CanvasItemsManager.prototype.notifyDragScrollStart = function () { };\r\n CanvasItemsManager.prototype.notifyDragScrollEnd = function () { };\r\n CanvasItemsManager.prototype.notifyTextInputStart = function (item, text, position, size) {\r\n var element = this.itemElements[item.key];\r\n dom_1.DomUtils.addClassName(element, \"text-input\");\r\n };\r\n CanvasItemsManager.prototype.notifyTextInputEnd = function (item) {\r\n var element = this.itemElements[item.key];\r\n dom_1.DomUtils.removeClassName(element, \"text-input\");\r\n };\r\n CanvasItemsManager.prototype.notifyTextInputPermissionsCheck = function (item, allowed) {\r\n var element = this.itemElements[item.key];\r\n if (allowed)\r\n dom_1.DomUtils.removeClassName(element, exports.NOT_VALID_CSSCLASS);\r\n else\r\n dom_1.DomUtils.addClassName(element, exports.NOT_VALID_CSSCLASS);\r\n };\r\n CanvasItemsManager.prototype.notifyActualZoomChanged = function (actualZoom) {\r\n var scale = \"scale(\" + actualZoom + \")\";\r\n this.dom.changeByFunc(this.itemsContainer, function (e) { return e.setAttribute(\"transform\", scale); });\r\n this.dom.changeByFunc(this.itemSelectorsContainer, function (e) { return e.setAttribute(\"transform\", scale); });\r\n this.actualZoom = actualZoom;\r\n };\r\n CanvasItemsManager.prototype.notifyViewAdjusted = function (canvasOffset) { };\r\n // Primitives\r\n CanvasItemsManager.prototype.invalidatePrimitives = function (item) {\r\n if (this.primitives[item.key]) {\r\n this.primitives[item.key].forEach(function (primitive) {\r\n primitive.dispose();\r\n });\r\n delete this.primitives[item.key];\r\n }\r\n if (this.selectorPrimitives[item.key]) {\r\n this.selectorPrimitives[item.key].forEach(function (primitive) {\r\n primitive.dispose();\r\n });\r\n delete this.selectorPrimitives[item.key];\r\n }\r\n };\r\n CanvasItemsManager.prototype.getPrimitives = function (item) {\r\n if (!this.primitives[item.key])\r\n this.primitives[item.key] = item.createPrimitives();\r\n return this.primitives[item.key];\r\n };\r\n CanvasItemsManager.prototype.getSelectorPrimitives = function (item) {\r\n if (!this.selectorPrimitives[item.key])\r\n this.selectorPrimitives[item.key] = item.createSelectorPrimitives();\r\n return this.selectorPrimitives[item.key];\r\n };\r\n // Drawing\r\n CanvasItemsManager.prototype.getShapeSelectorClassName = function (shape) {\r\n var className = \"shape\";\r\n if (shape.enableChildren)\r\n className += \" container\";\r\n if (shape.isLocked)\r\n className += \" locked\";\r\n return className;\r\n };\r\n CanvasItemsManager.prototype.getShapeClassName = function (shape, isValid) {\r\n var selectorClassName = this.getShapeSelectorClassName(shape);\r\n return isValid ? selectorClassName : selectorClassName + \" \" + exports.NOT_VALID_CSSCLASS;\r\n };\r\n CanvasItemsManager.prototype.applyShapeChange = function (shape, type, isValid) {\r\n var key = shape.key;\r\n var containerKey = shape.container && shape.container.key;\r\n var itemSelectorParent = this.getItemSelectorGroupContainer(shape.zIndex, containerKey);\r\n var itemParent = this.getItemGroupContainer(shape.zIndex, containerKey);\r\n var itemClassName = this.getShapeClassName(shape, isValid);\r\n switch (type) {\r\n case ModelChange_1.ItemChangeType.Create:\r\n this.itemSelectorElements[key] = this.createItemElements(key, this.getSelectorPrimitives(shape), itemSelectorParent, this.getShapeSelectorClassName(shape), Event_1.MouseEventElementType.Shape);\r\n this.itemElements[key] = this.createItemElements(key, this.getPrimitives(shape), itemParent, itemClassName, Event_1.MouseEventElementType.Shape);\r\n if (shape.enableChildren) {\r\n this.itemChildElements[key] = this.createItemElements(key, [], itemParent, \"container-children\", Event_1.MouseEventElementType.Undefined);\r\n this.changeItemChildrenVisibility(this.itemChildElements[key], shape.expanded);\r\n }\r\n break;\r\n case ModelChange_1.ItemChangeType.Remove:\r\n this.removeItemCustomContent(this.itemSelectorElements[key], this.getSelectorPrimitives(shape));\r\n this.removeItemCustomContent(this.itemElements[key], this.getPrimitives(shape));\r\n this.invalidatePrimitives(shape);\r\n this.removeItemElements(this.itemSelectorElements[key]);\r\n delete this.itemSelectorElements[key];\r\n this.removeItemElements(this.itemElements[key]);\r\n delete this.itemElements[key];\r\n if (this.itemChildElements[key]) {\r\n this.removeItemElements(this.itemChildElements[key]);\r\n delete this.itemChildElements[key];\r\n delete this.itemGroupContainers[key];\r\n delete this.itemSelectorGroupContainers[key];\r\n }\r\n break;\r\n case ModelChange_1.ItemChangeType.UpdateStructure:\r\n case ModelChange_1.ItemChangeType.UpdateProperties:\r\n case ModelChange_1.ItemChangeType.Update:\r\n if (type !== ModelChange_1.ItemChangeType.Update) {\r\n if (type === ModelChange_1.ItemChangeType.UpdateStructure) {\r\n this.removeItemCustomContent(this.itemSelectorElements[key], this.getSelectorPrimitives(shape));\r\n this.removeItemCustomContent(this.itemElements[key], this.getPrimitives(shape));\r\n }\r\n this.invalidatePrimitives(shape);\r\n }\r\n this.changeItemElements(this.getSelectorPrimitives(shape), this.itemSelectorElements[key], type === ModelChange_1.ItemChangeType.UpdateStructure);\r\n this.changeItemElements(this.getPrimitives(shape), this.itemElements[key], type === ModelChange_1.ItemChangeType.UpdateStructure);\r\n this.changeItemClassName(this.itemElements[key], itemClassName);\r\n if (this.itemChildElements[key])\r\n this.changeItemChildrenVisibility(this.itemChildElements[key], shape.expanded);\r\n if (itemSelectorParent !== (this.itemSelectorElements[key] && this.itemSelectorElements[key].parentNode))\r\n this.moveItemElements(itemSelectorParent, this.itemSelectorElements[key]);\r\n if (itemParent !== (this.itemElements[key] && this.itemElements[key].parentNode))\r\n this.moveItemElements(itemParent, this.itemElements[key]);\r\n if (this.itemChildElements[key] && (itemParent !== this.itemChildElements[key].parentNode))\r\n this.moveItemElements(itemParent, this.itemChildElements[key]);\r\n break;\r\n case ModelChange_1.ItemChangeType.UpdateClassName:\r\n this.changeItemClassName(this.itemElements[key], itemClassName);\r\n }\r\n };\r\n CanvasItemsManager.prototype.getConnectorSelectorClassName = function (connector) {\r\n var selectorClassName = \"connector\";\r\n return ModelUtils_1.ModelUtils.canMoveConnector(this.selectedItems, connector) ? selectorClassName + \" \" + exports.CONNECTOR_CAN_MOVE : selectorClassName;\r\n };\r\n CanvasItemsManager.prototype.getConnectorClassName = function (connector, isValid) {\r\n var selectorMoveClassName = this.getConnectorSelectorClassName(connector);\r\n return isValid ? selectorMoveClassName : selectorMoveClassName + \" \" + exports.NOT_VALID_CSSCLASS;\r\n };\r\n CanvasItemsManager.prototype.applyConnectorChange = function (connector, type, isValid) {\r\n var key = connector.key;\r\n var containerKey = connector.container && connector.container.key;\r\n var itemSelectorParent = this.getItemSelectorGroupContainer(connector.zIndex, containerKey);\r\n var itemParent = this.getItemGroupContainer(connector.zIndex, containerKey);\r\n var className = this.getConnectorClassName(connector, isValid);\r\n switch (type) {\r\n case ModelChange_1.ItemChangeType.Create:\r\n this.itemSelectorElements[key] = this.createItemElements(key, this.getSelectorPrimitives(connector), itemSelectorParent, this.getConnectorSelectorClassName(connector), Event_1.MouseEventElementType.Connector);\r\n this.itemElements[key] = this.createItemElements(key, this.getPrimitives(connector), itemParent, className, Event_1.MouseEventElementType.Connector);\r\n break;\r\n case ModelChange_1.ItemChangeType.Remove:\r\n this.removeItemCustomContent(this.itemSelectorElements[key], this.getSelectorPrimitives(connector));\r\n this.removeItemCustomContent(this.itemElements[key], this.getPrimitives(connector));\r\n this.invalidatePrimitives(connector);\r\n this.removeItemElements(this.itemSelectorElements[key]);\r\n delete this.itemSelectorElements[key];\r\n this.removeItemElements(this.itemElements[key]);\r\n delete this.itemElements[key];\r\n break;\r\n case ModelChange_1.ItemChangeType.UpdateStructure:\r\n case ModelChange_1.ItemChangeType.UpdateProperties:\r\n case ModelChange_1.ItemChangeType.Update:\r\n if (type !== ModelChange_1.ItemChangeType.Update) {\r\n if (type === ModelChange_1.ItemChangeType.UpdateStructure) {\r\n this.removeItemCustomContent(this.itemSelectorElements[key], this.getSelectorPrimitives(connector));\r\n this.removeItemCustomContent(this.itemElements[key], this.getPrimitives(connector));\r\n }\r\n this.invalidatePrimitives(connector);\r\n }\r\n this.changeItemElements(this.getSelectorPrimitives(connector), this.itemSelectorElements[key], type === ModelChange_1.ItemChangeType.UpdateStructure);\r\n this.changeItemClassName(this.itemSelectorElements[key], this.getConnectorSelectorClassName(connector));\r\n this.changeItemElements(this.getPrimitives(connector), this.itemElements[key], type === ModelChange_1.ItemChangeType.UpdateStructure);\r\n this.changeItemClassName(this.itemElements[key], className);\r\n if (itemSelectorParent !== (this.itemSelectorElements[key] && this.itemSelectorElements[key].parentNode))\r\n this.moveItemElements(itemSelectorParent, this.itemSelectorElements[key]);\r\n if (itemParent !== (this.itemElements[key] && this.itemElements[key].parentNode))\r\n this.moveItemElements(itemParent, this.itemElements[key]);\r\n break;\r\n case ModelChange_1.ItemChangeType.UpdateClassName:\r\n this.changeItemClassName(this.itemSelectorElements[key], this.getConnectorSelectorClassName(connector));\r\n this.changeItemClassName(this.itemElements[key], className);\r\n }\r\n };\r\n CanvasItemsManager.prototype.createItemElements = function (key, primitives, parent, className, type) {\r\n var gEl = this.createAndChangePrimitiveElement(new GroupPrimitive_1.GroupPrimitive([], className, undefined, undefined, function (e) { return Utils_1.RenderUtils.setElementEventData(e, type, key); }), parent);\r\n this.createAndChangePrimitivesElements(primitives, gEl);\r\n return gEl;\r\n };\r\n CanvasItemsManager.prototype.changeItemElements = function (primitives, element, updateStructure) {\r\n if (updateStructure || primitives.length !== element.childNodes.length) {\r\n Utils_1.RenderUtils.removeContent(element);\r\n this.createAndChangePrimitivesElements(primitives, element);\r\n }\r\n else\r\n this.dom.changeChildrenByPrimitives(primitives, element);\r\n };\r\n CanvasItemsManager.prototype.changeItemClassName = function (element, className) {\r\n if (className && element)\r\n this.changePrimitiveElement(new GroupPrimitive_1.GroupPrimitive([], className), element);\r\n };\r\n CanvasItemsManager.prototype.removeItemElements = function (element) {\r\n if (element && element.parentNode)\r\n element.parentNode.removeChild(element);\r\n };\r\n CanvasItemsManager.prototype.removeItemCustomContent = function (element, primitives) {\r\n if (element && primitives && primitives.length === element.childNodes.length)\r\n primitives.forEach(function (primitive, index) {\r\n primitive.destroyCustomContent(element.childNodes[index]);\r\n });\r\n };\r\n CanvasItemsManager.prototype.moveItemElements = function (parent, element, sibling) {\r\n if (element && parent)\r\n if (sibling)\r\n parent.insertBefore(element, sibling);\r\n else\r\n parent.appendChild(element);\r\n };\r\n CanvasItemsManager.prototype.changeItemChildrenVisibility = function (element, expanded) {\r\n element.style.display = expanded ? \"\" : \"none\";\r\n };\r\n CanvasItemsManager.prototype.getItemGroupContainerKey = function (zIndex, parentContainerKey) {\r\n return parentContainerKey !== undefined ? zIndex + \"_\" + parentContainerKey : zIndex.toString();\r\n };\r\n CanvasItemsManager.prototype.getItemGroupContainer = function (zIndex, parentContainerKey) {\r\n var parent = parentContainerKey !== undefined ? this.getItemParent(zIndex, parentContainerKey) : this.itemsContainer;\r\n var key = parentContainerKey || \"Main\";\r\n if (this.itemGroupContainers[key] === undefined || this.itemGroupContainers[key][zIndex] === undefined) {\r\n if (this.itemGroupContainers[key] === undefined)\r\n this.itemGroupContainers[key] = [];\r\n this.itemGroupContainers[key][zIndex] = this.createAndChangePrimitiveElement(new GroupPrimitive_1.GroupPrimitive([], null, zIndex), parent, this.itemGroupContainers[key][zIndex + 1]);\r\n }\r\n return this.itemGroupContainers[key][zIndex];\r\n };\r\n CanvasItemsManager.prototype.getItemSelectorGroupContainer = function (zIndex, parentContainerKey) {\r\n var parent = parentContainerKey !== undefined ? this.getItemSelectorParent(zIndex, parentContainerKey) : this.itemSelectorsContainer;\r\n var key = parentContainerKey || \"Main\";\r\n if (this.itemSelectorGroupContainers[key] === undefined || this.itemSelectorGroupContainers[key][zIndex] === undefined) {\r\n if (this.itemSelectorGroupContainers[key] === undefined)\r\n this.itemSelectorGroupContainers[key] = [];\r\n this.itemSelectorGroupContainers[key][zIndex] = this.createAndChangePrimitiveElement(new GroupPrimitive_1.GroupPrimitive([], null, zIndex), parent, this.itemSelectorGroupContainers[key][zIndex + 1]);\r\n }\r\n return this.itemSelectorGroupContainers[key][zIndex];\r\n };\r\n CanvasItemsManager.prototype.getItemParent = function (zIndex, parentContainerKey) {\r\n return parentContainerKey !== undefined ?\r\n this.itemChildElements[parentContainerKey] :\r\n this.getItemGroupContainer(zIndex);\r\n };\r\n CanvasItemsManager.prototype.getItemSelectorParent = function (zIndex, parentContainerKey) {\r\n return parentContainerKey !== undefined ?\r\n this.itemChildElements[parentContainerKey] :\r\n this.getItemSelectorGroupContainer(zIndex);\r\n };\r\n CanvasItemsManager.prototype.notifySelectionChanged = function (selection) {\r\n var _this = this;\r\n var newSelectedItems = ModelUtils_1.ModelUtils.createSelectedItems(selection);\r\n var itemsToUpdate = [];\r\n this.populateItems(itemsToUpdate, newSelectedItems, this.selectedItems);\r\n this.populateItems(itemsToUpdate, this.selectedItems, newSelectedItems);\r\n this.selectedItems = newSelectedItems;\r\n itemsToUpdate.forEach(function (item) {\r\n if (item instanceof Connector_1.Connector)\r\n _this.applyOrPostponeChanges([new ModelChange_1.ItemChange(item, ModelChange_1.ItemChangeType.UpdateClassName, true)]);\r\n });\r\n };\r\n CanvasItemsManager.prototype.populateItems = function (target, sourceSet, checkSet) {\r\n Object.keys(sourceSet).forEach(function (key) {\r\n if (!checkSet[key])\r\n target.push(sourceSet[key]);\r\n });\r\n };\r\n return CanvasItemsManager;\r\n}(CanvasManager_1.CanvasManager));\r\nexports.CanvasItemsManager = CanvasItemsManager;\r\n\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.TextMeasurer = void 0;\r\nvar size_1 = __webpack_require__(2);\r\nvar Utils_1 = __webpack_require__(17);\r\nvar Shape_1 = __webpack_require__(13);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar ITextMeasurer_1 = __webpack_require__(44);\r\nvar RenderHelper_1 = __webpack_require__(15);\r\nvar TextUtils_1 = __webpack_require__(63);\r\nvar TextMeasurer = /** @class */ (function () {\r\n function TextMeasurer(parent) {\r\n this.cache = {};\r\n this.fontSizeCache = {};\r\n this.containers = {};\r\n this.parent = parent;\r\n this.createNodes();\r\n }\r\n TextMeasurer.prototype.measureWords = function (text, style, owner) {\r\n var _this = this;\r\n var result = { words: {}, fontSize: -1 };\r\n var words = typeof text === \"string\" ? this.splitToWords(text, false) : text.reduce(function (acc, t) { return acc.concat(_this.splitToWords(t, false)); }, []);\r\n words.push(\" \");\r\n var styleHashKey = this.getStyleHash(style, owner);\r\n var measureElements = this.tryLoadWordsToMeasurer(words, style, styleHashKey, owner, undefined, undefined, undefined, undefined, result);\r\n if (measureElements) {\r\n var container = this.containers[owner];\r\n this.putElementsInDOM(container, measureElements);\r\n this.beforeMeasureInDOM();\r\n this.measureElementsInDOM(measureElements, result);\r\n this.afterMeasureInDOM();\r\n }\r\n return result;\r\n };\r\n TextMeasurer.prototype.measureTextLine = function (textLine, style, owner) {\r\n var results = this.measureWords(textLine, style, owner);\r\n return TextUtils_1.getTextLineSize(textLine, results);\r\n };\r\n TextMeasurer.prototype.onNewModel = function (items, dom) {\r\n var _this = this;\r\n dom.changeByFunc(null, function () { return _this.onNewModelCore(items); });\r\n };\r\n TextMeasurer.prototype.onNewModelCore = function (items) {\r\n var shapes = items.filter(function (i) { return i instanceof Shape_1.Shape; });\r\n var connectors = items.filter(function (i) { return i instanceof Connector_1.Connector; });\r\n var shapeElements = this.tryLoadShapeTexts(shapes);\r\n var connectorElements = this.tryLoadConnectorTexts(connectors);\r\n if (shapeElements || connectorElements) {\r\n shapeElements && this.putElementsInDOM(this.containers[ITextMeasurer_1.TextOwner.Shape], shapeElements);\r\n connectorElements && this.putElementsInDOM(this.containers[ITextMeasurer_1.TextOwner.Connector], connectorElements);\r\n this.beforeMeasureInDOM();\r\n shapeElements && this.measureElementsInDOM(shapeElements);\r\n connectorElements && this.measureElementsInDOM(connectorElements);\r\n this.afterMeasureInDOM();\r\n }\r\n };\r\n TextMeasurer.prototype.replaceParent = function (parent) {\r\n if (this.parent !== parent) {\r\n if (this.mainElement.parentNode)\r\n parent.appendChild(this.mainElement);\r\n this.parent = parent;\r\n }\r\n };\r\n TextMeasurer.prototype.clean = function () {\r\n Utils_1.RenderUtils.removeElement(this.mainElement);\r\n };\r\n TextMeasurer.prototype.tryLoadShapeTexts = function (shapes) {\r\n var _this = this;\r\n var newSet = {};\r\n var elements = [];\r\n var hashes = [];\r\n var styleHashes = [];\r\n shapes.forEach(function (s) {\r\n var styleHashKey = _this.getStyleHash(s.styleText, ITextMeasurer_1.TextOwner.Shape);\r\n _this.tryLoadWordsToMeasurer(_this.splitToWords(s.text, true), s.styleText, styleHashKey, ITextMeasurer_1.TextOwner.Shape, newSet, elements, hashes, styleHashes);\r\n });\r\n return elements.length ? { elements: elements, hashes: hashes, styleHashes: styleHashes } : null;\r\n };\r\n TextMeasurer.prototype.tryLoadConnectorTexts = function (connectors) {\r\n var _this = this;\r\n var newSet = {};\r\n var elements = [];\r\n var hashes = [];\r\n var styleHashes = [];\r\n connectors.forEach(function (c) {\r\n var words = c.texts.map(function (t) { return t.value; }).reduce(function (acc, text) { return acc.concat(_this.splitToWords(text, false)); }, []);\r\n if (words.length) {\r\n words.push(\" \");\r\n var styleHashKey = _this.getStyleHash(c.styleText, ITextMeasurer_1.TextOwner.Connector);\r\n _this.tryLoadWordsToMeasurer(words, c.styleText, styleHashKey, ITextMeasurer_1.TextOwner.Connector, newSet, elements, hashes, styleHashes);\r\n }\r\n });\r\n return elements.length ? { elements: elements, hashes: hashes, styleHashes: styleHashes } : null;\r\n };\r\n TextMeasurer.prototype.tryLoadWordsToMeasurer = function (words, style, styleHashKey, textOwner, newSet, elementsToMeasure, hashesToMeasure, styleHashesToMeasure, result) {\r\n var _this = this;\r\n var newWords = [];\r\n elementsToMeasure = elementsToMeasure || [];\r\n hashesToMeasure = hashesToMeasure || [];\r\n styleHashesToMeasure = styleHashesToMeasure || [];\r\n newSet = newSet || {};\r\n words.forEach(function (t) { return _this.tryLoadWordToMeasurer(t, style, styleHashKey, textOwner, newSet, elementsToMeasure, hashesToMeasure, styleHashesToMeasure, newWords, result); });\r\n return elementsToMeasure.length ? { elements: elementsToMeasure, hashes: hashesToMeasure, styleHashes: styleHashesToMeasure, newWords: newWords } : null;\r\n };\r\n TextMeasurer.prototype.putElementsInDOM = function (container, measureElements) {\r\n container.parentNode && container.parentNode.removeChild(container);\r\n while (container.firstChild)\r\n container.removeChild(container.firstChild);\r\n measureElements.elements.forEach(function (el) { return container.appendChild(el); });\r\n this.svgElement.appendChild(container);\r\n };\r\n TextMeasurer.prototype.measureElementsInDOM = function (measureElements, result) {\r\n var hashes = measureElements.hashes;\r\n var elements = measureElements.elements;\r\n var words = measureElements.newWords;\r\n var count = hashes.length;\r\n for (var i = 0; i < count; i++) {\r\n var size = this.getDomElementSize(elements[i]);\r\n if (size) {\r\n if (!size.isEmpty())\r\n this.cache[hashes[i]] = size;\r\n if (result)\r\n result.words[words[i]] = size;\r\n }\r\n var styleHashKey = measureElements.styleHashes[i];\r\n if (this.fontSizeCache[styleHashKey] === undefined)\r\n this.fontSizeCache[styleHashKey] = this.getDomFontSize(elements[i]);\r\n if (result && result.fontSize < 0)\r\n result.fontSize = this.fontSizeCache[styleHashKey];\r\n }\r\n };\r\n TextMeasurer.prototype.beforeMeasureInDOM = function () {\r\n this.parent.appendChild(this.mainElement);\r\n };\r\n TextMeasurer.prototype.afterMeasureInDOM = function () {\r\n this.mainElement.parentNode && this.mainElement.parentNode.removeChild(this.mainElement);\r\n };\r\n TextMeasurer.prototype.tryLoadWordToMeasurer = function (word, style, styleHashKey, owner, newSet, elementsToMeasure, hashesToMeasure, styleHashesToMeasure, newWords, result) {\r\n var hash = this.getHash(word, style, owner);\r\n var cachedSize = this.cache[hash];\r\n if (!cachedSize && !newSet[hash]) {\r\n newSet[hash] = true;\r\n hashesToMeasure.push(hash);\r\n elementsToMeasure.push(this.createElement(word, style));\r\n styleHashesToMeasure.push(styleHashKey);\r\n newWords.push(word);\r\n }\r\n else if (cachedSize && result) {\r\n result.words[word] = cachedSize;\r\n result.fontSize = this.fontSizeCache[styleHashKey];\r\n }\r\n };\r\n TextMeasurer.prototype.getHash = function (text, style, owner) {\r\n return owner + \"|\" + (style && style.toHash()) + \"|\" + text;\r\n };\r\n TextMeasurer.prototype.getStyleHash = function (style, owner) {\r\n return this.getHash(\" \", style, owner);\r\n };\r\n TextMeasurer.prototype.createElement = function (text, style) {\r\n var element = document.createElementNS(RenderHelper_1.svgNS, \"text\");\r\n if (text === \" \")\r\n element.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\r\n element.textContent = text;\r\n style && Utils_1.RenderUtils.applyStyleToElement(style, element);\r\n return element;\r\n };\r\n TextMeasurer.prototype.splitToWords = function (text, includeWhitespace) {\r\n var words = TextUtils_1.textToWords(text);\r\n includeWhitespace && words.push(\" \");\r\n return words;\r\n };\r\n TextMeasurer.prototype.getDomFontSize = function (textEl) {\r\n return parseFloat(window.getComputedStyle(textEl).fontSize);\r\n };\r\n TextMeasurer.prototype.getDomElementSize = function (textEl) {\r\n var bBox;\r\n try {\r\n bBox = textEl.getBBox();\r\n }\r\n catch (_a) { } // TODO make measure in another way because of FF error\r\n return bBox ? new size_1.Size(bBox.width, bBox.height) : new size_1.Size(0, 0);\r\n };\r\n TextMeasurer.prototype.createNodes = function () {\r\n this.mainElement = RenderHelper_1.RenderHelper.createMainElement(undefined, true);\r\n this.svgElement = RenderHelper_1.RenderHelper.createSvgElement(this.mainElement, false);\r\n this.createContainer(ITextMeasurer_1.TextOwner.Shape, \"shape\");\r\n this.createContainer(ITextMeasurer_1.TextOwner.Connector, \"connector\");\r\n this.createContainer(ITextMeasurer_1.TextOwner.ExtensionLine, \"extension-line\");\r\n this.createContainer(ITextMeasurer_1.TextOwner.Resize, \"resize-info\");\r\n };\r\n TextMeasurer.prototype.createContainer = function (owner, className) {\r\n var element = document.createElementNS(RenderHelper_1.svgNS, \"g\");\r\n element.setAttribute(\"class\", className);\r\n this.containers[owner] = element;\r\n };\r\n return TextMeasurer;\r\n}());\r\nexports.TextMeasurer = TextMeasurer;\r\n\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.EdgeOnLayer = exports.NodeOnLayer = exports.SugiyamaNodesOrderer = exports.SugiyamaLayerDistributor = exports.SugiyamaLayoutBuilder = void 0;\r\nvar BaseBuilder_1 = __webpack_require__(140);\r\nvar Graph_1 = __webpack_require__(69);\r\nvar NodeLayout_1 = __webpack_require__(70);\r\nvar Structures_1 = __webpack_require__(39);\r\nvar ListUtils_1 = __webpack_require__(90);\r\nvar search_1 = __webpack_require__(42);\r\nvar point_1 = __webpack_require__(1);\r\nvar LayoutSettings_1 = __webpack_require__(20);\r\nvar GraphLayout_1 = __webpack_require__(139);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar CycleRemover_1 = __webpack_require__(270);\r\nvar SugiyamaLayoutBuilder = /** @class */ (function (_super) {\r\n __extends(SugiyamaLayoutBuilder, _super);\r\n function SugiyamaLayoutBuilder() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SugiyamaLayoutBuilder.prototype.build = function () {\r\n var _this = this;\r\n var offset = 0;\r\n var layout = new GraphLayout_1.GraphLayout();\r\n var nodeOrderer = new SugiyamaNodesOrderer();\r\n this.graph.getConnectedComponents()\r\n .forEach(function (component) {\r\n var acyclicGraphInfo = CycleRemover_1.CycleRemover.removeCycles(component);\r\n var layers = SugiyamaLayerDistributor.getLayers(acyclicGraphInfo.graph);\r\n var orderedGraph = nodeOrderer.orderNodes(acyclicGraphInfo.graph, layers);\r\n var removedEdges = Object.keys(acyclicGraphInfo.removedEdges).map(function (ek) { return component.getEdge(ek); });\r\n var coordinatedGraph = nodeOrderer.assignAbsCoordinates(orderedGraph);\r\n var componentLayout = _this.createInfoGraphLayout(coordinatedGraph, acyclicGraphInfo.reversedEdges, removedEdges);\r\n layout.extend(_this.setComponentOffset(componentLayout, offset));\r\n offset += _this.getComponentOffset(componentLayout);\r\n });\r\n return layout;\r\n };\r\n // Order Nodes\r\n SugiyamaLayoutBuilder.prototype.createInfoGraphLayout = function (coordinatedGraph, reversedEdges, removedEdges) {\r\n var _this = this;\r\n var currentPosition = new point_1.Point(0, 0);\r\n var items = coordinatedGraph.items;\r\n var sortedLayers = new ListUtils_1.HashSet(items.map(function (n) { return n.layer; }).sort(function (a, b) { return a - b; }));\r\n var absOffsetInfo = this.getAbsOffsetInfo(coordinatedGraph.items);\r\n var positions = {};\r\n var totalDepth = 0;\r\n var leftEdge = Number.MAX_SAFE_INTEGER || Number.MAX_VALUE;\r\n var rightEdge = Number.MIN_SAFE_INTEGER || Number.MAX_VALUE;\r\n var _loop_1 = function (i) {\r\n var layer = sortedLayers.item(i);\r\n var maxDepthLayer = 0;\r\n items\r\n .filter(function (n) { return n.layer === layer; })\r\n .sort(function (a, b) { return a.position - b.position; })\r\n .forEach(function (n) {\r\n var depthNodeSize = _this.getDepthNodeSize(n);\r\n var directionOffset = _this.chooseDirectionValue(0, depthNodeSize);\r\n var absPosition = _this.getAbsPosition(n.position, _this.getBreadthNodeSize(n), absOffsetInfo);\r\n currentPosition = _this.setBreadth(currentPosition, absPosition);\r\n var nodePosition = _this.setDepthOffset(currentPosition, -directionOffset);\r\n positions[n.key] = nodePosition;\r\n if (n.isDummy)\r\n return;\r\n var breadth = _this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Horizontal ? nodePosition.y : nodePosition.x;\r\n leftEdge = Math.min(leftEdge, breadth);\r\n rightEdge = Math.max(rightEdge, breadth + _this.getBreadthNodeSize(n));\r\n maxDepthLayer = Math.max(maxDepthLayer, _this.getDepthNodeSize(n));\r\n });\r\n totalDepth += maxDepthLayer;\r\n currentPosition = this_1.setBreadth(currentPosition, 0);\r\n currentPosition = this_1.setDepthOffset(currentPosition, this_1.getDirectionValue(maxDepthLayer + this_1.settings.layerSpacing));\r\n };\r\n var this_1 = this;\r\n for (var i = 0; i < sortedLayers.length; i++) {\r\n _loop_1(i);\r\n }\r\n totalDepth += (sortedLayers.length - 1) * this.settings.layerSpacing;\r\n var layout = new GraphLayout_1.GraphLayout();\r\n this.createNodesLayout(coordinatedGraph, layout, leftEdge, totalDepth, positions);\r\n this.createEdgesLayout(coordinatedGraph, layout, reversedEdges, removedEdges);\r\n return layout;\r\n // this.getDummyEdgesRoutes(infoGraph);\r\n };\r\n SugiyamaLayoutBuilder.prototype.createNodesLayout = function (infoGraph, layout, leftEdge, totalDepth, positions) {\r\n var _this = this;\r\n var offset = this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical ?\r\n new point_1.Point(-leftEdge, this.chooseDirectionValue(0, totalDepth)) :\r\n new point_1.Point(this.chooseDirectionValue(0, totalDepth), -leftEdge);\r\n infoGraph.items.forEach(function (n) {\r\n if (!n.isDummy) {\r\n var node = _this.graph.getNode(n.key);\r\n layout.addNode(new NodeLayout_1.NodeLayout(node, positions[n.key].clone().offset(offset.x, offset.y)));\r\n }\r\n });\r\n };\r\n SugiyamaLayoutBuilder.prototype.createEdgesLayout = function (infoGraph, layout, reversedEdges, removedEdges) {\r\n var DIRECT = this.getDirectEdgeLayout();\r\n var TOP_TO_BOTTOM = this.getDiffLevelEdgeLayout(true);\r\n var BOTTOM_TO_TOP = this.getDiffLevelEdgeLayout(false);\r\n var TOP_TO_TOP = this.getSameLevelEdgeLayout(true);\r\n var BOTTOM_TO_BOTTOM = this.getSameLevelEdgeLayout(false);\r\n var occupied = {};\r\n infoGraph.edges\r\n .filter(function (e) { return !e.isDummy; })\r\n .concat(removedEdges.map(function (e) { return new EdgeOnLayer(e.key, false, e.from, e.to); }))\r\n .sort(function (a, b) {\r\n return (infoGraph.getNode(a.originFrom).layer - infoGraph.getNode(b.originFrom).layer) ||\r\n (infoGraph.getNode(a.to).layer - infoGraph.getNode(b.to).layer);\r\n })\r\n .forEach(function (e) {\r\n var isReversed = reversedEdges[e.key];\r\n var from = infoGraph.getNode(isReversed ? e.to : e.originFrom);\r\n var to = infoGraph.getNode(isReversed ? e.originFrom : e.to);\r\n if (to.layer - from.layer === 1)\r\n layout.addEdge(new NodeLayout_1.EdgeLayout(e.key, DIRECT.from, DIRECT.to));\r\n else {\r\n var candidates_1 = [];\r\n if (to.position - from.position >= 1) {\r\n candidates_1.push(TOP_TO_BOTTOM);\r\n candidates_1.push({ from: DIRECT.from, to: TOP_TO_BOTTOM.to });\r\n candidates_1.push({ from: TOP_TO_BOTTOM.from, to: DIRECT.to });\r\n }\r\n else if (to.position - from.position <= -1) {\r\n candidates_1.push(BOTTOM_TO_TOP);\r\n candidates_1.push({ from: DIRECT.from, to: BOTTOM_TO_TOP.to });\r\n candidates_1.push({ from: BOTTOM_TO_TOP.from, to: DIRECT.to });\r\n }\r\n else {\r\n var oneliner = from.position === to.position && to.position === 0 ? [TOP_TO_TOP, BOTTOM_TO_BOTTOM] : [BOTTOM_TO_BOTTOM, TOP_TO_TOP];\r\n oneliner.forEach(function (c) { return candidates_1.push(c); });\r\n oneliner.forEach(function (c) {\r\n candidates_1.push({ from: c.from, to: DIRECT.to });\r\n candidates_1.push({ from: DIRECT.from, to: c.to });\r\n });\r\n }\r\n candidates_1.push(DIRECT);\r\n for (var i = 0, candidate = void 0; candidate = candidates_1[i]; i++) {\r\n var fromKey = from.key + \"_\" + candidate.from;\r\n var toKey = to.key + \"_\" + candidate.to;\r\n if (occupied[fromKey] !== Connector_1.ConnectorPosition.End && occupied[toKey] !== Connector_1.ConnectorPosition.Begin) {\r\n layout.addEdge(new NodeLayout_1.EdgeLayout(e.key, candidate.from, candidate.to));\r\n occupied[fromKey] = Connector_1.ConnectorPosition.Begin;\r\n occupied[toKey] = Connector_1.ConnectorPosition.End;\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n };\r\n SugiyamaLayoutBuilder.prototype.getDirectEdgeLayout = function () {\r\n if (this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Horizontal)\r\n return this.settings.direction === LayoutSettings_1.LogicalDirectionKind.Forward ? { from: 1, to: 3 } : { from: 3, to: 1 };\r\n return this.settings.direction === LayoutSettings_1.LogicalDirectionKind.Forward ? { from: 2, to: 0 } : { from: 0, to: 2 };\r\n };\r\n SugiyamaLayoutBuilder.prototype.getDiffLevelEdgeLayout = function (topToBottom) {\r\n if (this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Horizontal)\r\n return topToBottom ? { from: 2, to: 0 } : { from: 0, to: 2 };\r\n return topToBottom ? { from: 3, to: 1 } : { from: 1, to: 3 };\r\n };\r\n SugiyamaLayoutBuilder.prototype.getSameLevelEdgeLayout = function (topToBottom) {\r\n if (this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Horizontal)\r\n return topToBottom ? { from: 0, to: 0 } : { from: 2, to: 2 };\r\n return topToBottom ? { from: 3, to: 3 } : { from: 1, to: 1 };\r\n };\r\n SugiyamaLayoutBuilder.prototype.getAbsOffsetInfo = function (nodesInfos) {\r\n var _this = this;\r\n var absOffsetMatrix = {};\r\n var addCell = function (n, intAbsCoord) {\r\n if (absOffsetMatrix[intAbsCoord] === undefined)\r\n absOffsetMatrix[intAbsCoord] = _this.getBreadthNodeSize(n);\r\n absOffsetMatrix[intAbsCoord] = Math.max(absOffsetMatrix[intAbsCoord], _this.getBreadthNodeSize(n));\r\n };\r\n nodesInfos.forEach(function (n) {\r\n var intAbsCoord = trunc(n.position);\r\n addCell(n, intAbsCoord);\r\n if (absOffsetMatrix[intAbsCoord] % 1 !== 0)\r\n addCell(n, intAbsCoord + 1);\r\n });\r\n var absOffsetInfo = {};\r\n var leftOffset = 0;\r\n Object.keys(absOffsetMatrix).sort(function (a, b) { return parseFloat(a) - parseFloat(b); }).forEach(function (coord) {\r\n absOffsetInfo[coord] = { leftOffset: leftOffset, width: absOffsetMatrix[coord] };\r\n leftOffset += absOffsetMatrix[coord] + _this.settings.columnSpacing;\r\n });\r\n return absOffsetInfo;\r\n };\r\n SugiyamaLayoutBuilder.prototype.setBreadth = function (position, breadthPosition) {\r\n if (this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical)\r\n return new point_1.Point(breadthPosition, position.y);\r\n return new point_1.Point(position.x, breadthPosition);\r\n };\r\n SugiyamaLayoutBuilder.prototype.setDepthOffset = function (position, offset) {\r\n if (this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Horizontal)\r\n return new point_1.Point(position.x + offset, position.y);\r\n return new point_1.Point(position.x, position.y + offset);\r\n };\r\n SugiyamaLayoutBuilder.prototype.getAbsPosition = function (absCoordinate, itemSize, absoluteOffsetInfo) {\r\n var intAbsCoord = trunc(absCoordinate);\r\n var absLeftOffset = absoluteOffsetInfo[intAbsCoord].leftOffset;\r\n var cellWidth = absoluteOffsetInfo[intAbsCoord].width;\r\n if (absCoordinate % 1 === 0)\r\n return absLeftOffset + (cellWidth - itemSize) / 2;\r\n return absLeftOffset + cellWidth - (itemSize - this.settings.columnSpacing) / 2;\r\n };\r\n SugiyamaLayoutBuilder.prototype.getBreadthNodeSize = function (node) {\r\n return node.isDummy ? 0 : this.getBreadthNodeSizeCore(this.graph.getNode(node.key));\r\n };\r\n SugiyamaLayoutBuilder.prototype.getDepthNodeSize = function (node) {\r\n return node.isDummy ? 0 : this.getDepthNodeSizeCore(this.graph.getNode(node.key));\r\n };\r\n return SugiyamaLayoutBuilder;\r\n}(BaseBuilder_1.LayoutBuilder));\r\nexports.SugiyamaLayoutBuilder = SugiyamaLayoutBuilder;\r\nvar SugiyamaLayerDistributor = /** @class */ (function () {\r\n function SugiyamaLayerDistributor() {\r\n }\r\n SugiyamaLayerDistributor.getLayers = function (acyclicGraph) {\r\n var feasibleTree = this.getFeasibleTree(acyclicGraph);\r\n return this.calcNodesLayers(feasibleTree);\r\n };\r\n SugiyamaLayerDistributor.getFeasibleTree = function (graph) {\r\n var layers = this.initLayerAssignment(graph);\r\n return graph.getSpanningGraph(graph.nodes[0], Structures_1.ConnectionMode.OutgoingAndIncoming, function (e) { return layers[e.to] - layers[e.from]; });\r\n };\r\n SugiyamaLayerDistributor.initLayerAssignment = function (graph) {\r\n var layers = {};\r\n var currentLayer = 0;\r\n var actualAssignedNodes = {};\r\n var assigningNodes = graph.nodes.filter(function (n) { return !graph.getAdjacentEdges(n, Structures_1.ConnectionMode.Incoming).length; });\r\n var _loop_2 = function () {\r\n assigningNodes.forEach(function (n) {\r\n layers[n] = currentLayer;\r\n actualAssignedNodes[n] = true;\r\n });\r\n Object.keys(actualAssignedNodes).forEach(function (n) {\r\n if (graph.getAdjacentEdges(n, Structures_1.ConnectionMode.Outgoing).filter(function (e) { return layers[e.to] === undefined; }).length === 0)\r\n delete actualAssignedNodes[n];\r\n });\r\n var assigningNodesSet = {};\r\n Object.keys(actualAssignedNodes).forEach(function (n) {\r\n graph.getAdjacentEdges(n, Structures_1.ConnectionMode.Outgoing)\r\n .map(function (e) { return e.to; })\r\n .filter(function (n) { return layers[n] === undefined && graph.getAdjacentEdges(n, Structures_1.ConnectionMode.Incoming).reduce(function (acc, e) { return acc && layers[e.from] !== undefined; }, true); })\r\n .forEach(function (n) { return assigningNodesSet[n] = true; });\r\n });\r\n assigningNodes = Object.keys(assigningNodesSet);\r\n currentLayer++;\r\n };\r\n while (assigningNodes.length) {\r\n _loop_2();\r\n }\r\n return layers;\r\n };\r\n SugiyamaLayerDistributor.calcNodesLayers = function (graph) {\r\n var layers = {};\r\n var minLayer = Number.MAX_SAFE_INTEGER || Number.MAX_VALUE;\r\n var currentLevel = 0;\r\n var iterator = graph.createIterator(Structures_1.ConnectionMode.OutgoingAndIncoming);\r\n iterator.visitEachEdgeOnce = false;\r\n iterator.onNode = function (n) {\r\n layers[n.key] = currentLevel;\r\n minLayer = Math.min(minLayer, currentLevel);\r\n };\r\n iterator.skipNode = function (n) { return layers[n.key] !== undefined; };\r\n iterator.skipEdge = function (e) { return layers[e.from] !== undefined && layers[e.to] !== undefined; };\r\n iterator.onEdge = function (e, out) {\r\n if (out)\r\n currentLevel = layers[e.from] + 1;\r\n else\r\n currentLevel = layers[e.to] - 1;\r\n };\r\n iterator.iterate(graph.nodes[0]);\r\n for (var key in layers) {\r\n if (!Object.prototype.hasOwnProperty.call(layers, key))\r\n continue;\r\n layers[key] -= minLayer;\r\n }\r\n return layers;\r\n };\r\n return SugiyamaLayerDistributor;\r\n}());\r\nexports.SugiyamaLayerDistributor = SugiyamaLayerDistributor;\r\nvar SugiyamaNodesOrderer = /** @class */ (function () {\r\n function SugiyamaNodesOrderer() {\r\n this.idCounter = -10000;\r\n }\r\n SugiyamaNodesOrderer.prototype.orderNodes = function (graph, layers) {\r\n var maxIteration = 14; // magic number - http://www.graphviz.org/Documentation/TSE93.pdf PAGE (14)\r\n var currentIteration = 1;\r\n var graphInfo = this.initGraphInfo(graph, layers);\r\n var nodeInfos = graphInfo.items;\r\n var orderInfo = this.initOrder(nodeInfos);\r\n var bestNodesPositions = this.getNodeToPositionMap(nodeInfos);\r\n var bestCrossCount = this.getCrossCount(orderInfo, graphInfo);\r\n var isParentToChildren = true;\r\n while (currentIteration < maxIteration && bestCrossCount !== 0) {\r\n orderInfo = this.getNodesOrder(orderInfo, graphInfo, isParentToChildren);\r\n var crossCount = this.getCrossCount(orderInfo, graphInfo);\r\n if (crossCount < bestCrossCount) {\r\n bestNodesPositions = this.getNodeToPositionMap(graphInfo.items);\r\n bestCrossCount = crossCount;\r\n }\r\n isParentToChildren = !isParentToChildren;\r\n currentIteration++;\r\n }\r\n // transpose() procedure doesn`t implement.\r\n // http://www.graphviz.org/Documentation/TSE93.pdf PAGE(16)\r\n graphInfo.items.forEach(function (n) { return n.position = bestNodesPositions[n.key]; });\r\n return graphInfo;\r\n };\r\n SugiyamaNodesOrderer.prototype.getNodesOrder = function (current, graph, isParentToChildren) {\r\n var _this = this;\r\n var order = {};\r\n var _loop_3 = function (layer) {\r\n if (!Object.prototype.hasOwnProperty.call(current, layer))\r\n return \"continue\";\r\n var nodePositions = {};\r\n var nodeKeys = [];\r\n current[layer].forEach(function (ni) {\r\n var adjacentNodesPositions = (isParentToChildren ? graph.getChildren(ni.key) : graph.getParents(ni.key))\r\n .map(function (nk) { return graph.getNode(nk).position; });\r\n nodeKeys.push(ni.key);\r\n nodePositions[ni.key] = _this.getNodePosition(adjacentNodesPositions);\r\n });\r\n order[layer] = this_2.sortNodes(nodeKeys, nodePositions, graph);\r\n };\r\n var this_2 = this;\r\n for (var layer in current) {\r\n _loop_3(layer);\r\n }\r\n return order;\r\n };\r\n SugiyamaNodesOrderer.prototype.sortNodes = function (nodeKeys, nodePositions, graph) {\r\n return nodeKeys\r\n .sort(function (a, b) { return nodePositions[a] - nodePositions[b]; })\r\n .map(function (nk, index) {\r\n var node = graph.getNode(nk);\r\n node.position = index;\r\n return node;\r\n });\r\n };\r\n SugiyamaNodesOrderer.prototype.getNodePosition = function (adjacentNodesPositions) {\r\n adjacentNodesPositions = adjacentNodesPositions.sort(function (a, b) { return a - b; });\r\n if (!adjacentNodesPositions.length)\r\n return 0;\r\n var medianIndex = Math.floor(adjacentNodesPositions.length / 2);\r\n if (adjacentNodesPositions.length === 2 || adjacentNodesPositions.length % 2 === 1)\r\n return adjacentNodesPositions[medianIndex];\r\n var leftMedianPosition = adjacentNodesPositions[medianIndex - 1] - adjacentNodesPositions[0];\r\n var rightMedianPosition = adjacentNodesPositions[adjacentNodesPositions.length - 1] - adjacentNodesPositions[medianIndex];\r\n return Math.floor((adjacentNodesPositions[medianIndex - 1] * rightMedianPosition + adjacentNodesPositions[medianIndex] * leftMedianPosition) /\r\n (leftMedianPosition + rightMedianPosition));\r\n };\r\n SugiyamaNodesOrderer.prototype.initOrder = function (nodeInfos) {\r\n var result = {};\r\n nodeInfos.forEach(function (ni) { return (result[ni.layer] || (result[ni.layer] = [])).push(ni); });\r\n return result;\r\n };\r\n SugiyamaNodesOrderer.prototype.getCrossCount = function (orderInfo, graph) {\r\n var count = 0;\r\n var _loop_4 = function (layer) {\r\n if (!Object.prototype.hasOwnProperty.call(orderInfo, layer))\r\n return \"continue\";\r\n var viewedAdjacentNodesPositions = [];\r\n orderInfo[layer].forEach(function (n) {\r\n var positions = graph.getChildren(n.key).map(function (c) { return graph.getNode(c).position; });\r\n positions.forEach(function (p) {\r\n count += viewedAdjacentNodesPositions.filter(function (vp) { return p < vp; }).length;\r\n });\r\n viewedAdjacentNodesPositions = viewedAdjacentNodesPositions.concat(positions);\r\n });\r\n };\r\n for (var layer in orderInfo) {\r\n _loop_4(layer);\r\n }\r\n return count;\r\n };\r\n SugiyamaNodesOrderer.prototype.initGraphInfo = function (graph, layers) {\r\n var _this = this;\r\n var countNodesOnLayer = {};\r\n var nodesInfoMap = {};\r\n var nodeInfos = [];\r\n var edgeInfos = [];\r\n graph.nodes.forEach(function (n) {\r\n var layer = layers[n];\r\n if (countNodesOnLayer[layer] === undefined)\r\n countNodesOnLayer[layer] = 0;\r\n var info = new NodeOnLayer(n, false, layer, countNodesOnLayer[layer]++);\r\n nodesInfoMap[n] = info;\r\n nodeInfos.push(info);\r\n });\r\n graph.edges.forEach(function (e) {\r\n var span = layers[e.to] - layers[e.from];\r\n if (span > 1) {\r\n var prevNodeInfo = nodesInfoMap[e.from];\r\n for (var delta = 1; delta < span; delta++) {\r\n var dNodeInfo = new NodeOnLayer(_this.createDummyID(), true, layers[e.from] + delta, countNodesOnLayer[layers[e.from] + delta]++);\r\n edgeInfos.push(new EdgeOnLayer(_this.createDummyID(), true, prevNodeInfo.key, dNodeInfo.key));\r\n nodeInfos.push(dNodeInfo);\r\n prevNodeInfo = dNodeInfo;\r\n }\r\n edgeInfos.push(new EdgeOnLayer(e.key, false, prevNodeInfo.key, nodesInfoMap[e.to].key, nodesInfoMap[e.from].key));\r\n }\r\n else\r\n edgeInfos.push(new EdgeOnLayer(e.key, false, nodesInfoMap[e.from].key, nodesInfoMap[e.to].key));\r\n });\r\n return new Graph_1.FastGraph(nodeInfos, edgeInfos);\r\n };\r\n SugiyamaNodesOrderer.prototype.createDummyID = function () {\r\n return \"dummy_\" + --this.idCounter;\r\n };\r\n SugiyamaNodesOrderer.prototype.getNodeToPositionMap = function (nodeInfos) {\r\n return nodeInfos.reduce(function (acc, ni) {\r\n acc[ni.key] = ni.position;\r\n return acc;\r\n }, {});\r\n };\r\n // absolute positioning\r\n SugiyamaNodesOrderer.prototype.assignAbsCoordinates = function (graph) {\r\n var absCoordinates = this.getAbsCoodinate(graph);\r\n return new Graph_1.FastGraph(graph.items.map(function (n) { return new NodeOnLayer(n.key, n.isDummy, n.layer, absCoordinates[n.key]); }), graph.edges.slice(0));\r\n };\r\n SugiyamaNodesOrderer.prototype.getAbsCoodinate = function (graph) {\r\n var _this = this;\r\n var orderInfo = graph.items.reduce(function (acc, n) {\r\n acc[n.layer] = acc[n.layer] || [];\r\n var pos = search_1.SearchUtils.binaryIndexOf(acc[n.layer], function (ni) { return ni.position - n.position; });\r\n acc[n.layer].splice(pos < 0 ? ~pos : pos, 0, n);\r\n return acc;\r\n }, {});\r\n var medianPositions = [MedianAlignmentMode.TopLeft, MedianAlignmentMode.TopRight, MedianAlignmentMode.BottomLeft, MedianAlignmentMode.BottomRight]\r\n .map(function (alignment) { return _this.getPositionByMedian(graph, alignment, orderInfo); });\r\n var nodeToPosition = {};\r\n graph.items.forEach(function (n) {\r\n var posList = medianPositions.map(function (positions) { return positions[n.key]; }).sort(function (a, b) { return a - b; });\r\n nodeToPosition[n.key] = (posList[1] + posList[2]) / 2;\r\n });\r\n return nodeToPosition;\r\n };\r\n SugiyamaNodesOrderer.prototype.getPositionByMedian = function (graph, alignment, orderInfo) {\r\n var nodeInfos = graph.items;\r\n var positions = this.getNodeToPositionMap(nodeInfos);\r\n var medians = this.getMedians(graph, nodeInfos, alignment);\r\n medians = this.resolveMedianConflicts(graph, orderInfo, medians, alignment);\r\n this.getSortedBlocks(graph, nodeInfos, medians, alignment)\r\n .forEach(function (block) {\r\n var maxPos = block.reduce(function (acc, n) { return positions[n.key] > acc ? positions[n.key] : acc; }, -2);\r\n block.forEach(function (n) {\r\n var delta = maxPos - positions[n.key];\r\n if (delta > 0)\r\n orderInfo[n.layer]\r\n .filter(function (ln) { return ln.position > n.position; })\r\n .forEach(function (ln) { return positions[ln.key] += delta; });\r\n positions[n.key] = maxPos;\r\n });\r\n });\r\n return positions;\r\n };\r\n SugiyamaNodesOrderer.prototype.getSortedBlocks = function (graph, nodeInfos, medians, alignment) {\r\n var blocks = [];\r\n var isBottom = alignment === MedianAlignmentMode.BottomLeft || alignment === MedianAlignmentMode.BottomRight;\r\n var allNodesInfo = new ListUtils_1.HashSet(nodeInfos.slice(0).sort(function (a, b) { return isBottom ? (a.layer - b.layer) : (b.layer - a.layer); }), function (n) { return n.key; });\r\n while (allNodesInfo.length) {\r\n var firstNode = allNodesInfo.item(0);\r\n var block = this.getBlock(graph, firstNode, medians, alignment);\r\n blocks.push(block);\r\n block.forEach(function (n) { return allNodesInfo.remove(n); });\r\n }\r\n blocks.sort(function (x, y) {\r\n var xMinNodeInfo = x.reduce(function (min, n) { return n.position < min.position ? n : min; }, x[0]);\r\n var yOnMinXLayer = y.filter(function (n) { return n.layer === xMinNodeInfo.layer; })[0];\r\n if (yOnMinXLayer)\r\n return xMinNodeInfo.position > yOnMinXLayer.position ? 1 : -1;\r\n var yMinNodeInfo = y.reduce(function (min, n) { return n.position < min.position ? n : min; }, y[0]);\r\n var xOnMinYLayer = x.filter(function (n) { return n.layer === yMinNodeInfo.layer; })[0];\r\n if (xOnMinYLayer)\r\n return xOnMinYLayer.position > yMinNodeInfo.position ? 1 : -1;\r\n return xMinNodeInfo.layer > yMinNodeInfo.layer ? 1 : -1;\r\n });\r\n return blocks;\r\n };\r\n SugiyamaNodesOrderer.prototype.getBlock = function (graph, root, medians, alignment) {\r\n var block = [];\r\n var median = null;\r\n do {\r\n if (median)\r\n root = alignment === MedianAlignmentMode.TopLeft || alignment === MedianAlignmentMode.TopRight ? graph.getNode(median.from) : graph.getNode(median.to);\r\n block.push(root);\r\n median = medians[root.key];\r\n } while (median);\r\n return block;\r\n };\r\n SugiyamaNodesOrderer.prototype.resolveMedianConflicts = function (graph, layers, medians, alignment) {\r\n var _this = this;\r\n var filteredMedians = {};\r\n var _loop_5 = function (layer) {\r\n if (!Object.prototype.hasOwnProperty.call(layers, layer))\r\n return \"continue\";\r\n var minPos;\r\n var maxPos;\r\n var nodeInfos = layers[layer];\r\n if (alignment === MedianAlignmentMode.TopRight || alignment === MedianAlignmentMode.BottomRight)\r\n nodeInfos = nodeInfos.slice(0).sort(function (a, b) { return b.position - a.position; }); // sorted descending\r\n nodeInfos.forEach(function (n) {\r\n var median = medians[n.key];\r\n if (!median)\r\n filteredMedians[n.key] = null;\r\n else {\r\n var medianItemKey = alignment === MedianAlignmentMode.TopLeft || alignment === MedianAlignmentMode.TopRight ? median.from : median.to;\r\n var medianPosition = graph.getNode(medianItemKey).position;\r\n if (_this.checkMedianConfict(minPos, maxPos, medianPosition, alignment))\r\n filteredMedians[n.key] = null;\r\n else {\r\n minPos = minPos === undefined ? medianPosition : Math.min(minPos, medianPosition);\r\n maxPos = maxPos === undefined ? medianPosition : Math.max(maxPos, medianPosition);\r\n filteredMedians[n.key] = median;\r\n }\r\n }\r\n });\r\n };\r\n for (var layer in layers) {\r\n _loop_5(layer);\r\n }\r\n return filteredMedians;\r\n };\r\n SugiyamaNodesOrderer.prototype.checkMedianConfict = function (min, max, medianPosition, alignment) {\r\n if (min === undefined || max === undefined)\r\n return false;\r\n if (alignment === MedianAlignmentMode.TopLeft || alignment === MedianAlignmentMode.BottomLeft)\r\n return max >= medianPosition;\r\n return min <= medianPosition;\r\n };\r\n SugiyamaNodesOrderer.prototype.getMedians = function (graph, nodeInfos, alignment) {\r\n var _this = this;\r\n var medians = {};\r\n nodeInfos.forEach(function (n) {\r\n var actualAdjacentEdges = _this.getActualAdjacentEdges(graph, n, alignment);\r\n var medianPosition = _this.getMedianPosition(actualAdjacentEdges.length, alignment);\r\n medians[n.key] = actualAdjacentEdges[medianPosition];\r\n });\r\n return medians;\r\n };\r\n SugiyamaNodesOrderer.prototype.getMedianPosition = function (length, alignment) {\r\n if (length === 0)\r\n return -1;\r\n if (length % 2 !== 0)\r\n return Math.floor(length / 2);\r\n if (alignment === MedianAlignmentMode.TopLeft || alignment === MedianAlignmentMode.BottomLeft)\r\n return Math.floor(length / 2) - 1;\r\n if (alignment === MedianAlignmentMode.TopRight || alignment === MedianAlignmentMode.BottomRight)\r\n return Math.floor(length / 2);\r\n throw new Error(\"Invalid Operation\");\r\n };\r\n SugiyamaNodesOrderer.prototype.getActualAdjacentEdges = function (graph, node, alignment) {\r\n if (alignment === MedianAlignmentMode.TopLeft || alignment === MedianAlignmentMode.TopRight)\r\n return graph.getAdjacentEdges(node.key, Structures_1.ConnectionMode.Incoming).sort(function (a, b) { return graph.getNode(a.from).position - graph.getNode(b.from).position; });\r\n return graph.getAdjacentEdges(node.key, Structures_1.ConnectionMode.Outgoing).sort(function (a, b) { return graph.getNode(a.to).position - graph.getNode(b.to).position; });\r\n };\r\n return SugiyamaNodesOrderer;\r\n}());\r\nexports.SugiyamaNodesOrderer = SugiyamaNodesOrderer;\r\nvar NodeOnLayer = /** @class */ (function () {\r\n function NodeOnLayer(key, isDummy, layer, position) {\r\n this.key = key;\r\n this.isDummy = isDummy;\r\n this.layer = layer;\r\n this.position = position;\r\n }\r\n NodeOnLayer.prototype.getHashCode = function () {\r\n return this.key.toString();\r\n };\r\n return NodeOnLayer;\r\n}());\r\nexports.NodeOnLayer = NodeOnLayer;\r\nvar EdgeOnLayer = /** @class */ (function () {\r\n function EdgeOnLayer(key, isDummy, from, to, originFrom) {\r\n this.key = key;\r\n this.isDummy = isDummy;\r\n this.from = from;\r\n this.to = to;\r\n this._originFrom = originFrom;\r\n }\r\n EdgeOnLayer.prototype.getHashCode = function () {\r\n return this.from + \"-\" + this.to;\r\n };\r\n Object.defineProperty(EdgeOnLayer.prototype, \"originFrom\", {\r\n get: function () {\r\n return this._originFrom !== undefined ? this._originFrom : this.from;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return EdgeOnLayer;\r\n}());\r\nexports.EdgeOnLayer = EdgeOnLayer;\r\nvar MedianAlignmentMode;\r\n(function (MedianAlignmentMode) {\r\n MedianAlignmentMode[MedianAlignmentMode[\"TopLeft\"] = 0] = \"TopLeft\";\r\n MedianAlignmentMode[MedianAlignmentMode[\"TopRight\"] = 1] = \"TopRight\";\r\n MedianAlignmentMode[MedianAlignmentMode[\"BottomLeft\"] = 2] = \"BottomLeft\";\r\n MedianAlignmentMode[MedianAlignmentMode[\"BottomRight\"] = 3] = \"BottomRight\";\r\n})(MedianAlignmentMode || (MedianAlignmentMode = {}));\r\nfunction trunc(val) {\r\n if (Math.trunc)\r\n return Math.trunc(val);\r\n if (!isFinite(val))\r\n return val;\r\n return (val - val % 1) || (val < 0 ? -0 : val === 0 ? val : 0);\r\n}\r\n\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BatchUpdatableObject = (function () {\r\n function BatchUpdatableObject() {\r\n this.suspendUpdateCount = 0;\r\n this.occurredEvents = 0;\r\n }\r\n BatchUpdatableObject.prototype.beginUpdate = function () {\r\n if (this.suspendUpdateCount === 0)\r\n this.onUpdateLocked();\r\n if (this.suspendUpdateCount < 0)\r\n this.suspendUpdateCount--;\r\n else\r\n this.suspendUpdateCount++;\r\n };\r\n BatchUpdatableObject.prototype.endUpdate = function () {\r\n if (this.suspendUpdateCount < 0)\r\n this.suspendUpdateCount++;\r\n else if (this.suspendUpdateCount > 0)\r\n this.suspendUpdateCount--;\r\n if (!this.isUpdateLocked()) {\r\n var occurredEvents = this.occurredEvents;\r\n this.occurredEvents = 0;\r\n this.onUpdateUnlocked(occurredEvents);\r\n }\r\n };\r\n BatchUpdatableObject.prototype.suspendUpdate = function () {\r\n if (this.suspendUpdateCount > 0) {\r\n this.suspendUpdateCount *= -1;\r\n var occurredEvents = this.occurredEvents;\r\n this.occurredEvents = 0;\r\n this.onUpdateUnlocked(occurredEvents);\r\n }\r\n };\r\n BatchUpdatableObject.prototype.continueUpdate = function () {\r\n if (this.suspendUpdateCount < 0)\r\n this.suspendUpdateCount *= -1;\r\n };\r\n BatchUpdatableObject.prototype.isUpdateLocked = function () {\r\n return this.suspendUpdateCount > 0;\r\n };\r\n BatchUpdatableObject.prototype.onUpdateLocked = function () { };\r\n BatchUpdatableObject.prototype.registerOccurredEvent = function (eventMask) {\r\n this.occurredEvents |= eventMask;\r\n };\r\n BatchUpdatableObject.prototype.resetOccurredEvents = function () {\r\n this.occurredEvents = 0;\r\n };\r\n BatchUpdatableObject.prototype.isLocked = function () {\r\n return this.suspendUpdateCount !== 0;\r\n };\r\n return BatchUpdatableObject;\r\n}());\r\nexports.BatchUpdatableObject = BatchUpdatableObject;\r\nvar EmptyBatchUpdatableObject = (function () {\r\n function EmptyBatchUpdatableObject() {\r\n }\r\n EmptyBatchUpdatableObject.prototype.beginUpdate = function () { };\r\n EmptyBatchUpdatableObject.prototype.endUpdate = function () { };\r\n return EmptyBatchUpdatableObject;\r\n}());\r\nexports.EmptyBatchUpdatableObject = EmptyBatchUpdatableObject;\r\n\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CommandManager = exports.DiagramCommand = void 0;\r\nvar DeleteCommand_1 = __webpack_require__(162);\r\nvar UndoCommand_1 = __webpack_require__(199);\r\nvar RedoCommand_1 = __webpack_require__(200);\r\nvar ImportCommand_1 = __webpack_require__(201);\r\nvar ExportCommand_1 = __webpack_require__(238);\r\nvar ToggleFontBoldCommand_1 = __webpack_require__(239);\r\nvar ToggleFontItalicCommand_1 = __webpack_require__(240);\r\nvar ToggleFontUnderlineCommand_1 = __webpack_require__(241);\r\nvar ChangeFontNameCommand_1 = __webpack_require__(242);\r\nvar ChangeFontSizeCommand_1 = __webpack_require__(243);\r\nvar ChangeFontColorCommand_1 = __webpack_require__(244);\r\nvar ChangeFillColorCommand_1 = __webpack_require__(245);\r\nvar ChangeStrokeColorCommand_1 = __webpack_require__(246);\r\nvar ChangeTextAlignCommand_1 = __webpack_require__(247);\r\nvar ChangeConnectorLineEndingCommand_1 = __webpack_require__(248);\r\nvar ChangeConnectorLineOptionCommand_1 = __webpack_require__(249);\r\nvar SelectAllCommand_1 = __webpack_require__(250);\r\nvar key_1 = __webpack_require__(26);\r\nvar AutoLayoutTreeVerticalCommand_1 = __webpack_require__(138);\r\nvar ChangeSnapToGridCommand_1 = __webpack_require__(253);\r\nvar ChangeGridSizeCommand_1 = __webpack_require__(254);\r\nvar ChangePageLandscapeCommand_1 = __webpack_require__(255);\r\nvar ChangePageSizeCommand_1 = __webpack_require__(257);\r\nvar ExportPngCommand_1 = __webpack_require__(259);\r\nvar ExportSvgCommand_1 = __webpack_require__(261);\r\nvar ExportJpgCommand_1 = __webpack_require__(262);\r\nvar CopySelectionCommand_1 = __webpack_require__(263);\r\nvar CutSelectionCommand_1 = __webpack_require__(264);\r\nvar PasteSelectionCommand_1 = __webpack_require__(265);\r\nvar ImportBPMNCommand_1 = __webpack_require__(268);\r\nvar SendToBackCommand_1 = __webpack_require__(271);\r\nvar BringToFrontCommand_1 = __webpack_require__(272);\r\nvar AutoLayoutLayeredHorizontalCommand_1 = __webpack_require__(143);\r\nvar MoveCommands_1 = __webpack_require__(273);\r\nvar ChangeZoomLevelCommand_1 = __webpack_require__(274);\r\nvar BindDocumentCommand_1 = __webpack_require__(275);\r\nvar UnbindDocumentCommand_1 = __webpack_require__(276);\r\nvar AutoLayoutTreeHorizontalCommand_1 = __webpack_require__(144);\r\nvar AutoLayoutLayeredVerticalCommand_1 = __webpack_require__(145);\r\nvar LockCommand_1 = __webpack_require__(277);\r\nvar UnlockCommand_1 = __webpack_require__(278);\r\nvar CloneCommand_1 = __webpack_require__(279);\r\nvar ChangeUnitsCommand_1 = __webpack_require__(280);\r\nvar ChangePageColorCommand_1 = __webpack_require__(282);\r\nvar ChangeShowGridCommand_1 = __webpack_require__(284);\r\nvar ToggleFullscreenCommand_1 = __webpack_require__(285);\r\nvar ToggleSimpleViewCommand_1 = __webpack_require__(286);\r\nvar ToggleReadOnlyCommand_1 = __webpack_require__(287);\r\nvar EditShapeImageCommand_1 = __webpack_require__(288);\r\nvar PasteSelectionInPosition_1 = __webpack_require__(289);\r\nvar ImportXMLCommand_1 = __webpack_require__(290);\r\nvar InsertShapeImageCommand_1 = __webpack_require__(292);\r\nvar DeleteShapeImageCommand_1 = __webpack_require__(293);\r\nvar ChangeStrokeStyleCommand_1 = __webpack_require__(294);\r\nvar ChangeStrokeWidthCommand_1 = __webpack_require__(295);\r\nvar AutoLayoutTreeVerticalBottomToTopCommand_1 = __webpack_require__(296);\r\nvar AutoLayoutTreeHorizontalRightToLeftCommand_1 = __webpack_require__(297);\r\nvar AutoLayoutLayeredVerticalBottomToTopCommand_1 = __webpack_require__(298);\r\nvar AutoLayoutLayeredHorizontalRightToLeftCommand_1 = __webpack_require__(299);\r\nvar ChangeConnectorRoutingModeCommand_1 = __webpack_require__(300);\r\nvar DiagramCommand;\r\n(function (DiagramCommand) {\r\n DiagramCommand[DiagramCommand[\"Undo\"] = 0] = \"Undo\";\r\n DiagramCommand[DiagramCommand[\"Redo\"] = 1] = \"Redo\";\r\n DiagramCommand[DiagramCommand[\"Cut\"] = 2] = \"Cut\";\r\n DiagramCommand[DiagramCommand[\"Copy\"] = 3] = \"Copy\";\r\n DiagramCommand[DiagramCommand[\"Paste\"] = 4] = \"Paste\";\r\n DiagramCommand[DiagramCommand[\"PasteInPosition\"] = 5] = \"PasteInPosition\";\r\n DiagramCommand[DiagramCommand[\"SelectAll\"] = 6] = \"SelectAll\";\r\n DiagramCommand[DiagramCommand[\"Delete\"] = 7] = \"Delete\";\r\n DiagramCommand[DiagramCommand[\"Import\"] = 8] = \"Import\";\r\n DiagramCommand[DiagramCommand[\"ImportBPMN\"] = 9] = \"ImportBPMN\";\r\n DiagramCommand[DiagramCommand[\"Export\"] = 10] = \"Export\";\r\n DiagramCommand[DiagramCommand[\"ExportSvg\"] = 11] = \"ExportSvg\";\r\n DiagramCommand[DiagramCommand[\"ExportPng\"] = 12] = \"ExportPng\";\r\n DiagramCommand[DiagramCommand[\"ExportJpg\"] = 13] = \"ExportJpg\";\r\n DiagramCommand[DiagramCommand[\"BindDocument\"] = 14] = \"BindDocument\";\r\n DiagramCommand[DiagramCommand[\"UnbindDocument\"] = 15] = \"UnbindDocument\";\r\n DiagramCommand[DiagramCommand[\"Bold\"] = 16] = \"Bold\";\r\n DiagramCommand[DiagramCommand[\"Italic\"] = 17] = \"Italic\";\r\n DiagramCommand[DiagramCommand[\"Underline\"] = 18] = \"Underline\";\r\n DiagramCommand[DiagramCommand[\"FontName\"] = 19] = \"FontName\";\r\n DiagramCommand[DiagramCommand[\"FontSize\"] = 20] = \"FontSize\";\r\n DiagramCommand[DiagramCommand[\"FontColor\"] = 21] = \"FontColor\";\r\n DiagramCommand[DiagramCommand[\"FillColor\"] = 22] = \"FillColor\";\r\n DiagramCommand[DiagramCommand[\"StrokeColor\"] = 23] = \"StrokeColor\";\r\n DiagramCommand[DiagramCommand[\"TextLeftAlign\"] = 24] = \"TextLeftAlign\";\r\n DiagramCommand[DiagramCommand[\"TextCenterAlign\"] = 25] = \"TextCenterAlign\";\r\n DiagramCommand[DiagramCommand[\"TextRightAlign\"] = 26] = \"TextRightAlign\";\r\n DiagramCommand[DiagramCommand[\"ConnectorLineOption\"] = 27] = \"ConnectorLineOption\";\r\n DiagramCommand[DiagramCommand[\"ConnectorStartLineEnding\"] = 28] = \"ConnectorStartLineEnding\";\r\n DiagramCommand[DiagramCommand[\"ConnectorEndLineEnding\"] = 29] = \"ConnectorEndLineEnding\";\r\n DiagramCommand[DiagramCommand[\"BringToFront\"] = 30] = \"BringToFront\";\r\n DiagramCommand[DiagramCommand[\"SendToBack\"] = 31] = \"SendToBack\";\r\n DiagramCommand[DiagramCommand[\"MoveLeft\"] = 32] = \"MoveLeft\";\r\n DiagramCommand[DiagramCommand[\"MoveStepLeft\"] = 33] = \"MoveStepLeft\";\r\n DiagramCommand[DiagramCommand[\"MoveRight\"] = 34] = \"MoveRight\";\r\n DiagramCommand[DiagramCommand[\"MoveStepRight\"] = 35] = \"MoveStepRight\";\r\n DiagramCommand[DiagramCommand[\"MoveUp\"] = 36] = \"MoveUp\";\r\n DiagramCommand[DiagramCommand[\"MoveStepUp\"] = 37] = \"MoveStepUp\";\r\n DiagramCommand[DiagramCommand[\"MoveDown\"] = 38] = \"MoveDown\";\r\n DiagramCommand[DiagramCommand[\"MoveStepDown\"] = 39] = \"MoveStepDown\";\r\n DiagramCommand[DiagramCommand[\"CloneLeft\"] = 40] = \"CloneLeft\";\r\n DiagramCommand[DiagramCommand[\"CloneRight\"] = 41] = \"CloneRight\";\r\n DiagramCommand[DiagramCommand[\"CloneUp\"] = 42] = \"CloneUp\";\r\n DiagramCommand[DiagramCommand[\"CloneDown\"] = 43] = \"CloneDown\";\r\n DiagramCommand[DiagramCommand[\"AutoLayoutTree\"] = 44] = \"AutoLayoutTree\";\r\n DiagramCommand[DiagramCommand[\"AutoLayoutFlow\"] = 45] = \"AutoLayoutFlow\";\r\n DiagramCommand[DiagramCommand[\"AutoLayoutTreeVertical\"] = 46] = \"AutoLayoutTreeVertical\";\r\n DiagramCommand[DiagramCommand[\"AutoLayoutTreeHorizontal\"] = 47] = \"AutoLayoutTreeHorizontal\";\r\n DiagramCommand[DiagramCommand[\"AutoLayoutLayeredVertical\"] = 48] = \"AutoLayoutLayeredVertical\";\r\n DiagramCommand[DiagramCommand[\"AutoLayoutLayeredHorizontal\"] = 49] = \"AutoLayoutLayeredHorizontal\";\r\n DiagramCommand[DiagramCommand[\"Lock\"] = 50] = \"Lock\";\r\n DiagramCommand[DiagramCommand[\"Unlock\"] = 51] = \"Unlock\";\r\n DiagramCommand[DiagramCommand[\"Units\"] = 52] = \"Units\";\r\n DiagramCommand[DiagramCommand[\"ViewUnits\"] = 53] = \"ViewUnits\";\r\n DiagramCommand[DiagramCommand[\"PageSize\"] = 54] = \"PageSize\";\r\n DiagramCommand[DiagramCommand[\"PageLandscape\"] = 55] = \"PageLandscape\";\r\n DiagramCommand[DiagramCommand[\"PageColor\"] = 56] = \"PageColor\";\r\n DiagramCommand[DiagramCommand[\"GridSize\"] = 57] = \"GridSize\";\r\n DiagramCommand[DiagramCommand[\"ShowGrid\"] = 58] = \"ShowGrid\";\r\n DiagramCommand[DiagramCommand[\"SnapToGrid\"] = 59] = \"SnapToGrid\";\r\n DiagramCommand[DiagramCommand[\"ZoomLevel\"] = 60] = \"ZoomLevel\";\r\n DiagramCommand[DiagramCommand[\"Fullscreen\"] = 61] = \"Fullscreen\";\r\n DiagramCommand[DiagramCommand[\"ToggleSimpleView\"] = 62] = \"ToggleSimpleView\";\r\n DiagramCommand[DiagramCommand[\"ToggleReadOnly\"] = 63] = \"ToggleReadOnly\";\r\n DiagramCommand[DiagramCommand[\"EditShapeImage\"] = 64] = \"EditShapeImage\";\r\n DiagramCommand[DiagramCommand[\"FitToScreen\"] = 65] = \"FitToScreen\";\r\n DiagramCommand[DiagramCommand[\"SwitchAutoZoom\"] = 66] = \"SwitchAutoZoom\";\r\n DiagramCommand[DiagramCommand[\"ToggleAutoZoom\"] = 67] = \"ToggleAutoZoom\";\r\n DiagramCommand[DiagramCommand[\"FitToWidth\"] = 68] = \"FitToWidth\";\r\n DiagramCommand[DiagramCommand[\"ZoomLevelItems\"] = 69] = \"ZoomLevelItems\";\r\n DiagramCommand[DiagramCommand[\"GridSizeItems\"] = 70] = \"GridSizeItems\";\r\n DiagramCommand[DiagramCommand[\"PageSizeItems\"] = 71] = \"PageSizeItems\";\r\n DiagramCommand[DiagramCommand[\"ImportXML\"] = 72] = \"ImportXML\";\r\n DiagramCommand[DiagramCommand[\"InsertShapeImage\"] = 73] = \"InsertShapeImage\";\r\n DiagramCommand[DiagramCommand[\"DeleteShapeImage\"] = 74] = \"DeleteShapeImage\";\r\n DiagramCommand[DiagramCommand[\"StrokeStyle\"] = 75] = \"StrokeStyle\";\r\n DiagramCommand[DiagramCommand[\"StrokeWidth\"] = 76] = \"StrokeWidth\";\r\n DiagramCommand[DiagramCommand[\"AutoLayoutTreeVerticalBottomToTop\"] = 77] = \"AutoLayoutTreeVerticalBottomToTop\";\r\n DiagramCommand[DiagramCommand[\"AutoLayoutTreeHorizontalRightToLeft\"] = 78] = \"AutoLayoutTreeHorizontalRightToLeft\";\r\n DiagramCommand[DiagramCommand[\"AutoLayoutLayeredVerticalBottomToTop\"] = 79] = \"AutoLayoutLayeredVerticalBottomToTop\";\r\n DiagramCommand[DiagramCommand[\"AutoLayoutLayeredHorizontalRightToLeft\"] = 80] = \"AutoLayoutLayeredHorizontalRightToLeft\";\r\n DiagramCommand[DiagramCommand[\"Zoom25\"] = 81] = \"Zoom25\";\r\n DiagramCommand[DiagramCommand[\"Zoom50\"] = 82] = \"Zoom50\";\r\n DiagramCommand[DiagramCommand[\"Zoom75\"] = 83] = \"Zoom75\";\r\n DiagramCommand[DiagramCommand[\"Zoom100\"] = 84] = \"Zoom100\";\r\n DiagramCommand[DiagramCommand[\"Zoom125\"] = 85] = \"Zoom125\";\r\n DiagramCommand[DiagramCommand[\"Zoom150\"] = 86] = \"Zoom150\";\r\n DiagramCommand[DiagramCommand[\"Zoom200\"] = 87] = \"Zoom200\";\r\n DiagramCommand[DiagramCommand[\"AutoZoomToContent\"] = 88] = \"AutoZoomToContent\";\r\n DiagramCommand[DiagramCommand[\"AutoZoomToWidth\"] = 89] = \"AutoZoomToWidth\";\r\n DiagramCommand[DiagramCommand[\"ZoomLevelInPercentage\"] = 90] = \"ZoomLevelInPercentage\";\r\n DiagramCommand[DiagramCommand[\"ConnectorRoutingMode\"] = 91] = \"ConnectorRoutingMode\";\r\n})(DiagramCommand = exports.DiagramCommand || (exports.DiagramCommand = {}));\r\nvar CommandManager = /** @class */ (function () {\r\n function CommandManager(control) {\r\n this.commands = {};\r\n this.shortcutsToCommand = {};\r\n this.lastCommandsChain = [];\r\n this.executingCommandsChain = [];\r\n this.executingCommandCounter = 0;\r\n this.isPublicApiCall = false;\r\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);\r\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);\r\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);\r\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);\r\n this.createCommand(control, DiagramCommand.Paste, PasteSelectionCommand_1.PasteSelectionCommand);\r\n this.createCommand(control, DiagramCommand.PasteInPosition, PasteSelectionInPosition_1.PasteSelectionInPositionCommand);\r\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);\r\n this.createCommand(control, DiagramCommand.Delete, DeleteCommand_1.DeleteCommand, key_1.KeyCode.Delete, key_1.KeyCode.Backspace);\r\n this.createCommand(control, DiagramCommand.Import, ImportCommand_1.ImportCommand);\r\n this.createCommand(control, DiagramCommand.ImportBPMN, ImportBPMNCommand_1.ImportBPMNCommand);\r\n this.createCommand(control, DiagramCommand.ImportXML, ImportXMLCommand_1.ImportXMLCommand);\r\n this.createCommand(control, DiagramCommand.Export, ExportCommand_1.ExportCommand);\r\n this.createCommand(control, DiagramCommand.ExportSvg, ExportSvgCommand_1.ExportSvgCommand);\r\n this.createCommand(control, DiagramCommand.ExportPng, ExportPngCommand_1.ExportPngCommand);\r\n this.createCommand(control, DiagramCommand.ExportJpg, ExportJpgCommand_1.ExportJpgCommand);\r\n this.createCommand(control, DiagramCommand.BindDocument, BindDocumentCommand_1.BindDocumentCommand);\r\n this.createCommand(control, DiagramCommand.UnbindDocument, UnbindDocumentCommand_1.UnbindDocumentCommand);\r\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);\r\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);\r\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);\r\n this.createCommand(control, DiagramCommand.FontName, ChangeFontNameCommand_1.ChangeFontNameCommand);\r\n this.createCommand(control, DiagramCommand.FontSize, ChangeFontSizeCommand_1.ChangeFontSizeCommand);\r\n this.createCommand(control, DiagramCommand.FontColor, ChangeFontColorCommand_1.ChangeFontColorCommand);\r\n this.createCommand(control, DiagramCommand.FillColor, ChangeFillColorCommand_1.ChangeFillColorCommand);\r\n this.createCommand(control, DiagramCommand.StrokeColor, ChangeStrokeColorCommand_1.ChangeStrokeColorCommand);\r\n this.createCommand(control, DiagramCommand.StrokeStyle, ChangeStrokeStyleCommand_1.ChangeStrokeStyleCommand);\r\n this.createCommand(control, DiagramCommand.StrokeWidth, ChangeStrokeWidthCommand_1.ChangeStrokeWidthCommand);\r\n this.createCommand(control, DiagramCommand.TextLeftAlign, ChangeTextAlignCommand_1.TextLeftAlignCommand);\r\n this.createCommand(control, DiagramCommand.TextCenterAlign, ChangeTextAlignCommand_1.TextCenterAlignCommand);\r\n this.createCommand(control, DiagramCommand.TextRightAlign, ChangeTextAlignCommand_1.TextRightAlignCommand);\r\n this.createCommand(control, DiagramCommand.ConnectorLineOption, ChangeConnectorLineOptionCommand_1.ChangeConnectorLineOptionCommand);\r\n this.createCommand(control, DiagramCommand.ConnectorStartLineEnding, ChangeConnectorLineEndingCommand_1.ChangeConnectorStartLineEndingCommand);\r\n this.createCommand(control, DiagramCommand.ConnectorEndLineEnding, ChangeConnectorLineEndingCommand_1.ChangeConnectorEndLineEndingCommand);\r\n this.createCommand(control, DiagramCommand.BringToFront, BringToFrontCommand_1.BringToFrontCommand);\r\n this.createCommand(control, DiagramCommand.SendToBack, SendToBackCommand_1.SendToBackCommand);\r\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);\r\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);\r\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);\r\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);\r\n this.createCommand(control, DiagramCommand.MoveStepLeft, MoveCommands_1.MoveStepLeftCommand, key_1.KeyCode.Left, key_1.ModifierKey.Shift | key_1.KeyCode.Left);\r\n this.createCommand(control, DiagramCommand.MoveStepRight, MoveCommands_1.MoveStepRightCommand, key_1.KeyCode.Right, key_1.ModifierKey.Shift | key_1.KeyCode.Right);\r\n this.createCommand(control, DiagramCommand.MoveStepUp, MoveCommands_1.MoveStepUpCommand, key_1.KeyCode.Up, key_1.ModifierKey.Shift | key_1.KeyCode.Up);\r\n this.createCommand(control, DiagramCommand.MoveStepDown, MoveCommands_1.MoveStepDownCommand, key_1.KeyCode.Down, key_1.ModifierKey.Shift | key_1.KeyCode.Down);\r\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);\r\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);\r\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);\r\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);\r\n this.createCommand(control, DiagramCommand.Lock, LockCommand_1.LockCommand);\r\n this.createCommand(control, DiagramCommand.Unlock, UnlockCommand_1.UnLockCommand);\r\n this.createCommand(control, DiagramCommand.AutoLayoutTree, AutoLayoutTreeVerticalCommand_1.AutoLayoutTreeVerticalCommand); // TODO: remove after, need for BC\r\n this.createCommand(control, DiagramCommand.AutoLayoutFlow, AutoLayoutLayeredHorizontalCommand_1.AutoLayoutLayeredHorizontalCommand); // TODO: remove after, need for BC\r\n this.createCommand(control, DiagramCommand.Units, ChangeUnitsCommand_1.ChangeUnitsCommand);\r\n this.createCommand(control, DiagramCommand.ViewUnits, ChangeUnitsCommand_1.ChangeViewUnitsCommand);\r\n this.createCommand(control, DiagramCommand.PageSize, ChangePageSizeCommand_1.ChangePageSizeCommand);\r\n this.createCommand(control, DiagramCommand.PageLandscape, ChangePageLandscapeCommand_1.ChangePageLandscapeCommand);\r\n this.createCommand(control, DiagramCommand.PageColor, ChangePageColorCommand_1.ChangePageColorCommand);\r\n this.createCommand(control, DiagramCommand.GridSize, ChangeGridSizeCommand_1.ChangeGridSizeCommand);\r\n this.createCommand(control, DiagramCommand.ShowGrid, ChangeShowGridCommand_1.ChangeShowGridCommand);\r\n this.createCommand(control, DiagramCommand.SnapToGrid, ChangeSnapToGridCommand_1.ChangeSnapToGridCommand);\r\n this.createCommand(control, DiagramCommand.ZoomLevel, ChangeZoomLevelCommand_1.ChangeZoomLevelCommand);\r\n this.createCommand(control, DiagramCommand.ZoomLevelInPercentage, ChangeZoomLevelCommand_1.ChangeZoomLevelInPercentageCommand);\r\n this.createCommand(control, DiagramCommand.AutoLayoutTreeVertical, AutoLayoutTreeVerticalCommand_1.AutoLayoutTreeVerticalCommand);\r\n this.createCommand(control, DiagramCommand.AutoLayoutTreeVerticalBottomToTop, AutoLayoutTreeVerticalBottomToTopCommand_1.AutoLayoutTreeVerticalBottomToTopCommand);\r\n this.createCommand(control, DiagramCommand.AutoLayoutTreeHorizontal, AutoLayoutTreeHorizontalCommand_1.AutoLayoutTreeHorizontalCommand);\r\n this.createCommand(control, DiagramCommand.AutoLayoutTreeHorizontalRightToLeft, AutoLayoutTreeHorizontalRightToLeftCommand_1.AutoLayoutTreeHorizontalRightToLeftCommand);\r\n this.createCommand(control, DiagramCommand.AutoLayoutLayeredVertical, AutoLayoutLayeredVerticalCommand_1.AutoLayoutLayeredVerticalCommand);\r\n this.createCommand(control, DiagramCommand.AutoLayoutLayeredVerticalBottomToTop, AutoLayoutLayeredVerticalBottomToTopCommand_1.AutoLayoutLayeredVerticalBottomToTopCommand);\r\n this.createCommand(control, DiagramCommand.AutoLayoutLayeredHorizontal, AutoLayoutLayeredHorizontalCommand_1.AutoLayoutLayeredHorizontalCommand);\r\n this.createCommand(control, DiagramCommand.AutoLayoutLayeredHorizontalRightToLeft, AutoLayoutLayeredHorizontalRightToLeftCommand_1.AutoLayoutLayeredHorizontalRightToLeftCommand);\r\n this.createCommand(control, DiagramCommand.Fullscreen, ToggleFullscreenCommand_1.ToggleFullscreenCommand, key_1.KeyCode.F11);\r\n this.createCommand(control, DiagramCommand.ToggleSimpleView, ToggleSimpleViewCommand_1.ToggleSimpleViewCommand);\r\n this.createCommand(control, DiagramCommand.ToggleReadOnly, ToggleReadOnlyCommand_1.ToggleReadOnlyCommand);\r\n this.createCommand(control, DiagramCommand.InsertShapeImage, InsertShapeImageCommand_1.InsertShapeImageCommand);\r\n this.createCommand(control, DiagramCommand.EditShapeImage, EditShapeImageCommand_1.EditShapeImageCommand);\r\n this.createCommand(control, DiagramCommand.DeleteShapeImage, DeleteShapeImageCommand_1.DeleteShapeImageCommand);\r\n this.createCommand(control, DiagramCommand.FitToScreen, ChangeZoomLevelCommand_1.FitToScreenCommand);\r\n this.createCommand(control, DiagramCommand.FitToWidth, ChangeZoomLevelCommand_1.FitToWidthCommand);\r\n this.createCommand(control, DiagramCommand.SwitchAutoZoom, ChangeZoomLevelCommand_1.SwitchAutoZoomCommand);\r\n this.createCommand(control, DiagramCommand.ToggleAutoZoom, ChangeZoomLevelCommand_1.ToggleAutoZoomCommand);\r\n this.createCommand(control, DiagramCommand.ZoomLevelItems, ChangeZoomLevelCommand_1.ChangeZoomLevelItemsCommand);\r\n this.createCommand(control, DiagramCommand.GridSizeItems, ChangeGridSizeCommand_1.ChangeGridSizeItemsCommand);\r\n this.createCommand(control, DiagramCommand.PageSizeItems, ChangePageSizeCommand_1.ChangePageSizeItemsCommand);\r\n this.createCommand(control, DiagramCommand.Zoom25, ChangeZoomLevelCommand_1.ChangeZoomLevelTo25Command);\r\n this.createCommand(control, DiagramCommand.Zoom50, ChangeZoomLevelCommand_1.ChangeZoomLevelTo50Command);\r\n this.createCommand(control, DiagramCommand.Zoom75, ChangeZoomLevelCommand_1.ChangeZoomLevelTo75Command);\r\n this.createCommand(control, DiagramCommand.Zoom100, ChangeZoomLevelCommand_1.ChangeZoomLevelTo100Command);\r\n this.createCommand(control, DiagramCommand.Zoom125, ChangeZoomLevelCommand_1.ChangeZoomLevelTo125Command);\r\n this.createCommand(control, DiagramCommand.Zoom150, ChangeZoomLevelCommand_1.ChangeZoomLevelTo150Command);\r\n this.createCommand(control, DiagramCommand.Zoom200, ChangeZoomLevelCommand_1.ChangeZoomLevelTo200Command);\r\n this.createCommand(control, DiagramCommand.AutoZoomToContent, ChangeZoomLevelCommand_1.ToggleAutoZoomToContentCommand);\r\n this.createCommand(control, DiagramCommand.AutoZoomToWidth, ChangeZoomLevelCommand_1.ToggleAutoZoomToWidthCommand);\r\n this.createCommand(control, DiagramCommand.ConnectorRoutingMode, ChangeConnectorRoutingModeCommand_1.ChangeConnectorRoutingModeCommand);\r\n }\r\n CommandManager.prototype.getCommand = function (key) {\r\n return this.commands[key];\r\n };\r\n CommandManager.prototype.beforeExecuting = function (command) {\r\n this.executingCommandsChain.push(command);\r\n this.executingCommandCounter++;\r\n };\r\n CommandManager.prototype.afterExecuting = function () {\r\n this.executingCommandCounter--;\r\n if (this.executingCommandCounter === 0) {\r\n this.lastCommandsChain = this.executingCommandsChain;\r\n this.executingCommandsChain = [];\r\n }\r\n };\r\n CommandManager.prototype.processShortcut = function (code) {\r\n var command = this.shortcutsToCommand[code];\r\n if (command)\r\n return command.execute();\r\n return false;\r\n };\r\n CommandManager.prototype.processPaste = function (clipboardData) {\r\n var command = this.getCommand(DiagramCommand.Paste);\r\n if (command && command.isEnabled())\r\n command.execute(clipboardData);\r\n return true;\r\n };\r\n // ISelectionChangesListener\r\n CommandManager.prototype.notifySelectionChanged = function (_selection) {\r\n this.lastCommandsChain = [];\r\n };\r\n CommandManager.prototype.notifyScrollPositionChanged = function () { };\r\n CommandManager.prototype.createCommand = function (control, commandId, commandType) {\r\n var shortcuts = [];\r\n for (var _i = 3; _i < arguments.length; _i++) {\r\n shortcuts[_i - 3] = arguments[_i];\r\n }\r\n this.commands[commandId] = new commandType(control);\r\n for (var i = 0; i < shortcuts.length; i++) {\r\n var shortcut = shortcuts[i];\r\n if (typeof shortcut === \"number\")\r\n this.shortcutsToCommand[shortcut] = this.commands[commandId];\r\n }\r\n };\r\n return CommandManager;\r\n}());\r\nexports.CommandManager = CommandManager;\r\n\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar min_max_1 = __webpack_require__(165);\r\nvar comparers_1 = __webpack_require__(166);\r\nvar ListUtils = (function () {\r\n function ListUtils() {\r\n }\r\n ListUtils.remove = function (list, element) {\r\n var index = list.indexOf(element, 0);\r\n if (index >= 0)\r\n list.splice(index, 1);\r\n };\r\n ListUtils.removeBy = function (list, callback) {\r\n var len = list.length;\r\n for (var index = 0; index < len; index++) {\r\n if (callback(list[index], index))\r\n return list.splice(index, 1)[0];\r\n }\r\n return null;\r\n };\r\n ListUtils.shallowCopy = function (list) {\r\n return list.slice();\r\n };\r\n ListUtils.deepCopy = function (list) {\r\n return ListUtils.map(list, function (val) { return val.clone(); });\r\n };\r\n ListUtils.initByValue = function (numElements, initValue) {\r\n var result = [];\r\n for (; numElements > 0; numElements--)\r\n result.push(initValue);\r\n return result;\r\n };\r\n ListUtils.initByCallback = function (numElements, initCallback) {\r\n var result = [];\r\n for (var index = 0; index < numElements; index++)\r\n result.push(initCallback(index));\r\n return result;\r\n };\r\n ListUtils.forEachOnInterval = function (interval, callback) {\r\n var end = interval.end;\r\n for (var index = interval.start; index < end; index++)\r\n callback(index);\r\n };\r\n ListUtils.reverseForEachOnInterval = function (interval, callback) {\r\n var start = interval.start;\r\n for (var index = interval.end - 1; index >= start; index--)\r\n callback(index);\r\n };\r\n ListUtils.reducedMap = function (list, callback, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = list.length; }\r\n var result = [];\r\n for (var index = startIndex; index < endIndex; index++) {\r\n var newItem = callback(list[index], index);\r\n if (newItem !== null)\r\n result.push(newItem);\r\n }\r\n return result;\r\n };\r\n ListUtils.filter = function (list, callback, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = list.length; }\r\n var result = [];\r\n for (var index = startIndex; index < endIndex; index++) {\r\n var item = list[index];\r\n if (callback(item, index))\r\n result.push(item);\r\n }\r\n return result;\r\n };\r\n ListUtils.map = function (list, callback, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = list.length; }\r\n var result = [];\r\n for (var index = startIndex; index < endIndex; index++)\r\n result.push(callback(list[index], index));\r\n return result;\r\n };\r\n ListUtils.indexBy = function (list, callback, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = list.length; }\r\n for (var ind = startIndex; ind < endIndex; ind++) {\r\n if (callback(list[ind], ind))\r\n return ind;\r\n }\r\n return -1;\r\n };\r\n ListUtils.reverseIndexBy = function (list, callback, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = list.length - 1; }\r\n if (endIndex === void 0) { endIndex = 0; }\r\n for (var ind = startIndex; ind >= endIndex; ind--) {\r\n if (callback(list[ind], ind))\r\n return ind;\r\n }\r\n return -1;\r\n };\r\n ListUtils.elementBy = function (list, callback, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = list.length; }\r\n var ind = ListUtils.indexBy(list, callback, startIndex, endIndex);\r\n return ind < 0 ? null : list[ind];\r\n };\r\n ListUtils.reverseElementBy = function (list, callback, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = list.length - 1; }\r\n if (endIndex === void 0) { endIndex = 0; }\r\n var ind = ListUtils.reverseIndexBy(list, callback, startIndex, endIndex);\r\n return ind < 0 ? null : list[ind];\r\n };\r\n ListUtils.last = function (list) {\r\n return list[list.length - 1];\r\n };\r\n ListUtils.setLast = function (list, newVal) {\r\n return list[list.length - 1] = newVal;\r\n };\r\n ListUtils.incLast = function (list) {\r\n return ++list[list.length - 1];\r\n };\r\n ListUtils.decLast = function (list) {\r\n return --list[list.length - 1];\r\n };\r\n ListUtils.equals = function (a, b) {\r\n return a.length === b.length && ListUtils.allOf2(a, b, function (a, b) { return a.equals(b); });\r\n };\r\n ListUtils.equalsByReference = function (a, b) {\r\n var aLen = a.length;\r\n var bLen = a.length;\r\n if (aLen !== bLen)\r\n return false;\r\n for (var i = 0; i < aLen; i++) {\r\n if (a[i] !== b[i])\r\n return false;\r\n }\r\n return true;\r\n };\r\n ListUtils.unique = function (list, cmp, equal, finalizeObj) {\r\n if (equal === void 0) { equal = cmp; }\r\n if (finalizeObj === void 0) { finalizeObj = function () { }; }\r\n var len = list.length;\r\n if (len === 0)\r\n return [];\r\n list = list.sort(cmp);\r\n var prevValue = list[0];\r\n var result = ListUtils.reducedMap(list, function (v) {\r\n if (equal(prevValue, v) !== 0) {\r\n prevValue = v;\r\n return v;\r\n }\r\n finalizeObj(v);\r\n return null;\r\n }, 1, len);\r\n result.unshift(list[0]);\r\n return result;\r\n };\r\n ListUtils.uniqueNumber = function (list) {\r\n list = list.sort(comparers_1.Comparers.number);\r\n var prevValue = Number.NaN;\r\n for (var i = list.length - 1; i >= 0; i--) {\r\n if (prevValue === list[i])\r\n list.splice(i, 1);\r\n else\r\n prevValue = list[i];\r\n }\r\n return list;\r\n };\r\n ListUtils.forEach = function (list, callback, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = list.length; }\r\n for (var index = startIndex; index < endIndex; index++)\r\n callback(list[index], index);\r\n };\r\n ListUtils.forEach2 = function (listA, listB, callback, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = listA.length; }\r\n for (var index = startIndex; index < endIndex; index++)\r\n callback(listA[index], listB[index], index);\r\n };\r\n ListUtils.reverseForEach = function (list, callback, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = list.length - 1; }\r\n if (endIndex === void 0) { endIndex = 0; }\r\n for (var index = startIndex; index >= endIndex; index--)\r\n callback(list[index], index);\r\n };\r\n ListUtils.reverseIndexOf = function (list, element, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = list.length - 1; }\r\n if (endIndex === void 0) { endIndex = 0; }\r\n for (var index = startIndex; index >= endIndex; index--) {\r\n if (list[index] === element)\r\n return index;\r\n }\r\n return -1;\r\n };\r\n ListUtils.accumulate = function (list, initAccValue, callback, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = list.length; }\r\n var acc = initAccValue;\r\n for (var ind = startIndex; ind < endIndex; ind++)\r\n acc = callback(acc, list[ind], ind);\r\n return acc;\r\n };\r\n ListUtils.accumulateNumber = function (list, callback, initAccValue, startIndex, endIndex) {\r\n if (initAccValue === void 0) { initAccValue = 0; }\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = list.length; }\r\n var acc = initAccValue;\r\n for (var ind = startIndex; ind < endIndex; ind++)\r\n acc += callback(list[ind], ind, acc);\r\n return acc;\r\n };\r\n ListUtils.anyOf = function (list, callback, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = list.length; }\r\n for (var index = startIndex; index < endIndex; index++) {\r\n if (callback(list[index], index))\r\n return true;\r\n }\r\n return false;\r\n };\r\n ListUtils.unsafeAnyOf = function (list, callback, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = list.length; }\r\n for (var index = startIndex; index < endIndex; index++) {\r\n var currResult = callback(list[index], index);\r\n if (currResult)\r\n return currResult;\r\n }\r\n return null;\r\n };\r\n ListUtils.reverseAnyOf = function (list, callback, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = list.length - 1; }\r\n if (endIndex === void 0) { endIndex = 0; }\r\n for (var index = startIndex; index >= endIndex; index--) {\r\n if (callback(list[index], index))\r\n return true;\r\n }\r\n return false;\r\n };\r\n ListUtils.unsafeReverseAnyOf = function (list, callback, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = list.length - 1; }\r\n if (endIndex === void 0) { endIndex = 0; }\r\n for (var index = startIndex; index >= endIndex; index--) {\r\n var currResult = callback(list[index], index);\r\n if (currResult)\r\n return currResult;\r\n }\r\n return null;\r\n };\r\n ListUtils.anyOf2 = function (listA, listB, callback, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = listA.length; }\r\n for (var index = startIndex; index < endIndex; index++) {\r\n if (callback(listA[index], listB[index], index))\r\n return true;\r\n }\r\n return false;\r\n };\r\n ListUtils.allOf = function (list, callback, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = list.length; }\r\n for (var index = startIndex; index < endIndex; index++) {\r\n if (!callback(list[index], index))\r\n return false;\r\n }\r\n return true;\r\n };\r\n ListUtils.allOf2 = function (listA, listB, callback, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = listA.length; }\r\n for (var index = startIndex; index < endIndex; index++) {\r\n if (!callback(listA[index], listB[index], index))\r\n return false;\r\n }\r\n return true;\r\n };\r\n ListUtils.allOfOnInterval = function (interval, callback) {\r\n var endIndex = interval.end;\r\n for (var index = interval.start; index < endIndex; index++) {\r\n if (!callback(index))\r\n return false;\r\n }\r\n return true;\r\n };\r\n ListUtils.addListOnTail = function (resultList, addedList) {\r\n for (var i = 0, elem = void 0; elem = addedList[i]; i++)\r\n resultList.push(elem);\r\n return resultList;\r\n };\r\n ListUtils.joinLists = function (converter) {\r\n var lists = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n lists[_i - 1] = arguments[_i];\r\n }\r\n return ListUtils.accumulate(lists, [], function (accList, list) {\r\n ListUtils.addListOnTail(accList, converter(list));\r\n return accList;\r\n });\r\n };\r\n ListUtils.push = function (list, element) {\r\n list.push(element);\r\n return list;\r\n };\r\n ListUtils.countIf = function (list, callback) {\r\n return ListUtils.accumulateNumber(list, function (elem, ind) { return callback(elem, ind) ? 1 : 0; });\r\n };\r\n ListUtils.clear = function (list) {\r\n list.splice(0);\r\n };\r\n ListUtils.merge = function (list, cmp, shouldMerge, merge, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = list.length; }\r\n list = list.slice(startIndex, endIndex);\r\n if (endIndex - startIndex < 2)\r\n return list;\r\n list = list.sort(cmp);\r\n var prevObj = list[startIndex];\r\n var result = [prevObj];\r\n for (var ind = startIndex + 1; ind < endIndex; ind++) {\r\n var obj = list[ind];\r\n if (shouldMerge(prevObj, obj))\r\n merge(prevObj, obj);\r\n else {\r\n prevObj = obj;\r\n result.push(prevObj);\r\n }\r\n }\r\n return result;\r\n };\r\n ListUtils.min = function (list, getValue, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = list.length; }\r\n var res = ListUtils.minExtended(list, getValue, startIndex, endIndex);\r\n return res ? res.minElement : null;\r\n };\r\n ListUtils.max = function (list, getValue, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = list.length; }\r\n var res = ListUtils.maxExtended(list, getValue, startIndex, endIndex);\r\n return res ? res.maxElement : null;\r\n };\r\n ListUtils.minMax = function (list, getValue, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = list.length; }\r\n var res = ListUtils.minMaxExtended(list, getValue, startIndex, endIndex);\r\n return res ? new min_max_1.MinMax(res.minElement, res.maxElement) : null;\r\n };\r\n ListUtils.minExtended = function (list, getValue, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = list.length; }\r\n if (list.length === 0)\r\n return null;\r\n var minElement = list[startIndex];\r\n var minValue = getValue(minElement);\r\n for (var index = startIndex + 1; index < endIndex; index++) {\r\n var elem = list[index];\r\n var elemValue = getValue(elem);\r\n if (elemValue < minValue) {\r\n minValue = elemValue;\r\n minElement = elem;\r\n }\r\n }\r\n return new min_max_1.ExtendedMin(minElement, minValue);\r\n };\r\n ListUtils.maxExtended = function (list, getValue, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = list.length; }\r\n if (list.length === 0)\r\n return null;\r\n var maxElement = list[startIndex];\r\n var maxValue = getValue(maxElement);\r\n for (var index = startIndex + 1; index < endIndex; index++) {\r\n var elem = list[index];\r\n var elemValue = getValue(elem);\r\n if (elemValue > maxValue) {\r\n maxValue = elemValue;\r\n maxElement = elem;\r\n }\r\n }\r\n return new min_max_1.ExtendedMax(maxElement, maxValue);\r\n };\r\n ListUtils.minMaxExtended = function (list, getValue, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = list.length; }\r\n if (list.length === 0)\r\n return null;\r\n var minElement = list[startIndex];\r\n var maxElement = minElement;\r\n var minValue = getValue(minElement);\r\n var maxValue = minValue;\r\n for (var index = startIndex + 1; index < endIndex; index++) {\r\n var elem = list[index];\r\n var elemValue = getValue(elem);\r\n if (elemValue < minValue) {\r\n minValue = elemValue;\r\n minElement = elem;\r\n }\r\n else if (elemValue > maxValue) {\r\n maxValue = elemValue;\r\n maxElement = elem;\r\n }\r\n }\r\n return new min_max_1.ExtendedMinMax(minElement, minValue, maxElement, maxValue);\r\n };\r\n ListUtils.minByCmp = function (list, cmp, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = list.length; }\r\n if (list.length === 0)\r\n return null;\r\n var found = list[startIndex];\r\n for (var index = startIndex + 1; index < endIndex; index++) {\r\n var elem = list[index];\r\n if (cmp(elem, found) < 0)\r\n found = elem;\r\n }\r\n return found;\r\n };\r\n ListUtils.maxByCmp = function (list, cmp, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = list.length; }\r\n if (list.length === 0)\r\n return null;\r\n var found = list[startIndex];\r\n for (var index = startIndex + 1; index < endIndex; index++) {\r\n var elem = list[index];\r\n if (cmp(elem, found) > 0)\r\n found = elem;\r\n }\r\n return found;\r\n };\r\n ListUtils.minMaxByCmp = function (list, cmp, startIndex, endIndex) {\r\n if (startIndex === void 0) { startIndex = 0; }\r\n if (endIndex === void 0) { endIndex = list.length; }\r\n if (list.length === 0)\r\n return null;\r\n var min = list[startIndex];\r\n var max = min;\r\n for (var index = startIndex + 1; index < endIndex; index++) {\r\n var elem = list[index];\r\n var res = cmp(elem, min);\r\n if (res > 0)\r\n max = elem;\r\n else if (res < 0)\r\n min = elem;\r\n }\r\n return new min_max_1.MinMax(min, max);\r\n };\r\n return ListUtils;\r\n}());\r\nexports.ListUtils = ListUtils;\r\n\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar file_1 = __webpack_require__(177);\r\nvar mime_type_1 = __webpack_require__(178);\r\nvar Base64Utils = (function () {\r\n function Base64Utils() {\r\n }\r\n Base64Utils.normalizeToDataUrl = function (base64, mimeType) {\r\n if (!Base64Utils.checkPrependDataUrl(base64))\r\n base64 = Base64Utils.prependByDataUrl(base64, mimeType);\r\n return base64;\r\n };\r\n Base64Utils.prependByDataUrl = function (base64, mimeType) {\r\n return \"data:\" + mimeType + \";base64,\" + base64;\r\n };\r\n Base64Utils.checkPrependDataUrl = function (base64) {\r\n return Base64Utils.dataUrl.test(base64);\r\n };\r\n Base64Utils.deleteDataUrlPrefix = function (base64DataUrl) {\r\n return base64DataUrl.replace(Base64Utils.dataUrl, '');\r\n };\r\n Base64Utils.getUint8Array = function (base64) {\r\n base64 = atob(base64);\r\n var n = base64.length;\r\n var arr = new Uint8Array(n);\r\n while (n--)\r\n arr[n] = base64.charCodeAt(n);\r\n return arr;\r\n };\r\n Base64Utils.fromArrayBuffer = function (buffer) {\r\n var binary = [];\r\n var bytes = new Uint8Array(buffer);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++)\r\n binary.push(String.fromCharCode(bytes[i]));\r\n return window.btoa(binary.join(''));\r\n };\r\n Base64Utils.getFileFromBase64 = function (base64, fileName, options) {\r\n if (fileName === void 0) { fileName = ''; }\r\n var data = Base64Utils.getUint8Array(base64);\r\n return file_1.FileUtils.createFile([data], fileName, options);\r\n };\r\n Base64Utils.getMimeTypeAsString = function (base64) {\r\n var match = base64.match(Base64Utils.dataUrl);\r\n return match ? match[1] : null;\r\n };\r\n Base64Utils.getKnownMimeType = function (base64) {\r\n var match = base64.match(Base64Utils.dataUrl);\r\n return match ? mime_type_1.MimeTypeUtils.stringTypeToType(match[1]) : mime_type_1.DxMimeType.Unknown;\r\n };\r\n Base64Utils.fromBlobAsArrayBuffer = function (blob, callback) {\r\n var reader = new FileReader();\r\n reader.onloadend = function () { return callback(Base64Utils.fromArrayBuffer(reader.result)); };\r\n reader.readAsArrayBuffer(blob);\r\n };\r\n Base64Utils.fromBlobAsDataUrl = function (blob, callback) {\r\n var reader = new FileReader();\r\n reader.onloadend = function () { return callback(reader.result); };\r\n reader.readAsDataURL(blob);\r\n };\r\n Base64Utils.dataUrl = /^data:(.*?)(;(.*?))??(;base64)?,/;\r\n return Base64Utils;\r\n}());\r\nexports.Base64Utils = Base64Utils;\r\n\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.NativeConnector = exports.NativeShape = exports.NativeItem = void 0;\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar NativeItem = /** @class */ (function () {\r\n function NativeItem(id, key) {\r\n this.id = id;\r\n this.key = key;\r\n this.unitsApplied = false;\r\n }\r\n NativeItem.prototype.applyUnits = function (units) {\r\n if (!this.unitsApplied && units !== undefined) {\r\n this.applyUnitsCore(units);\r\n this.unitsApplied = true;\r\n }\r\n };\r\n return NativeItem;\r\n}());\r\nexports.NativeItem = NativeItem;\r\nvar NativeShape = /** @class */ (function (_super) {\r\n __extends(NativeShape, _super);\r\n function NativeShape() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n NativeShape.prototype.applyUnitsCore = function (units) {\r\n this.position.x = ModelUtils_1.ModelUtils.getlUnitValue(units, this.position.x);\r\n this.position.y = ModelUtils_1.ModelUtils.getlUnitValue(units, this.position.y);\r\n this.size.width = ModelUtils_1.ModelUtils.getlUnitValue(units, this.size.width);\r\n this.size.height = ModelUtils_1.ModelUtils.getlUnitValue(units, this.size.height);\r\n };\r\n return NativeShape;\r\n}(NativeItem));\r\nexports.NativeShape = NativeShape;\r\nvar NativeConnector = /** @class */ (function (_super) {\r\n __extends(NativeConnector, _super);\r\n function NativeConnector() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n NativeConnector.prototype.applyUnitsCore = function (units) {\r\n this.points.forEach(function (pt) {\r\n pt.x = ModelUtils_1.ModelUtils.getlUnitValue(units, pt.x);\r\n pt.y = ModelUtils_1.ModelUtils.getlUnitValue(units, pt.y);\r\n });\r\n };\r\n return NativeConnector;\r\n}(NativeItem));\r\nexports.NativeConnector = NativeConnector;\r\n\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ConnectorRenderPointsContext = void 0;\r\nvar ConnectorRenderPointsContext = /** @class */ (function () {\r\n function ConnectorRenderPointsContext(renderPoints, lockCreateRenderPoints, actualRoutingMode) {\r\n this.renderPoints = renderPoints;\r\n this.lockCreateRenderPoints = lockCreateRenderPoints;\r\n this.actualRoutingMode = actualRoutingMode;\r\n }\r\n return ConnectorRenderPointsContext;\r\n}());\r\nexports.ConnectorRenderPointsContext = ConnectorRenderPointsContext;\r\n\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ReplaceConnectorPointsHistoryItem = exports.ChangeConnectorPointsHistoryItem = exports.UpdateConnectorPointsHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar UpdateConnectorPointsHistoryItem = /** @class */ (function (_super) {\r\n __extends(UpdateConnectorPointsHistoryItem, _super);\r\n function UpdateConnectorPointsHistoryItem(connectorKey, newPoints) {\r\n var _this = _super.call(this) || this;\r\n _this.connectorKey = connectorKey;\r\n _this.newPoints = newPoints;\r\n return _this;\r\n }\r\n UpdateConnectorPointsHistoryItem.prototype.redo = function (manipulator) {\r\n var _this = this;\r\n var connector = manipulator.model.findConnector(this.connectorKey);\r\n this.oldRenderContext = connector.createRenderPointsContext();\r\n this.oldPoints = connector.points.map(function (p) { return p.clone(); });\r\n manipulator.changeConnectorPoints(connector, function (connector) {\r\n connector.points = _this.newPoints;\r\n _this.updateRenderPoints(connector);\r\n });\r\n };\r\n UpdateConnectorPointsHistoryItem.prototype.undo = function (manipulator) {\r\n var _this = this;\r\n var connector = manipulator.model.findConnector(this.connectorKey);\r\n manipulator.changeConnectorPoints(connector, function (connector) {\r\n connector.points = _this.oldPoints;\r\n connector.replaceRenderPoints(_this.oldRenderContext);\r\n });\r\n };\r\n return UpdateConnectorPointsHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.UpdateConnectorPointsHistoryItem = UpdateConnectorPointsHistoryItem;\r\nvar ChangeConnectorPointsHistoryItem = /** @class */ (function (_super) {\r\n __extends(ChangeConnectorPointsHistoryItem, _super);\r\n function ChangeConnectorPointsHistoryItem(connectorKey, newPoints, newRenderContext) {\r\n var _this = _super.call(this, connectorKey, newPoints) || this;\r\n _this.connectorKey = connectorKey;\r\n _this.newPoints = newPoints;\r\n _this.newRenderContext = newRenderContext;\r\n return _this;\r\n }\r\n ChangeConnectorPointsHistoryItem.prototype.updateRenderPoints = function (connector) {\r\n connector.replaceRenderPoints(this.newRenderContext);\r\n };\r\n return ChangeConnectorPointsHistoryItem;\r\n}(UpdateConnectorPointsHistoryItem));\r\nexports.ChangeConnectorPointsHistoryItem = ChangeConnectorPointsHistoryItem;\r\nvar ReplaceConnectorPointsHistoryItem = /** @class */ (function (_super) {\r\n __extends(ReplaceConnectorPointsHistoryItem, _super);\r\n function ReplaceConnectorPointsHistoryItem(connectorKey, newPoints) {\r\n var _this = _super.call(this, connectorKey, newPoints) || this;\r\n _this.connectorKey = connectorKey;\r\n _this.newPoints = newPoints;\r\n return _this;\r\n }\r\n ReplaceConnectorPointsHistoryItem.prototype.updateRenderPoints = function (connector) {\r\n connector.clearRenderPoints();\r\n };\r\n return ReplaceConnectorPointsHistoryItem;\r\n}(UpdateConnectorPointsHistoryItem));\r\nexports.ReplaceConnectorPointsHistoryItem = ReplaceConnectorPointsHistoryItem;\r\n\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Offsets = (function () {\r\n function Offsets(left, right, top, bottom) {\r\n this.left = left;\r\n this.right = right;\r\n this.top = top;\r\n this.bottom = bottom;\r\n }\r\n Offsets.empty = function () {\r\n return new Offsets(0, 0, 0, 0);\r\n };\r\n Object.defineProperty(Offsets.prototype, \"horizontal\", {\r\n get: function () {\r\n return this.left + this.right;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Offsets.prototype, \"vertical\", {\r\n get: function () {\r\n return this.top + this.bottom;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Offsets.fromNumber = function (offset) {\r\n return new Offsets(offset, offset, offset, offset);\r\n };\r\n Offsets.fromOffsets = function (offsets) {\r\n return new Offsets(offsets.left, offsets.right, offsets.top, offsets.bottom);\r\n };\r\n Offsets.fromSide = function (horizontal, vertical) {\r\n return new Offsets(horizontal, horizontal, vertical, vertical);\r\n };\r\n Offsets.prototype.normalize = function () {\r\n this.left = Math.max(0, this.left);\r\n this.right = Math.max(0, this.right);\r\n this.top = Math.max(0, this.top);\r\n this.bottom = Math.max(0, this.bottom);\r\n return this;\r\n };\r\n Offsets.prototype.toString = function () {\r\n return JSON.stringify(this);\r\n };\r\n Offsets.prototype.isEmpty = function () {\r\n return this.left === 0 && this.right === 0 && this.top === 0 && this.bottom === 0;\r\n };\r\n Offsets.prototype.offset = function (offset) {\r\n this.left += offset.left;\r\n this.right += offset.right;\r\n this.top += offset.top;\r\n this.bottom += offset.bottom;\r\n return this;\r\n };\r\n Offsets.prototype.multiply = function (multLeft, multRight, multTop, multBottom) {\r\n switch (arguments.length) {\r\n case 1: {\r\n this.left *= multLeft;\r\n this.right *= multLeft;\r\n this.top *= multLeft;\r\n this.bottom *= multLeft;\r\n return this;\r\n }\r\n case 2: {\r\n this.left *= multLeft;\r\n this.right *= multLeft;\r\n this.top *= multRight;\r\n this.bottom *= multRight;\r\n return this;\r\n }\r\n case 4: {\r\n this.left *= multLeft;\r\n this.right *= multRight;\r\n this.top *= multTop;\r\n this.bottom *= multBottom;\r\n return this;\r\n }\r\n }\r\n return this;\r\n };\r\n Offsets.prototype.clone = function () {\r\n return new Offsets(this.left, this.right, this.top, this.bottom);\r\n };\r\n Offsets.prototype.copyFrom = function (obj) {\r\n this.left = obj.left;\r\n this.right = obj.right;\r\n this.top = obj.top;\r\n this.bottom = obj.bottom;\r\n };\r\n Offsets.prototype.equals = function (obj) {\r\n return this.top === obj.top &&\r\n this.bottom === obj.bottom &&\r\n this.right === obj.right &&\r\n this.left === obj.left;\r\n };\r\n Offsets.prototype.applyConverter = function (converter) {\r\n this.left = converter(this.left);\r\n this.right = converter(this.right);\r\n this.top = converter(this.top);\r\n this.bottom = converter(this.bottom);\r\n return this;\r\n };\r\n return Offsets;\r\n}());\r\nexports.Offsets = Offsets;\r\n\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeConnectorPropertyHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar ChangeConnectorPropertyHistoryItem = /** @class */ (function (_super) {\r\n __extends(ChangeConnectorPropertyHistoryItem, _super);\r\n function ChangeConnectorPropertyHistoryItem(connectorKey, propertyName, value) {\r\n var _this = _super.call(this) || this;\r\n _this.connectorKey = connectorKey;\r\n _this.propertyName = propertyName;\r\n _this.value = value;\r\n return _this;\r\n }\r\n ChangeConnectorPropertyHistoryItem.prototype.redo = function (manipulator) {\r\n var connector = manipulator.model.findConnector(this.connectorKey);\r\n this.oldValue = connector.properties[this.propertyName];\r\n manipulator.changeConnectorProperty(connector, this.propertyName, this.value);\r\n };\r\n ChangeConnectorPropertyHistoryItem.prototype.undo = function (manipulator) {\r\n var connector = manipulator.model.findConnector(this.connectorKey);\r\n manipulator.changeConnectorProperty(connector, this.propertyName, this.oldValue);\r\n };\r\n return ChangeConnectorPropertyHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.ChangeConnectorPropertyHistoryItem = ChangeConnectorPropertyHistoryItem;\r\n\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeStyleHistoryItem = void 0;\r\nvar ChangeStyleHistoryItemBase_1 = __webpack_require__(119);\r\nvar ChangeStyleHistoryItem = /** @class */ (function (_super) {\r\n __extends(ChangeStyleHistoryItem, _super);\r\n function ChangeStyleHistoryItem(itemKey, styleProperty, styleValue) {\r\n return _super.call(this, itemKey, styleProperty, styleValue) || this;\r\n }\r\n ChangeStyleHistoryItem.prototype.redo = function (manipulator) {\r\n var item = manipulator.model.findItem(this.itemKey);\r\n this.oldStyleValue = item.style[this.styleProperty];\r\n manipulator.changeStyle(item, this.styleProperty, this.styleValue);\r\n };\r\n ChangeStyleHistoryItem.prototype.undo = function (manipulator) {\r\n var item = manipulator.model.findItem(this.itemKey);\r\n manipulator.changeStyle(item, this.styleProperty, this.oldStyleValue);\r\n };\r\n return ChangeStyleHistoryItem;\r\n}(ChangeStyleHistoryItemBase_1.ChangeStyleHistoryItemBase));\r\nexports.ChangeStyleHistoryItem = ChangeStyleHistoryItem;\r\n\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.HashSet = void 0;\r\nvar HashSet = /** @class */ (function () {\r\n function HashSet(list, getHashCode) {\r\n var _this = this;\r\n if (list === void 0) { list = []; }\r\n if (getHashCode === void 0) { getHashCode = function (item) { return item.toString(); }; }\r\n this.items = [];\r\n this.map = {};\r\n this.getHashCode = getHashCode;\r\n list.forEach(function (i) { return _this.tryPush(i); });\r\n }\r\n HashSet.prototype.tryPush = function (item) {\r\n var code = this.getHashCode(item);\r\n if (this.map[code] === undefined) {\r\n this.map[code] = this.items.push(item) - 1;\r\n return true;\r\n }\r\n return false;\r\n };\r\n HashSet.prototype.contains = function (item) {\r\n return this.map[this.getHashCode(item)] !== undefined;\r\n };\r\n HashSet.prototype.forEach = function (callback) {\r\n this.items.forEach(callback);\r\n };\r\n HashSet.prototype.filter = function (predicate) {\r\n return this.items.filter(predicate);\r\n };\r\n HashSet.prototype.list = function () {\r\n return this.items.slice(0);\r\n };\r\n HashSet.prototype.item = function (index) {\r\n return this.items[index];\r\n };\r\n HashSet.prototype.first = function () {\r\n return this.items[0];\r\n };\r\n HashSet.prototype.remove = function (item) {\r\n var code = this.getHashCode(item);\r\n var index = this.map[code];\r\n if (typeof index === \"number\") {\r\n delete this.map[code];\r\n this.items.splice(index, 1);\r\n for (var i = index; i < this.items.length; i++)\r\n this.map[this.getHashCode(this.items[i])]--;\r\n }\r\n else\r\n throw \"Item not found\";\r\n };\r\n Object.defineProperty(HashSet.prototype, \"length\", {\r\n get: function () { return this.items.length; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return HashSet;\r\n}());\r\nexports.HashSet = HashSet;\r\n\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ShapeDescriptionManager = void 0;\r\nvar ProcessShapeDescription_1 = __webpack_require__(202);\r\nvar DecisionShapeDescription_1 = __webpack_require__(203);\r\nvar ManualInputShapeDescription_1 = __webpack_require__(204);\r\nvar DataShapeDescription_1 = __webpack_require__(205);\r\nvar TerminatorShapeDescription_1 = __webpack_require__(206);\r\nvar PredefinedProcessShapeDescription_1 = __webpack_require__(207);\r\nvar ArrowUpDownShapeDescription_1 = __webpack_require__(208);\r\nvar ArrowRightShapeDescription_1 = __webpack_require__(209);\r\nvar ArrowUpShapeDescription_1 = __webpack_require__(210);\r\nvar CrossShapeDescription_1 = __webpack_require__(211);\r\nvar DiamondShapeDescription_1 = __webpack_require__(121);\r\nvar EllipseShapeDescription_1 = __webpack_require__(71);\r\nvar HeartShapeDescription_1 = __webpack_require__(212);\r\nvar RectangleShapeDescription_1 = __webpack_require__(18);\r\nvar TextShapeDescription_1 = __webpack_require__(122);\r\nvar PentagonShapeDescription_1 = __webpack_require__(123);\r\nvar HexagonShapeDescription_1 = __webpack_require__(124);\r\nvar OctagonShapeDescription_1 = __webpack_require__(213);\r\nvar StarShapeDescription_1 = __webpack_require__(214);\r\nvar ArrowDownShapeDescription_1 = __webpack_require__(215);\r\nvar ArrowLeftRightShapeDescription_1 = __webpack_require__(216);\r\nvar ArrowLeftShapeDescription_1 = __webpack_require__(217);\r\nvar TriangleShapeDescription_1 = __webpack_require__(125);\r\nvar DocumentShapeDescription_1 = __webpack_require__(126);\r\nvar MultipleDocumentsShapeDescription_1 = __webpack_require__(218);\r\nvar PreparationShapeDescription_1 = __webpack_require__(219);\r\nvar HardDiskShapeDescription_1 = __webpack_require__(220);\r\nvar DatabaseShapeDescription_1 = __webpack_require__(221);\r\nvar InternalStorageShapeDescription_1 = __webpack_require__(222);\r\nvar PaperTapeShapeDescription_1 = __webpack_require__(223);\r\nvar ManualOperationShapeDescription_1 = __webpack_require__(224);\r\nvar DelayShapeDescription_1 = __webpack_require__(225);\r\nvar StoredDataShapeDescription_1 = __webpack_require__(226);\r\nvar MergeShapeDescription_1 = __webpack_require__(227);\r\nvar DisplayShapeDescription_1 = __webpack_require__(228);\r\nvar OrShapeDescription_1 = __webpack_require__(229);\r\nvar SummingJunctionShapeDescription_1 = __webpack_require__(230);\r\nvar CustomShapeDescription_1 = __webpack_require__(127);\r\nvar VerticalContainerDescription_1 = __webpack_require__(232);\r\nvar HorizontalContainerDescription_1 = __webpack_require__(233);\r\nvar CardWithImageOnTopDescription_1 = __webpack_require__(234);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar ConnectorShapeDescription_1 = __webpack_require__(236);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar CardWithHorizontalImageDescription_1 = __webpack_require__(237);\r\nvar ShapeDescriptionManager = /** @class */ (function () {\r\n function ShapeDescriptionManager() {\r\n this.descriptions = {};\r\n this.descriptionTypes = {};\r\n this.descriptionCategories = {};\r\n this.onShapeDecriptionChanged = new Utils_1.EventDispatcher();\r\n this.register(new TextShapeDescription_1.TextShapeDescription(), ShapeTypes_1.ShapeCategories.General);\r\n this.register(new RectangleShapeDescription_1.RectangleShapeDescription(), ShapeTypes_1.ShapeCategories.General);\r\n this.register(new EllipseShapeDescription_1.EllipseShapeDescription(), ShapeTypes_1.ShapeCategories.General);\r\n this.register(new CrossShapeDescription_1.CrossShapeDescription(), ShapeTypes_1.ShapeCategories.General);\r\n this.register(new TriangleShapeDescription_1.TriangleShapeDescription(), ShapeTypes_1.ShapeCategories.General);\r\n this.register(new DiamondShapeDescription_1.DiamondShapeDescription(), ShapeTypes_1.ShapeCategories.General);\r\n this.register(new HeartShapeDescription_1.HeartShapeDescription(), ShapeTypes_1.ShapeCategories.General);\r\n this.register(new PentagonShapeDescription_1.PentagonShapeDescription(), ShapeTypes_1.ShapeCategories.General);\r\n this.register(new HexagonShapeDescription_1.HexagonShapeDescription(), ShapeTypes_1.ShapeCategories.General);\r\n this.register(new OctagonShapeDescription_1.OctagonShapeDescription(), ShapeTypes_1.ShapeCategories.General);\r\n this.register(new StarShapeDescription_1.StarShapeDescription(), ShapeTypes_1.ShapeCategories.General);\r\n this.register(new ArrowUpShapeDescription_1.ArrowUpShapeDescription(), ShapeTypes_1.ShapeCategories.General);\r\n this.register(new ArrowDownShapeDescription_1.ArrowDownShapeDescription(), ShapeTypes_1.ShapeCategories.General);\r\n this.register(new ArrowLeftShapeDescription_1.ArrowLeftShapeDescription(), ShapeTypes_1.ShapeCategories.General);\r\n this.register(new ArrowRightShapeDescription_1.ArrowRightShapeDescription(), ShapeTypes_1.ShapeCategories.General);\r\n this.register(new ArrowUpDownShapeDescription_1.ArrowUpDownShapeDescription(), ShapeTypes_1.ShapeCategories.General);\r\n this.register(new ArrowLeftRightShapeDescription_1.ArrowLeftRightShapeDescription(), ShapeTypes_1.ShapeCategories.General);\r\n this.register(new ProcessShapeDescription_1.ProcessShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\r\n this.register(new DecisionShapeDescription_1.DecisionShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\r\n this.register(new TerminatorShapeDescription_1.TerminatorShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\r\n this.register(new PredefinedProcessShapeDescription_1.PredefinedProcessShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\r\n this.register(new DocumentShapeDescription_1.DocumentShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\r\n this.register(new MultipleDocumentsShapeDescription_1.MultipleDocumentsShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\r\n this.register(new ManualInputShapeDescription_1.ManualInputShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\r\n this.register(new PreparationShapeDescription_1.PreparationShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\r\n this.register(new DataShapeDescription_1.DataShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\r\n this.register(new DatabaseShapeDescription_1.DatabaseShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\r\n this.register(new HardDiskShapeDescription_1.HardDiskShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\r\n this.register(new InternalStorageShapeDescription_1.InternalStorageShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\r\n this.register(new PaperTapeShapeDescription_1.PaperTapeShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\r\n this.register(new ManualOperationShapeDescription_1.ManualOperationShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\r\n this.register(new DelayShapeDescription_1.DelayShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\r\n this.register(new StoredDataShapeDescription_1.StoredDataShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\r\n this.register(new DisplayShapeDescription_1.DisplayShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\r\n this.register(new MergeShapeDescription_1.MergeShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\r\n this.register(new ConnectorShapeDescription_1.ConnectorShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\r\n this.register(new OrShapeDescription_1.OrShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\r\n this.register(new SummingJunctionShapeDescription_1.SummingJunctionShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\r\n this.register(new CardWithHorizontalImageDescription_1.CardWithImageOnLeftDescription(), ShapeTypes_1.ShapeCategories.OrgChart);\r\n this.register(new CardWithHorizontalImageDescription_1.CardWithImageOnRightDescription(), ShapeTypes_1.ShapeCategories.OrgChart);\r\n this.register(new CardWithImageOnTopDescription_1.CardWithImageOnTopDescription(), ShapeTypes_1.ShapeCategories.OrgChart);\r\n this.register(new VerticalContainerDescription_1.VerticalContainerDescription(), ShapeTypes_1.ShapeCategories.Containers);\r\n this.register(new HorizontalContainerDescription_1.HorizontalContainerDescription(), ShapeTypes_1.ShapeCategories.Containers);\r\n }\r\n Object.defineProperty(ShapeDescriptionManager, \"default\", {\r\n get: function () {\r\n return ShapeDescriptionManager.defaultInstance;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ShapeDescriptionManager, \"defaultContainer\", {\r\n get: function () {\r\n return ShapeDescriptionManager.defaultContainerInstance;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ShapeDescriptionManager.prototype.get = function (type) {\r\n return this.descriptions[type];\r\n };\r\n ShapeDescriptionManager.prototype.getTypesByCategory = function (category) {\r\n return this.descriptionTypes[category] || [];\r\n };\r\n ShapeDescriptionManager.prototype.getCategoryByType = function (type) {\r\n return this.descriptionCategories[type];\r\n };\r\n ShapeDescriptionManager.prototype.getCategoryByDescription = function (description) {\r\n return this.getCategoryByType(description.key);\r\n };\r\n ShapeDescriptionManager.prototype.register = function (description, category, type) {\r\n if (type === void 0) { type = description.key; }\r\n if (this.descriptions[type] !== undefined)\r\n throw Error(\"Description key is duplicated\");\r\n this.descriptions[type] = description;\r\n if (!this.descriptionTypes[category])\r\n this.descriptionTypes[category] = [];\r\n this.descriptionTypes[category].push(type);\r\n this.descriptionCategories[type] = category;\r\n description.onChanged.add(this);\r\n };\r\n ShapeDescriptionManager.prototype.registerCustomShape = function (shape) {\r\n if (shape.type === undefined)\r\n throw Error(\"Custom shape type is not defined\");\r\n if (this.descriptions[shape.type] !== undefined)\r\n throw Error(\"Custom shape type is duplicated\");\r\n var baseDescription = shape.baseType && this.descriptions[shape.baseType];\r\n if (shape.minWidth > shape.maxWidth)\r\n shape.maxWidth = shape.minWidth;\r\n if (shape.minHeight > shape.maxHeight)\r\n shape.maxHeight = shape.minHeight;\r\n this.register(new CustomShapeDescription_1.CustomShapeDescription(shape, baseDescription), shape.category || ShapeTypes_1.ShapeCategories.Custom);\r\n };\r\n ShapeDescriptionManager.prototype.unregisterCustomShape = function (shapeType) {\r\n var description = this.descriptions[shapeType];\r\n if (description instanceof CustomShapeDescription_1.CustomShapeDescription) {\r\n description.onChanged.remove(this);\r\n var category = this.descriptionCategories[shapeType];\r\n delete this.descriptions[shapeType];\r\n delete this.descriptionCategories[shapeType];\r\n var index = this.descriptionTypes[category].indexOf(shapeType);\r\n this.descriptionTypes[category].splice(index, 1);\r\n if (this.descriptionTypes[category].length === 0)\r\n delete this.descriptionTypes[category];\r\n }\r\n };\r\n ShapeDescriptionManager.prototype.unregisterAllCustomShapes = function () {\r\n var _this = this;\r\n Object.keys(this.descriptions).forEach(function (shapeType) {\r\n _this.unregisterCustomShape(shapeType);\r\n });\r\n };\r\n ShapeDescriptionManager.prototype.notifyShapeDescriptionChanged = function (description) {\r\n this.onShapeDecriptionChanged.raise1(function (l) { return l.notifyShapeDescriptionChanged(description); });\r\n };\r\n ShapeDescriptionManager.defaultInstance = new RectangleShapeDescription_1.RectangleShapeDescription();\r\n ShapeDescriptionManager.defaultContainerInstance = new VerticalContainerDescription_1.VerticalContainerDescription();\r\n return ShapeDescriptionManager;\r\n}());\r\nexports.ShapeDescriptionManager = ShapeDescriptionManager;\r\n\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ArrowVerticalShapeDescription = exports.ArrowVerticalLineWidthParameterName = exports.ArrowVerticalTriangleHeightParameterName = void 0;\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar size_1 = __webpack_require__(2);\r\nvar ShapeParameters_1 = __webpack_require__(38);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nexports.ArrowVerticalTriangleHeightParameterName = \"th\";\r\nexports.ArrowVerticalLineWidthParameterName = \"lw\";\r\nvar ArrowVerticalShapeDescription = /** @class */ (function (_super) {\r\n __extends(ArrowVerticalShapeDescription, _super);\r\n function ArrowVerticalShapeDescription() {\r\n return _super.call(this, new size_1.Size(ShapeDescription_1.ShapeDefaultDimension * 0.375, ShapeDescription_1.ShapeDefaultDimension)) || this;\r\n }\r\n Object.defineProperty(ArrowVerticalShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ArrowVerticalShapeDescription.prototype.createParameters = function (parameters) {\r\n parameters.addRange([\r\n new ShapeParameters_1.ShapeParameter(exports.ArrowVerticalTriangleHeightParameterName, Math.sqrt(Math.pow(this.defaultSize.width, 2) - Math.pow(this.defaultSize.width / 2, 2))),\r\n new ShapeParameters_1.ShapeParameter(exports.ArrowVerticalLineWidthParameterName, this.defaultSize.width / 3)\r\n ]);\r\n };\r\n ArrowVerticalShapeDescription.prototype.normalizeParameters = function (shape, parameters) {\r\n this.changeParameterValue(parameters, exports.ArrowVerticalTriangleHeightParameterName, function (p) { return Math.max(0, Math.min(shape.size.height, p.value)); });\r\n this.changeParameterValue(parameters, exports.ArrowVerticalLineWidthParameterName, function (p) { return Math.max(0, Math.min(shape.size.width, p.value)); });\r\n };\r\n ArrowVerticalShapeDescription.prototype.processConnectionPoint = function (shape, point) {\r\n var delta = (shape.size.width - shape.parameters.get(exports.ArrowVerticalLineWidthParameterName).value) / 2;\r\n var side = shape.getConnectionPointSide(point);\r\n if (side === DiagramItem_1.ConnectionPointSide.East)\r\n point.x -= delta;\r\n else if (side === DiagramItem_1.ConnectionPointSide.West)\r\n point.x += delta;\r\n };\r\n ArrowVerticalShapeDescription.prototype.getTextRectangle = function (shape) {\r\n return shape.rectangle.clone().inflate(-ShapeDescription_1.ShapeTextPadding, -ShapeDescription_1.ShapeTextPadding);\r\n };\r\n ArrowVerticalShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\r\n return textSize.clone().offset(ShapeDescription_1.ShapeTextPadding * 2, ShapeDescription_1.ShapeTextPadding * 2);\r\n };\r\n return ArrowVerticalShapeDescription;\r\n}(ShapeDescription_1.ShapeDescription));\r\nexports.ArrowVerticalShapeDescription = ArrowVerticalShapeDescription;\r\n\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ArrowHorizontalShapeDescription = exports.ArrowVerticalLineHeightParameterName = exports.ArrowVerticalTriangleWidthParameterName = void 0;\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar size_1 = __webpack_require__(2);\r\nvar ShapeParameters_1 = __webpack_require__(38);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nexports.ArrowVerticalTriangleWidthParameterName = \"tw\";\r\nexports.ArrowVerticalLineHeightParameterName = \"lh\";\r\nvar ArrowHorizontalShapeDescription = /** @class */ (function (_super) {\r\n __extends(ArrowHorizontalShapeDescription, _super);\r\n function ArrowHorizontalShapeDescription() {\r\n return _super.call(this, new size_1.Size(ShapeDescription_1.ShapeDefaultDimension, ShapeDescription_1.ShapeDefaultDimension * 0.375)) || this;\r\n }\r\n Object.defineProperty(ArrowHorizontalShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ArrowHorizontalShapeDescription.prototype.createParameters = function (parameters) {\r\n parameters.addRange([\r\n new ShapeParameters_1.ShapeParameter(exports.ArrowVerticalTriangleWidthParameterName, Math.sqrt(Math.pow(this.defaultSize.height, 2) - Math.pow(this.defaultSize.height / 2, 2))),\r\n new ShapeParameters_1.ShapeParameter(exports.ArrowVerticalLineHeightParameterName, this.defaultSize.height / 3)\r\n ]);\r\n };\r\n ArrowHorizontalShapeDescription.prototype.normalizeParameters = function (shape, parameters) {\r\n this.changeParameterValue(parameters, exports.ArrowVerticalTriangleWidthParameterName, function (p) { return Math.max(0, Math.min(shape.size.width, p.value)); });\r\n this.changeParameterValue(parameters, exports.ArrowVerticalLineHeightParameterName, function (p) { return Math.max(0, Math.min(shape.size.height, p.value)); });\r\n };\r\n ArrowHorizontalShapeDescription.prototype.processConnectionPoint = function (shape, point) {\r\n var delta = (shape.size.height - shape.parameters.get(exports.ArrowVerticalLineHeightParameterName).value) / 2;\r\n var side = shape.getConnectionPointSide(point);\r\n if (side === DiagramItem_1.ConnectionPointSide.North)\r\n point.y += delta;\r\n else if (side === DiagramItem_1.ConnectionPointSide.South)\r\n point.y -= delta;\r\n };\r\n ArrowHorizontalShapeDescription.prototype.getTextRectangle = function (shape) {\r\n return shape.rectangle.clone().inflate(-ShapeDescription_1.ShapeTextPadding, -ShapeDescription_1.ShapeTextPadding);\r\n };\r\n ArrowHorizontalShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\r\n return textSize.clone().offset(ShapeDescription_1.ShapeTextPadding * 2, ShapeDescription_1.ShapeTextPadding * 2);\r\n };\r\n return ArrowHorizontalShapeDescription;\r\n}(ShapeDescription_1.ShapeDescription));\r\nexports.ArrowHorizontalShapeDescription = ArrowHorizontalShapeDescription;\r\n\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PolygonShapeDescription = void 0;\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar PolygonShapeDescription = /** @class */ (function (_super) {\r\n __extends(PolygonShapeDescription, _super);\r\n function PolygonShapeDescription(hasDefaultText) {\r\n var _this = _super.call(this, undefined, hasDefaultText) || this;\r\n _this.defaultSize.height = _this.calculateHeight(ShapeDescription_1.ShapeDefaultDimension);\r\n return _this;\r\n }\r\n Object.defineProperty(PolygonShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return true; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(PolygonShapeDescription.prototype, \"angle\", {\r\n get: function () {\r\n return Math.PI * (this.angleCount - 2) / this.angleCount;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return PolygonShapeDescription;\r\n}(ShapeDescription_1.ShapeDescription));\r\nexports.PolygonShapeDescription = PolygonShapeDescription;\r\n\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ImportUtils = void 0;\r\nvar ImportUtils = /** @class */ (function () {\r\n function ImportUtils() {\r\n }\r\n ImportUtils.parseJSON = function (json) {\r\n if (!json || json === \"\")\r\n return {};\r\n try {\r\n return JSON.parse(json);\r\n }\r\n catch (_a) {\r\n return {};\r\n }\r\n };\r\n ImportUtils.createDocument = function (xml) {\r\n var parser = new DOMParser();\r\n return parser.parseFromString(xml, \"application/xml\");\r\n };\r\n return ImportUtils;\r\n}());\r\nexports.ImportUtils = ImportUtils;\r\n\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeStyleTextPropertyCommand = void 0;\r\nvar ChangeStylePropertyCommandBase_1 = __webpack_require__(136);\r\nvar ChangeStyleTextHistoryItem_1 = __webpack_require__(68);\r\nvar Style_1 = __webpack_require__(27);\r\nvar ChangeStyleTextPropertyCommand = /** @class */ (function (_super) {\r\n __extends(ChangeStyleTextPropertyCommand, _super);\r\n function ChangeStyleTextPropertyCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeStyleTextPropertyCommand.prototype.getValue = function () {\r\n return this.control.selection.inputPosition.getCurrentTextStylePropertyValue(this.getStyleProperty());\r\n };\r\n ChangeStyleTextPropertyCommand.prototype.getStyleObj = function (item) {\r\n return item.styleText;\r\n };\r\n ChangeStyleTextPropertyCommand.prototype.getDefaultStyleObj = function () {\r\n return new Style_1.TextStyle();\r\n };\r\n ChangeStyleTextPropertyCommand.prototype.createHistoryItem = function (item, styleProperty, styleValue) {\r\n return new ChangeStyleTextHistoryItem_1.ChangeStyleTextHistoryItem(item.key, styleProperty, styleValue);\r\n };\r\n ChangeStyleTextPropertyCommand.prototype.updateInputPosition = function (value) {\r\n this.control.selection.inputPosition.setTextStylePropertyValue(this.getStyleProperty(), value);\r\n };\r\n return ChangeStyleTextPropertyCommand;\r\n}(ChangeStylePropertyCommandBase_1.ChangeStylePropertyCommandBase));\r\nexports.ChangeStyleTextPropertyCommand = ChangeStyleTextPropertyCommand;\r\n\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.TreeLayoutBuilder = void 0;\r\nvar GraphLayout_1 = __webpack_require__(139);\r\nvar Tree_1 = __webpack_require__(252);\r\nvar NodeLayout_1 = __webpack_require__(70);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar point_1 = __webpack_require__(1);\r\nvar BaseBuilder_1 = __webpack_require__(140);\r\nvar Structures_1 = __webpack_require__(39);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar LayoutSettings_1 = __webpack_require__(20);\r\nvar TreeLayoutBuilder = /** @class */ (function (_super) {\r\n __extends(TreeLayoutBuilder, _super);\r\n function TreeLayoutBuilder() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.nodeToLevel = {};\r\n _this.levelDepthSize = {};\r\n return _this;\r\n }\r\n TreeLayoutBuilder.prototype.build = function () {\r\n var _this = this;\r\n var layout = new GraphLayout_1.GraphLayout();\r\n var offset = 0;\r\n this.graph.getConnectedComponents().forEach(function (c) {\r\n var tree = Tree_1.Tree.createSpanningTree(c);\r\n var componentLayout = _this.processTree(tree);\r\n layout.extend(_this.setComponentOffset(componentLayout, offset));\r\n offset += _this.getComponentOffset(componentLayout);\r\n });\r\n return layout;\r\n };\r\n TreeLayoutBuilder.prototype.preProcessTree = function (tree, parents, level) {\r\n var _this = this;\r\n parents = parents.filter(function (p) { return (_this.nodeToLevel[p.key] === undefined ? (_this.nodeToLevel[p.key] = level) : -1) >= 0; });\r\n if (parents.length) {\r\n var maxDepthSize = this.getMaxDepthSize(parents);\r\n this.levelDepthSize[level] = maxDepthSize;\r\n this.preProcessTree(tree, [].concat.apply([], parents.map(function (p) { return tree.getChildren(p); })), level + 1);\r\n }\r\n };\r\n TreeLayoutBuilder.prototype.loadNodes = function (tree, layout, parent) {\r\n if (!parent)\r\n return [layout.addNode(new NodeLayout_1.NodeLayout(tree.root, point_1.Point.zero()))];\r\n return tree.getChildren(parent.info).map(function (child) {\r\n return !layout.hasNode(child.key) ? layout.addNode(new NodeLayout_1.NodeLayout(child, point_1.Point.zero())) : undefined;\r\n }).filter(function (nl) { return nl; });\r\n };\r\n TreeLayoutBuilder.prototype.processTree = function (tree) {\r\n var _this = this;\r\n var layout = new GraphLayout_1.GraphLayout();\r\n this.preProcessTree(tree, [tree.root], 0);\r\n this.processLevel(tree, layout, 0, new Utils_1.Range(0), 0);\r\n if (this.settings.direction === LayoutSettings_1.LogicalDirectionKind.Backward) {\r\n var levelDepths = Object.keys(this.levelDepthSize).map(function (l) { return _this.levelDepthSize[l]; });\r\n var mostDepthPos_1 = levelDepths.reduce(function (acc, v) { return acc + v; }, 0) + (levelDepths.length - 1) * this.settings.layerSpacing;\r\n layout.forEachNode(function (n) { return _this.setDepthPos(n, _this.getDepthPos(n) + mostDepthPos_1); });\r\n }\r\n return layout;\r\n };\r\n TreeLayoutBuilder.prototype.processLevel = function (tree, layout, depthPos, breadthParentRange, level, parent) {\r\n var _this = this;\r\n var nodes = this.addNodes(tree, layout, level, parent);\r\n var parentEdges = parent ? this.graph.getAdjacentEdges(parent.key, Structures_1.ConnectionMode.Outgoing) : [];\r\n var maxDepthSize = this.getDirectionValue(this.levelDepthSize[level]);\r\n var layerSpacing = this.getDirectionValue(this.settings.layerSpacing);\r\n var prevRange;\r\n nodes.forEach(function (node) {\r\n var range = Utils_1.Range.fromLength(prevRange ? (prevRange.to + _this.settings.columnSpacing) : breadthParentRange.from, _this.getBreadthNodeSizeCore(node.info));\r\n node.position = _this.getNodePosition(range.from, depthPos, maxDepthSize).clone().offset(node.info.margin.left, node.info.margin.top);\r\n _this.processLevel(tree, layout, depthPos + maxDepthSize + layerSpacing, range, level + 1, node);\r\n _this.updateEdgeConnections(layout, parentEdges, node);\r\n breadthParentRange.extend(range);\r\n prevRange = range;\r\n });\r\n if (parent && nodes.length) {\r\n var lastChild = nodes[nodes.length - 1];\r\n var childRange = new Utils_1.Range(this.getBreadthPos(nodes[0]), this.getBreadthPos(lastChild) + this.getBreadthNodeSizeCore(lastChild.info, true));\r\n this.alignParent(parent, childRange, breadthParentRange);\r\n }\r\n };\r\n TreeLayoutBuilder.prototype.addNodes = function (tree, layout, level, parent) {\r\n var _this = this;\r\n if (level === 0)\r\n return [layout.addNode(new NodeLayout_1.NodeLayout(tree.root, point_1.Point.zero()))];\r\n return tree.getChildren(parent.info)\r\n .reduce(function (acc, n) {\r\n if (_this.nodeToLevel[n.key] === level && !layout.hasNode(n.key))\r\n acc.push(layout.addNode(new NodeLayout_1.NodeLayout(n, point_1.Point.zero())));\r\n return acc;\r\n }, []);\r\n };\r\n TreeLayoutBuilder.prototype.getMaxDepthSize = function (nodes) {\r\n var _this = this;\r\n return nodes.reduce(function (acc, node) { return Math.max(acc, _this.getDepthNodeSizeCore(node)); }, 0); // make it negative\r\n // return this.settings.direction === LogicalDirectionKind.Forward ? maxSide : -maxSide;\r\n };\r\n TreeLayoutBuilder.prototype.getNodePosition = function (breadthPos, depthPos, maxDepthSide) {\r\n if (this.settings.direction === LayoutSettings_1.LogicalDirectionKind.Forward)\r\n return this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical ? new point_1.Point(breadthPos, depthPos) : new point_1.Point(depthPos, breadthPos);\r\n return this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical ? new point_1.Point(breadthPos, depthPos + maxDepthSide) : new point_1.Point(depthPos + maxDepthSide, breadthPos);\r\n };\r\n TreeLayoutBuilder.prototype.updateEdgeConnections = function (layout, edges, node) {\r\n var _this = this;\r\n edges.filter(function (e) { return e.to === node.key; }).forEach(function (e) {\r\n var beginIndex = _this.getBeginEdgeIndex();\r\n var endIndex = _this.getEndEdgeIndex();\r\n layout.addEdge(new NodeLayout_1.EdgeLayout(e.key, beginIndex, endIndex));\r\n });\r\n };\r\n TreeLayoutBuilder.prototype.getBeginEdgeIndex = function () {\r\n if (this.settings.direction === LayoutSettings_1.LogicalDirectionKind.Forward)\r\n return this.isVertical() ? DiagramItem_1.ConnectionPointSide.South : DiagramItem_1.ConnectionPointSide.East;\r\n return this.isVertical() ? DiagramItem_1.ConnectionPointSide.North : DiagramItem_1.ConnectionPointSide.West;\r\n };\r\n TreeLayoutBuilder.prototype.getEndEdgeIndex = function () {\r\n if (this.settings.direction === LayoutSettings_1.LogicalDirectionKind.Forward)\r\n return this.isVertical() ? DiagramItem_1.ConnectionPointSide.North : DiagramItem_1.ConnectionPointSide.West;\r\n return this.isVertical() ? DiagramItem_1.ConnectionPointSide.South : DiagramItem_1.ConnectionPointSide.East;\r\n };\r\n TreeLayoutBuilder.prototype.alignParent = function (parent, childRange, availableRange) {\r\n if (this.settings.alignment === LayoutSettings_1.Alignment.Center) {\r\n var alignedPosition = childRange.from + childRange.length / 2 - this.getBreadthNodeSizeCore(parent.info, true) / 2;\r\n if (this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical) {\r\n parent.position.x = Math.max(availableRange.from + parent.info.margin.left, alignedPosition);\r\n parent.position.x = Math.min(availableRange.to - parent.info.size.width - parent.info.margin.right, parent.position.x);\r\n }\r\n else {\r\n parent.position.y = Math.max(availableRange.from + parent.info.margin.top, alignedPosition);\r\n parent.position.y = Math.min(availableRange.to - parent.info.size.height - parent.info.margin.bottom, parent.position.y);\r\n }\r\n }\r\n };\r\n TreeLayoutBuilder.prototype.getDepthPos = function (node) {\r\n return this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical ? node.position.y : node.position.x;\r\n };\r\n TreeLayoutBuilder.prototype.getBreadthPos = function (node) {\r\n return this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical ? node.position.x : node.position.y;\r\n };\r\n TreeLayoutBuilder.prototype.setDepthPos = function (node, pos) {\r\n if (this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical)\r\n node.position.y = pos;\r\n else\r\n node.position.x = pos;\r\n };\r\n TreeLayoutBuilder.prototype.isVertical = function () {\r\n return this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical;\r\n };\r\n return TreeLayoutBuilder;\r\n}(BaseBuilder_1.LayoutBuilder));\r\nexports.TreeLayoutBuilder = TreeLayoutBuilder;\r\n\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ExportImageCommand = void 0;\r\nvar CanvasItemsManager_1 = __webpack_require__(77);\r\nvar CanvasExportManager_1 = __webpack_require__(260);\r\nvar ExportImportCommandBase_1 = __webpack_require__(56);\r\nvar Exporter_1 = __webpack_require__(72);\r\nvar RenderHelper_1 = __webpack_require__(15);\r\nvar TextMeasurer_1 = __webpack_require__(78);\r\nvar DOMManipulator_1 = __webpack_require__(100);\r\nvar ImageCache_1 = __webpack_require__(47);\r\nvar ExportImageCommand = /** @class */ (function (_super) {\r\n __extends(ExportImageCommand, _super);\r\n function ExportImageCommand(control) {\r\n var _this = _super.call(this, control) || this;\r\n _this.exporter = new Exporter_1.Exporter();\r\n return _this;\r\n }\r\n ExportImageCommand.prototype.isEnabled = function () {\r\n return !ImageCache_1.ImageCache.instance.hasNonLoadedImages();\r\n };\r\n ExportImageCommand.prototype.executeCore = function (state, parameter) {\r\n var _this = this;\r\n try {\r\n var exportManager = this.getExportManager();\r\n var exportFunc = this.getExportFunc();\r\n exportFunc(this.control.model.size.clone(), this.control.model.pageColor, exportManager, function (url) {\r\n parameter(url, _this.getExtension());\r\n _this.tryDispose();\r\n });\r\n }\r\n catch (e) {\r\n this.tryDispose();\r\n throw e;\r\n }\r\n return true;\r\n };\r\n ExportImageCommand.prototype.getExportManager = function () {\r\n var measurer = this.getOrCreateMeasurer();\r\n var itemsManager = (this.control.render && this.control.render.items) || this.createItemsManager(measurer);\r\n return this.exportManager || (this.exportManager = new CanvasExportManager_1.CanvasExportManager(itemsManager.itemsContainer, measurer));\r\n };\r\n ExportImageCommand.prototype.createItemsManager = function (measurer) {\r\n this.svgElement = RenderHelper_1.RenderHelper.createSvgElement(document.body, true);\r\n var canvasManager = new CanvasItemsManager_1.CanvasItemsManager(this.svgElement, 1, new DOMManipulator_1.ExportDOMManipulator(measurer));\r\n this.control.modelManipulator.onModelChanged.add(canvasManager);\r\n this.control.modelManipulator.commitItemsCreateChanges();\r\n return canvasManager;\r\n };\r\n ExportImageCommand.prototype.tryDispose = function () {\r\n if (this.svgElement) {\r\n document.body.removeChild(this.svgElement);\r\n delete this.svgElement;\r\n }\r\n if (this.tempMeasurer) {\r\n this.tempMeasurer.clean();\r\n this.tempMeasurer = undefined;\r\n }\r\n this.exportManager = undefined;\r\n };\r\n ExportImageCommand.prototype.getOrCreateMeasurer = function () {\r\n return this.control.measurer || (this.tempMeasurer = new TextMeasurer_1.TextMeasurer(document.body));\r\n };\r\n return ExportImageCommand;\r\n}(ExportImportCommandBase_1.ExportImportCommandBase));\r\nexports.ExportImageCommand = ExportImageCommand;\r\n\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ItemChange = exports.ItemChangeType = void 0;\r\nvar ItemChangeType;\r\n(function (ItemChangeType) {\r\n ItemChangeType[ItemChangeType[\"Create\"] = 0] = \"Create\";\r\n ItemChangeType[ItemChangeType[\"UpdateProperties\"] = 1] = \"UpdateProperties\";\r\n ItemChangeType[ItemChangeType[\"UpdateStructure\"] = 2] = \"UpdateStructure\";\r\n ItemChangeType[ItemChangeType[\"Update\"] = 3] = \"Update\";\r\n ItemChangeType[ItemChangeType[\"Remove\"] = 4] = \"Remove\";\r\n ItemChangeType[ItemChangeType[\"UpdateClassName\"] = 5] = \"UpdateClassName\";\r\n})(ItemChangeType = exports.ItemChangeType || (exports.ItemChangeType = {}));\r\nvar ItemChange = /** @class */ (function () {\r\n function ItemChange(item, type, isValid) {\r\n if (isValid === void 0) { isValid = true; }\r\n this.item = item;\r\n this.type = type;\r\n this.isValid = isValid;\r\n }\r\n Object.defineProperty(ItemChange.prototype, \"key\", {\r\n get: function () { return this.item.key; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return ItemChange;\r\n}());\r\nexports.ItemChange = ItemChange;\r\n\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ExportDOMManipulator = exports.DOMManipulator = void 0;\r\nvar Diagnostics_1 = __webpack_require__(59);\r\nvar RAF_CHANGES_LIMIT = 2000;\r\nvar DOMManipulator = /** @class */ (function () {\r\n function DOMManipulator(measurer) {\r\n this.measurer = measurer;\r\n this.queue = [];\r\n }\r\n DOMManipulator.prototype.createElement = function (primitive, parent, sibling) {\r\n return primitive.createElement(function (el) {\r\n if (parent != null)\r\n if (sibling !== undefined)\r\n parent.insertBefore(el, sibling);\r\n else\r\n parent.appendChild(el);\r\n });\r\n };\r\n DOMManipulator.prototype.changeChildrenByPrimitives = function (primitives, parent) {\r\n var _this = this;\r\n primitives.forEach(function (primitive, index) {\r\n var element = parent.childNodes[index];\r\n _this.changeByPrimitive(element, primitive);\r\n });\r\n };\r\n DOMManipulator.prototype.changeByFunc = function (element, func) {\r\n this.doChange(element, func);\r\n };\r\n DOMManipulator.prototype.changeByPrimitive = function (element, primitive) {\r\n this.doChange(element, primitive);\r\n };\r\n DOMManipulator.prototype.cancelAnimation = function () {\r\n if (this.rafId !== undefined) {\r\n cancelAnimationFrame(this.rafId);\r\n this.queue = [];\r\n }\r\n };\r\n DOMManipulator.prototype.doChange = function (element, action) {\r\n if (Diagnostics_1.Diagnostics.optimizeUsingRAF) {\r\n this.queue.push([element, action]);\r\n this.requestAnimation();\r\n }\r\n else\r\n this.doChangeSync(element, action);\r\n };\r\n DOMManipulator.prototype.doChangeSync = function (element, action) {\r\n if (typeof action === \"function\")\r\n action(element);\r\n else\r\n action.applyElementProperties(element, this.measurer);\r\n };\r\n DOMManipulator.prototype.requestAnimation = function () {\r\n var _this = this;\r\n if (!this.rafRequested) {\r\n this.rafRequested = true;\r\n var func_1 = function () {\r\n _this.queue.splice(0, RAF_CHANGES_LIMIT).forEach(function (t) { return _this.doChangeSync(t[0], t[1]); });\r\n if (_this.queue.length)\r\n _this.rafId = requestAnimationFrame(func_1);\r\n else {\r\n _this.rafRequested = false;\r\n _this.rafId = undefined;\r\n }\r\n };\r\n this.rafId = requestAnimationFrame(func_1);\r\n }\r\n };\r\n return DOMManipulator;\r\n}());\r\nexports.DOMManipulator = DOMManipulator;\r\nvar ExportDOMManipulator = /** @class */ (function (_super) {\r\n __extends(ExportDOMManipulator, _super);\r\n function ExportDOMManipulator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ExportDOMManipulator.prototype.doChange = function (element, action) {\r\n this.doChangeSync(element, action);\r\n };\r\n return ExportDOMManipulator;\r\n}(DOMManipulator));\r\nexports.ExportDOMManipulator = ExportDOMManipulator;\r\n\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ClipboardCommand = void 0;\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar ClipboardCommand = /** @class */ (function (_super) {\r\n __extends(ClipboardCommand, _super);\r\n function ClipboardCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ClipboardCommand.prototype.setClipboardData = function (data) {\r\n if (this.control.render)\r\n this.control.render.input.setClipboardData(data);\r\n ClipboardCommand.clipboardData = data;\r\n };\r\n ClipboardCommand.prototype.getClipboardData = function (callback) {\r\n if (this.control.render && this.isPasteSupportedByBrowser())\r\n this.control.render.input.getClipboardData(callback);\r\n else\r\n callback(ClipboardCommand.clipboardData);\r\n };\r\n ClipboardCommand.prototype.isPasteSupportedByBrowser = function () {\r\n return this.control.render && this.control.render.input.isPasteSupportedByBrowser();\r\n };\r\n return ClipboardCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.ClipboardCommand = ClipboardCommand;\r\n\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeZindexHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar ChangeZindexHistoryItem = /** @class */ (function (_super) {\r\n __extends(ChangeZindexHistoryItem, _super);\r\n function ChangeZindexHistoryItem(item, zIndex) {\r\n var _this = _super.call(this) || this;\r\n _this.itemKey = item.key;\r\n _this.zIndex = zIndex;\r\n return _this;\r\n }\r\n ChangeZindexHistoryItem.prototype.redo = function (manipulator) {\r\n var item = manipulator.model.findItem(this.itemKey);\r\n this.oldZIndex = item.zIndex;\r\n manipulator.changeZIndex(item, this.zIndex);\r\n };\r\n ChangeZindexHistoryItem.prototype.undo = function (manipulator) {\r\n var item = manipulator.model.findItem(this.itemKey);\r\n manipulator.changeZIndex(item, this.oldZIndex);\r\n };\r\n return ChangeZindexHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.ChangeZindexHistoryItem = ChangeZindexHistoryItem;\r\n\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DataLayoutParameters = exports.DataLayoutType = void 0;\r\nvar LayoutSettings_1 = __webpack_require__(20);\r\nvar WideTree_1 = __webpack_require__(97);\r\nvar Sugiyama_1 = __webpack_require__(79);\r\nvar DataLayoutType;\r\n(function (DataLayoutType) {\r\n DataLayoutType[DataLayoutType[\"Tree\"] = 0] = \"Tree\";\r\n DataLayoutType[DataLayoutType[\"Sugiyama\"] = 1] = \"Sugiyama\";\r\n})(DataLayoutType = exports.DataLayoutType || (exports.DataLayoutType = {}));\r\nvar DataLayoutParameters = /** @class */ (function () {\r\n function DataLayoutParameters(sizeSettings, parameter) {\r\n this.sizeSettings = sizeSettings;\r\n if (parameter) {\r\n if (parameter.type !== undefined) {\r\n this.layoutType = parameter.type;\r\n this.layoutSettings = this.layoutType === DataLayoutType.Sugiyama ? new LayoutSettings_1.LayoutSettings() : new LayoutSettings_1.TreeLayoutSettings();\r\n }\r\n if (parameter.orientation !== undefined)\r\n this.layoutSettings.orientation = parameter.orientation;\r\n this.skipPointIndices = parameter.skipPointIndices;\r\n this.autoSizeEnabled = parameter.autoSizeEnabled;\r\n }\r\n }\r\n Object.defineProperty(DataLayoutParameters.prototype, \"needAutoLayout\", {\r\n get: function () { return this.layoutType !== undefined; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n DataLayoutParameters.prototype.getLayoutBuilder = function (graph) {\r\n return (this.layoutType === DataLayoutType.Tree) ?\r\n new WideTree_1.TreeLayoutBuilder(this.layoutSettings, graph) :\r\n new Sugiyama_1.SugiyamaLayoutBuilder(this.layoutSettings, graph);\r\n };\r\n return DataLayoutParameters;\r\n}());\r\nexports.DataLayoutParameters = DataLayoutParameters;\r\n\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.EditShapeImageCommandBase = void 0;\r\nvar ChangeShapeImageHistoryItem_1 = __webpack_require__(147);\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar EditShapeImageCommandBase = /** @class */ (function (_super) {\r\n __extends(EditShapeImageCommandBase, _super);\r\n function EditShapeImageCommandBase() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n EditShapeImageCommandBase.prototype.isEnabled = function () {\r\n var selectedShape = this.getSelectedShape();\r\n return _super.prototype.isEnabled.call(this) && !!selectedShape && !selectedShape.locked && selectedShape.enableImage && selectedShape.allowEditImage;\r\n };\r\n EditShapeImageCommandBase.prototype.getValue = function () {\r\n var selectedShape = this.getSelectedShape();\r\n var imageUrl = (selectedShape) ? selectedShape.image.exportUrl : undefined;\r\n return imageUrl;\r\n };\r\n EditShapeImageCommandBase.prototype.getSelectedShape = function () {\r\n var selectedShapes = this.control.selection.getSelectedShapes(true);\r\n return (selectedShapes.length === 1) ? selectedShapes[0] : undefined;\r\n };\r\n EditShapeImageCommandBase.prototype.executeCore = function (state, parameter) {\r\n this.control.history.beginTransaction();\r\n var selectedUnlockedShapes = this.control.selection.getSelectedShapes(false);\r\n this.control.history.addAndRedo(new ChangeShapeImageHistoryItem_1.ChangeShapeImageHistoryItem(selectedUnlockedShapes[0], parameter));\r\n this.control.history.endTransaction();\r\n return true;\r\n };\r\n return EditShapeImageCommandBase;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.EditShapeImageCommandBase = EditShapeImageCommandBase;\r\n\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ToolboxDragEventsHandlerBase = void 0;\r\nvar evt_1 = __webpack_require__(60);\r\nvar point_1 = __webpack_require__(1);\r\nvar Utils_1 = __webpack_require__(17);\r\nvar ToolboxDragEventsHandlerBase = /** @class */ (function () {\r\n function ToolboxDragEventsHandlerBase(isTouchUIEnabled) {\r\n this.isTouchUIEnabled = isTouchUIEnabled;\r\n }\r\n ToolboxDragEventsHandlerBase.prototype.attach = function (source) {\r\n if (!source || !source.mainElement)\r\n return;\r\n source.dragEventsHandler = this;\r\n this.manager = source;\r\n this.onElementDownHandler = this.onElementDown.bind(this);\r\n this.onElementUpHandler = this.onElementUp.bind(this);\r\n this.onDownHandler = this.onDown.bind(this);\r\n this.onMoveHandler = this.onMove.bind(this);\r\n this.onUpHandler = this.onUp.bind(this);\r\n var element = this.manager.mainElement;\r\n element.addEventListener(this.downEventName, this.onElementDownHandler);\r\n element.addEventListener(this.upEventName, this.onElementUpHandler);\r\n element.addEventListener(this.downEventName, this.onDownHandler);\r\n document.addEventListener(this.moveEventName, this.onMoveHandler);\r\n document.addEventListener(this.upEventName, this.onUpHandler);\r\n };\r\n ToolboxDragEventsHandlerBase.prototype.detach = function () {\r\n var element = this.manager.mainElement;\r\n element.removeEventListener(this.downEventName, this.onElementDownHandler);\r\n element.removeEventListener(this.upEventName, this.onElementUpHandler);\r\n element.removeEventListener(this.downEventName, this.onDownHandler);\r\n document.removeEventListener(this.moveEventName, this.onMoveHandler);\r\n document.removeEventListener(this.upEventName, this.onUpHandler);\r\n this.manager = undefined;\r\n };\r\n ToolboxDragEventsHandlerBase.prototype.onElementDown = function (evt) {\r\n this.mouseDownShapeType = this.getDragShapeType(evt);\r\n };\r\n ToolboxDragEventsHandlerBase.prototype.onElementUp = function (evt) {\r\n var shapeType = this.getDragShapeType(evt);\r\n if (shapeType && shapeType === this.mouseDownShapeType)\r\n this.manager.raiseNotifyToolboxClick(shapeType);\r\n this.mouseDownShapeType = undefined;\r\n };\r\n ToolboxDragEventsHandlerBase.prototype.onDown = function (evt) {\r\n if (this.manager.shouldPrepareDrag()) {\r\n var startShapeType = this.getDragShapeType(evt);\r\n if (startShapeType === undefined)\r\n this.manager.finishDragging();\r\n else {\r\n this.manager.prepareDragging(this.createPoint(evt), this.getDragShapeType(evt));\r\n this.onDownCore(evt);\r\n }\r\n }\r\n };\r\n ToolboxDragEventsHandlerBase.prototype.onMove = function (evt) {\r\n this.onMoveCore(evt, Utils_1.isLeftButtonPressed(evt));\r\n };\r\n ToolboxDragEventsHandlerBase.prototype.onUp = function (evt) {\r\n this.manager.finishDragging();\r\n };\r\n ToolboxDragEventsHandlerBase.prototype.onMoveCore = function (evt, isLeftButtonPressed) {\r\n if (isLeftButtonPressed) {\r\n if (this.manager.shouldContinueDragging())\r\n this.manager.continueDragging(this.createPoint(evt));\r\n }\r\n else\r\n this.manager.finishDragging();\r\n };\r\n ToolboxDragEventsHandlerBase.prototype.getDragShapeType = function (evt) {\r\n return this.manager.getDragShapeType(this.getEventSource(evt));\r\n };\r\n ToolboxDragEventsHandlerBase.prototype.createPoint = function (evt) {\r\n return new point_1.Point(evt_1.EvtUtils.getEventX(evt), evt_1.EvtUtils.getEventY(evt));\r\n };\r\n ToolboxDragEventsHandlerBase.prototype.getEventSource = function (evt) {\r\n return evt_1.EvtUtils.getEventSource(evt);\r\n };\r\n return ToolboxDragEventsHandlerBase;\r\n}());\r\nexports.ToolboxDragEventsHandlerBase = ToolboxDragEventsHandlerBase;\r\n\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RenderManagerDragEventsHandlerBase = void 0;\r\nvar browser_1 = __webpack_require__(19);\r\nvar RenderManagerDragEventsHandlerBase = /** @class */ (function () {\r\n function RenderManagerDragEventsHandlerBase() {\r\n this.isMoveLocked = false;\r\n this.lockMoveTimer = -1;\r\n }\r\n RenderManagerDragEventsHandlerBase.prototype.attach = function (source) {\r\n if (!source || !source.svgElement)\r\n return;\r\n source.dragEventsHandler = this;\r\n this.manager = source;\r\n this.isMoveLocked = false;\r\n this.lockMoveTimer = -1;\r\n this.onEnterHandler = this.onEnter.bind(this);\r\n this.onLeaveHandler = this.onLeave.bind(this);\r\n this.onDownHandler = this.onDown.bind(this);\r\n this.onMoveHandler = this.onMove.bind(this);\r\n this.onUpHandler = this.onUp.bind(this);\r\n var svgElement = this.manager.svgElement;\r\n svgElement.addEventListener(this.enterEventName, this.onEnterHandler, { passive: false });\r\n svgElement.addEventListener(this.leaveEventName, this.onLeaveHandler, { passive: false });\r\n svgElement.addEventListener(this.downEventName, this.onDownHandler, { passive: false });\r\n document.addEventListener(this.moveEventName, this.onMoveHandler, { passive: false });\r\n document.addEventListener(this.upEventName, this.onUpHandler, { passive: false });\r\n };\r\n RenderManagerDragEventsHandlerBase.prototype.detach = function () {\r\n var svgElement = this.manager.svgElement;\r\n svgElement.removeEventListener(this.enterEventName, this.onEnterHandler);\r\n svgElement.removeEventListener(this.leaveEventName, this.onLeaveHandler);\r\n svgElement.removeEventListener(this.downEventName, this.onDownHandler);\r\n document.removeEventListener(this.moveEventName, this.onMoveHandler);\r\n document.removeEventListener(this.upEventName, this.onUpHandler);\r\n this.unLockMove();\r\n this.manager = undefined;\r\n };\r\n RenderManagerDragEventsHandlerBase.prototype.onDown = function (evt) {\r\n this.lockMove();\r\n this.onDownCore(evt);\r\n };\r\n RenderManagerDragEventsHandlerBase.prototype.onUp = function (evt) {\r\n this.lockMove();\r\n this.onUpCore(evt);\r\n };\r\n RenderManagerDragEventsHandlerBase.prototype.onMove = function (evt) {\r\n if (!this.isMoveLocked) {\r\n this.onMoveCore(evt);\r\n browser_1.Browser.IE && this.lockMove();\r\n }\r\n };\r\n RenderManagerDragEventsHandlerBase.prototype.onEnter = function (evt) {\r\n this.manager.onMouseEnter(evt);\r\n };\r\n RenderManagerDragEventsHandlerBase.prototype.onLeave = function (evt) {\r\n this.manager.onMouseLeave(evt);\r\n };\r\n RenderManagerDragEventsHandlerBase.prototype.lockMove = function () {\r\n var _this = this;\r\n this.isMoveLocked = true;\r\n this.lockMoveTimer = setTimeout(function () {\r\n _this.isMoveLocked = false;\r\n _this.lockMoveTimer = -1;\r\n }, 10); // because chrome raises 2 events on click: buttonDown and move.\r\n };\r\n RenderManagerDragEventsHandlerBase.prototype.unLockMove = function () {\r\n if (this.lockMoveTimer !== -1) {\r\n clearTimeout(this.lockMoveTimer);\r\n this.lockMoveTimer = -1;\r\n }\r\n };\r\n return RenderManagerDragEventsHandlerBase;\r\n}());\r\nexports.RenderManagerDragEventsHandlerBase = RenderManagerDragEventsHandlerBase;\r\n\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.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;\r\nvar CommandManager_1 = __webpack_require__(81);\r\nObject.defineProperty(exports, \"DiagramCommand\", { enumerable: true, get: function () { return CommandManager_1.DiagramCommand; } });\r\nvar Diagram_1 = __webpack_require__(301);\r\nObject.defineProperty(exports, \"DiagramControl\", { enumerable: true, get: function () { return Diagram_1.DiagramControl; } });\r\nObject.defineProperty(exports, \"default\", { enumerable: true, get: function () { return Diagram_1.DiagramControl; } });\r\nvar size_1 = __webpack_require__(2);\r\nObject.defineProperty(exports, \"Size\", { enumerable: true, get: function () { return size_1.Size; } });\r\nvar point_1 = __webpack_require__(1);\r\nObject.defineProperty(exports, \"Point\", { enumerable: true, get: function () { return point_1.Point; } });\r\nvar Utils_1 = __webpack_require__(3);\r\nObject.defineProperty(exports, \"EventDispatcher\", { enumerable: true, get: function () { return Utils_1.EventDispatcher; } });\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nObject.defineProperty(exports, \"ShapeTypes\", { enumerable: true, get: function () { return ShapeTypes_1.ShapeTypes; } });\r\nObject.defineProperty(exports, \"ShapeCategories\", { enumerable: true, get: function () { return ShapeTypes_1.ShapeCategories; } });\r\nObject.defineProperty(exports, \"ShapeType\", { enumerable: true, get: function () { return ShapeTypes_1.ShapeType; } });\r\nvar unit_converter_1 = __webpack_require__(11);\r\nObject.defineProperty(exports, \"UnitConverter\", { enumerable: true, get: function () { return unit_converter_1.UnitConverter; } });\r\nvar browser_1 = __webpack_require__(19);\r\nObject.defineProperty(exports, \"Browser\", { enumerable: true, get: function () { return browser_1.Browser; } });\r\nvar Settings_1 = __webpack_require__(28);\r\nObject.defineProperty(exports, \"AutoZoomMode\", { enumerable: true, get: function () { return Settings_1.AutoZoomMode; } });\r\nvar DataLayoutParameters_1 = __webpack_require__(103);\r\nObject.defineProperty(exports, \"DataLayoutType\", { enumerable: true, get: function () { return DataLayoutParameters_1.DataLayoutType; } });\r\nvar LayoutSettings_1 = __webpack_require__(20);\r\nObject.defineProperty(exports, \"DataLayoutOrientation\", { enumerable: true, get: function () { return LayoutSettings_1.DataLayoutOrientation; } });\r\n__webpack_require__(387);\r\nvar ConnectorProperties_1 = __webpack_require__(30);\r\nObject.defineProperty(exports, \"ConnectorLineEnding\", { enumerable: true, get: function () { return ConnectorProperties_1.ConnectorLineEnding; } });\r\nObject.defineProperty(exports, \"ConnectorLineOption\", { enumerable: true, get: function () { return ConnectorProperties_1.ConnectorLineOption; } });\r\nvar color_1 = __webpack_require__(22);\r\nObject.defineProperty(exports, \"ColorUtils\", { enumerable: true, get: function () { return color_1.ColorUtils; } });\r\nvar Diagnostics_1 = __webpack_require__(59);\r\nObject.defineProperty(exports, \"Diagnostics\", { enumerable: true, get: function () { return Diagnostics_1.Diagnostics; } });\r\nvar NativeItem_1 = __webpack_require__(84);\r\nObject.defineProperty(exports, \"NativeShape\", { enumerable: true, get: function () { return NativeItem_1.NativeShape; } });\r\nObject.defineProperty(exports, \"NativeConnector\", { enumerable: true, get: function () { return NativeItem_1.NativeConnector; } });\r\nvar LocalizationService_1 = __webpack_require__(37);\r\nObject.defineProperty(exports, \"DiagramLocalizationService\", { enumerable: true, get: function () { return LocalizationService_1.DiagramLocalizationService; } });\r\nvar RenderHelper_1 = __webpack_require__(15);\r\nObject.defineProperty(exports, \"RenderHelper\", { enumerable: true, get: function () { return RenderHelper_1.RenderHelper; } });\r\nvar Enums_1 = __webpack_require__(48);\r\nObject.defineProperty(exports, \"DiagramUnit\", { enumerable: true, get: function () { return Enums_1.DiagramUnit; } });\r\nObject.defineProperty(exports, \"PageOrientation\", { enumerable: true, get: function () { return Enums_1.PageOrientation; } });\r\nvar ModelOperationSettings_1 = __webpack_require__(16);\r\nObject.defineProperty(exports, \"DiagramModelOperation\", { enumerable: true, get: function () { return ModelOperationSettings_1.DiagramModelOperation; } });\r\nvar Connector_1 = __webpack_require__(6);\r\nObject.defineProperty(exports, \"ConnectorPosition\", { enumerable: true, get: function () { return Connector_1.ConnectorPosition; } });\r\n\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(57);\r\nvar mutable_1 = __webpack_require__(167);\r\nvar FixedInterval = (function (_super) {\r\n tslib_1.__extends(FixedInterval, _super);\r\n function FixedInterval(start, length) {\r\n var _this = _super.call(this) || this;\r\n _this.start = start;\r\n _this.length = length;\r\n return _this;\r\n }\r\n Object.defineProperty(FixedInterval.prototype, \"end\", {\r\n get: function () {\r\n return this.start + this.length;\r\n },\r\n set: function (newEnd) {\r\n this.length = newEnd - this.start;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FixedInterval.prototype, \"center\", {\r\n get: function () {\r\n return this.start + this.length / 2;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n FixedInterval.prototype.copyFrom = function (obj) {\r\n this.start = obj.start;\r\n this.length = obj.length;\r\n };\r\n FixedInterval.prototype.equals = function (obj) {\r\n return obj && this.start === obj.start && this.length === obj.length;\r\n };\r\n FixedInterval.prototype.clone = function () {\r\n return new FixedInterval(this.start, this.length);\r\n };\r\n FixedInterval.prototype.makeByStartEnd = function (start, end) {\r\n return new FixedInterval(start, end - start);\r\n };\r\n FixedInterval.prototype.makeByStartLength = function (start, length) {\r\n return new FixedInterval(start, length);\r\n };\r\n FixedInterval.prototype.makeByLengthEnd = function (length, end) {\r\n return new FixedInterval(end - length, length);\r\n };\r\n FixedInterval.fromPositions = function (start, end) {\r\n return new FixedInterval(start, end - start);\r\n };\r\n FixedInterval.makeByConstInterval = function (interval) {\r\n return new FixedInterval(interval.start, interval.length);\r\n };\r\n FixedInterval.prototype.expand = function (interval) {\r\n var end = Math.max(interval.end, this.end);\r\n this.start = Math.min(interval.start, this.start);\r\n this.end = end;\r\n return this;\r\n };\r\n return FixedInterval;\r\n}(mutable_1.MutableInterval));\r\nexports.FixedInterval = FixedInterval;\r\n\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar SparseIntervalsIterator = (function () {\r\n function SparseIntervalsIterator(sparseIntervals) {\r\n this.sparseIntervals = sparseIntervals;\r\n this.intervalIndex = -1;\r\n }\r\n Object.defineProperty(SparseIntervalsIterator.prototype, \"isStarted\", {\r\n get: function () {\r\n return !!this.curr;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n SparseIntervalsIterator.prototype.moveNext = function () {\r\n if (this.curr && this.posInInterval + 1 < this.curr.length) {\r\n this.posInInterval++;\r\n this.index++;\r\n this.initObject();\r\n return true;\r\n }\r\n if (this.intervalIndex + 1 < this.sparseIntervals.numIntervals) {\r\n this.intervalIndex++;\r\n this.curr = this.sparseIntervals.getInterval(this.intervalIndex);\r\n if (!this.curr.length)\r\n return this.moveNext();\r\n this.posInInterval = 0;\r\n this.index = this.curr.start;\r\n this.initObject();\r\n return true;\r\n }\r\n return false;\r\n };\r\n SparseIntervalsIterator.prototype.movePrev = function () {\r\n if (this.curr && this.posInInterval - 1 >= this.curr.start) {\r\n this.posInInterval--;\r\n this.index--;\r\n this.initObject();\r\n return true;\r\n }\r\n if (!this.isStarted)\r\n this.intervalIndex = this.sparseIntervals.numIntervals;\r\n if (this.intervalIndex - 1 >= 0) {\r\n this.intervalIndex--;\r\n this.curr = this.sparseIntervals.getInterval(this.intervalIndex);\r\n this.posInInterval = Math.max(this.curr.length - 1, this.curr.start);\r\n this.index = this.curr.start;\r\n this.initObject();\r\n return true;\r\n }\r\n return false;\r\n };\r\n SparseIntervalsIterator.prototype.initObject = function () { };\r\n return SparseIntervalsIterator;\r\n}());\r\nexports.SparseIntervalsIterator = SparseIntervalsIterator;\r\n\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.FilterPrimitive = void 0;\r\nvar RenderHelper_1 = __webpack_require__(15);\r\nvar Primitive_1 = __webpack_require__(25);\r\nvar FilterPrimitive = /** @class */ (function (_super) {\r\n __extends(FilterPrimitive, _super);\r\n function FilterPrimitive(id, x, y, width, height) {\r\n var _this = _super.call(this) || this;\r\n _this.id = id;\r\n _this.x = x;\r\n _this.y = y;\r\n _this.width = width;\r\n _this.height = height;\r\n return _this;\r\n }\r\n FilterPrimitive.prototype.createMainElement = function () {\r\n var element = document.createElementNS(RenderHelper_1.svgNS, \"filter\");\r\n element.setAttribute(\"id\", this.id);\r\n return element;\r\n };\r\n FilterPrimitive.prototype.applyElementProperties = function (element, measurer) {\r\n if (this.id)\r\n element.setAttribute(\"id\", this.id);\r\n this.setUnitAttribute(element, \"x\", this.x);\r\n this.setUnitAttribute(element, \"y\", this.y);\r\n this.setUnitAttribute(element, \"width\", this.width);\r\n this.setUnitAttribute(element, \"height\", this.height);\r\n this.setPositionCorrectionAttribute(element);\r\n _super.prototype.applyElementProperties.call(this, element, measurer);\r\n };\r\n return FilterPrimitive;\r\n}(Primitive_1.SvgPrimitive));\r\nexports.FilterPrimitive = FilterPrimitive;\r\n\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PrimitiveObject = void 0;\r\nvar unit_converter_1 = __webpack_require__(11);\r\nvar PrimitiveObject = /** @class */ (function () {\r\n function PrimitiveObject(style) {\r\n this.style = style;\r\n }\r\n Object.defineProperty(PrimitiveObject.prototype, \"strokeWidthPx\", {\r\n get: function () {\r\n return this.style ? this.style.strokeWidthPx : 0;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(PrimitiveObject.prototype, \"strokeOffset\", {\r\n get: function () {\r\n return this.style ? this.style.strokeOffset : 0;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n PrimitiveObject.prototype.getUnitVaue = function (value) {\r\n return typeof value === \"number\" ? unit_converter_1.UnitConverter.twipsToPixels(value).toString() : value;\r\n };\r\n PrimitiveObject.prototype.setUnitAttribute = function (element, key, value) {\r\n if (value === undefined || value === null)\r\n return;\r\n element.setAttribute(key, this.getUnitVaue(value));\r\n };\r\n PrimitiveObject.prototype.setPositionCorrectionAttribute = function (element) {\r\n var transformAttr = this.strokeWidthPx % 2 === 1 ? \"translate(\" + this.strokeOffset + \", \" + this.strokeOffset + \")\" : \"\";\r\n element.setAttribute(\"transform\", transformAttr);\r\n };\r\n return PrimitiveObject;\r\n}());\r\nexports.PrimitiveObject = PrimitiveObject;\r\n\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.isColorProperty = void 0;\r\nvar COLOR_PROPERTIES = { \"stroke\": true, \"fill\": true };\r\nfunction isColorProperty(propName) {\r\n return COLOR_PROPERTIES[propName];\r\n}\r\nexports.isColorProperty = isColorProperty;\r\n\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ConnectorPointsCalculatorBase = void 0;\r\nvar ConnectorPointsCalculatorBase = /** @class */ (function () {\r\n function ConnectorPointsCalculatorBase(connector) {\r\n this.connector = connector;\r\n }\r\n return ConnectorPointsCalculatorBase;\r\n}());\r\nexports.ConnectorPointsCalculatorBase = ConnectorPointsCalculatorBase;\r\n\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeShapeParametersHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar ChangeShapeParametersHistoryItem = /** @class */ (function (_super) {\r\n __extends(ChangeShapeParametersHistoryItem, _super);\r\n function ChangeShapeParametersHistoryItem(shapeKey, parameters) {\r\n var _this = _super.call(this) || this;\r\n _this.shapeKey = shapeKey;\r\n _this.parameters = parameters;\r\n return _this;\r\n }\r\n ChangeShapeParametersHistoryItem.prototype.redo = function (manipulator) {\r\n var shape = manipulator.model.findShape(this.shapeKey);\r\n this.oldParameters = shape.parameters.clone();\r\n manipulator.changeShapeParameters(shape, this.parameters);\r\n };\r\n ChangeShapeParametersHistoryItem.prototype.undo = function (manipulator) {\r\n var shape = manipulator.model.findShape(this.shapeKey);\r\n manipulator.changeShapeParameters(shape, this.oldParameters);\r\n };\r\n return ChangeShapeParametersHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.ChangeShapeParametersHistoryItem = ChangeShapeParametersHistoryItem;\r\n\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DeleteConnectorHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar DeleteConnectorHistoryItem = /** @class */ (function (_super) {\r\n __extends(DeleteConnectorHistoryItem, _super);\r\n function DeleteConnectorHistoryItem(connectorKey) {\r\n var _this = _super.call(this) || this;\r\n _this.connectorKey = connectorKey;\r\n return _this;\r\n }\r\n DeleteConnectorHistoryItem.prototype.redo = function (manipulator) {\r\n var connector = manipulator.model.findConnector(this.connectorKey);\r\n this.connector = connector.clone();\r\n manipulator.deleteConnector(connector);\r\n };\r\n DeleteConnectorHistoryItem.prototype.undo = function (manipulator) {\r\n manipulator.addConnector(this.connector, this.connector.key);\r\n };\r\n return DeleteConnectorHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.DeleteConnectorHistoryItem = DeleteConnectorHistoryItem;\r\n\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DeleteShapeHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar DeleteShapeHistoryItem = /** @class */ (function (_super) {\r\n __extends(DeleteShapeHistoryItem, _super);\r\n function DeleteShapeHistoryItem(shapeKey, allowed) {\r\n if (allowed === void 0) { allowed = true; }\r\n var _this = _super.call(this) || this;\r\n _this.shapeKey = shapeKey;\r\n _this.allowed = allowed;\r\n return _this;\r\n }\r\n DeleteShapeHistoryItem.prototype.redo = function (manipulator) {\r\n var shape = manipulator.model.findShape(this.shapeKey);\r\n this.shape = shape.clone();\r\n manipulator.deleteShape(shape, this.allowed);\r\n };\r\n DeleteShapeHistoryItem.prototype.undo = function (manipulator) {\r\n manipulator.addShape(this.shape, this.shape.key);\r\n };\r\n return DeleteShapeHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.DeleteShapeHistoryItem = DeleteShapeHistoryItem;\r\n\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ResizeShapeHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar ResizeShapeHistoryItem = /** @class */ (function (_super) {\r\n __extends(ResizeShapeHistoryItem, _super);\r\n function ResizeShapeHistoryItem(shapeKey, position, size) {\r\n var _this = _super.call(this) || this;\r\n _this.shapeKey = shapeKey;\r\n _this.position = position;\r\n _this.size = size;\r\n return _this;\r\n }\r\n ResizeShapeHistoryItem.prototype.redo = function (manipulator) {\r\n var shape = manipulator.model.findShape(this.shapeKey);\r\n this.oldPosition = shape.position.clone();\r\n this.oldSize = shape.size.clone();\r\n manipulator.resizeShape(shape, this.position, this.size);\r\n };\r\n ResizeShapeHistoryItem.prototype.undo = function (manipulator) {\r\n var shape = manipulator.model.findShape(this.shapeKey);\r\n manipulator.resizeShape(shape, this.oldPosition, this.oldSize);\r\n };\r\n return ResizeShapeHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.ResizeShapeHistoryItem = ResizeShapeHistoryItem;\r\n\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeLockedHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar ChangeLockedHistoryItem = /** @class */ (function (_super) {\r\n __extends(ChangeLockedHistoryItem, _super);\r\n function ChangeLockedHistoryItem(item, locked) {\r\n var _this = _super.call(this) || this;\r\n _this.itemKey = item.key;\r\n _this.locked = locked;\r\n return _this;\r\n }\r\n ChangeLockedHistoryItem.prototype.redo = function (manipulator) {\r\n var item = manipulator.model.findItem(this.itemKey);\r\n this.oldLocked = item.locked;\r\n manipulator.changeLocked(item, this.locked);\r\n };\r\n ChangeLockedHistoryItem.prototype.undo = function (manipulator) {\r\n var item = manipulator.model.findItem(this.itemKey);\r\n manipulator.changeLocked(item, this.oldLocked);\r\n };\r\n return ChangeLockedHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.ChangeLockedHistoryItem = ChangeLockedHistoryItem;\r\n\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeStyleHistoryItemBase = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar ChangeStyleHistoryItemBase = /** @class */ (function (_super) {\r\n __extends(ChangeStyleHistoryItemBase, _super);\r\n function ChangeStyleHistoryItemBase(itemKey, styleProperty, styleValue) {\r\n var _this = _super.call(this) || this;\r\n _this.itemKey = itemKey;\r\n _this.styleProperty = styleProperty;\r\n _this.styleValue = styleValue;\r\n return _this;\r\n }\r\n ChangeStyleHistoryItemBase.prototype.redo = function (manipulator) {\r\n var item = manipulator.model.findItem(this.itemKey);\r\n this.oldStyleValue = item.style[this.styleProperty];\r\n manipulator.changeStyle(item, this.styleProperty, this.styleValue);\r\n };\r\n ChangeStyleHistoryItemBase.prototype.undo = function (manipulator) {\r\n var item = manipulator.model.findItem(this.itemKey);\r\n manipulator.changeStyle(item, this.styleProperty, this.oldStyleValue);\r\n };\r\n return ChangeStyleHistoryItemBase;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.ChangeStyleHistoryItemBase = ChangeStyleHistoryItemBase;\r\n\n\n/***/ }),\n/* 120 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Importer = void 0;\r\nvar Shape_1 = __webpack_require__(13);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar size_1 = __webpack_require__(2);\r\nvar point_1 = __webpack_require__(1);\r\nvar ShapeDescriptionManager_1 = __webpack_require__(91);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar ImageInfo_1 = __webpack_require__(51);\r\nvar ImporterBase_1 = __webpack_require__(134);\r\nvar ImportUtils_1 = __webpack_require__(95);\r\nvar color_1 = __webpack_require__(22);\r\nvar Importer = /** @class */ (function (_super) {\r\n __extends(Importer, _super);\r\n function Importer(shapeDescriptionManager, json) {\r\n var _this = _super.call(this, shapeDescriptionManager) || this;\r\n _this.obj = ImportUtils_1.ImportUtils.parseJSON(json);\r\n return _this;\r\n }\r\n Importer.prototype.getObject = function () {\r\n return this.obj;\r\n };\r\n Importer.prototype.getPageObject = function (obj) {\r\n return obj[\"page\"];\r\n };\r\n Importer.prototype.getShapeObjects = function (obj) {\r\n return obj[\"shapes\"];\r\n };\r\n Importer.prototype.getConnectorObjects = function (obj) {\r\n return obj[\"connectors\"];\r\n };\r\n Importer.prototype.importPageSettings = function (model, pageObj) {\r\n if (!pageObj)\r\n return;\r\n this.assert(pageObj[\"width\"], \"number\");\r\n this.assert(pageObj[\"height\"], \"number\");\r\n if (typeof pageObj[\"width\"] === \"number\")\r\n model.size.width = pageObj[\"width\"];\r\n if (typeof pageObj[\"height\"] === \"number\")\r\n model.size.height = pageObj[\"height\"];\r\n if (typeof pageObj[\"pageColor\"] === \"number\")\r\n model.pageColor = pageObj[\"pageColor\"];\r\n else if (typeof pageObj[\"pageColor\"] === \"string\")\r\n model.pageColor = color_1.ColorUtils.fromString(pageObj[\"pageColor\"]);\r\n if (typeof pageObj[\"pageWidth\"] === \"number\")\r\n model.pageSize.width = pageObj[\"pageWidth\"];\r\n if (typeof pageObj[\"pageHeight\"] === \"number\")\r\n model.pageSize.height = pageObj[\"pageHeight\"];\r\n if (typeof pageObj[\"pageLandscape\"] === \"boolean\")\r\n model.pageLandscape = pageObj[\"pageLandscape\"];\r\n };\r\n Importer.prototype.importShape = function (shapeObj) {\r\n this.assert(shapeObj[\"key\"], \"string\");\r\n this.assert(shapeObj[\"x\"], \"number\");\r\n this.assert(shapeObj[\"y\"], \"number\");\r\n this.assert(shapeObj[\"type\"], \"string\");\r\n var shapeType = shapeObj[\"type\"];\r\n var description = this.shapeDescriptionManager.get(shapeType);\r\n var position = new point_1.Point(shapeObj[\"x\"], shapeObj[\"y\"]);\r\n var shape = new Shape_1.Shape(description || ShapeDescriptionManager_1.ShapeDescriptionManager.default, position);\r\n shape.key = shapeObj[\"key\"];\r\n if (typeof shapeObj[\"dataKey\"] === \"string\" || typeof shapeObj[\"dataKey\"] === \"number\")\r\n shape.dataKey = shapeObj[\"dataKey\"];\r\n if (typeof shapeObj[\"customData\"] === \"object\")\r\n shape.customData = Utils_1.ObjectUtils.cloneObject(shapeObj[\"customData\"]);\r\n if (typeof shapeObj[\"locked\"] === \"boolean\")\r\n shape.locked = shapeObj[\"locked\"];\r\n if (typeof shapeObj[\"width\"] === \"number\")\r\n shape.size.width = shapeObj[\"width\"];\r\n if (typeof shapeObj[\"height\"] === \"number\")\r\n shape.size.height = shapeObj[\"height\"];\r\n if (typeof shapeObj[\"text\"] === \"string\")\r\n shape.text = shapeObj[\"text\"];\r\n if (typeof shapeObj[\"imageUrl\"] === \"string\")\r\n shape.image = new ImageInfo_1.ImageInfo(shapeObj[\"imageUrl\"]);\r\n if (shapeObj[\"parameters\"]) {\r\n shape.parameters.fromObject(shapeObj[\"parameters\"]);\r\n shape.description.normalizeParameters(shape, shape.parameters);\r\n }\r\n if (shapeObj[\"style\"])\r\n shape.style.fromObject(shapeObj[\"style\"]);\r\n if (shapeObj[\"styleText\"])\r\n shape.styleText.fromObject(shapeObj[\"styleText\"]);\r\n if (typeof shapeObj[\"zIndex\"] === \"number\")\r\n shape.zIndex = shapeObj[\"zIndex\"];\r\n if (Array.isArray(shapeObj[\"childKeys\"]))\r\n shape[\"childKeys\"] = shapeObj[\"childKeys\"].slice();\r\n if (typeof shapeObj[\"expanded\"] === \"boolean\")\r\n shape.expanded = shapeObj[\"expanded\"];\r\n if (typeof shapeObj[\"expandedWidth\"] === \"number\" && typeof shapeObj[\"expandedHeight\"] === \"number\")\r\n shape.expandedSize = new size_1.Size(shapeObj[\"expandedWidth\"], shapeObj[\"expandedHeight\"]);\r\n return shape;\r\n };\r\n Importer.prototype.importShapeChildren = function (shapeObj, shape) {\r\n return [];\r\n };\r\n Importer.prototype.importConnector = function (connectorObj) {\r\n var _this = this;\r\n this.assert(connectorObj[\"key\"], \"string\");\r\n if (!Array.isArray(connectorObj[\"points\"]))\r\n throw Error(\"Invalid Format\");\r\n var points = connectorObj[\"points\"].map(function (pt) {\r\n _this.assert(pt[\"x\"], \"number\");\r\n _this.assert(pt[\"y\"], \"number\");\r\n return new point_1.Point(pt[\"x\"], pt[\"y\"]);\r\n });\r\n var connector = new Connector_1.Connector(points);\r\n connector.key = connectorObj[\"key\"];\r\n if (typeof connectorObj[\"dataKey\"] === \"string\" || typeof connectorObj[\"dataKey\"] === \"number\")\r\n connector.dataKey = connectorObj[\"dataKey\"];\r\n if (typeof connectorObj[\"customData\"] === \"object\")\r\n connector.customData = Utils_1.ObjectUtils.cloneObject(connectorObj[\"customData\"]);\r\n if (typeof connectorObj[\"locked\"] === \"boolean\")\r\n connector.locked = connectorObj[\"locked\"];\r\n connector.endConnectionPointIndex = typeof connectorObj[\"endConnectionPointIndex\"] === \"number\" ? connectorObj[\"endConnectionPointIndex\"] : -1;\r\n connector.beginConnectionPointIndex = typeof connectorObj[\"beginConnectionPointIndex\"] === \"number\" ? connectorObj[\"beginConnectionPointIndex\"] : -1;\r\n if (connectorObj[\"endItemKey\"] !== undefined)\r\n this.assert(connectorObj[\"endItemKey\"], \"string\");\r\n if (connectorObj[\"beginItemKey\"] !== undefined)\r\n this.assert(connectorObj[\"beginItemKey\"], \"string\");\r\n connector[\"endItemKey\"] = connectorObj[\"endItemKey\"];\r\n connector[\"beginItemKey\"] = connectorObj[\"beginItemKey\"];\r\n if (connectorObj[\"texts\"])\r\n connector.texts.fromObject(connectorObj[\"texts\"]);\r\n if (connectorObj[\"properties\"])\r\n connector.properties.fromObject(connectorObj[\"properties\"]);\r\n if (connectorObj[\"style\"])\r\n connector.style.fromObject(connectorObj[\"style\"]);\r\n if (connectorObj[\"styleText\"])\r\n connector.styleText.fromObject(connectorObj[\"styleText\"]);\r\n if (typeof connectorObj[\"zIndex\"] === \"number\")\r\n connector.zIndex = connectorObj[\"zIndex\"];\r\n return connector;\r\n };\r\n return Importer;\r\n}(ImporterBase_1.ImporterBase));\r\nexports.Importer = Importer;\r\n\n\n/***/ }),\n/* 121 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DiamondShapeDescription = void 0;\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar DiamondShapeDescription = /** @class */ (function (_super) {\r\n __extends(DiamondShapeDescription, _super);\r\n function DiamondShapeDescription(defaultSize, hasDefaultText) {\r\n if (defaultSize === void 0) { defaultSize = ShapeDescription_1.ShapeDefaultSize.clone(); }\r\n return _super.call(this, defaultSize, hasDefaultText) || this;\r\n }\r\n Object.defineProperty(DiamondShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.Diamond; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiamondShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n DiamondShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom;\r\n var _a = rect.center, cx = _a.x, cy = _a.y;\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(cx, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, cy),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(cx, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left, cy),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ], shape.style)\r\n ];\r\n };\r\n DiamondShapeDescription.prototype.getTextRectangle = function (shape) {\r\n return shape.rectangle.clone().inflate(-shape.size.width / 4, -shape.size.height / 4);\r\n };\r\n DiamondShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\r\n return textSize.clone().multiply(2, 2);\r\n };\r\n return DiamondShapeDescription;\r\n}(ShapeDescription_1.ShapeDescription));\r\nexports.DiamondShapeDescription = DiamondShapeDescription;\r\n\n\n/***/ }),\n/* 122 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.TextShapeDescription = void 0;\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar size_1 = __webpack_require__(2);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar ClipPathPrimitive_1 = __webpack_require__(55);\r\nvar RectaglePrimitive_1 = __webpack_require__(21);\r\nvar Utils_1 = __webpack_require__(17);\r\nvar TextShapeDescription = /** @class */ (function (_super) {\r\n __extends(TextShapeDescription, _super);\r\n function TextShapeDescription() {\r\n var _this = _super.call(this, new size_1.Size(ShapeDescription_1.ShapeDefaultDimension, ShapeDescription_1.ShapeDefaultDimension * 0.5), true) || this;\r\n _this.textClipPathId = Utils_1.RenderUtils.generateSvgElementId(\"clipRect\");\r\n return _this;\r\n }\r\n Object.defineProperty(TextShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.Text; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(TextShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n TextShapeDescription.prototype.createShapePrimitives = function (shape, forToolbox) {\r\n if (forToolbox) {\r\n var _a = shape.rectangle, left = _a.x, top_1 = _a.y, width = _a.width, height = _a.height;\r\n return [\r\n new ClipPathPrimitive_1.ClipPathPrimitive(this.getTextClipPathId(forToolbox), [\r\n new RectaglePrimitive_1.RectanglePrimitive(left, top_1, width, height)\r\n ])\r\n ];\r\n }\r\n return [];\r\n };\r\n TextShapeDescription.prototype.getTextClipPathId = function (forToolbox) {\r\n return forToolbox ? this.textClipPathId : undefined;\r\n };\r\n TextShapeDescription.prototype.getSizeByTextRectangle = function (textSize) {\r\n return textSize;\r\n };\r\n TextShapeDescription.prototype.getSizeByText = function (textSize, shape) {\r\n return textSize.clone();\r\n };\r\n TextShapeDescription.prototype.getTextRectangle = function (shape) {\r\n return shape.rectangle;\r\n };\r\n return TextShapeDescription;\r\n}(ShapeDescription_1.ShapeDescription));\r\nexports.TextShapeDescription = TextShapeDescription;\r\n\n\n/***/ }),\n/* 123 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PentagonShapeDescription = void 0;\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar PolygonShapeDescription_1 = __webpack_require__(94);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar PentagonShapeDescription = /** @class */ (function (_super) {\r\n __extends(PentagonShapeDescription, _super);\r\n function PentagonShapeDescription(hasDefaultText) {\r\n var _this = _super.call(this, hasDefaultText) || this;\r\n _this.defaultRatio = _this.defaultSize.height / _this.defaultSize.width;\r\n return _this;\r\n }\r\n Object.defineProperty(PentagonShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.Pentagon; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(PentagonShapeDescription.prototype, \"angleCount\", {\r\n get: function () { return 5; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n PentagonShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom, width = rect.width, height = rect.height;\r\n var cx = rect.center.x;\r\n var ratio = height / width / this.defaultRatio;\r\n var angle = Math.PI - this.angle;\r\n var py = width / 2 * Math.tan(angle / 2) * ratio;\r\n var y = top + py;\r\n var px = (height - py) / Math.tan(angle) / ratio;\r\n var x1 = left + px;\r\n var x2 = right - px;\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(cx, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, y),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(x2, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(x1, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left, y),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ], shape.style)\r\n ];\r\n };\r\n PentagonShapeDescription.prototype.processConnectionPoint = function (shape, point) {\r\n var side = shape.getConnectionPointSide(point);\r\n if (side === DiagramItem_1.ConnectionPointSide.East || side === DiagramItem_1.ConnectionPointSide.West) {\r\n var rect = shape.rectangle;\r\n var top_1 = rect.y, width = rect.width, height = rect.height;\r\n var ratio = height / width / this.defaultRatio;\r\n var angle = Math.PI - this.angle;\r\n var py = width / 2 * Math.tan(angle / 2) * ratio;\r\n var y = top_1 + py;\r\n if (side === DiagramItem_1.ConnectionPointSide.East)\r\n point.y = y;\r\n else if (side === DiagramItem_1.ConnectionPointSide.West)\r\n point.y = y;\r\n }\r\n };\r\n PentagonShapeDescription.prototype.calculateHeight = function (width) {\r\n var angle = Math.PI - this.angle;\r\n var h1 = width / 2 * Math.tan(angle / 2);\r\n var side = width / 2 / Math.cos(angle / 2);\r\n var h2 = side * Math.sin(angle);\r\n return h1 + h2;\r\n };\r\n PentagonShapeDescription.prototype.getTextRectangle = function (shape) {\r\n var textSize = Utils_1.GeometryUtils.getMaxRectangleEnscribedInEllipse(shape.size);\r\n return rectangle_1.Rectangle.fromGeometry(shape.position.clone().offset((shape.size.width - textSize.width) / 2, (shape.size.height - textSize.height) / 2), textSize);\r\n };\r\n PentagonShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\r\n return Utils_1.GeometryUtils.getEllipseByEnscribedRectangle(textSize);\r\n };\r\n return PentagonShapeDescription;\r\n}(PolygonShapeDescription_1.PolygonShapeDescription));\r\nexports.PentagonShapeDescription = PentagonShapeDescription;\r\n\n\n/***/ }),\n/* 124 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.HexagonShapeDescription = void 0;\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar PolygonShapeDescription_1 = __webpack_require__(94);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar HexagonShapeDescription = /** @class */ (function (_super) {\r\n __extends(HexagonShapeDescription, _super);\r\n function HexagonShapeDescription() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(HexagonShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.Hexagon; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(HexagonShapeDescription.prototype, \"angleCount\", {\r\n get: function () { return 6; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n HexagonShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom, width = rect.width;\r\n var cy = rect.center.y;\r\n var angle = Math.PI - this.angle;\r\n var sideX = width / (1 + 2 * Math.cos(angle));\r\n var x1 = left + (width - sideX) / 2;\r\n var x2 = x1 + sideX;\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(x1, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(x2, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, cy),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(x2, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(x1, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left, cy),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ], shape.style)\r\n ];\r\n };\r\n HexagonShapeDescription.prototype.calculateHeight = function (width) {\r\n var angle = Math.PI - this.angle;\r\n var sideX = width / (1 + 2 * Math.cos(angle));\r\n return 2 * sideX * Math.sin(angle);\r\n };\r\n HexagonShapeDescription.prototype.getTextRectangle = function (shape) {\r\n var textSize = Utils_1.GeometryUtils.getMaxRectangleEnscribedInEllipse(shape.size);\r\n return rectangle_1.Rectangle.fromGeometry(shape.position.clone().offset((shape.size.width - textSize.width) / 2, (shape.size.height - textSize.height) / 2), textSize);\r\n };\r\n HexagonShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\r\n return Utils_1.GeometryUtils.getEllipseByEnscribedRectangle(textSize);\r\n };\r\n return HexagonShapeDescription;\r\n}(PolygonShapeDescription_1.PolygonShapeDescription));\r\nexports.HexagonShapeDescription = HexagonShapeDescription;\r\n\n\n/***/ }),\n/* 125 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.TriangleShapeDescription = void 0;\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar ConnectionPoint_1 = __webpack_require__(46);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar size_1 = __webpack_require__(2);\r\nvar TriangleShapeDescription = /** @class */ (function (_super) {\r\n __extends(TriangleShapeDescription, _super);\r\n function TriangleShapeDescription(hasDefaultText) {\r\n var _this = _super.call(this, undefined, hasDefaultText) || this;\r\n _this.defaultSize.height = _this.calculateHeight(ShapeDescription_1.ShapeDefaultDimension);\r\n return _this;\r\n }\r\n Object.defineProperty(TriangleShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.Triangle; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(TriangleShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n TriangleShapeDescription.prototype.createConnectionPoints = function () {\r\n return [\r\n new ConnectionPoint_1.ConnectionPoint(0.5, 0, DiagramItem_1.ConnectionPointSide.North),\r\n new ConnectionPoint_1.ConnectionPoint(0.75, 0.5, DiagramItem_1.ConnectionPointSide.East),\r\n new ConnectionPoint_1.ConnectionPoint(0.5, 1, DiagramItem_1.ConnectionPointSide.South),\r\n new ConnectionPoint_1.ConnectionPoint(0.25, 0.5, DiagramItem_1.ConnectionPointSide.West)\r\n ];\r\n };\r\n TriangleShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom;\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(rect.center.x, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left, bottom),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ], shape.style)\r\n ];\r\n };\r\n TriangleShapeDescription.prototype.calculateHeight = function (width) {\r\n return Math.sqrt(Math.pow(width, 2) - Math.pow(width / 2, 2));\r\n };\r\n TriangleShapeDescription.prototype.getTextRectangle = function (shape) {\r\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)\r\n .nonNegativeSize();\r\n };\r\n TriangleShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\r\n return new size_1.Size(textSize.width * 2, textSize.height * 2 + ShapeDescription_1.ShapeTextPadding);\r\n };\r\n return TriangleShapeDescription;\r\n}(ShapeDescription_1.ShapeDescription));\r\nexports.TriangleShapeDescription = TriangleShapeDescription;\r\n\n\n/***/ }),\n/* 126 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DocumentShapeDescription = void 0;\r\nvar RectangleShapeDescription_1 = __webpack_require__(18);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar DocumentShapeDescription = /** @class */ (function (_super) {\r\n __extends(DocumentShapeDescription, _super);\r\n function DocumentShapeDescription() {\r\n return _super.call(this, undefined, true) || this;\r\n }\r\n Object.defineProperty(DocumentShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.Document; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DocumentShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n DocumentShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n return this.createDocumentPrimitives(shape.rectangle, shape.style);\r\n };\r\n DocumentShapeDescription.prototype.createDocumentPrimitives = function (rect, style) {\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom, width = rect.width, height = rect.height;\r\n var cx = rect.center.x;\r\n var dy = height * DocumentShapeDescription.curveOffsetRatio;\r\n var primitives = [];\r\n return primitives.concat([\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(left, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, bottom),\r\n new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(right - width * 0.25, bottom - 2 * dy, cx, bottom - dy),\r\n new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(left + width * 0.25, bottom + dy, left, bottom - dy),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ], style)\r\n ]);\r\n };\r\n DocumentShapeDescription.prototype.processConnectionPoint = function (shape, point) {\r\n var side = shape.getConnectionPointSide(point);\r\n if (side === DiagramItem_1.ConnectionPointSide.South)\r\n point.y -= shape.size.height * DocumentShapeDescription.curveOffsetRatio;\r\n };\r\n DocumentShapeDescription.prototype.getTextRectangle = function (shape) {\r\n var rect = shape.rectangle;\r\n return rect.clone().resize(0, -rect.height * DocumentShapeDescription.curveOffsetRatio);\r\n };\r\n DocumentShapeDescription.curveOffsetRatio = 0.1;\r\n return DocumentShapeDescription;\r\n}(RectangleShapeDescription_1.RectangleShapeDescription));\r\nexports.DocumentShapeDescription = DocumentShapeDescription;\r\n\n\n/***/ }),\n/* 127 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CustomShapeDescription = void 0;\r\nvar ImagePrimitive_1 = __webpack_require__(128);\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar size_1 = __webpack_require__(2);\r\nvar point_1 = __webpack_require__(1);\r\nvar ConnectionPoint_1 = __webpack_require__(46);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar ShapeWithImageDescription_1 = __webpack_require__(129);\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar ImageInfo_1 = __webpack_require__(51);\r\nvar ImageCache_1 = __webpack_require__(47);\r\nvar ImageLoader_1 = __webpack_require__(131);\r\nvar SvgElementPrimitive_1 = __webpack_require__(231);\r\nvar CustomShapeDescription = /** @class */ (function (_super) {\r\n __extends(CustomShapeDescription, _super);\r\n function CustomShapeDescription(properties, baseDescription) {\r\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;\r\n _this.properties = properties;\r\n _this.baseDescription = baseDescription;\r\n _this.imageLoader = new ImageLoader_1.ImageLoader(_this.updateSvgImage.bind(_this));\r\n _this.defaultText = properties.defaultText !== undefined ? properties.defaultText : baseDescription && baseDescription.getDefaultText();\r\n _this.defaultImageUrl = properties.defaultImageUrl || baseDescription && baseDescription.getDefaultImageUrl();\r\n _this.title = properties.title || baseDescription && baseDescription.getTitle() || _this.defaultText || \"\";\r\n _this.connectionPoints = _this.createConnectionPoints();\r\n if (properties.svgUrl) {\r\n _this.svgImage = new ImageInfo_1.ImageInfo(properties.svgUrl);\r\n var cachedImage = ImageCache_1.ImageCache.instance.createUnloadedInfoByShapeImageInfo(_this.svgImage);\r\n _this.imageLoader.load(cachedImage);\r\n }\r\n if (properties.svgToolboxUrl) {\r\n _this.svgToolboxImage = new ImageInfo_1.ImageInfo(properties.svgToolboxUrl);\r\n var cachedImage = ImageCache_1.ImageCache.instance.createUnloadedInfoByShapeImageInfo(_this.svgToolboxImage);\r\n _this.imageLoader.load(cachedImage);\r\n }\r\n return _this;\r\n }\r\n Object.defineProperty(CustomShapeDescription.prototype, \"key\", {\r\n get: function () { return this.properties.type; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(CustomShapeDescription.prototype, \"allowEditText\", {\r\n get: function () { return this.properties.allowEditText !== false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(CustomShapeDescription.prototype, \"allowEditImage\", {\r\n get: function () { return this.baseDescription ? this.baseDescription.allowEditImage : this.properties.allowEditImage === true; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(CustomShapeDescription.prototype, \"enableChildren\", {\r\n get: function () { return this.baseDescription && this.baseDescription.enableChildren; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(CustomShapeDescription.prototype, \"hasTemplate\", {\r\n get: function () { return !!this.properties.createTemplate; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(CustomShapeDescription.prototype, \"minWidth\", {\r\n get: function () { return this.properties.minWidth || this.baseDescription && this.baseDescription.minWidth; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(CustomShapeDescription.prototype, \"minHeight\", {\r\n get: function () { return this.properties.minHeight || this.baseDescription && this.baseDescription.minHeight; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(CustomShapeDescription.prototype, \"maxWidth\", {\r\n get: function () { return this.properties.maxWidth || this.baseDescription && this.baseDescription.maxWidth; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(CustomShapeDescription.prototype, \"maxHeight\", {\r\n get: function () { return this.properties.maxHeight || this.baseDescription && this.baseDescription.maxHeight; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(CustomShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return this.properties.keepRatioOnAutoSize; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(CustomShapeDescription.prototype, \"toolboxSize\", {\r\n get: function () {\r\n if (this.properties.toolboxWidthToHeightRatio)\r\n return new size_1.Size(this.defaultSize.width, this.defaultSize.width / this.properties.toolboxWidthToHeightRatio);\r\n return this.defaultSize;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n CustomShapeDescription.prototype.getTextAngle = function () {\r\n return (this.baseDescription && this.baseDescription.getTextAngle()) || _super.prototype.getTextAngle.call(this);\r\n };\r\n CustomShapeDescription.prototype.getTitle = function () {\r\n return this.title !== undefined ? this.title : _super.prototype.getTitle.call(this);\r\n };\r\n CustomShapeDescription.prototype.getDefaultText = function () {\r\n return this.defaultText !== undefined ? this.defaultText : _super.prototype.getDefaultText.call(this);\r\n };\r\n CustomShapeDescription.prototype.getDefaultImageUrl = function () {\r\n return this.defaultImageUrl !== undefined ? this.defaultImageUrl : _super.prototype.getDefaultImageUrl.call(this);\r\n };\r\n CustomShapeDescription.prototype.allowResizeHorizontally = function (shape) {\r\n if (this.properties.allowResize === false)\r\n return false;\r\n if (this.baseDescription)\r\n return this.baseDescription.allowResizeHorizontally(shape);\r\n return _super.prototype.allowResizeHorizontally.call(this, shape);\r\n };\r\n CustomShapeDescription.prototype.allowResizeVertically = function (shape) {\r\n if (this.properties.allowResize === false)\r\n return false;\r\n if (this.baseDescription)\r\n return this.baseDescription.allowResizeVertically(shape);\r\n return _super.prototype.allowResizeVertically.call(this, shape);\r\n };\r\n CustomShapeDescription.prototype.createConnectionPoints = function () {\r\n if (this.properties && this.properties.connectionPoints && this.properties.connectionPoints.length)\r\n return this.properties.connectionPoints.map(function (ptObj) {\r\n if (ptObj && typeof ptObj[\"x\"] === \"number\" && typeof ptObj[\"y\"] === \"number\") {\r\n var side = typeof ptObj[\"side\"] === \"number\" ? ptObj[\"side\"] : DiagramItem_1.ConnectionPointSide.Undefined;\r\n return new ConnectionPoint_1.ConnectionPoint(ptObj[\"x\"], ptObj[\"y\"], side);\r\n }\r\n }).filter(function (pt) { return pt; });\r\n return _super.prototype.createConnectionPoints.call(this);\r\n };\r\n CustomShapeDescription.prototype.createImagePrimitives = function (shape, forToolbox) {\r\n if (this.baseDescription)\r\n return this.baseDescription.createImagePrimitives(shape, forToolbox);\r\n return _super.prototype.createImagePrimitives.call(this, shape, forToolbox);\r\n };\r\n CustomShapeDescription.prototype.createShapePrimitives = function (shape, forToolbox) {\r\n var primitives = [];\r\n var _a = shape.rectangle, left = _a.x, top = _a.y, width = _a.width, height = _a.height;\r\n if (this.baseDescription)\r\n primitives = this.baseDescription.createShapePrimitives(shape, forToolbox);\r\n else {\r\n var svgImage = forToolbox && this.svgToolboxImage ? this.svgToolboxImage : this.svgImage;\r\n if (svgImage) {\r\n var svgLeft = left + (this.properties.svgLeft && !forToolbox ? this.properties.svgLeft * width : 0);\r\n var svgTop = top + (this.properties.svgTop && !forToolbox ? this.properties.svgTop * height : 0);\r\n var svgWidth = this.properties.svgWidth && !forToolbox ? this.properties.svgWidth * width : width;\r\n var svgHeight = this.properties.svgHeight && !forToolbox ? this.properties.svgHeight * height : height;\r\n primitives = primitives.concat([\r\n new ImagePrimitive_1.ImagePrimitive(svgLeft, svgTop, svgWidth, svgHeight, svgImage.exportUrl)\r\n ]);\r\n }\r\n }\r\n var createTemplate = forToolbox && this.properties.createToolboxTemplate || this.properties.createTemplate;\r\n if (createTemplate) {\r\n var templateLeft = left + (this.properties.templateLeft && !forToolbox ? this.properties.templateLeft * width : 0);\r\n var templateTop = top + (this.properties.templateTop && !forToolbox ? this.properties.templateTop * height : 0);\r\n var templateWidth = this.properties.templateWidth && !forToolbox ? this.properties.templateWidth * width : width;\r\n var templateHeight = this.properties.templateHeight && !forToolbox ? this.properties.templateHeight * height : height;\r\n var nativeShape = this.properties.apiController ? this.properties.apiController.createNativeShape(shape) : shape.toNative();\r\n primitives = primitives.concat([\r\n new SvgElementPrimitive_1.SvgElementPrimitive(templateLeft, templateTop, templateWidth, templateHeight, createTemplate, this.properties.destroyTemplate, nativeShape)\r\n ]);\r\n }\r\n return primitives;\r\n };\r\n CustomShapeDescription.prototype.createParameters = function (parameters) {\r\n if (this.baseDescription)\r\n return this.baseDescription.createParameters(parameters);\r\n else\r\n return _super.prototype.createParameters.call(this, parameters);\r\n };\r\n CustomShapeDescription.prototype.normalizeParameters = function (shape, parameters) {\r\n if (this.baseDescription)\r\n this.baseDescription.normalizeParameters(shape, parameters);\r\n else\r\n _super.prototype.normalizeParameters.call(this, shape, parameters);\r\n };\r\n CustomShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\r\n if (this.baseDescription)\r\n this.baseDescription.modifyParameters(shape, parameters, deltaX, deltaY);\r\n else\r\n _super.prototype.modifyParameters.call(this, shape, parameters, deltaX, deltaY);\r\n };\r\n CustomShapeDescription.prototype.getParameterPoints = function (shape) {\r\n if (this.baseDescription)\r\n return this.baseDescription.getParameterPoints(shape);\r\n else\r\n return _super.prototype.getParameterPoints.call(this, shape);\r\n };\r\n CustomShapeDescription.prototype.getTextRectangle = function (shape) {\r\n if (this.baseDescription)\r\n return this.baseDescription.getTextRectangle(shape);\r\n else {\r\n var _a = shape.rectangle, left = _a.x, top_1 = _a.y, width = _a.width, height = _a.height;\r\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);\r\n }\r\n };\r\n CustomShapeDescription.prototype.getSizeByText = function (textSize, shape) {\r\n if (this.baseDescription)\r\n return this.baseDescription.getSizeByText(textSize, shape);\r\n else {\r\n var textWidth = this.properties.textWidth;\r\n if (!textWidth)\r\n textWidth = 1;\r\n var textHeight = this.properties.textHeight;\r\n if (!textHeight)\r\n textHeight = 1;\r\n return new size_1.Size(textSize.width / textWidth, textSize.height / textHeight);\r\n }\r\n };\r\n CustomShapeDescription.prototype.getImageSize = function (shapeSize, includeMargins, forToolbox) {\r\n if (this.baseDescription) {\r\n if (this.baseDescription instanceof ShapeWithImageDescription_1.ShapeWithImageDescription)\r\n return this.baseDescription.getImageSize(shapeSize, includeMargins, forToolbox);\r\n return size_1.Size.empty();\r\n }\r\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)\r\n .nonNegativeSize();\r\n };\r\n CustomShapeDescription.prototype.getImagePlacementRectangle = function (rect, forToolbox) {\r\n if (this.baseDescription) {\r\n if (this.baseDescription instanceof ShapeWithImageDescription_1.ShapeWithImageDescription)\r\n return this.baseDescription.getImagePlacementRectangle(rect, forToolbox);\r\n return rectangle_1.Rectangle.fromGeometry(point_1.Point.zero(), size_1.Size.empty());\r\n }\r\n var left = rect.x, top = rect.y, width = rect.width, height = rect.height;\r\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);\r\n };\r\n CustomShapeDescription.prototype.updateSvgImage = function (cacheImageInfo) {\r\n var isToolboxImage = cacheImageInfo.imageUrl && cacheImageInfo.imageUrl === this.properties.svgToolboxUrl;\r\n var svgImage = isToolboxImage ? this.svgToolboxImage : this.svgImage;\r\n if (cacheImageInfo.base64)\r\n svgImage.loadBase64Content(cacheImageInfo.base64);\r\n else\r\n svgImage.setUnableToLoadFlag();\r\n if (!isToolboxImage)\r\n this.raiseShapeDescriptionChanged(this);\r\n };\r\n return CustomShapeDescription;\r\n}(ShapeWithImageDescription_1.ShapeWithImageDescription));\r\nexports.CustomShapeDescription = CustomShapeDescription;\r\n\n\n/***/ }),\n/* 128 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ImagePrimitive = void 0;\r\nvar RenderHelper_1 = __webpack_require__(15);\r\nvar Primitive_1 = __webpack_require__(25);\r\nvar ImagePrimitive = /** @class */ (function (_super) {\r\n __extends(ImagePrimitive, _super);\r\n function ImagePrimitive(x, y, width, height, url, preserveAspectRatio, style, className) {\r\n if (preserveAspectRatio === void 0) { preserveAspectRatio = \"none\"; }\r\n var _this = _super.call(this, style, className) || this;\r\n _this.x = x;\r\n _this.y = y;\r\n _this.width = width;\r\n _this.height = height;\r\n _this.url = url;\r\n _this.preserveAspectRatio = preserveAspectRatio;\r\n return _this;\r\n }\r\n ImagePrimitive.prototype.createMainElement = function () {\r\n return document.createElementNS(RenderHelper_1.svgNS, \"image\");\r\n };\r\n ImagePrimitive.prototype.applyElementProperties = function (element, measurer) {\r\n this.setUnitAttribute(element, \"x\", this.x);\r\n this.setUnitAttribute(element, \"y\", this.y);\r\n this.setUnitAttribute(element, \"width\", this.width);\r\n this.setUnitAttribute(element, \"height\", this.height);\r\n this.setPositionCorrectionAttribute(element);\r\n element.setAttribute(\"href\", this.url);\r\n element.setAttribute(\"preserveAspectRatio\", this.preserveAspectRatio);\r\n _super.prototype.applyElementProperties.call(this, element, measurer);\r\n };\r\n return ImagePrimitive;\r\n}(Primitive_1.SvgPrimitive));\r\nexports.ImagePrimitive = ImagePrimitive;\r\n\n\n/***/ }),\n/* 129 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ShapeWithImageDescription = exports.SHAPE_IMAGE_CLASSNAMES = exports.ShapeDefaultSize = exports.ShapeDefaultDimension = void 0;\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar size_1 = __webpack_require__(2);\r\nvar point_1 = __webpack_require__(1);\r\nvar unit_converter_1 = __webpack_require__(11);\r\nvar ImagePrimitive_1 = __webpack_require__(128);\r\nvar RectaglePrimitive_1 = __webpack_require__(21);\r\nvar GroupPrimitive_1 = __webpack_require__(40);\r\nvar Utils_1 = __webpack_require__(17);\r\nvar ClipPathPrimitive_1 = __webpack_require__(55);\r\nvar ShapeImageIndicator_1 = __webpack_require__(130);\r\nexports.ShapeDefaultDimension = 1440;\r\nexports.ShapeDefaultSize = new size_1.Size(exports.ShapeDefaultDimension, exports.ShapeDefaultDimension);\r\nexports.SHAPE_IMAGE_CLASSNAMES = {\r\n IMAGE: \"dxdi-image\",\r\n IMAGE_PLACEHOLDER: \"dxdi-image-placeholder\",\r\n LOADING_INDICATOR: \"dxdi-spinner\",\r\n USER_PIC: \"dxdi-user\",\r\n WARNING_MARK: \"dxdi-warning\"\r\n};\r\nvar ShapeWithImageDescription = /** @class */ (function (_super) {\r\n __extends(ShapeWithImageDescription, _super);\r\n function ShapeWithImageDescription(defaultSize, hasDefaultText) {\r\n if (defaultSize === void 0) { defaultSize = exports.ShapeDefaultSize.clone(); }\r\n var _this = _super.call(this, defaultSize, hasDefaultText) || this;\r\n _this.hasDefaultText = hasDefaultText;\r\n _this.defaultIconSize = 480;\r\n return _this;\r\n }\r\n Object.defineProperty(ShapeWithImageDescription.prototype, \"enableImage\", {\r\n get: function () { return true; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ShapeWithImageDescription.prototype.getImageMargin = function (forToolbox) {\r\n return forToolbox ? unit_converter_1.UnitConverter.pixelsToTwips(2) : unit_converter_1.UnitConverter.pixelsToTwips(3);\r\n };\r\n ShapeWithImageDescription.prototype.createImagePrimitives = function (shape, forToolbox) {\r\n if (!this.enableImage)\r\n return [];\r\n var rect = this.getImagePlacementRectangle(shape.rectangle, forToolbox);\r\n if (forToolbox)\r\n return this.createImagePlaceholder(rect);\r\n var imagePrimitives = [];\r\n if (shape.image.isEmpty || shape.image.unableToLoad)\r\n imagePrimitives = imagePrimitives.concat(this.createEmptyImagePrimitives(rect, shape.image.unableToLoad));\r\n else if (shape.image.renderUrl === \"\")\r\n imagePrimitives = imagePrimitives.concat(this.createLoadingImagePrimitives(rect));\r\n else\r\n imagePrimitives = imagePrimitives.concat(this.createLoadedImagePrimitives(rect, shape.image.renderUrl));\r\n if (shape.image.renderUrl === \"\") {\r\n var clipPathId = Utils_1.RenderUtils.generateSvgElementId(\"clipImage\");\r\n return [].concat([\r\n new GroupPrimitive_1.GroupPrimitive(imagePrimitives, exports.SHAPE_IMAGE_CLASSNAMES.IMAGE, undefined, clipPathId),\r\n new ClipPathPrimitive_1.ClipPathPrimitive(clipPathId, [new RectaglePrimitive_1.RectanglePrimitive(rect.x, rect.y, rect.width, rect.height)])\r\n ]);\r\n }\r\n else\r\n return imagePrimitives;\r\n };\r\n ShapeWithImageDescription.prototype.createImagePlaceholder = function (rect) {\r\n return [];\r\n };\r\n ShapeWithImageDescription.prototype.createLoadedImagePrimitives = function (rect, imageUrl) {\r\n return [\r\n new ImagePrimitive_1.ImagePrimitive(rect.x, rect.y, rect.width, rect.height, imageUrl, ShapeWithImageDescription.imageScalingRule, undefined, exports.SHAPE_IMAGE_CLASSNAMES.IMAGE)\r\n ];\r\n };\r\n ShapeWithImageDescription.prototype.createLoadingImagePrimitives = function (rect) {\r\n var loadingRect = this.getIconPlacementRectangle(rect);\r\n return [\r\n ShapeImageIndicator_1.ShapeImageIndicator.createLoadingIndicatorPrimitives(loadingRect.x, loadingRect.y, this.defaultIconSize, unit_converter_1.UnitConverter.pixelsToTwips(5), exports.SHAPE_IMAGE_CLASSNAMES.LOADING_INDICATOR)\r\n ];\r\n };\r\n ShapeWithImageDescription.prototype.createEmptyImagePrimitives = function (rect, showWarning) {\r\n var loadingRect = this.getIconPlacementRectangle(rect);\r\n var primitives = [];\r\n primitives = primitives.concat(this.createEmptyImagePrimitive(loadingRect));\r\n if (showWarning)\r\n primitives = primitives.concat(this.createWarningPrimitive(loadingRect));\r\n return primitives;\r\n };\r\n ShapeWithImageDescription.prototype.createEmptyImagePrimitive = function (rect) {\r\n return new GroupPrimitive_1.GroupPrimitive([]);\r\n };\r\n ShapeWithImageDescription.prototype.createWarningPrimitive = function (rect) {\r\n return new GroupPrimitive_1.GroupPrimitive([]);\r\n };\r\n ShapeWithImageDescription.prototype.getIconPlacementRectangle = function (rect) {\r\n var iconRect = rectangle_1.Rectangle.fromGeometry(new point_1.Point(rect.x, rect.y), new size_1.Size(this.defaultIconSize, this.defaultIconSize));\r\n if (iconRect.width < rect.width)\r\n iconRect.x = rect.x + (rect.width - iconRect.width) / 2;\r\n if (iconRect.height < rect.height)\r\n iconRect.y = rect.y + (rect.height - iconRect.height) / 2;\r\n return iconRect;\r\n };\r\n ShapeWithImageDescription.imageScalingRule = \"xMidYMid meet\";\r\n return ShapeWithImageDescription;\r\n}(ShapeDescription_1.ShapeDescription));\r\nexports.ShapeWithImageDescription = ShapeWithImageDescription;\r\n\n\n/***/ }),\n/* 130 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ShapeImageIndicator = void 0;\r\nvar EllipsePrimitive_1 = __webpack_require__(54);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar GroupPrimitive_1 = __webpack_require__(40);\r\nvar browser_1 = __webpack_require__(19);\r\nvar RectaglePrimitive_1 = __webpack_require__(21);\r\nvar unit_converter_1 = __webpack_require__(11);\r\nvar ShapeImageIndicator = /** @class */ (function () {\r\n function ShapeImageIndicator(x, y, size, borderThickness, className) {\r\n this.x = x;\r\n this.y = y;\r\n this.size = size;\r\n this.borderThickness = borderThickness;\r\n this.className = className;\r\n this.animationStarted = false;\r\n }\r\n ShapeImageIndicator.createLoadingIndicatorPrimitives = function (x, y, r, borderThickness, className) {\r\n var indicator = new ShapeImageIndicator(x, y, r, borderThickness, className);\r\n return indicator.createLoadingIndicatorPrimitive();\r\n };\r\n ShapeImageIndicator.createUserIconPrimitives = function (x, y, r, borderThickness, className) {\r\n var indicator = new ShapeImageIndicator(x, y, r, borderThickness, className);\r\n return indicator.createUserIconPrimitive();\r\n };\r\n ShapeImageIndicator.createWarningIconPrimitives = function (x, y, size, className) {\r\n var indicator = new ShapeImageIndicator(x, y, size, undefined, className);\r\n return indicator.createWarningIconPrimitive();\r\n };\r\n ShapeImageIndicator.prototype.rotate = function (element, centerX, centerY, timestamp) {\r\n if (!this.animationStarted)\r\n return;\r\n var angle = (Math.round(timestamp) % 1080) / 3;\r\n var transformAttributeValue = \"rotate(\" + angle + \" \" + centerX + \" \" + centerY + \")\";\r\n element.setAttribute(\"transform\", transformAttributeValue);\r\n this.animationRequestId = requestAnimationFrame(function (timestamp) {\r\n this.rotate(element, centerX, centerY, timestamp);\r\n }.bind(this));\r\n };\r\n ShapeImageIndicator.prototype.onApplyLoadingIndicatorElementProperties = function (element) {\r\n var _a = [unit_converter_1.UnitConverter.twipsToPixelsF(this.x + this.size / 2), unit_converter_1.UnitConverter.twipsToPixelsF(this.y + this.size / 2)], centerX = _a[0], centerY = _a[1];\r\n if (browser_1.Browser.IE) {\r\n this.animationRequestId = requestAnimationFrame(function (timestamp) {\r\n this.rotate(element, centerX, centerY, timestamp);\r\n }.bind(this));\r\n this.animationStarted = true;\r\n }\r\n else\r\n element.style.setProperty(\"transform-origin\", centerX + \"px \" + centerY + \"px\");\r\n };\r\n ShapeImageIndicator.prototype.center = function () {\r\n return [unit_converter_1.UnitConverter.twipsToPixelsF(this.x + this.size / 2), unit_converter_1.UnitConverter.twipsToPixelsF(this.y + this.size / 2)];\r\n };\r\n ShapeImageIndicator.prototype.createLoadingIndicatorPrimitive = function () {\r\n var _a = this.center(), centerX = _a[0], centerY = _a[1];\r\n var radius = unit_converter_1.UnitConverter.twipsToPixelsF(this.size / 2 - this.borderThickness / 2);\r\n return new GroupPrimitive_1.GroupPrimitive([\r\n new EllipsePrimitive_1.EllipsePrimitive(centerX + \"\", centerY + \"\", radius + \"\", radius + \"\"),\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand((centerX + radius) + \"\", centerY + \"\"),\r\n new PathPrimitive_1.PathPrimitiveArcToCommand(radius + \"\", radius + \"\", 0, false, false, centerX + \"\", (centerY - radius) + \"\")\r\n ])\r\n ], this.className, undefined, undefined, this.onApplyLoadingIndicatorElementProperties.bind(this), this.onBeforeDispose.bind(this));\r\n };\r\n ShapeImageIndicator.prototype.createUserIconPrimitive = function () {\r\n var _a = this.center(), centerX = _a[0], centerY = _a[1];\r\n var radius = unit_converter_1.UnitConverter.twipsToPixelsF(this.size / 2 - this.borderThickness / 2);\r\n var sizeInPixels = unit_converter_1.UnitConverter.twipsToPixelsF(this.size);\r\n return new GroupPrimitive_1.GroupPrimitive([\r\n new EllipsePrimitive_1.EllipsePrimitive(centerX + \"\", centerY + \"\", radius + \"\", radius + \"\", undefined, \"dxdi-background\"),\r\n new EllipsePrimitive_1.EllipsePrimitive(centerX + \"\", centerY - sizeInPixels / 8 + \"\", sizeInPixels / 8 + \"\", sizeInPixels / 8 + \"\"),\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(centerX + \"\", centerY + sizeInPixels / 16 + \"\"),\r\n new PathPrimitive_1.PathPrimitiveCubicCurveToCommand(centerX + 0.1375 * sizeInPixels + \"\", centerY + sizeInPixels / 16 + \"\", centerX + sizeInPixels / 4 + \"\", centerY\r\n + 0.11875 * sizeInPixels + \"\", centerX + sizeInPixels / 4 + \"\", centerY + 0.1875 * sizeInPixels + \"\"),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(centerX + sizeInPixels / 4 + \"\", centerY + sizeInPixels / 4 + \"\"),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(centerX - sizeInPixels / 4 + \"\", centerY + sizeInPixels / 4 + \"\"),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(centerX - sizeInPixels / 4 + \"\", centerY + 0.1875 * sizeInPixels + \"\"),\r\n new PathPrimitive_1.PathPrimitiveCubicCurveToCommand(centerX - sizeInPixels / 4 + \"\", centerY + 0.11875 * sizeInPixels + \"\", centerX - 0.1375 * sizeInPixels + \"\", centerY\r\n + sizeInPixels / 16 + \"\", centerX + \"\", centerY + sizeInPixels / 16 + \"\"),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ])\r\n ], this.className);\r\n };\r\n ShapeImageIndicator.prototype.createWarningIconPrimitive = function () {\r\n var _a = this.center(), centerX = _a[0], centerY = _a[1];\r\n var radius = unit_converter_1.UnitConverter.twipsToPixelsF(this.size / 2) - 1;\r\n var exclamationLineWidth = unit_converter_1.UnitConverter.twipsToPixelsF(this.size / 8);\r\n return new GroupPrimitive_1.GroupPrimitive([\r\n new EllipsePrimitive_1.EllipsePrimitive(centerX + \"\", centerY + \"\", radius + \"\", radius + \"\"),\r\n new RectaglePrimitive_1.RectanglePrimitive(centerX - exclamationLineWidth / 2 + 0.5 + \"\", centerY + radius - unit_converter_1.UnitConverter.twipsToPixelsF(this.size / 4) + \"\", exclamationLineWidth + \"\", exclamationLineWidth + \"\"),\r\n new RectaglePrimitive_1.RectanglePrimitive(centerX - exclamationLineWidth / 2 + 0.5 + \"\", centerY - radius + unit_converter_1.UnitConverter.twipsToPixelsF(this.size / 4) - exclamationLineWidth + \"\", exclamationLineWidth + \"\", radius + \"\")\r\n ], this.className);\r\n };\r\n ShapeImageIndicator.prototype.onBeforeDispose = function () {\r\n if (this.animationRequestId)\r\n cancelAnimationFrame(this.animationRequestId);\r\n this.animationStarted = false;\r\n };\r\n return ShapeImageIndicator;\r\n}());\r\nexports.ShapeImageIndicator = ShapeImageIndicator;\r\n\n\n/***/ }),\n/* 131 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ImageLoader = void 0;\r\nvar ImageCache_1 = __webpack_require__(47);\r\nvar ImageLoader = /** @class */ (function () {\r\n function ImageLoader(loadedCallback) {\r\n this.loadedCallback = loadedCallback;\r\n }\r\n ImageLoader.prototype.load = function (data) {\r\n if (data.isLoaded)\r\n this.loadedCallback(data);\r\n else if (!data.isLoading)\r\n this.loadInner(data);\r\n };\r\n ImageLoader.prototype.loadInner = function (data) {\r\n var _this = this;\r\n if (data.imageUrl)\r\n this.loadPictureByUrl(data, function () { return _this.finalizeLoading(data, data); });\r\n else if (data.base64)\r\n this.loadPictureByBase64(data, function () { return _this.finalizeLoading(data, data); });\r\n return data;\r\n };\r\n ImageLoader.prototype.finalizeLoading = function (loadedData, existingInfo) {\r\n if (!existingInfo)\r\n existingInfo = ImageCache_1.ImageCache.instance.getImageData(loadedData.actualId);\r\n if (!existingInfo.isLoaded)\r\n ImageCache_1.ImageCache.instance.finalizeLoading(existingInfo, loadedData);\r\n this.loadedCallback(existingInfo);\r\n };\r\n ImageLoader.prototype.loadPictureByBase64 = function (data, imageLoaded) {\r\n var img = new Image();\r\n img.onload = function () {\r\n imageLoaded(data);\r\n };\r\n img.src = data.base64;\r\n };\r\n ImageLoader.prototype.loadPictureByUrl = function (data, imageLoaded) {\r\n var _this = this;\r\n var xhr = new XMLHttpRequest();\r\n try {\r\n xhr.onload = function () {\r\n var reader = new FileReader();\r\n reader.onloadend = function () {\r\n data.base64 = reader.result;\r\n _this.loadPictureByBase64(data, function (data) { return imageLoaded(data); });\r\n };\r\n reader.readAsDataURL(xhr.response);\r\n };\r\n // Access to XMLHttpRequest at 'https://url.jpg' from origin 'http://myurl' has been blocked by CORS policy:\r\n // No 'Access-Control-Allow-Origin' header is present on the requested resource.\r\n xhr.onerror = function ( /* this: XMLHttpRequest*/) { return imageLoaded(data); };\r\n xhr.onloadend = function () {\r\n if (xhr.status === 404)\r\n imageLoaded(data);\r\n };\r\n xhr.open(\"GET\", data.imageUrl, true);\r\n xhr.responseType = \"blob\";\r\n data.startLoading();\r\n xhr.send();\r\n }\r\n catch (_a) { }\r\n };\r\n return ImageLoader;\r\n}());\r\nexports.ImageLoader = ImageLoader;\r\n\n\n/***/ }),\n/* 132 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.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;\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar size_1 = __webpack_require__(2);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar RectaglePrimitive_1 = __webpack_require__(21);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar Utils_1 = __webpack_require__(17);\r\nvar Event_1 = __webpack_require__(14);\r\nvar GroupPrimitive_1 = __webpack_require__(40);\r\nvar ConnectionPoint_1 = __webpack_require__(46);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar LocalizationService_1 = __webpack_require__(37);\r\nexports.CONTAINER_HEADER_SIZE = 360;\r\nexports.CONTAINER_HEADER_TOOLBOX_SIZE_RATIO = 0.2;\r\nexports.CONTAINER_EXPAND_BUTTON_RECT_RATIO = 0.5;\r\nexports.CONTAINER_EXPAND_BUTTON_SIGN_RATIO = 0.3;\r\nvar ContainerDescription = /** @class */ (function (_super) {\r\n __extends(ContainerDescription, _super);\r\n function ContainerDescription(defaultSize) {\r\n if (defaultSize === void 0) { defaultSize = new size_1.Size(ShapeDescription_1.ShapeDefaultDimension * 2, ShapeDescription_1.ShapeDefaultDimension * 1.5); }\r\n return _super.call(this, defaultSize, true) || this;\r\n }\r\n Object.defineProperty(ContainerDescription.prototype, \"enableChildren\", {\r\n get: function () { return true; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ContainerDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ContainerDescription.prototype.getDefaultText = function () {\r\n return LocalizationService_1.DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Container];\r\n };\r\n ContainerDescription.prototype.createConnectionPoints = function () {\r\n return [\r\n new ConnectionPoint_1.ConnectionPoint(0.25, 0, DiagramItem_1.ConnectionPointSide.North),\r\n new ConnectionPoint_1.ConnectionPoint(0.5, 0, DiagramItem_1.ConnectionPointSide.North),\r\n new ConnectionPoint_1.ConnectionPoint(0.75, 0, DiagramItem_1.ConnectionPointSide.North),\r\n new ConnectionPoint_1.ConnectionPoint(1, 0.25, DiagramItem_1.ConnectionPointSide.East),\r\n new ConnectionPoint_1.ConnectionPoint(1, 0.5, DiagramItem_1.ConnectionPointSide.East),\r\n new ConnectionPoint_1.ConnectionPoint(1, 0.75, DiagramItem_1.ConnectionPointSide.East),\r\n new ConnectionPoint_1.ConnectionPoint(0.75, 1, DiagramItem_1.ConnectionPointSide.South),\r\n new ConnectionPoint_1.ConnectionPoint(0.5, 1, DiagramItem_1.ConnectionPointSide.South),\r\n new ConnectionPoint_1.ConnectionPoint(0.25, 1, DiagramItem_1.ConnectionPointSide.South),\r\n new ConnectionPoint_1.ConnectionPoint(0, 0.75, DiagramItem_1.ConnectionPointSide.West),\r\n new ConnectionPoint_1.ConnectionPoint(0, 0.5, DiagramItem_1.ConnectionPointSide.West),\r\n new ConnectionPoint_1.ConnectionPoint(0, 0.25, DiagramItem_1.ConnectionPointSide.West)\r\n ];\r\n };\r\n ContainerDescription.prototype.getConnectionPointIndexForItem = function (item, connectionPointIndex) {\r\n var shapeConnectionPoints = item && item.getConnectionPoints();\r\n if (shapeConnectionPoints.length === 4)\r\n return connectionPointIndex * 3 + 1;\r\n return connectionPointIndex;\r\n };\r\n ContainerDescription.prototype.getConnectionPointIndexForSide = function (side) {\r\n return side * 3 + 1;\r\n };\r\n ContainerDescription.prototype.createShapePrimitives = function (shape, forToolbox) {\r\n var _a = shape.rectangle, left = _a.x, top = _a.y, width = _a.width, height = _a.height;\r\n var primitives = [];\r\n if (shape.expanded)\r\n primitives = primitives.concat([\r\n new RectaglePrimitive_1.RectanglePrimitive(left, top, width, height, shape.style)\r\n ]);\r\n return primitives.concat(this.createHeaderPrimitives(shape, forToolbox));\r\n };\r\n ContainerDescription.prototype.createExpandButtonPrimitives = function (shape, rect) {\r\n var commands = [\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(rect.x + rect.width * ((1 - exports.CONTAINER_EXPAND_BUTTON_SIGN_RATIO) / 2), rect.center.y),\r\n 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)\r\n ];\r\n if (!shape.expanded)\r\n commands = commands.concat([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(rect.center.x, rect.y + rect.height * ((1 - exports.CONTAINER_EXPAND_BUTTON_SIGN_RATIO) / 2)),\r\n 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)),\r\n ]);\r\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);\r\n return [\r\n new GroupPrimitive_1.GroupPrimitive([\r\n new RectaglePrimitive_1.RectanglePrimitive(buttonRect.x, buttonRect.y, buttonRect.width, buttonRect.height, shape.style),\r\n new PathPrimitive_1.PathPrimitive(commands, shape.style)\r\n ], \"shape-expand-btn\", null, null, function (el) {\r\n Utils_1.RenderUtils.setElementEventData(el, Event_1.MouseEventElementType.ShapeExpandButton, shape.key);\r\n })\r\n ];\r\n };\r\n return ContainerDescription;\r\n}(ShapeDescription_1.ShapeDescription));\r\nexports.ContainerDescription = ContainerDescription;\r\n\n\n/***/ }),\n/* 133 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CardBaseDescription = void 0;\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar size_1 = __webpack_require__(2);\r\nvar ShapeWithImageDescription_1 = __webpack_require__(129);\r\nvar RoundedRectanglePrimitive_1 = __webpack_require__(235);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar GroupPrimitive_1 = __webpack_require__(40);\r\nvar ShapeImageIndicator_1 = __webpack_require__(130);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar LocalizationService_1 = __webpack_require__(37);\r\nvar unit_converter_1 = __webpack_require__(11);\r\nvar point_1 = __webpack_require__(1);\r\nvar CardBaseDescription = /** @class */ (function (_super) {\r\n __extends(CardBaseDescription, _super);\r\n function CardBaseDescription(defaultSize) {\r\n if (defaultSize === void 0) { defaultSize = new size_1.Size(ShapeDescription_1.ShapeDefaultDimension, 26 / 46 * ShapeDescription_1.ShapeDefaultDimension); }\r\n return _super.call(this, defaultSize, true) || this;\r\n }\r\n Object.defineProperty(CardBaseDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n CardBaseDescription.prototype.getDefaultText = function () {\r\n return LocalizationService_1.DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Card];\r\n };\r\n CardBaseDescription.prototype.createShapePrimitives = function (shape, forToolbox) {\r\n var _a = shape.rectangle, left = _a.x, top = _a.y, width = _a.width, height = _a.height;\r\n return [\r\n new RoundedRectanglePrimitive_1.RoundedRectanglePrimitive(left, top, width, height, (forToolbox) ? 30 : 60, (forToolbox) ? 30 : 60, shape.style)\r\n ];\r\n };\r\n CardBaseDescription.prototype.createImagePlaceholder = function (rect) {\r\n return [\r\n 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)\r\n ];\r\n };\r\n CardBaseDescription.prototype.createEmptyImagePrimitive = function (rect) {\r\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);\r\n };\r\n CardBaseDescription.prototype.createWarningPrimitive = function (rect) {\r\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);\r\n };\r\n CardBaseDescription.prototype.getTextRectangle = function (shape) {\r\n var rect = shape.rectangle;\r\n var textRectangle = rect.clone().inflate(-ShapeDescription_1.ShapeTextPadding, -ShapeDescription_1.ShapeTextPadding);\r\n var imgBlockSize = this.getImageSize(rect.createSize(), true);\r\n if (this.isTextAfterImage)\r\n textRectangle.moveRectangle(this.isHorizontal ? imgBlockSize.width : 0, this.isHorizontal ? 0 : imgBlockSize.height);\r\n textRectangle.resize(this.isHorizontal ? -imgBlockSize.width : 0, this.isHorizontal ? 0 : -imgBlockSize.height);\r\n return textRectangle.nonNegativeSize();\r\n };\r\n CardBaseDescription.prototype.getSizeByText = function (textSize, _shape) {\r\n var size = textSize.clone().offset(ShapeDescription_1.ShapeTextPadding * 2, ShapeDescription_1.ShapeTextPadding * 2);\r\n var imgBlockSize = this.getImageSizeByTextBlockSize(size);\r\n if (this.isHorizontal)\r\n size.width += imgBlockSize.width;\r\n else\r\n size.height += imgBlockSize.height;\r\n return size;\r\n };\r\n CardBaseDescription.prototype.createTextPrimitives = function (shape, forToolbox) {\r\n if (forToolbox)\r\n return this.createGraphicalTextRepresentation(shape.rectangle);\r\n else\r\n return _super.prototype.createTextPrimitives.call(this, shape, forToolbox);\r\n };\r\n CardBaseDescription.prototype.createGraphicalTextRepresentation = function (rect) {\r\n var textRect = new rectangle_1.Rectangle(0, 0, 0, 0);\r\n var imgBlockSize = this.getImageSize(rect.createSize(), true, true);\r\n if (this.isHorizontal) {\r\n var horizontalShift = this.isTextAfterImage ? rect.width / 2 - unit_converter_1.UnitConverter.pixelsToTwips(2) : 0;\r\n textRect.x = rect.x + horizontalShift + unit_converter_1.UnitConverter.pixelsToTwips(4);\r\n textRect.y = rect.y + unit_converter_1.UnitConverter.pixelsToTwips(5);\r\n textRect.width = imgBlockSize.width - unit_converter_1.UnitConverter.pixelsToTwips(4);\r\n textRect.height = rect.height - unit_converter_1.UnitConverter.pixelsToTwips(6);\r\n }\r\n else {\r\n var verticalShift = this.isTextAfterImage ? rect.height / 2 - unit_converter_1.UnitConverter.pixelsToTwips(2) : 0;\r\n textRect.x = rect.x + rect.width / 4;\r\n textRect.y = rect.y + verticalShift + unit_converter_1.UnitConverter.pixelsToTwips(4);\r\n textRect.width = rect.width / 2;\r\n textRect.height = imgBlockSize.height - unit_converter_1.UnitConverter.pixelsToTwips(2);\r\n }\r\n return this.createTextRepresentationPrimitives(textRect);\r\n };\r\n CardBaseDescription.prototype.getImagePlacementRectangle = function (rect, forToolbox) {\r\n var imageSize = this.getImageSize(rect.createSize(), false, forToolbox);\r\n var imageRectangle = rectangle_1.Rectangle.fromGeometry(new point_1.Point(rect.x, rect.y), imageSize);\r\n var imgBlockSize = this.getImageSize(rect.createSize(), true, forToolbox);\r\n if (this.isHorizontal && this.isTextAfterImage)\r\n imageRectangle.x += this.getImageMargin(forToolbox);\r\n else if (this.isHorizontal)\r\n imageRectangle.x = rect.right - imgBlockSize.width - this.getImageMargin(forToolbox);\r\n if (!this.isHorizontal && !this.isTextAfterImage)\r\n imageRectangle.y = rect.bottom - imgBlockSize.height - this.getImageMargin(forToolbox);\r\n else\r\n imageRectangle.y += this.getImageMargin(forToolbox);\r\n if (!this.isHorizontal)\r\n imageRectangle.x += (rect.width - imageRectangle.width) / 2;\r\n return imageRectangle;\r\n };\r\n CardBaseDescription.prototype.createTextRepresentationPrimitives = function (rect) {\r\n var lineHeight = unit_converter_1.UnitConverter.pixelsToTwips(unit_converter_1.UnitConverter.twipsToPixels(rect.height / 3));\r\n return [\r\n new GroupPrimitive_1.GroupPrimitive([\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(rect.x, rect.y),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(rect.x + rect.width, rect.y)\r\n ]),\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(rect.x, rect.y + lineHeight),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(rect.x + rect.width, rect.y + lineHeight)\r\n ]),\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(rect.x, rect.y + lineHeight * 2),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(rect.x + rect.width * 0.66, rect.y + lineHeight * 2)\r\n ])\r\n ], \"dxdi-shape-text\")\r\n ];\r\n };\r\n return CardBaseDescription;\r\n}(ShapeWithImageDescription_1.ShapeWithImageDescription));\r\nexports.CardBaseDescription = CardBaseDescription;\r\n\n\n/***/ }),\n/* 134 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ImporterBase = void 0;\r\nvar Model_1 = __webpack_require__(61);\r\nvar Shape_1 = __webpack_require__(13);\r\nvar ImporterBase = /** @class */ (function () {\r\n function ImporterBase(shapeDescriptionManager) {\r\n this.shapeDescriptionManager = shapeDescriptionManager;\r\n }\r\n ImporterBase.prototype.import = function () {\r\n var model = new Model_1.DiagramModel();\r\n var obj = this.getObject();\r\n this.importPageSettings(model, this.getPageObject(obj));\r\n var shapes = this.importShapes(this.getShapeObjects(obj));\r\n for (var i = 0; i < shapes.length; i++) {\r\n var shape = shapes[i];\r\n if (model.findItem(shape.key))\r\n throw Error(\"Item key is duplicated\");\r\n model.pushItem(shape);\r\n }\r\n var connectors = this.importConnectors(this.getConnectorObjects(obj));\r\n for (var i = 0; i < connectors.length; i++) {\r\n var connector = connectors[i];\r\n connector.endItem = model.findItem(connector[\"endItemKey\"]) || undefined;\r\n delete connector[\"endItemKey\"];\r\n connector.beginItem = model.findItem(connector[\"beginItemKey\"]) || undefined;\r\n delete connector[\"beginItemKey\"];\r\n if (model.findItem(connector.key))\r\n throw Error(\"Item key is duplicated\");\r\n model.pushItem(connector);\r\n this.updateConnections(connector);\r\n }\r\n this.updateChildren(model.items, function (key) { return model.findItem(key); });\r\n return model;\r\n };\r\n ImporterBase.prototype.importItems = function (model) {\r\n var result = [];\r\n var obj = this.getObject();\r\n var itemHash = {};\r\n var shapes = this.importShapes(this.getShapeObjects(obj));\r\n var key;\r\n for (var i = 0; i < shapes.length; i++) {\r\n var shape = shapes[i];\r\n var oldKey = shape.key;\r\n key = model.getNextKey();\r\n shape.key = key;\r\n itemHash[oldKey] = shape;\r\n if (shape.dataKey !== undefined)\r\n shape.dataKey = undefined;\r\n result.push(shape);\r\n }\r\n var connectors = this.importConnectors(this.getConnectorObjects(obj));\r\n for (var i = 0; i < connectors.length; i++) {\r\n var connector = connectors[i];\r\n var oldKey = connector.key;\r\n key = model.getNextKey();\r\n connector.key = key;\r\n itemHash[oldKey] = connector;\r\n if (connector.dataKey !== undefined)\r\n connector.dataKey = undefined;\r\n var endItemKey = connector[\"endItemKey\"];\r\n connector.endItem = itemHash[endItemKey];\r\n delete connector[\"endItemKey\"];\r\n var beginItemKey = connector[\"beginItemKey\"];\r\n connector.beginItem = itemHash[beginItemKey];\r\n delete connector[\"beginItemKey\"];\r\n result.push(connector);\r\n this.updateConnections(connector);\r\n }\r\n this.updateChildren(result, function (key) { return itemHash[key]; });\r\n return result;\r\n };\r\n ImporterBase.prototype.importItemsData = function (model) {\r\n var obj = this.getObject();\r\n var shapes = this.importShapes(this.getShapeObjects(obj));\r\n var shapeDataKeys = {};\r\n for (var i = 0; i < shapes.length; i++) {\r\n var srcShape = shapes[i];\r\n var destShape = void 0;\r\n if (srcShape.dataKey !== undefined)\r\n destShape = model.findShapeByDataKey(srcShape.dataKey);\r\n if (destShape) {\r\n destShape.dataKey = srcShape.dataKey;\r\n shapeDataKeys[srcShape.key] = srcShape.dataKey;\r\n destShape.locked = srcShape.locked;\r\n destShape.position = srcShape.position.clone();\r\n destShape.expanded = srcShape.expanded;\r\n if (srcShape.expandedSize)\r\n destShape.expandedSize = srcShape.expandedSize.clone();\r\n destShape.size = srcShape.size.clone();\r\n destShape.parameters = srcShape.parameters.clone();\r\n destShape.style = srcShape.style.clone();\r\n destShape.styleText = srcShape.styleText.clone();\r\n destShape.zIndex = srcShape.zIndex;\r\n destShape.text = srcShape.text;\r\n destShape.description = srcShape.description;\r\n destShape.image = srcShape.image.clone();\r\n }\r\n }\r\n var connectors = this.importConnectors(this.getConnectorObjects(obj));\r\n for (var i = 0; i < connectors.length; i++) {\r\n var srcConnector = connectors[i];\r\n var destConnector = void 0;\r\n if (srcConnector.dataKey !== undefined)\r\n destConnector = model.findConnectorByDataKey(srcConnector.dataKey);\r\n if (!destConnector)\r\n destConnector = model.findConnectorByBeginEndDataKeys(shapeDataKeys[srcConnector[\"beginItemKey\"]], shapeDataKeys[srcConnector[\"endItemKey\"]]);\r\n if (destConnector) {\r\n destConnector.dataKey = srcConnector.dataKey;\r\n destConnector.locked = srcConnector.locked;\r\n destConnector.points = srcConnector.points.slice();\r\n destConnector.properties = srcConnector.properties.clone();\r\n destConnector.style = srcConnector.style.clone();\r\n destConnector.endConnectionPointIndex = srcConnector.endConnectionPointIndex;\r\n destConnector.beginConnectionPointIndex = srcConnector.beginConnectionPointIndex;\r\n destConnector.texts = srcConnector.texts.clone();\r\n destConnector.styleText = srcConnector.styleText.clone();\r\n destConnector.zIndex = srcConnector.zIndex;\r\n }\r\n }\r\n };\r\n ImporterBase.prototype.importShapes = function (shapeObjs) {\r\n var result = [];\r\n if (!shapeObjs)\r\n return result;\r\n if (!Array.isArray(shapeObjs))\r\n throw Error(\"Invalid Format\");\r\n for (var i = 0; i < shapeObjs.length; i++) {\r\n var shapeObj = shapeObjs[i];\r\n var shape = this.importShape(shapeObj);\r\n result.push(shape);\r\n result = result.concat(this.importShapeChildren(shapeObj, shape));\r\n }\r\n return result;\r\n };\r\n ImporterBase.prototype.importConnectors = function (connectorObjs) {\r\n var result = [];\r\n if (!connectorObjs)\r\n return result;\r\n if (!Array.isArray(connectorObjs))\r\n throw Error(\"Invalid Format\");\r\n for (var i = 0; i < connectorObjs.length; i++) {\r\n var shapeObj = connectorObjs[i];\r\n result.push(this.importConnector(shapeObj));\r\n }\r\n return result;\r\n };\r\n ImporterBase.prototype.updateChildren = function (items, findItem) {\r\n items.forEach(function (item) {\r\n if (item instanceof Shape_1.Shape && item[\"childKeys\"]) {\r\n item[\"childKeys\"].forEach(function (childKey) {\r\n var child = findItem(childKey);\r\n if (child) {\r\n if (item.children.indexOf(child) === -1)\r\n item.children.push(child);\r\n child.container = item;\r\n }\r\n });\r\n delete item[\"childKeys\"];\r\n }\r\n });\r\n };\r\n ImporterBase.prototype.updateConnections = function (connector) {\r\n if (connector.endItem)\r\n if (connector.endItem instanceof Shape_1.Shape) {\r\n connector.endItem.attachedConnectors.push(connector);\r\n connector.points[connector.points.length - 1] = connector.endItem.getConnectionPointPosition(connector.endConnectionPointIndex, connector.points[connector.points.length - 2]);\r\n }\r\n else {\r\n connector.endItem = undefined;\r\n connector.endConnectionPointIndex = -1;\r\n }\r\n if (connector.beginItem)\r\n if (connector.beginItem instanceof Shape_1.Shape) {\r\n connector.beginItem.attachedConnectors.push(connector);\r\n connector.points[0] = connector.beginItem.getConnectionPointPosition(connector.beginConnectionPointIndex, connector.points[1]);\r\n }\r\n else {\r\n connector.beginItem = undefined;\r\n connector.beginConnectionPointIndex = -1;\r\n }\r\n };\r\n ImporterBase.prototype.assert = function (value, type) {\r\n if (value === undefined)\r\n throw Error(\"Invalid Format\");\r\n if (type !== undefined && typeof value !== type)\r\n throw Error(\"Invalid Format\");\r\n };\r\n return ImporterBase;\r\n}());\r\nexports.ImporterBase = ImporterBase;\r\n\n\n/***/ }),\n/* 135 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StylePropertyCommandBase = void 0;\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar StylePropertyCommandBase = /** @class */ (function (_super) {\r\n __extends(StylePropertyCommandBase, _super);\r\n function StylePropertyCommandBase() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n StylePropertyCommandBase.prototype.lockInputPositionUpdating = function () {\r\n return true;\r\n };\r\n return StylePropertyCommandBase;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.StylePropertyCommandBase = StylePropertyCommandBase;\r\n\n\n/***/ }),\n/* 136 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeStylePropertyCommandBase = void 0;\r\nvar StylePropertyCommandBase_1 = __webpack_require__(135);\r\nvar ChangeStylePropertyCommandBase = /** @class */ (function (_super) {\r\n __extends(ChangeStylePropertyCommandBase, _super);\r\n function ChangeStylePropertyCommandBase() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeStylePropertyCommandBase.prototype.executeCore = function (state, parameter) {\r\n var _this = this;\r\n this.control.history.beginTransaction();\r\n var items = this.control.selection.getSelectedItems();\r\n parameter = this.processParameter(parameter);\r\n items.forEach(function (item) {\r\n var styleProperty = _this.getStyleProperty();\r\n _this.control.history.addAndRedo(_this.createHistoryItem(item, styleProperty, parameter));\r\n });\r\n this.updateInputPosition(parameter);\r\n this.control.history.endTransaction();\r\n return true;\r\n };\r\n ChangeStylePropertyCommandBase.prototype.getDefaultValue = function () {\r\n return this.getDefaultStyleObj()[this.getStyleProperty()];\r\n };\r\n ChangeStylePropertyCommandBase.prototype.processParameter = function (parameter) {\r\n return parameter;\r\n };\r\n return ChangeStylePropertyCommandBase;\r\n}(StylePropertyCommandBase_1.StylePropertyCommandBase));\r\nexports.ChangeStylePropertyCommandBase = ChangeStylePropertyCommandBase;\r\n\n\n/***/ }),\n/* 137 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeConnectorPropertyCommand = void 0;\r\nvar ChangeConnectorPropertyHistoryItem_1 = __webpack_require__(88);\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar ChangeConnectorPropertyCommand = /** @class */ (function (_super) {\r\n __extends(ChangeConnectorPropertyCommand, _super);\r\n function ChangeConnectorPropertyCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeConnectorPropertyCommand.prototype.getValue = function () {\r\n return this.control.selection.inputPosition.getCurrentConnectorPropertyValue(this.getPropertyName());\r\n };\r\n ChangeConnectorPropertyCommand.prototype.getDefaultValue = function () {\r\n return this.getPropertyDefaultValue();\r\n };\r\n ChangeConnectorPropertyCommand.prototype.executeCore = function (state, parameter) {\r\n var _this = this;\r\n this.control.history.beginTransaction();\r\n var connectors = this.control.selection.getSelectedConnectors();\r\n connectors.forEach(function (connector) {\r\n var propertyName = _this.getPropertyName();\r\n _this.control.history.addAndRedo(new ChangeConnectorPropertyHistoryItem_1.ChangeConnectorPropertyHistoryItem(connector.key, propertyName, parameter));\r\n });\r\n this.control.selection.inputPosition.setConnectorPropertyValue(this.getPropertyName(), parameter);\r\n this.control.history.endTransaction();\r\n return true;\r\n };\r\n ChangeConnectorPropertyCommand.prototype.lockInputPositionUpdating = function () {\r\n return true;\r\n };\r\n ChangeConnectorPropertyCommand.prototype.isEnabled = function () {\r\n var connectors = this.control.selection.getSelectedConnectors();\r\n return _super.prototype.isEnabled.call(this) && connectors.length > 0;\r\n };\r\n return ChangeConnectorPropertyCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.ChangeConnectorPropertyCommand = ChangeConnectorPropertyCommand;\r\n\n\n/***/ }),\n/* 138 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.AutoLayoutTreeVerticalCommand = void 0;\r\nvar AutoLayoutCommandBase_1 = __webpack_require__(75);\r\nvar WideTree_1 = __webpack_require__(97);\r\nvar LayoutSettings_1 = __webpack_require__(20);\r\nvar AutoLayoutTreeVerticalCommand = /** @class */ (function (_super) {\r\n __extends(AutoLayoutTreeVerticalCommand, _super);\r\n function AutoLayoutTreeVerticalCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n AutoLayoutTreeVerticalCommand.prototype.createLayoutSettings = function () {\r\n var gridSize = this.control.settings.snapToGrid ? this.control.settings.gridSize : undefined;\r\n var settings = new LayoutSettings_1.TreeLayoutSettings(gridSize);\r\n settings.orientation = LayoutSettings_1.DataLayoutOrientation.Vertical;\r\n return settings;\r\n };\r\n AutoLayoutTreeVerticalCommand.prototype.createLayout = function (settings, graph) {\r\n return new WideTree_1.TreeLayoutBuilder(settings, graph).build();\r\n };\r\n return AutoLayoutTreeVerticalCommand;\r\n}(AutoLayoutCommandBase_1.AutoLayoutCommandBase));\r\nexports.AutoLayoutTreeVerticalCommand = AutoLayoutTreeVerticalCommand;\r\n\n\n/***/ }),\n/* 139 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.GraphLayout = void 0;\r\nvar Utils_1 = __webpack_require__(3);\r\nvar NodeLayout_1 = __webpack_require__(70);\r\nvar GraphLayout = /** @class */ (function () {\r\n function GraphLayout() {\r\n this.nodeKeys = [];\r\n this.nodeToLayout = {};\r\n this.edgeToPosition = {};\r\n }\r\n GraphLayout.prototype.forEachNode = function (callback) {\r\n var _this = this;\r\n this.nodeKeys.forEach(function (nk) { return callback(_this.nodeToLayout[nk], nk); });\r\n };\r\n GraphLayout.prototype.reduce = function (callback, initValue) {\r\n var _this = this;\r\n return this.nodeKeys.reduce(function (acc, key, index) { return callback(acc, _this.nodeToLayout[key], index); }, initValue);\r\n };\r\n GraphLayout.prototype.addNode = function (nodeLayout) {\r\n if (this.nodeToLayout[nodeLayout.key])\r\n throw Error(\"Node layout is already registered\");\r\n this.nodeKeys.push(nodeLayout.key);\r\n this.nodeToLayout[nodeLayout.key] = nodeLayout;\r\n return nodeLayout;\r\n };\r\n GraphLayout.prototype.hasNode = function (key) {\r\n return !!this.nodeToLayout[key];\r\n };\r\n GraphLayout.prototype.addEdge = function (edgeLayout) {\r\n if (this.edgeToPosition[edgeLayout.key])\r\n throw Error(\"Edge layout is already registered\");\r\n this.edgeToPosition[edgeLayout.key] = edgeLayout;\r\n };\r\n GraphLayout.prototype.getRectangle = function (includeMargins) {\r\n var _this = this;\r\n return Utils_1.GeometryUtils.getCommonRectangle(this.nodeKeys.map(function (nk) { return _this.nodeToLayout[nk].rectangle; }));\r\n };\r\n GraphLayout.prototype.offsetNodes = function (deltaX, deltaY) {\r\n var _this = this;\r\n if (deltaX === void 0) { deltaX = 0; }\r\n if (deltaY === void 0) { deltaY = 0; }\r\n var layout = new GraphLayout();\r\n this.nodeKeys.forEach(function (nk) {\r\n var nl = _this.nodeToLayout[nk];\r\n layout.addNode(new NodeLayout_1.NodeLayout(nl.info, nl.position.clone().offset(deltaX, deltaY)));\r\n });\r\n layout.copyEdges(this);\r\n return layout;\r\n };\r\n GraphLayout.prototype.extend = function (layout) {\r\n var _this = this;\r\n layout.forEachNode(function (nl) { return _this.addNode(nl); });\r\n this.copyEdges(layout);\r\n };\r\n GraphLayout.prototype.copyEdges = function (source) {\r\n var _this = this;\r\n Object.keys(source.edgeToPosition).forEach(function (e) {\r\n var edge = source.edgeToPosition[e];\r\n _this.addEdge(new NodeLayout_1.EdgeLayout(edge.key, edge.beginIndex, edge.endIndex));\r\n });\r\n };\r\n return GraphLayout;\r\n}());\r\nexports.GraphLayout = GraphLayout;\r\n\n\n/***/ }),\n/* 140 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.LayoutBuilder = void 0;\r\nvar LayoutSettings_1 = __webpack_require__(20);\r\nvar LayoutBuilder = /** @class */ (function () {\r\n function LayoutBuilder(settings, graph) {\r\n this.settings = settings;\r\n this.graph = graph;\r\n }\r\n LayoutBuilder.prototype.getBreadthNodeSizeCore = function (node, excludeMargins) {\r\n var size = this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical ? node.size.width : node.size.height;\r\n if (!excludeMargins)\r\n size += this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical ? (node.margin.left + node.margin.right) : (node.margin.top + node.margin.bottom);\r\n return size;\r\n };\r\n LayoutBuilder.prototype.getDepthNodeSizeCore = function (node) {\r\n return this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Horizontal ?\r\n (node.size.width + node.margin.left + node.margin.right) :\r\n (node.size.height + node.margin.top + node.margin.bottom);\r\n };\r\n LayoutBuilder.prototype.chooseDirectionValue = function (near, far) {\r\n return this.settings.direction === LayoutSettings_1.LogicalDirectionKind.Forward ? near : far;\r\n };\r\n LayoutBuilder.prototype.getDirectionValue = function (value) {\r\n return this.settings.direction === LayoutSettings_1.LogicalDirectionKind.Forward ? value : -value;\r\n };\r\n LayoutBuilder.prototype.getComponentOffset = function (graphLayout) {\r\n var rect = graphLayout.getRectangle(true);\r\n var offset = this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical ? rect.width : rect.height;\r\n return offset + this.settings.componentSpacing;\r\n };\r\n LayoutBuilder.prototype.setComponentOffset = function (graphLayout, offset) {\r\n return this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical ?\r\n graphLayout.offsetNodes(offset) :\r\n graphLayout.offsetNodes(0, offset);\r\n };\r\n return LayoutBuilder;\r\n}());\r\nexports.LayoutBuilder = LayoutBuilder;\r\n\n\n/***/ }),\n/* 141 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CanvasManager = void 0;\r\nvar ModelChange_1 = __webpack_require__(99);\r\nvar CanvasManagerBase_1 = __webpack_require__(43);\r\nvar CanvasManager = /** @class */ (function (_super) {\r\n __extends(CanvasManager, _super);\r\n function CanvasManager() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.pendingChanges = {};\r\n _this.pendingRemoveChanges = {};\r\n _this.updatesLock = 0;\r\n return _this;\r\n }\r\n CanvasManager.prototype.beginUpdate = function () {\r\n this.updatesLock++;\r\n };\r\n CanvasManager.prototype.endUpdate = function () {\r\n this.updatesLock--;\r\n if (this.updatesLock === 0)\r\n this.applyPendingChanges();\r\n };\r\n CanvasManager.prototype.getPendingChanges = function () {\r\n var _this = this;\r\n return Object.keys(this.pendingChanges).map(function (key) { return _this.pendingChanges[key]; });\r\n };\r\n CanvasManager.prototype.getPendingRemoveChanges = function () {\r\n var _this = this;\r\n return Object.keys(this.pendingRemoveChanges).map(function (key) { return _this.pendingRemoveChanges[key]; });\r\n };\r\n CanvasManager.prototype.applyPendingChanges = function () {\r\n var removeChanges = this.getPendingRemoveChanges();\r\n if (removeChanges.length) {\r\n this.applyChangesCore(removeChanges);\r\n this.pendingRemoveChanges = {};\r\n }\r\n var changes = this.getPendingChanges();\r\n if (changes.length) {\r\n this.applyChangesCore(changes);\r\n this.pendingChanges = {};\r\n }\r\n };\r\n CanvasManager.prototype.applyChangesCore = function (changes) {\r\n var _this = this;\r\n var changesToReapply = [];\r\n changes.forEach(function (change) {\r\n if (!_this.applyChange(change))\r\n changesToReapply.push(change);\r\n });\r\n if (changesToReapply.length && changesToReapply.length !== changes.length)\r\n this.applyChangesCore(changesToReapply);\r\n };\r\n CanvasManager.prototype.postponeChanges = function (changes) {\r\n var _this = this;\r\n changes.forEach(function (change) {\r\n if (change.type === ModelChange_1.ItemChangeType.Remove) {\r\n _this.pendingRemoveChanges[change.key] = change;\r\n delete _this.pendingChanges[change.key];\r\n }\r\n else if (!_this.pendingChanges[change.key]) {\r\n if (_this.pendingRemoveChanges[change.key] && change.type !== ModelChange_1.ItemChangeType.Create)\r\n throw new Error(\"Incorrect model changes sequence.\");\r\n _this.pendingChanges[change.key] = change;\r\n }\r\n else if (change.type === ModelChange_1.ItemChangeType.Create)\r\n _this.pendingChanges[change.key] = change;\r\n else if (change.type === ModelChange_1.ItemChangeType.UpdateStructure) {\r\n if (_this.pendingChanges[change.key].type === ModelChange_1.ItemChangeType.UpdateProperties)\r\n _this.pendingChanges[change.key] = change;\r\n }\r\n else if (change.type === ModelChange_1.ItemChangeType.UpdateProperties) {\r\n if (_this.pendingChanges[change.key].type === ModelChange_1.ItemChangeType.Update)\r\n _this.pendingChanges[change.key] = change;\r\n }\r\n else if (change.type === ModelChange_1.ItemChangeType.UpdateClassName)\r\n if (_this.pendingChanges[change.key].type === ModelChange_1.ItemChangeType.UpdateClassName)\r\n _this.pendingChanges[change.key] = change;\r\n });\r\n };\r\n CanvasManager.prototype.applyOrPostponeChanges = function (changes) {\r\n if (this.updatesLock === 0)\r\n this.applyChangesCore(changes);\r\n else\r\n this.postponeChanges(changes);\r\n };\r\n // Notifications\r\n CanvasManager.prototype.notifyModelChanged = function (changes) {\r\n this.applyOrPostponeChanges(changes);\r\n };\r\n CanvasManager.prototype.notifyPageColorChanged = function (color) { };\r\n CanvasManager.prototype.notifyPageSizeChanged = function (pageSize, pageLandscape) { };\r\n return CanvasManager;\r\n}(CanvasManagerBase_1.CanvasManagerBase));\r\nexports.CanvasManager = CanvasManager;\r\n\n\n/***/ }),\n/* 142 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PasteSelectionCommandBase = void 0;\r\nvar ClipboardCommand_1 = __webpack_require__(101);\r\nvar Importer_1 = __webpack_require__(120);\r\nvar Shape_1 = __webpack_require__(13);\r\nvar ImportShapeHistoryItem_1 = __webpack_require__(266);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar ImportConnectorHistoryItem_1 = __webpack_require__(267);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar SetSelectionHistoryItem_1 = __webpack_require__(66);\r\nvar unit_converter_1 = __webpack_require__(11);\r\nvar PasteSelectionCommandBase = /** @class */ (function (_super) {\r\n __extends(PasteSelectionCommandBase, _super);\r\n function PasteSelectionCommandBase() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PasteSelectionCommandBase.prototype.isEnabled = function () {\r\n return _super.prototype.isEnabled.call(this) && (this.isPasteSupportedByBrowser() || ClipboardCommand_1.ClipboardCommand.clipboardData !== undefined);\r\n };\r\n PasteSelectionCommandBase.prototype.isVisible = function () {\r\n return this.isPasteSupportedByBrowser() || ClipboardCommand_1.ClipboardCommand.clipboardData !== undefined;\r\n };\r\n PasteSelectionCommandBase.prototype.parseClipboardData = function (data) {\r\n var items = [];\r\n var importer = new Importer_1.Importer(this.control.shapeDescriptionManager, data);\r\n items = importer.importItems(this.control.model);\r\n if (this.control.contextMenuPosition)\r\n this.calculateSelectionOffset(items, this.control.contextMenuPosition);\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n if (item instanceof Shape_1.Shape)\r\n item.position = this.getShapeNewPosition(item.position);\r\n else if (item instanceof Connector_1.Connector)\r\n this.changeConnectorPoints(item);\r\n }\r\n return items;\r\n };\r\n PasteSelectionCommandBase.prototype.executeCore = function (state, parameter) {\r\n var _this = this;\r\n var ret = true;\r\n if (parameter)\r\n this.performPaste(parameter);\r\n else\r\n this.getClipboardData(function (data) {\r\n ret = _this.execute(data); // may be async\r\n });\r\n return ret;\r\n };\r\n PasteSelectionCommandBase.prototype.addItemForSortingRecursive = function (itemsHashtable, item) {\r\n if (itemsHashtable[item.key])\r\n return itemsHashtable[item.key];\r\n if (item instanceof Connector_1.Connector) {\r\n if (item.endItem)\r\n itemsHashtable[item.key] = this.addItemForSortingRecursive(itemsHashtable, item.endItem) - 0.5;\r\n else if (item.beginItem)\r\n itemsHashtable[item.key] = this.addItemForSortingRecursive(itemsHashtable, item.beginItem) + 0.5;\r\n else\r\n itemsHashtable[item.key] = -1;\r\n return itemsHashtable[item.key];\r\n }\r\n if (item.attachedConnectors.length === 0)\r\n return itemsHashtable[item.key] = 0;\r\n else\r\n for (var i = 0; i < item.attachedConnectors.length; i++) {\r\n var beginItem = item.attachedConnectors[i].beginItem;\r\n if (item.attachedConnectors[i].endItem === item && beginItem && beginItem !== item.attachedConnectors[i].endItem)\r\n return itemsHashtable[item.key] = this.addItemForSortingRecursive(itemsHashtable, beginItem) + 1;\r\n else\r\n return itemsHashtable[item.key] = 0; // no parent\r\n }\r\n };\r\n PasteSelectionCommandBase.prototype.getSortedPasteItems = function (items) {\r\n var sortedItems = [];\r\n var connectors = [];\r\n var itemsHashtable = {};\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n if (item instanceof Shape_1.Shape)\r\n sortedItems.push(item);\r\n else if (item instanceof Connector_1.Connector) {\r\n connectors.push(item);\r\n this.addItemForSortingRecursive(itemsHashtable, item);\r\n }\r\n }\r\n connectors.sort(function (a, b) { return itemsHashtable[b.key] - itemsHashtable[a.key]; });\r\n return sortedItems.concat(connectors);\r\n };\r\n PasteSelectionCommandBase.prototype.performPaste = function (data) {\r\n this.control.beginUpdateCanvas();\r\n this.control.history.beginTransaction();\r\n var ids = [];\r\n var items = this.parseClipboardData(data);\r\n items = this.getSortedPasteItems(items);\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n if (item instanceof Shape_1.Shape)\r\n this.control.history.addAndRedo(new ImportShapeHistoryItem_1.ImportShapeHistoryItem(item));\r\n else if (item instanceof Connector_1.Connector)\r\n this.control.history.addAndRedo(new ImportConnectorHistoryItem_1.ImportConnectorHistoryItem(item));\r\n var containerKey = item.container && item.container.key;\r\n if (!containerKey || ids.indexOf(containerKey) === -1)\r\n ids.push(item.key);\r\n }\r\n ModelUtils_1.ModelUtils.tryUpdateModelRectangle(this.control.history);\r\n this.control.history.addAndRedo(new SetSelectionHistoryItem_1.SetSelectionHistoryItem(this.control.selection, ids));\r\n this.control.history.endTransaction();\r\n this.control.endUpdateCanvas();\r\n this.control.barManager.updateItemsState();\r\n };\r\n PasteSelectionCommandBase.prototype.calculateSelectionOffset = function (items, position) { };\r\n Object.defineProperty(PasteSelectionCommandBase.prototype, \"isPermissionsRequired\", {\r\n get: function () { return true; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n PasteSelectionCommandBase.getShapeNewPosition = function (model, position) {\r\n while (model.findShapeAtPosition(position))\r\n position = position.clone().offset(PasteSelectionCommandBase.positionOffset, PasteSelectionCommandBase.positionOffset);\r\n return position;\r\n };\r\n PasteSelectionCommandBase.changeConnectorPoints = function (model, connector) {\r\n while (model.findConnectorAtPoints(connector.points))\r\n connector.points.forEach(function (pt) {\r\n pt.x += PasteSelectionCommandBase.positionOffset;\r\n pt.y += PasteSelectionCommandBase.positionOffset;\r\n });\r\n };\r\n PasteSelectionCommandBase.positionOffset = unit_converter_1.UnitConverter.pixelsToTwips(10);\r\n return PasteSelectionCommandBase;\r\n}(ClipboardCommand_1.ClipboardCommand));\r\nexports.PasteSelectionCommandBase = PasteSelectionCommandBase;\r\n\n\n/***/ }),\n/* 143 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.AutoLayoutLayeredHorizontalCommand = void 0;\r\nvar AutoLayoutCommandBase_1 = __webpack_require__(75);\r\nvar Sugiyama_1 = __webpack_require__(79);\r\nvar LayoutSettings_1 = __webpack_require__(20);\r\nvar AutoLayoutLayeredHorizontalCommand = /** @class */ (function (_super) {\r\n __extends(AutoLayoutLayeredHorizontalCommand, _super);\r\n function AutoLayoutLayeredHorizontalCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n AutoLayoutLayeredHorizontalCommand.prototype.createLayoutSettings = function () {\r\n var settings = new LayoutSettings_1.LayoutSettings();\r\n settings.orientation = LayoutSettings_1.DataLayoutOrientation.Horizontal;\r\n return settings;\r\n };\r\n AutoLayoutLayeredHorizontalCommand.prototype.createLayout = function (settings, graph) {\r\n return new Sugiyama_1.SugiyamaLayoutBuilder(settings, graph).build();\r\n };\r\n return AutoLayoutLayeredHorizontalCommand;\r\n}(AutoLayoutCommandBase_1.AutoLayoutCommandBase));\r\nexports.AutoLayoutLayeredHorizontalCommand = AutoLayoutLayeredHorizontalCommand;\r\n\n\n/***/ }),\n/* 144 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.AutoLayoutTreeHorizontalCommand = void 0;\r\nvar AutoLayoutCommandBase_1 = __webpack_require__(75);\r\nvar WideTree_1 = __webpack_require__(97);\r\nvar LayoutSettings_1 = __webpack_require__(20);\r\nvar AutoLayoutTreeHorizontalCommand = /** @class */ (function (_super) {\r\n __extends(AutoLayoutTreeHorizontalCommand, _super);\r\n function AutoLayoutTreeHorizontalCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n AutoLayoutTreeHorizontalCommand.prototype.createLayoutSettings = function () {\r\n var gridSize = this.control.settings.snapToGrid ? this.control.settings.gridSize : undefined;\r\n var settings = new LayoutSettings_1.TreeLayoutSettings(gridSize);\r\n settings.orientation = LayoutSettings_1.DataLayoutOrientation.Horizontal;\r\n return settings;\r\n };\r\n AutoLayoutTreeHorizontalCommand.prototype.createLayout = function (settings, graph) {\r\n return new WideTree_1.TreeLayoutBuilder(settings, graph).build();\r\n };\r\n return AutoLayoutTreeHorizontalCommand;\r\n}(AutoLayoutCommandBase_1.AutoLayoutCommandBase));\r\nexports.AutoLayoutTreeHorizontalCommand = AutoLayoutTreeHorizontalCommand;\r\n\n\n/***/ }),\n/* 145 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.AutoLayoutLayeredVerticalCommand = void 0;\r\nvar AutoLayoutCommandBase_1 = __webpack_require__(75);\r\nvar Sugiyama_1 = __webpack_require__(79);\r\nvar LayoutSettings_1 = __webpack_require__(20);\r\nvar AutoLayoutLayeredVerticalCommand = /** @class */ (function (_super) {\r\n __extends(AutoLayoutLayeredVerticalCommand, _super);\r\n function AutoLayoutLayeredVerticalCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n AutoLayoutLayeredVerticalCommand.prototype.createLayoutSettings = function () {\r\n var settings = new LayoutSettings_1.LayoutSettings();\r\n settings.orientation = LayoutSettings_1.DataLayoutOrientation.Vertical;\r\n return settings;\r\n };\r\n AutoLayoutLayeredVerticalCommand.prototype.createLayout = function (settings, graph) {\r\n return new Sugiyama_1.SugiyamaLayoutBuilder(settings, graph).build();\r\n };\r\n return AutoLayoutLayeredVerticalCommand;\r\n}(AutoLayoutCommandBase_1.AutoLayoutCommandBase));\r\nexports.AutoLayoutLayeredVerticalCommand = AutoLayoutLayeredVerticalCommand;\r\n\n\n/***/ }),\n/* 146 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeLockedCommand = void 0;\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar ChangeLockedCommand = /** @class */ (function (_super) {\r\n __extends(ChangeLockedCommand, _super);\r\n function ChangeLockedCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeLockedCommand.prototype.isEnabled = function () {\r\n var _this = this;\r\n var items = this.control.selection.getSelectedItems(true);\r\n var enabled = false;\r\n items.forEach(function (item) { if (item.locked !== _this.getLockState())\r\n enabled = true; });\r\n return _super.prototype.isEnabled.call(this) && enabled;\r\n };\r\n ChangeLockedCommand.prototype.executeCore = function (state, parameter) {\r\n ModelUtils_1.ModelUtils.changeSelectionLocked(this.control.history, this.control.model, this.control.selection, this.getLockState());\r\n return true;\r\n };\r\n return ChangeLockedCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.ChangeLockedCommand = ChangeLockedCommand;\r\n\n\n/***/ }),\n/* 147 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeShapeImageHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar ImageInfo_1 = __webpack_require__(51);\r\nvar ChangeShapeImageHistoryItem = /** @class */ (function (_super) {\r\n __extends(ChangeShapeImageHistoryItem, _super);\r\n function ChangeShapeImageHistoryItem(item, imageUrl) {\r\n var _this = _super.call(this) || this;\r\n _this.shapeKey = item.key;\r\n _this.imageUrl = imageUrl;\r\n return _this;\r\n }\r\n ChangeShapeImageHistoryItem.prototype.redo = function (manipulator) {\r\n var item = manipulator.model.findShape(this.shapeKey);\r\n this.oldImage = item.image;\r\n manipulator.changeShapeImage(item, new ImageInfo_1.ImageInfo(this.imageUrl));\r\n };\r\n ChangeShapeImageHistoryItem.prototype.undo = function (manipulator) {\r\n var item = manipulator.model.findShape(this.shapeKey);\r\n manipulator.changeShapeImage(item, this.oldImage);\r\n };\r\n return ChangeShapeImageHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.ChangeShapeImageHistoryItem = ChangeShapeImageHistoryItem;\r\n\n\n/***/ }),\n/* 148 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerDefaultState = void 0;\r\nvar Event_1 = __webpack_require__(14);\r\nvar MouseHandlerMoveConnectorPointState_1 = __webpack_require__(305);\r\nvar MouseHandlerResizeShapeState_1 = __webpack_require__(306);\r\nvar MouseHandlerMoveConnectorSideState_1 = __webpack_require__(307);\r\nvar MouseHandlerDragParameterPointState_1 = __webpack_require__(308);\r\nvar MouseHandlerCreateConnectorState_1 = __webpack_require__(309);\r\nvar MouseHandlerMoveConnectorOrthogonalSideState_1 = __webpack_require__(310);\r\nvar MouseHandlerToolboxDraggingState_1 = __webpack_require__(311);\r\nvar MouseHandlerMoveConnectorTextState_1 = __webpack_require__(312);\r\nvar MouseHandlerDefaultStateBase_1 = __webpack_require__(150);\r\nvar MouseHandlerMoveShapeState_1 = __webpack_require__(318);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar MouseHandlerMoveConnectorState_1 = __webpack_require__(319);\r\nvar MouseHandlerDefaultState = /** @class */ (function (_super) {\r\n __extends(MouseHandlerDefaultState, _super);\r\n function MouseHandlerDefaultState() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MouseHandlerDefaultState.prototype.finish = function () {\r\n this.visualizerManager.resetConnectionPoints();\r\n _super.prototype.finish.call(this);\r\n };\r\n MouseHandlerDefaultState.prototype.onMouseDownCore = function (evt) {\r\n if (this.handler.canScrollPage(evt))\r\n this.startScrolling(evt);\r\n else if (evt.button === Event_1.MouseButton.Left && evt.source.type === Event_1.MouseEventElementType.ConnectorText) {\r\n this.handler.changeSingleSelection(evt.source.key);\r\n this.handler.switchState(new MouseHandlerMoveConnectorTextState_1.MouseHandlerMoveConnectorTextState(this.handler, this.history, this.model));\r\n }\r\n else if (evt.button === Event_1.MouseButton.Left && evt.source.type === Event_1.MouseEventElementType.ShapeResizeBox)\r\n this.handler.switchState(new MouseHandlerResizeShapeState_1.MouseHandlerResizeShapeState(this.handler, this.history, this.model, this.selection, this.visualizerManager, this.settings));\r\n else if (evt.button === Event_1.MouseButton.Left && evt.source.type === Event_1.MouseEventElementType.ShapeParameterBox)\r\n this.handler.switchState(new MouseHandlerDragParameterPointState_1.MouseHandlerDragParameterPointState(this.handler, this.history, this.model));\r\n else if (evt.button === Event_1.MouseButton.Left && evt.source.type === Event_1.MouseEventElementType.ConnectorPoint)\r\n this.handler.switchState(new MouseHandlerMoveConnectorPointState_1.MouseHandlerMoveConnectorPointState(this.handler, this.history, this.model, this.visualizerManager));\r\n else if (evt.button === Event_1.MouseButton.Left && evt.source.type === Event_1.MouseEventElementType.ConnectorSide)\r\n this.handler.switchState(new MouseHandlerMoveConnectorSideState_1.MouseHandlerMoveConnectorSideState(this.handler, this.history, this.model));\r\n else if (evt.button === Event_1.MouseButton.Left && evt.source.type === Event_1.MouseEventElementType.ConnectorOrthogonalSide)\r\n this.handler.switchState(new MouseHandlerMoveConnectorOrthogonalSideState_1.MouseHandlerMoveConnectorOrthogonalSideState(this.handler, this.history, this.model));\r\n else if (evt.button === Event_1.MouseButton.Left && evt.source.type === Event_1.MouseEventElementType.ShapeConnectionPoint)\r\n this.handler.switchState(new MouseHandlerCreateConnectorState_1.MouseHandlerCreateConnectorState(this.handler, this.history, this.model, this.visualizerManager, this.shapeDescriptionManager, this.selection));\r\n else\r\n _super.prototype.onMouseDownCore.call(this, evt);\r\n };\r\n MouseHandlerDefaultState.prototype.onDragDiagramItemOnMouseDown = function (evt) {\r\n if (!this.handler.canAddDiagramItemToSelection(evt))\r\n _super.prototype.onDragDiagramItemOnMouseDown.call(this, evt);\r\n else if (evt.source.type === Event_1.MouseEventElementType.Shape)\r\n this.handler.switchState(new MouseHandlerMoveShapeState_1.MouseHandlerMoveShapeState(this.handler, this.history, this.model, this.selection, this.visualizerManager));\r\n else if (evt.source.type === Event_1.MouseEventElementType.Connector)\r\n this.handler.switchState(new MouseHandlerMoveConnectorState_1.MouseHandlerMoveConnectorState(this.handler, this.history, this.model, this.selection, this.visualizerManager));\r\n };\r\n MouseHandlerDefaultState.prototype.onDragStart = function (evt) {\r\n this.handler.switchState(new MouseHandlerToolboxDraggingState_1.MouseHandlerBeforeToolboxDraggingState(this.handler, this.history, this.model, this.selection, this.visualizerManager, this.shapeDescriptionManager));\r\n this.handler.state.onDragStart(evt);\r\n };\r\n MouseHandlerDefaultState.prototype.onMouseMoveCore = function (evt) {\r\n this.updateConnectionsOnMouseMove(evt);\r\n _super.prototype.onMouseMoveCore.call(this, evt);\r\n };\r\n MouseHandlerDefaultState.prototype.onMouseUp = function (evt) {\r\n if (this.canRemoveDiagramItemToSelection(evt))\r\n this.handler.removeDiagramItemFromSelection(evt.button, evt.source.key);\r\n else\r\n _super.prototype.onMouseUp.call(this, evt);\r\n };\r\n MouseHandlerDefaultState.prototype.updateConnectionsOnMouseMove = function (evt) {\r\n var item = this.model.findItem(evt.source.key);\r\n this.visualizerManager.updateConnections(item, evt.source.type, evt.source.value);\r\n };\r\n MouseHandlerDefaultState.prototype.canRemoveDiagramItemToSelection = function (evt) {\r\n return this.handler.canRemoveDiagramItemToSelection(evt);\r\n };\r\n MouseHandlerDefaultState.prototype.canDragObjectOnMouseDown = function (key) {\r\n return true;\r\n };\r\n MouseHandlerDefaultState.prototype.canExpandContainerOnMouseDown = function (key) {\r\n return true;\r\n };\r\n MouseHandlerDefaultState.prototype.canClearSelectionOnMouseDown = function () {\r\n return false;\r\n };\r\n MouseHandlerDefaultState.prototype.processOnMouseMoveAfterLimit = function (evt) {\r\n this.startSelection(evt);\r\n };\r\n MouseHandlerDefaultState.prototype.canSelectOnMouseUp = function (key) {\r\n return false;\r\n };\r\n MouseHandlerDefaultState.prototype.canClearSelectionOnMouseUp = function () {\r\n return true;\r\n };\r\n MouseHandlerDefaultState.prototype.onConnectionPointsShow = function (key, points) {\r\n var _this = this;\r\n var shape = this.model.findShape(key);\r\n if (shape)\r\n points.forEach(function (point, index) {\r\n point.allowed = _this.handler.canPerformChangeConnectionOnUpdateUI(undefined, { item: shape, position: Connector_1.ConnectorPosition.Begin, connectionPointIndex: index });\r\n });\r\n };\r\n return MouseHandlerDefaultState;\r\n}(MouseHandlerDefaultStateBase_1.MouseHandlerDefaultStateBase));\r\nexports.MouseHandlerDefaultState = MouseHandlerDefaultState;\r\n\n\n/***/ }),\n/* 149 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerMoveConnectorPointStateBase = void 0;\r\nvar Connector_1 = __webpack_require__(6);\r\nvar Event_1 = __webpack_require__(14);\r\nvar MouseHandlerDraggingState_1 = __webpack_require__(35);\r\nvar DeleteConnectionHistoryItem_1 = __webpack_require__(65);\r\nvar AddConnectionHistoryItem_1 = __webpack_require__(49);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar ConnectorProperties_1 = __webpack_require__(30);\r\nvar MouseHandlerMoveConnectorPointStateBase = /** @class */ (function (_super) {\r\n __extends(MouseHandlerMoveConnectorPointStateBase, _super);\r\n function MouseHandlerMoveConnectorPointStateBase(handler, history, model, visualizerManager) {\r\n var _this = _super.call(this, handler, history) || this;\r\n _this.model = model;\r\n _this.visualizerManager = visualizerManager;\r\n return _this;\r\n }\r\n MouseHandlerMoveConnectorPointStateBase.prototype.finish = function () {\r\n this.visualizerManager.resetConnectionTarget();\r\n this.visualizerManager.resetConnectionPoints();\r\n _super.prototype.finish.call(this);\r\n };\r\n MouseHandlerMoveConnectorPointStateBase.prototype.onMouseDown = function (evt) {\r\n _super.prototype.onMouseDown.call(this, evt);\r\n if (this.connector)\r\n this.handler.addInteractingItem(this.connector);\r\n };\r\n MouseHandlerMoveConnectorPointStateBase.prototype.onMouseMove = function (evt) {\r\n _super.prototype.onMouseMove.call(this, evt);\r\n if (!this.allowAttachToObjects(evt, false, false)) {\r\n this.visualizerManager.resetConnectionTarget();\r\n this.visualizerManager.resetConnectionPoints();\r\n }\r\n else if (this.connector) {\r\n var item = this.connector.getExtremeItem(this.pointPosition);\r\n this.visualizerManager.setConnectionTarget(item, evt.source.type);\r\n var pointIndex = this.connector.getExtremeConnectionPointIndex(this.pointPosition);\r\n if (!item && this.oppositeConnectionPointIndex !== -1 || !this.allowAttachToObjects(evt, true, false))\r\n item = this.model.findItem(evt.source.key);\r\n this.visualizerManager.setConnectionPoints(item, evt.source.type, pointIndex, true);\r\n }\r\n };\r\n MouseHandlerMoveConnectorPointStateBase.prototype.onApplyChanges = function (evt) {\r\n var point = this.getSnappedPoint(evt, evt.modelPoint);\r\n if (this.pointPosition !== undefined) {\r\n if (this.oppositePointPosition === undefined) {\r\n this.oppositePointPosition = this.getOppositePointPosition();\r\n this.oppositeItem = this.connector.getExtremeItem(this.oppositePointPosition);\r\n this.oppositeConnectionPointIndex = this.connector.getExtremeConnectionPointIndex(this.oppositePointPosition);\r\n }\r\n this.targetItem = this.model.findItem(evt.source.key);\r\n var item = this.allowAttachToObjects(evt, true, true) ? this.targetItem : undefined;\r\n var connectionPointIndex = -1;\r\n if (evt.source.type === Event_1.MouseEventElementType.ShapeConnectionPoint)\r\n connectionPointIndex = parseInt(evt.source.value);\r\n if (item && (evt.source.type === Event_1.MouseEventElementType.Shape || evt.source.type === Event_1.MouseEventElementType.ShapeConnectionPoint) &&\r\n (this.connector.getExtremeItem(this.oppositePointPosition) !== item ||\r\n (connectionPointIndex !== -1 && this.oppositeConnectionPointIndex !== -1 &&\r\n connectionPointIndex !== this.oppositeConnectionPointIndex))) {\r\n if (this.connector.getExtremeItem(this.pointPosition) !== item ||\r\n this.connector.getExtremeConnectionPointIndex(this.pointPosition) !== connectionPointIndex) {\r\n if (this.connector.getExtremeItem(this.pointPosition))\r\n this.history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(this.connector, this.pointPosition));\r\n this.history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(this.connector, item, connectionPointIndex, this.pointPosition));\r\n if (this.oppositeItem)\r\n this.updateOppositeItemConnectionPointIndex(connectionPointIndex);\r\n }\r\n point = item.getConnectionPointPosition(connectionPointIndex, this.connector.points[this.pointIndex + (this.pointPosition === Connector_1.ConnectorPosition.End ? -1 : 1)]);\r\n this.visualizerManager.setConnectionPointIndex(connectionPointIndex);\r\n }\r\n else if (this.connector.getExtremeItem(this.pointPosition)) {\r\n this.history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(this.connector, this.pointPosition));\r\n if (this.oppositeItem)\r\n this.updateOppositeItemConnectionPointIndex(this.oppositeConnectionPointIndex);\r\n }\r\n }\r\n ModelUtils_1.ModelUtils.moveConnectorPoint(this.history, this.connector, this.pointIndex, point);\r\n ModelUtils_1.ModelUtils.updateConnectorAttachedPoints(this.history, this.model, this.connector);\r\n if (this.connector.properties.lineOption === ConnectorProperties_1.ConnectorLineOption.Orthogonal) {\r\n var renderPoints = this.connector.getRenderPoints(true);\r\n ModelUtils_1.ModelUtils.skipUnnecessaryRightAngleRenderPoints(renderPoints);\r\n }\r\n this.handler.tryUpdateModelSize();\r\n };\r\n MouseHandlerMoveConnectorPointStateBase.prototype.updateOppositeItemConnectionPointIndex = function (connectionPointIndex) {\r\n var pointIndex = connectionPointIndex === -1 ? -1 : this.oppositeConnectionPointIndex;\r\n if (pointIndex !== this.connector.getExtremeConnectionPointIndex(this.oppositePointPosition)) {\r\n this.history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(this.connector, this.oppositePointPosition));\r\n this.history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(this.connector, this.oppositeItem, pointIndex, this.oppositePointPosition));\r\n }\r\n };\r\n MouseHandlerMoveConnectorPointStateBase.prototype.onFinishWithChanges = function () {\r\n ModelUtils_1.ModelUtils.updateConnectorContainer(this.history, this.model, this.connector);\r\n ModelUtils_1.ModelUtils.deleteConnectorUnnecessaryPoints(this.history, this.connector);\r\n this.handler.tryUpdateModelSize();\r\n };\r\n MouseHandlerMoveConnectorPointStateBase.prototype.getDraggingElementKeys = function () {\r\n return this.connector ? [this.connector.key] : [];\r\n };\r\n MouseHandlerMoveConnectorPointStateBase.prototype.getOppositePointPosition = function () {\r\n return this.pointPosition === Connector_1.ConnectorPosition.Begin ? Connector_1.ConnectorPosition.End : Connector_1.ConnectorPosition.Begin;\r\n };\r\n MouseHandlerMoveConnectorPointStateBase.prototype.allowAttachToObjects = function (evt, checkContainers, checkOppositeItem) {\r\n if (this.handler.canMultipleSelection(evt))\r\n return false;\r\n var connector = this.connector;\r\n if (connector && evt.source.type === Event_1.MouseEventElementType.Shape) {\r\n var targetItem_1 = this.model.findItem(evt.source.key);\r\n if (checkContainers && this.model.findItemContainerCore(connector, function (c) { return c === targetItem_1; }))\r\n return false;\r\n if (checkContainers && this.oppositeItem && this.model.findItemContainerCore(this.oppositeItem, function (c) { return c === targetItem_1; }))\r\n return false;\r\n if (checkOppositeItem && this.oppositeItem === targetItem_1 && this.oppositeConnectionPointIndex === -1)\r\n return false;\r\n }\r\n return true;\r\n };\r\n MouseHandlerMoveConnectorPointStateBase.prototype.onConnectionPointsShow = function (key, points) {\r\n var _this = this;\r\n if (this.connector && this.pointPosition !== undefined && (this.connector.endItem && this.connector.endItem.key === key || this.connector.beginItem && this.connector.beginItem.key === key)) {\r\n var position_1 = this.connector.beginItem && this.connector.beginItem.key === key ? Connector_1.ConnectorPosition.Begin : Connector_1.ConnectorPosition.End;\r\n points.forEach(function (point, index) {\r\n point.allowed = _this.handler.canPerformChangeConnectionOnUpdateUI(_this.connector, { item: _this.connector.getExtremeItem(position_1), position: position_1, connectionPointIndex: index });\r\n });\r\n }\r\n };\r\n MouseHandlerMoveConnectorPointStateBase.prototype.onConnectionTargetShow = function (key, info) {\r\n if (this.connector && this.pointPosition !== undefined && (this.connector.endItem && this.connector.endItem.key === key || this.connector.beginItem && this.connector.beginItem.key === key)) {\r\n var position = this.connector.beginItem && this.connector.beginItem.key === key ? Connector_1.ConnectorPosition.Begin : Connector_1.ConnectorPosition.End;\r\n info.allowed = this.handler.canPerformChangeConnectionOnUpdateUI(this.connector, { item: this.connector.getExtremeItem(position), position: position, connectionPointIndex: -1 });\r\n }\r\n };\r\n return MouseHandlerMoveConnectorPointStateBase;\r\n}(MouseHandlerDraggingState_1.MouseHandlerDraggingState));\r\nexports.MouseHandlerMoveConnectorPointStateBase = MouseHandlerMoveConnectorPointStateBase;\r\n\n\n/***/ }),\n/* 150 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerDefaultStateBase = void 0;\r\nvar MouseHandlerStateBase_1 = __webpack_require__(41);\r\nvar Event_1 = __webpack_require__(14);\r\nvar MouseHandlerToggleShapeExpandedState_1 = __webpack_require__(314);\r\nvar MouseHandlerSelectionState_1 = __webpack_require__(316);\r\nvar MouseHandlerZoomOnWheelState_1 = __webpack_require__(317);\r\nvar MouseHandlerScrollingState_1 = __webpack_require__(151);\r\nvar unit_converter_1 = __webpack_require__(11);\r\nvar MouseHandlerDefaultStateBase = /** @class */ (function (_super) {\r\n __extends(MouseHandlerDefaultStateBase, _super);\r\n function MouseHandlerDefaultStateBase(handler, history, selection, model, view, visualizerManager, shapeDescriptionManager, settings) {\r\n var _this = _super.call(this, handler) || this;\r\n _this.history = history;\r\n _this.selection = selection;\r\n _this.model = model;\r\n _this.view = view;\r\n _this.visualizerManager = visualizerManager;\r\n _this.shapeDescriptionManager = shapeDescriptionManager;\r\n _this.settings = settings;\r\n return _this;\r\n }\r\n MouseHandlerDefaultStateBase.prototype.onKeyDown = function (evt) {\r\n this.handler.onStartScrollPageByKeyboard(evt);\r\n };\r\n MouseHandlerDefaultStateBase.prototype.onKeyUp = function (evt) {\r\n this.handler.onFinishScrollPageByKeyboard(evt);\r\n };\r\n MouseHandlerDefaultStateBase.prototype.onMouseDown = function (evt) {\r\n if (!this.handler.canFinishTextEditing())\r\n return;\r\n this.onMouseDownCore(evt);\r\n if (this.handler.state !== this)\r\n this.handler.state.onMouseDown(evt);\r\n };\r\n MouseHandlerDefaultStateBase.prototype.onMouseDownCore = function (evt) {\r\n if (this.handler.canScrollPage(evt))\r\n this.startScrolling(evt);\r\n else if (this.hasDiagramItem(evt) && this.canDragObjectOnMouseDown(evt.source.key))\r\n this.onDragDiagramItemOnMouseDown(evt);\r\n else if (evt.button === Event_1.MouseButton.Left && evt.source.type === Event_1.MouseEventElementType.ShapeExpandButton && this.canExpandContainerOnMouseDown(evt.source.key))\r\n this.onShapeExpandBtnMouseDown(evt);\r\n else {\r\n if (!this.hasDiagramItem(evt) && this.canClearSelectionOnMouseDown())\r\n this.clearSelection();\r\n this.startPoint = evt.modelPoint;\r\n }\r\n };\r\n MouseHandlerDefaultStateBase.prototype.onDragDiagramItemOnMouseDown = function (evt) {\r\n this.replaceSelection(evt);\r\n };\r\n MouseHandlerDefaultStateBase.prototype.onMouseMove = function (evt) {\r\n this.onMouseMoveCore(evt);\r\n if (this.handler.state !== this) {\r\n this.handler.state.onMouseDown(this.handler.mouseDownEvent);\r\n this.handler.state.onMouseMove(evt);\r\n }\r\n };\r\n MouseHandlerDefaultStateBase.prototype.onMouseMoveCore = function (evt) {\r\n if (this.startPoint &&\r\n (Math.abs(this.startPoint.x - evt.modelPoint.x) > MouseHandlerDefaultStateBase.startLimit ||\r\n Math.abs(this.startPoint.y - evt.modelPoint.y) > MouseHandlerDefaultStateBase.startLimit)) {\r\n this.processOnMouseMoveAfterLimit(evt);\r\n this.startPoint = undefined;\r\n }\r\n };\r\n MouseHandlerDefaultStateBase.prototype.onMouseUp = function (evt) {\r\n this.onMouseUpCore(evt);\r\n if (this.handler.state !== this)\r\n this.handler.state.onMouseUp(evt);\r\n };\r\n MouseHandlerDefaultStateBase.prototype.onMouseUpCore = function (evt) {\r\n if (evt.source.type === Event_1.MouseEventElementType.Shape && this.canSelectOnMouseUp(evt.source.key))\r\n this.replaceSelection(evt);\r\n else if (evt.source.type === Event_1.MouseEventElementType.Connector && this.canSelectOnMouseUp(evt.source.key))\r\n this.replaceSelection(evt);\r\n else if (evt.source.type === Event_1.MouseEventElementType.ShapeExpandButton && this.canSelectOnMouseUp(evt.source.key))\r\n this.replaceSelection(evt);\r\n else if (this.startPoint && this.canClearSelectionOnMouseUp())\r\n this.clearSelection();\r\n this.startPoint = undefined;\r\n };\r\n MouseHandlerDefaultStateBase.prototype.onMouseWheel = function (evt) {\r\n if (this.handler.canStartZoomOnWheel(evt)) {\r\n this.handler.switchState(new MouseHandlerZoomOnWheelState_1.MouseHandlerZoomOnWheelState(this.handler, this.settings, this.view));\r\n this.handler.state.onMouseWheel(evt);\r\n return true;\r\n }\r\n return false;\r\n };\r\n MouseHandlerDefaultStateBase.prototype.onLongTouch = function (evt) {\r\n this.replaceMultipleSelection(evt.source.key);\r\n };\r\n MouseHandlerDefaultStateBase.prototype.finish = function () {\r\n this.startPoint = undefined;\r\n };\r\n MouseHandlerDefaultStateBase.prototype.startSelection = function (evt) {\r\n if (evt.button === Event_1.MouseButton.Left)\r\n this.handler.switchState(new MouseHandlerSelectionState_1.MouseHandlerSelectionState(this.handler, this.selection, this.visualizerManager));\r\n };\r\n MouseHandlerDefaultStateBase.prototype.startScrolling = function (evt) {\r\n if (evt.button === Event_1.MouseButton.Left) {\r\n this.handler.onDocumentDragScrollStart();\r\n this.handler.switchState(new MouseHandlerScrollingState_1.MouseHandlerScrollingState(this.handler, this.view, this.selection));\r\n }\r\n };\r\n MouseHandlerDefaultStateBase.prototype.inSelection = function (key) {\r\n return this.selection.hasKey(key);\r\n };\r\n MouseHandlerDefaultStateBase.prototype.hasDiagramItem = function (evt) {\r\n return evt.source.type === Event_1.MouseEventElementType.Shape ||\r\n evt.source.type === Event_1.MouseEventElementType.Connector;\r\n };\r\n MouseHandlerDefaultStateBase.prototype.onShapeExpandBtnMouseDown = function (evt) {\r\n this.handler.addDiagramItemToSelection(evt);\r\n this.handler.switchState(new MouseHandlerToggleShapeExpandedState_1.MouseHandlerToggleShapeExpandedState(this.handler, this.history, this.model, this.selection));\r\n };\r\n MouseHandlerDefaultStateBase.prototype.replaceSelection = function (evt) {\r\n if (this.handler.canMultipleSelection(evt))\r\n this.replaceMultipleSelection(evt.source.key);\r\n else\r\n this.handler.changeSingleSelection(evt.source.key);\r\n };\r\n MouseHandlerDefaultStateBase.prototype.replaceMultipleSelection = function (key) {\r\n if (this.selection.hasKey(key))\r\n this.selection.remove(key);\r\n else\r\n this.selection.add(key);\r\n };\r\n MouseHandlerDefaultStateBase.prototype.clearSelection = function () {\r\n this.selection.set([]);\r\n };\r\n MouseHandlerDefaultStateBase.startLimit = unit_converter_1.UnitConverter.pixelsToTwips(1);\r\n return MouseHandlerDefaultStateBase;\r\n}(MouseHandlerStateBase_1.MouseHandlerStateBase));\r\nexports.MouseHandlerDefaultStateBase = MouseHandlerDefaultStateBase;\r\n\n\n/***/ }),\n/* 151 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerScrollingState = void 0;\r\nvar MouseHandlerStateBase_1 = __webpack_require__(41);\r\nvar Event_1 = __webpack_require__(14);\r\nvar point_1 = __webpack_require__(1);\r\nvar MouseHandlerScrollingState = /** @class */ (function (_super) {\r\n __extends(MouseHandlerScrollingState, _super);\r\n function MouseHandlerScrollingState(handler, view, selection) {\r\n var _this = _super.call(this, handler) || this;\r\n _this.view = view;\r\n _this.selection = selection;\r\n _this.lastOffset = new point_1.Point(0, 0);\r\n return _this;\r\n }\r\n MouseHandlerScrollingState.prototype.onKeyUp = function (evt) {\r\n this.handler.onFinishScrollPageByKeyboard(evt);\r\n };\r\n MouseHandlerScrollingState.prototype.onMouseDown = function (evt) {\r\n evt.preventDefault = true;\r\n this.startPoint = this.getPointByEvent(evt);\r\n };\r\n MouseHandlerScrollingState.prototype.onMouseMove = function (evt) {\r\n if (evt.button !== Event_1.MouseButton.Left) {\r\n this.handler.onFinishScrollPageByMouse(evt);\r\n return;\r\n }\r\n var prevPoint = this.currentPoint || this.startPoint;\r\n evt.preventDefault = true;\r\n var point = this.getPointByEvent(evt);\r\n var actualOffset = this.view.scrollBy(new point_1.Point(point.x - prevPoint.x, point.y - prevPoint.y));\r\n this.lastOffset = this.lastOffset.clone().offset(actualOffset.x, actualOffset.y);\r\n this.currentPoint = point;\r\n };\r\n MouseHandlerScrollingState.prototype.onMouseUp = function (evt) {\r\n if (evt.button === Event_1.MouseButton.Left)\r\n this.handler.onFinishScrollPageByMouse(evt);\r\n this.handler.switchToDefaultState();\r\n };\r\n MouseHandlerScrollingState.prototype.cancelChanges = function () {\r\n if (this.currentPoint)\r\n this.view.scrollBy(this.lastOffset.clone().multiply(-1, -1));\r\n };\r\n MouseHandlerScrollingState.prototype.finish = function () {\r\n if (!this.currentPoint || !this.startPoint || this.currentPoint.equals(this.startPoint))\r\n this.selection.set([]);\r\n _super.prototype.finish.call(this);\r\n };\r\n MouseHandlerScrollingState.prototype.getPointByEvent = function (evt) {\r\n return evt.offsetPoint;\r\n };\r\n return MouseHandlerScrollingState;\r\n}(MouseHandlerStateBase_1.MouseHandlerCancellableState));\r\nexports.MouseHandlerScrollingState = MouseHandlerScrollingState;\r\n\n\n/***/ }),\n/* 152 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerDragDiagramItemStateBase = exports.DraggingConnector = void 0;\r\nvar vector_1 = __webpack_require__(58);\r\nvar ChangeConnectorPointsHistoryItem_1 = __webpack_require__(86);\r\nvar ConnectorRenderPoint_1 = __webpack_require__(29);\r\nvar ConnectorRenderPointsContext_1 = __webpack_require__(85);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar ModelOperationSettings_1 = __webpack_require__(16);\r\nvar Event_1 = __webpack_require__(14);\r\nvar MouseHandlerDraggingState_1 = __webpack_require__(35);\r\nvar DraggingConnector = /** @class */ (function () {\r\n function DraggingConnector(connector) {\r\n this.connector = connector;\r\n this.startPoints = connector.points.map(function (x) { return x.clone(); });\r\n this.startRenderContext = connector.createRenderPointsContext();\r\n }\r\n return DraggingConnector;\r\n}());\r\nexports.DraggingConnector = DraggingConnector;\r\nvar DraggingShape = /** @class */ (function () {\r\n function DraggingShape(shape) {\r\n this.shape = shape;\r\n this.startPosition = shape.position.clone();\r\n }\r\n return DraggingShape;\r\n}());\r\nvar MouseHandlerDragDiagramItemStateBase = /** @class */ (function (_super) {\r\n __extends(MouseHandlerDragDiagramItemStateBase, _super);\r\n function MouseHandlerDragDiagramItemStateBase(handler, history, model, selection, visualizerManager) {\r\n var _this = _super.call(this, handler, history) || this;\r\n _this.model = model;\r\n _this.selection = selection;\r\n _this.visualizerManager = visualizerManager;\r\n _this.startScrollLeft = 0;\r\n _this.startScrollTop = 0;\r\n return _this;\r\n }\r\n MouseHandlerDragDiagramItemStateBase.prototype.finish = function () {\r\n this.visualizerManager.resetExtensionLines();\r\n this.visualizerManager.resetContainerTarget();\r\n this.visualizerManager.resetConnectionTarget();\r\n if (!this.hasTouchDown)\r\n this.visualizerManager.resetConnectionPoints();\r\n _super.prototype.finish.call(this);\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.onMouseDown = function (evt) {\r\n var _this = this;\r\n this.handler.addDiagramItemToSelection(evt);\r\n this.shouldClone = this.handler.canCopySelectedItems(evt);\r\n this.startPoint = evt.modelPoint;\r\n this.hasTouchDown = evt.isTouchEvent;\r\n this.initDrag();\r\n this.lockInitDrag = false;\r\n if (!this.shouldClone)\r\n this.draggingShapes.forEach(function (draggingShape) { return _this.handler.addInteractingItem(draggingShape.shape, ModelOperationSettings_1.DiagramModelOperation.MoveShape); });\r\n _super.prototype.onMouseDown.call(this, evt);\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.onMouseMove = function (evt) {\r\n this.mouseMoveEvent = evt;\r\n if (evt.button !== Event_1.MouseButton.Left) {\r\n this.cancelChanges();\r\n this.handler.switchToDefaultState();\r\n }\r\n if (!this.canApplyChangesOnMouseMove(this.startPoint, evt.modelPoint))\r\n return;\r\n if (this.handler.canCopySelectedItems(evt))\r\n if (!this.lockInitDrag) {\r\n this.cancelChanges();\r\n this.shouldClone = true;\r\n this.copySelection();\r\n this.initDrag();\r\n this.lockInitDrag = true;\r\n }\r\n this.onApplyChanges(evt);\r\n this.onAfterApplyChanges();\r\n this.updateContainers(evt);\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.updateContainers = function (evt) {\r\n this.visualizerManager.setExtensionLines(this.selection.getSelectedShapes(false, true));\r\n var container = ModelUtils_1.ModelUtils.findContainerByEventKey(this.model, this.selection, evt.source.key);\r\n if (container && this.allowInsertToContainer(evt, container))\r\n this.visualizerManager.setContainerTarget(container, evt.source.type);\r\n else\r\n this.visualizerManager.resetContainerTarget();\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.onMouseUp = function (evt) {\r\n _super.prototype.onMouseUp.call(this, evt);\r\n this.handler.removeDiagramItemFromSelection(evt.button, evt.source.key);\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.onApplyChanges = function (evt) {\r\n var _this = this;\r\n this.calculateFixedPosition(evt);\r\n if (this.draggingShapes.length) {\r\n this.draggingShapes.forEach(function (ds) { return _this.moveShape(ds, evt); });\r\n var firstDraggingShape = this.draggingShapes[0];\r\n var offset_1 = vector_1.Vector.fromPoints(firstDraggingShape.startPosition.clone(), firstDraggingShape.shape.position.clone());\r\n if (offset_1.x || offset_1.y)\r\n this.draggingConnectors.forEach(function (dc) { return _this.moveConnectorCore(dc.connector, dc.startPoints, dc.startRenderContext, offset_1); });\r\n }\r\n else\r\n this.draggingConnectors.forEach(function (x) { return _this.moveConnector(x, evt); });\r\n var container = ModelUtils_1.ModelUtils.findContainerByEventKey(this.model, this.selection, evt.source.key);\r\n if (container && this.allowInsertToContainer(evt, container))\r\n ModelUtils_1.ModelUtils.insertSelectionToContainer(this.history, this.model, this.selection, container);\r\n else\r\n ModelUtils_1.ModelUtils.removeSelectionFromContainer(this.history, this.model, this.selection);\r\n this.handler.tryUpdateModelSize(function (offsetLeft, offsetTop) {\r\n _this.modelConnectorsWithoutBeginItemInfo.forEach(function (pi) {\r\n pi.point.x += offsetLeft;\r\n pi.point.y += offsetTop;\r\n });\r\n _this.modelConnectorsWithoutEndItemInfo.forEach(function (pi) {\r\n pi.point.x += offsetLeft;\r\n pi.point.y += offsetTop;\r\n });\r\n });\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.getDraggingElementKeys = function () {\r\n return this.draggingShapes.map(function (x) { return x.shape.key; }).concat(this.draggingConnectors.map(function (x) { return x.connector.key; }));\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.getSnappedPoint = function (evt, point) {\r\n return this.handler.getSnappedPointOnDragDiagramItem(evt, point, this.fixedX, this.fixedY, this.startPoint);\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.initDrag = function () {\r\n this.selectedItems = ModelUtils_1.ModelUtils.createSelectedItems(this.selection);\r\n this.initDraggingShapes();\r\n if (!this.areValidDraggingShapes) {\r\n this.handler.switchToDefaultState();\r\n return;\r\n }\r\n this.initDraggingConnectors();\r\n if (!this.areValidDraggingConnectors) {\r\n this.handler.switchToDefaultState();\r\n return;\r\n }\r\n this.modelConnectorsWithoutBeginItemInfo = this.createModelConnectorsWithoutBeginItemInfo();\r\n this.modelConnectorsWithoutEndItemInfo = this.createModelConnectorsWithoutEndItemInfo();\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.initDraggingShapes = function () {\r\n this.draggingShapes = this.selection.getSelectedShapes(false, true).map(function (s) { return new DraggingShape(s); });\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.initDraggingConnectors = function () {\r\n var _this = this;\r\n this.draggingConnectors = [];\r\n this.draggingConnectorsIndexByKey = {};\r\n this.selection.getSelectedConnectors(false, true).forEach(function (c) { return _this.registerConnector(c); });\r\n if (this.shouldClone)\r\n return;\r\n this.draggingShapes.forEach(function (x) {\r\n var attachedConnectors = x.shape.attachedConnectors;\r\n if (attachedConnectors)\r\n attachedConnectors.forEach(function (c) {\r\n if (!_this.containsDraggingConnectorByKey(c.key))\r\n _this.registerConnector(c);\r\n });\r\n });\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.copySelection = function () {\r\n var _this = this;\r\n ModelUtils_1.ModelUtils.cloneSelectionToOffset(this.history, this.model, function (key) {\r\n var item = _this.model.findItem(key);\r\n if (item)\r\n _this.handler.addInteractingItem(item, ModelOperationSettings_1.DiagramModelOperation.AddShape);\r\n }, this.selection, 0, 0);\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.calculateFixedPosition = function (evt) {\r\n this.fixedX = false;\r\n this.fixedY = false;\r\n if (this.handler.canCalculateFixedPosition(evt)) {\r\n var dx = Math.abs(this.startPoint.x - evt.modelPoint.x);\r\n var dy = Math.abs(this.startPoint.y - evt.modelPoint.y);\r\n if (dx < dy)\r\n this.fixedX = true;\r\n else\r\n this.fixedY = true;\r\n }\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.containsDraggingConnectorByKey = function (key) {\r\n return this.draggingConnectorsIndexByKey[key] !== undefined;\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.allowInsertToContainer = function (evt, container) {\r\n if (this.handler.canMultipleSelection(evt))\r\n return false;\r\n return container && container.expanded && ModelUtils_1.ModelUtils.canInsertSelectionToContainer(this.model, this.selection, container);\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.registerConnector = function (connector) {\r\n this.draggingConnectorsIndexByKey[connector.key] = this.draggingConnectors.push(new DraggingConnector(connector)) - 1;\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.createModelConnectorsWithoutBeginItemInfo = function () {\r\n var _this = this;\r\n var connectors = this.model.findConnectorsCore(function (c) { return !c.beginItem && !_this.containsDraggingConnectorByKey(c.key); });\r\n return connectors.map(function (c) {\r\n return {\r\n connector: c,\r\n point: c.points[0].clone()\r\n };\r\n });\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.createModelConnectorsWithoutEndItemInfo = function () {\r\n var _this = this;\r\n var connectors = this.model.findConnectorsCore(function (c) { return !c.endItem && !_this.containsDraggingConnectorByKey(c.key); });\r\n return connectors.map(function (c) {\r\n return {\r\n connector: c,\r\n point: c.points[c.points.length - 1].clone()\r\n };\r\n });\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.moveConnector = function (dc, evt) {\r\n var startPoints = dc.startPoints;\r\n var offset = vector_1.Vector.fromPoints(startPoints[0].clone(), this.getSnappedPoint(evt, startPoints[0]).clone());\r\n if (offset.x || offset.y)\r\n this.moveConnectorCore(dc.connector, startPoints, dc.startRenderContext, offset);\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.moveConnectorCore = function (connector, startPoints, startRenderContext, offset) {\r\n if (this.shouldClone || ModelUtils_1.ModelUtils.canMoveConnector(this.selectedItems, connector))\r\n this.offsetConnector(connector, startPoints, startRenderContext, offset);\r\n else\r\n this.changeConnector(connector);\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.moveShape = function (ds, evt) {\r\n var _this = this;\r\n var shape = ds.shape;\r\n var position = this.getSnappedPoint(evt, ds.startPosition);\r\n ModelUtils_1.ModelUtils.setShapePosition(this.history, this.model, shape, position);\r\n ModelUtils_1.ModelUtils.updateMovingShapeConnections(this.history, shape, this.modelConnectorsWithoutBeginItemInfo, this.modelConnectorsWithoutEndItemInfo, function () {\r\n _this.visualizerManager.resetConnectionTarget();\r\n _this.visualizerManager.resetConnectionPoints();\r\n }, function (shape, connectionPointIndex) {\r\n _this.visualizerManager.setConnectionTarget(shape, Event_1.MouseEventElementType.Shape);\r\n _this.visualizerManager.setConnectionPoints(shape, Event_1.MouseEventElementType.Shape, connectionPointIndex, true);\r\n }, function (connector) { return _this.handler.addInteractingItem(connector); });\r\n if (!this.draggingConnectors.filter(function (dc) { return !!_this.selectedItems[dc.connector.key]; }).length)\r\n ModelUtils_1.ModelUtils.updateShapeAttachedConnectors(this.history, this.model, shape);\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.offsetConnector = function (connector, startPoints, startRenderContext, offset) {\r\n var _this = this;\r\n var newPoints = startPoints.map(function (p) { return _this.offsetPoint(p, offset); });\r\n if (!newPoints[0].equals(connector.points[0]))\r\n this.history.addAndRedo(new ChangeConnectorPointsHistoryItem_1.ChangeConnectorPointsHistoryItem(connector.key, newPoints, this.offsetRenderContext(startRenderContext, offset)));\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.offsetRenderContext = function (context, offset) {\r\n var _this = this;\r\n if (context === undefined)\r\n return undefined;\r\n return new ConnectorRenderPointsContext_1.ConnectorRenderPointsContext(context.renderPoints.map(function (p) {\r\n var newPoint = _this.offsetPoint(p, offset);\r\n return new ConnectorRenderPoint_1.ConnectorRenderPoint(newPoint.x, newPoint.y, p.pointIndex, p.skipped);\r\n }), true, context.actualRoutingMode);\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.offsetPoint = function (point, offset) {\r\n var pointOffset = vector_1.Vector.fromPoints(point, this.startPoint);\r\n return this.startPoint.clone().offset(offset.x - pointOffset.x, offset.y - pointOffset.y);\r\n };\r\n MouseHandlerDragDiagramItemStateBase.prototype.changeConnector = function (connector) {\r\n ModelUtils_1.ModelUtils.removeConnectorIntermediatePoints(this.history, connector);\r\n ModelUtils_1.ModelUtils.updateConnectorAttachedPoints(this.history, this.model, connector);\r\n };\r\n return MouseHandlerDragDiagramItemStateBase;\r\n}(MouseHandlerDraggingState_1.MouseHandlerDraggingState));\r\nexports.MouseHandlerDragDiagramItemStateBase = MouseHandlerDragDiagramItemStateBase;\r\n\n\n/***/ }),\n/* 153 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerDefaultReadOnlyState = void 0;\r\nvar MouseHandlerDefaultStateBase_1 = __webpack_require__(150);\r\nvar MouseHandlerDefaultReadOnlyState = /** @class */ (function (_super) {\r\n __extends(MouseHandlerDefaultReadOnlyState, _super);\r\n function MouseHandlerDefaultReadOnlyState() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MouseHandlerDefaultReadOnlyState.prototype.canDragObjectOnMouseDown = function (key) {\r\n return false;\r\n };\r\n MouseHandlerDefaultReadOnlyState.prototype.canExpandContainerOnMouseDown = function (key) {\r\n return false;\r\n };\r\n MouseHandlerDefaultReadOnlyState.prototype.canClearSelectionOnMouseDown = function () {\r\n return false;\r\n };\r\n MouseHandlerDefaultReadOnlyState.prototype.processOnMouseMoveAfterLimit = function (evt) {\r\n this.startSelection(evt);\r\n };\r\n MouseHandlerDefaultReadOnlyState.prototype.canSelectOnMouseUp = function (key) {\r\n return true;\r\n };\r\n MouseHandlerDefaultReadOnlyState.prototype.canClearSelectionOnMouseUp = function () {\r\n return true;\r\n };\r\n MouseHandlerDefaultReadOnlyState.prototype.updateConnectionsOnMouseMove = function (evt) {\r\n };\r\n return MouseHandlerDefaultReadOnlyState;\r\n}(MouseHandlerDefaultStateBase_1.MouseHandlerDefaultStateBase));\r\nexports.MouseHandlerDefaultReadOnlyState = MouseHandlerDefaultReadOnlyState;\r\n\n\n/***/ }),\n/* 154 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeShapeTextHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar ChangeShapeTextHistoryItem = /** @class */ (function (_super) {\r\n __extends(ChangeShapeTextHistoryItem, _super);\r\n function ChangeShapeTextHistoryItem(item, text) {\r\n var _this = _super.call(this) || this;\r\n _this.shapeKey = item.key;\r\n _this.text = text;\r\n return _this;\r\n }\r\n ChangeShapeTextHistoryItem.prototype.redo = function (manipulator) {\r\n var item = manipulator.model.findShape(this.shapeKey);\r\n this.oldText = item.text;\r\n manipulator.changeShapeText(item, this.text);\r\n };\r\n ChangeShapeTextHistoryItem.prototype.undo = function (manipulator) {\r\n var item = manipulator.model.findShape(this.shapeKey);\r\n manipulator.changeShapeText(item, this.oldText);\r\n };\r\n return ChangeShapeTextHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.ChangeShapeTextHistoryItem = ChangeShapeTextHistoryItem;\r\n\n\n/***/ }),\n/* 155 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.TargetVisualizerBase = void 0;\r\nvar TargetVisualizerBase = /** @class */ (function () {\r\n function TargetVisualizerBase(dispatcher) {\r\n this.dispatcher = dispatcher;\r\n }\r\n TargetVisualizerBase.prototype.getKey = function () {\r\n return this.key;\r\n };\r\n TargetVisualizerBase.prototype.setTargetRect = function (key, targetRect, targetStrokeWidth) {\r\n if (this.key !== key) {\r\n this.key = key;\r\n this.targetRect = targetRect;\r\n this.targetStrokeWidth = targetStrokeWidth;\r\n this.raiseShow();\r\n }\r\n };\r\n TargetVisualizerBase.prototype.reset = function () {\r\n if (this.key !== \"-1\") {\r\n this.key = \"-1\";\r\n this.targetRect = undefined;\r\n this.targetStrokeWidth = 0;\r\n this.raiseHide();\r\n }\r\n };\r\n return TargetVisualizerBase;\r\n}());\r\nexports.TargetVisualizerBase = TargetVisualizerBase;\r\n\n\n/***/ }),\n/* 156 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ExtensionLinesVisualizer = exports.ExtensionLine = exports.ExtensionLineType = void 0;\r\nvar ExtensionLineType;\r\n(function (ExtensionLineType) {\r\n ExtensionLineType[ExtensionLineType[\"LeftToLeftAbove\"] = 0] = \"LeftToLeftAbove\";\r\n ExtensionLineType[ExtensionLineType[\"LeftToLeftBelow\"] = 1] = \"LeftToLeftBelow\";\r\n ExtensionLineType[ExtensionLineType[\"RightToRightAbove\"] = 2] = \"RightToRightAbove\";\r\n ExtensionLineType[ExtensionLineType[\"RightToRightBelow\"] = 3] = \"RightToRightBelow\";\r\n ExtensionLineType[ExtensionLineType[\"LeftToRightAbove\"] = 4] = \"LeftToRightAbove\";\r\n ExtensionLineType[ExtensionLineType[\"LeftToRightBelow\"] = 5] = \"LeftToRightBelow\";\r\n ExtensionLineType[ExtensionLineType[\"RightToLeftAbove\"] = 6] = \"RightToLeftAbove\";\r\n ExtensionLineType[ExtensionLineType[\"RightToLeftBelow\"] = 7] = \"RightToLeftBelow\";\r\n ExtensionLineType[ExtensionLineType[\"TopToTopBefore\"] = 8] = \"TopToTopBefore\";\r\n ExtensionLineType[ExtensionLineType[\"TopToTopAfter\"] = 9] = \"TopToTopAfter\";\r\n ExtensionLineType[ExtensionLineType[\"BottomToBottomBefore\"] = 10] = \"BottomToBottomBefore\";\r\n ExtensionLineType[ExtensionLineType[\"BottomToBottomAfter\"] = 11] = \"BottomToBottomAfter\";\r\n ExtensionLineType[ExtensionLineType[\"TopToBottomBefore\"] = 12] = \"TopToBottomBefore\";\r\n ExtensionLineType[ExtensionLineType[\"TopToBottomAfter\"] = 13] = \"TopToBottomAfter\";\r\n ExtensionLineType[ExtensionLineType[\"BottomToTopBefore\"] = 14] = \"BottomToTopBefore\";\r\n ExtensionLineType[ExtensionLineType[\"BottomToTopAfter\"] = 15] = \"BottomToTopAfter\";\r\n ExtensionLineType[ExtensionLineType[\"HorizontalCenterAbove\"] = 16] = \"HorizontalCenterAbove\";\r\n ExtensionLineType[ExtensionLineType[\"HorizontalCenterBelow\"] = 17] = \"HorizontalCenterBelow\";\r\n ExtensionLineType[ExtensionLineType[\"VerticalCenterBefore\"] = 18] = \"VerticalCenterBefore\";\r\n ExtensionLineType[ExtensionLineType[\"VerticalCenterAfter\"] = 19] = \"VerticalCenterAfter\";\r\n ExtensionLineType[ExtensionLineType[\"VerticalCenterToPageCenter\"] = 20] = \"VerticalCenterToPageCenter\";\r\n ExtensionLineType[ExtensionLineType[\"HorizontalCenterToPageCenter\"] = 21] = \"HorizontalCenterToPageCenter\";\r\n ExtensionLineType[ExtensionLineType[\"LeftToPageCenter\"] = 22] = \"LeftToPageCenter\";\r\n ExtensionLineType[ExtensionLineType[\"RightToPageCenter\"] = 23] = \"RightToPageCenter\";\r\n ExtensionLineType[ExtensionLineType[\"TopToPageCenter\"] = 24] = \"TopToPageCenter\";\r\n ExtensionLineType[ExtensionLineType[\"BottomToPageCenter\"] = 25] = \"BottomToPageCenter\";\r\n})(ExtensionLineType = exports.ExtensionLineType || (exports.ExtensionLineType = {}));\r\nvar ExtensionLine = /** @class */ (function () {\r\n function ExtensionLine(type, segment, text) {\r\n this.type = type;\r\n this.segment = segment;\r\n this.text = text;\r\n }\r\n return ExtensionLine;\r\n}());\r\nexports.ExtensionLine = ExtensionLine;\r\nvar ExtensionLinesVisualizer = /** @class */ (function () {\r\n function ExtensionLinesVisualizer(dispatcher) {\r\n this.dispatcher = dispatcher;\r\n this.lines = [];\r\n this.lineIndexByType = {};\r\n }\r\n ExtensionLinesVisualizer.prototype.addSegment = function (type, segment, text) {\r\n var curIndex = this.lineIndexByType[type];\r\n if (curIndex === undefined) {\r\n var line = new ExtensionLine(type, segment, text);\r\n var index = this.lines.push(line);\r\n this.lineIndexByType[line.type] = index - 1;\r\n this.raiseShow();\r\n }\r\n else if (segment.length < this.lines[curIndex].segment.length) {\r\n var line = new ExtensionLine(type, segment, text);\r\n this.lines.splice(curIndex, 1, line);\r\n this.raiseShow();\r\n }\r\n };\r\n ExtensionLinesVisualizer.prototype.update = function () {\r\n this.raiseShow();\r\n };\r\n ExtensionLinesVisualizer.prototype.reset = function () {\r\n if (this.lines.length) {\r\n this.lines = [];\r\n this.lineIndexByType = {};\r\n this.raiseHide();\r\n }\r\n };\r\n ExtensionLinesVisualizer.prototype.raiseShow = function () {\r\n var _this = this;\r\n this.dispatcher.raise1(function (l) { return l.notifyExtensionLinesShow(_this.lines); });\r\n };\r\n ExtensionLinesVisualizer.prototype.raiseHide = function () {\r\n this.dispatcher.raise1(function (l) { return l.notifyExtensionLinesHide(); });\r\n };\r\n return ExtensionLinesVisualizer;\r\n}());\r\nexports.ExtensionLinesVisualizer = ExtensionLinesVisualizer;\r\n\n\n/***/ }),\n/* 157 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CanvasSelectionManager = exports.ACTIVE_SELECTION_CSSCLASS = exports.SELECTION_ELEMENT_CLASSNAMES = void 0;\r\nvar CanvasManagerBase_1 = __webpack_require__(43);\r\nvar GroupPrimitive_1 = __webpack_require__(40);\r\nvar Utils_1 = __webpack_require__(17);\r\nvar Event_1 = __webpack_require__(14);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar Utils_2 = __webpack_require__(3);\r\nvar point_1 = __webpack_require__(1);\r\nvar ExtensionLinesVisualizer_1 = __webpack_require__(156);\r\nvar Shape_1 = __webpack_require__(13);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar ConnectorProperties_1 = __webpack_require__(30);\r\nvar RectaglePrimitive_1 = __webpack_require__(21);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar TextPrimitive_1 = __webpack_require__(62);\r\nvar EllipsePrimitive_1 = __webpack_require__(54);\r\nvar Style_1 = __webpack_require__(27);\r\nvar unit_converter_1 = __webpack_require__(11);\r\nvar ITextMeasurer_1 = __webpack_require__(44);\r\nvar dom_1 = __webpack_require__(23);\r\nvar CanvasItemsManager_1 = __webpack_require__(77);\r\nvar CanvasManager_1 = __webpack_require__(141);\r\nvar metrics_1 = __webpack_require__(36);\r\nvar math_1 = __webpack_require__(32);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar MULTIPLE_SELECTION_KEY = \"-1\";\r\nexports.SELECTION_ELEMENT_CLASSNAMES = {\r\n SELECTION_RECTANGLE: \"selection-rect\",\r\n CONNECTION_POINT: \"connection-point\",\r\n ACTIVE: \"active\",\r\n CONTAINER_TARGET: \"container-target\",\r\n CONNECTION_TARGET: \"connection-target\",\r\n EXTENSION_LINE: \"extension-line\",\r\n CONNECTION_MARK: \"connection-mark\",\r\n SELECTION_MARK: \"selection-mark\",\r\n LOCKED_SELECTION_MARK: \"locked-selection-mark\",\r\n ITEMS_SELECTION_RECT: \"items-selection-rect\",\r\n CONNECTOR_MULTI_SELECTION: \"connector-multi-selection\",\r\n CONNECTOR_SELECTION: \"connector-selection\",\r\n CONNECTOR_POINT_MARK: \"connector-point-mark\",\r\n CONNECTOR_SELECTION_MASK: \"connector-selection-mask\",\r\n CONNECTOR_SIDE_MARK: \"connector-side-mark\",\r\n ITEM_SELECTION_RECT: \"item-selection-rect\",\r\n ITEM_MULTI_SELECTION: \"item-multi-selection-rect\"\r\n};\r\nexports.ACTIVE_SELECTION_CSSCLASS = \"dxdi-active-selection\";\r\nvar CanvasSelectionManager = /** @class */ (function (_super) {\r\n __extends(CanvasSelectionManager, _super);\r\n function CanvasSelectionManager(parent, zoomLevel, readOnly, dom, isTouchUIEnabled) {\r\n var _this = _super.call(this, zoomLevel, dom) || this;\r\n _this.readOnly = readOnly;\r\n _this.isTouchUIEnabled = isTouchUIEnabled;\r\n _this.connectionPointElements = [];\r\n _this.extensionLineElements = [];\r\n _this.selectionMap = {};\r\n _this.parentContainer = parent;\r\n _this.initializeContainerElements(parent);\r\n return _this;\r\n }\r\n CanvasSelectionManager.prototype.initializeContainerElements = function (parent) {\r\n this.itemSelectionContainer = this.createAndChangePrimitiveElement(new GroupPrimitive_1.GroupPrimitive([], null), parent);\r\n this.visualizersContainer = this.createAndChangePrimitiveElement(new GroupPrimitive_1.GroupPrimitive([], null), parent);\r\n this.selectionMarksContainer = this.createAndChangePrimitiveElement(new GroupPrimitive_1.GroupPrimitive([], null), parent);\r\n };\r\n CanvasSelectionManager.prototype.clear = function () {\r\n Utils_1.RenderUtils.removeContent(this.itemSelectionContainer);\r\n Utils_1.RenderUtils.removeContent(this.selectionMarksContainer);\r\n Utils_1.RenderUtils.removeContent(this.visualizersContainer);\r\n this.selectionRectElement = undefined;\r\n this.resizeInfoElement = undefined;\r\n this.connectionPointElements = [];\r\n this.connectionTargetElement = undefined;\r\n this.containerTargetElement = undefined;\r\n this.extensionLineElements = [];\r\n this.selectionMap = {};\r\n };\r\n CanvasSelectionManager.prototype.showSelectionRect = function (rect) {\r\n dom_1.DomUtils.addClassName(this.parentContainer, exports.ACTIVE_SELECTION_CSSCLASS);\r\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);\r\n var rectEl = this.getSelectionRectElement(primitive);\r\n this.changePrimitiveElement(primitive, rectEl);\r\n };\r\n CanvasSelectionManager.prototype.hideSelectionRect = function () {\r\n dom_1.DomUtils.removeClassName(this.parentContainer, exports.ACTIVE_SELECTION_CSSCLASS);\r\n if (this.selectionRectElement !== undefined)\r\n this.dom.changeByFunc(this.selectionRectElement, function (e) { return e.style.display = \"none\"; });\r\n };\r\n CanvasSelectionManager.prototype.getSelectionRectElement = function (primitive) {\r\n if (this.selectionRectElement !== undefined)\r\n this.dom.changeByFunc(this.selectionRectElement, function (e) { return e.style.display = \"\"; });\r\n else\r\n this.selectionRectElement = this.createPrimitiveElement(primitive, this.visualizersContainer);\r\n return this.selectionRectElement;\r\n };\r\n CanvasSelectionManager.prototype.showResizeInfo = function (point, text) {\r\n var rectPrimitive = new RectaglePrimitive_1.RectanglePrimitive(point.x, point.y, 0, 0, Style_1.StrokeStyle.default1pxInstance);\r\n var primitive = new GroupPrimitive_1.GroupPrimitive([\r\n rectPrimitive,\r\n new TextPrimitive_1.TextPrimitive(point.x, point.y, text, ITextMeasurer_1.TextOwner.Resize)\r\n ], \"resize-info\");\r\n var groupEl = this.getResizeInfoElement(primitive);\r\n this.changePrimitiveElement(primitive, groupEl);\r\n var textSize = this.dom.measurer.measureTextLine(text, null, ITextMeasurer_1.TextOwner.Resize).applyConverter(unit_converter_1.UnitConverter.pixelsToTwips);\r\n rectPrimitive.width = textSize.width + CanvasSelectionManager.resizeInfoTextOffset * 2;\r\n rectPrimitive.height = textSize.height + CanvasSelectionManager.resizeInfoTextOffset * 2;\r\n rectPrimitive.x = point.x - textSize.width / 2 - CanvasSelectionManager.resizeInfoTextOffset;\r\n rectPrimitive.y = point.y - textSize.height / 2 - CanvasSelectionManager.resizeInfoTextOffset;\r\n this.changePrimitiveElement(primitive, groupEl);\r\n };\r\n CanvasSelectionManager.prototype.hideResizeInfo = function () {\r\n if (this.resizeInfoElement !== undefined)\r\n this.dom.changeByFunc(this.resizeInfoElement, function (e) { return e.style.display = \"none\"; });\r\n };\r\n CanvasSelectionManager.prototype.getResizeInfoElement = function (primitive) {\r\n if (this.resizeInfoElement !== undefined)\r\n this.dom.changeByFunc(this.resizeInfoElement, function (e) { return e.style.display = \"\"; });\r\n else\r\n this.resizeInfoElement = this.createPrimitiveElement(primitive, this.visualizersContainer);\r\n return this.resizeInfoElement;\r\n };\r\n CanvasSelectionManager.prototype.getConnectionPointClassName = function (active, allowed) {\r\n var className = exports.SELECTION_ELEMENT_CLASSNAMES.CONNECTION_POINT;\r\n if (active)\r\n className += \" \" + exports.SELECTION_ELEMENT_CLASSNAMES.ACTIVE;\r\n if (!allowed)\r\n className += \" \" + CanvasItemsManager_1.NOT_VALID_CSSCLASS;\r\n return className;\r\n };\r\n CanvasSelectionManager.prototype.showConnectionPoint = function (index, point, key, value, active, allowed) {\r\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 : \"\"));\r\n this.showConnectionPointCore(index * 2 + 1, point.x, point.y, CanvasSelectionManager.connectionPointSmallSize, CanvasSelectionManager.connectionPointSmallSize, Event_1.MouseEventElementType.ShapeConnectionPoint, key, value, this.getConnectionPointClassName(active, allowed));\r\n };\r\n CanvasSelectionManager.prototype.showConnectionPointCore = function (index, cx, cy, rx, ry, type, key, value, className) {\r\n var primitive = new EllipsePrimitive_1.EllipsePrimitive(cx, cy, rx, ry, null, className, function (e) { return Utils_1.RenderUtils.setElementEventData(e, type, key, value); });\r\n var ellEl = this.getConnectionPointElement(primitive, index);\r\n this.changePrimitiveElement(primitive, ellEl);\r\n };\r\n CanvasSelectionManager.prototype.hideConnectionPoints = function () {\r\n for (var i = 0; i < this.connectionPointElements.length; i++)\r\n this.dom.changeByFunc(this.connectionPointElements[i], function (e) { return e.style.display = \"none\"; });\r\n };\r\n CanvasSelectionManager.prototype.getConnectionPointElement = function (primitive, index) {\r\n var ellEl = this.connectionPointElements[index];\r\n if (ellEl !== undefined)\r\n this.dom.changeByFunc(ellEl, function (e) { return e.style.display = \"\"; });\r\n else {\r\n ellEl = this.createPrimitiveElement(primitive, this.visualizersContainer);\r\n this.connectionPointElements[index] = ellEl;\r\n }\r\n return ellEl;\r\n };\r\n CanvasSelectionManager.prototype.showContainerTarget = function (index, targetRect) {\r\n var primitive = new RectaglePrimitive_1.RectanglePrimitive(targetRect.x, targetRect.y, targetRect.width, targetRect.height, null, exports.SELECTION_ELEMENT_CLASSNAMES.CONTAINER_TARGET);\r\n var rectEl = this.getContainerTargetElement(primitive);\r\n this.changePrimitiveElement(primitive, rectEl);\r\n };\r\n CanvasSelectionManager.prototype.hideContainerTarget = function () {\r\n if (this.containerTargetElement)\r\n this.dom.changeByFunc(this.containerTargetElement, function (e) { return e.style.display = \"none\"; });\r\n };\r\n CanvasSelectionManager.prototype.getContainerTargetElement = function (primitive) {\r\n if (this.containerTargetElement !== undefined)\r\n this.dom.changeByFunc(this.containerTargetElement, function (e) { return e.style.display = \"\"; });\r\n else\r\n this.containerTargetElement = this.createPrimitiveElement(primitive, this.itemSelectionContainer);\r\n return this.containerTargetElement;\r\n };\r\n CanvasSelectionManager.prototype.showConnectionTarget = function (index, targetRect) {\r\n var primitive = new RectaglePrimitive_1.RectanglePrimitive(targetRect.x, targetRect.y, targetRect.width, targetRect.height, null, exports.SELECTION_ELEMENT_CLASSNAMES.CONNECTION_TARGET);\r\n var rectEl = this.getConnectionTargetElement(primitive);\r\n this.changePrimitiveElement(primitive, rectEl);\r\n };\r\n CanvasSelectionManager.prototype.hideConnectionTarget = function () {\r\n if (this.connectionTargetElement)\r\n this.dom.changeByFunc(this.connectionTargetElement, function (e) { return e.style.display = \"none\"; });\r\n };\r\n CanvasSelectionManager.prototype.getConnectionTargetElement = function (primitive) {\r\n if (this.connectionTargetElement !== undefined)\r\n this.dom.changeByFunc(this.connectionTargetElement, function (e) { return e.style.display = \"\"; });\r\n else\r\n this.connectionTargetElement = this.createPrimitiveElement(primitive, this.itemSelectionContainer);\r\n return this.connectionTargetElement;\r\n };\r\n CanvasSelectionManager.prototype.showExtensionLine = function (index, type, startPoint, endPoint, text) {\r\n var className = exports.SELECTION_ELEMENT_CLASSNAMES.EXTENSION_LINE;\r\n if (type === ExtensionLinesVisualizer_1.ExtensionLineType.VerticalCenterAfter || type === ExtensionLinesVisualizer_1.ExtensionLineType.VerticalCenterBefore ||\r\n type === ExtensionLinesVisualizer_1.ExtensionLineType.HorizontalCenterAbove || type === ExtensionLinesVisualizer_1.ExtensionLineType.HorizontalCenterBelow)\r\n className += \" center\";\r\n if (type === ExtensionLinesVisualizer_1.ExtensionLineType.VerticalCenterToPageCenter || type === ExtensionLinesVisualizer_1.ExtensionLineType.HorizontalCenterToPageCenter ||\r\n type === ExtensionLinesVisualizer_1.ExtensionLineType.LeftToPageCenter || type === ExtensionLinesVisualizer_1.ExtensionLineType.RightToPageCenter ||\r\n type === ExtensionLinesVisualizer_1.ExtensionLineType.TopToPageCenter || type === ExtensionLinesVisualizer_1.ExtensionLineType.BottomToPageCenter)\r\n className += \" page\";\r\n var x1_1 = 0;\r\n var y1_1 = 0;\r\n var x1_2 = 0;\r\n var y1_2 = 0;\r\n var x2_1 = 0;\r\n var y2_1 = 0;\r\n var x2_2 = 0;\r\n var y2_2 = 0;\r\n if (startPoint.y === endPoint.y) {\r\n x1_1 = startPoint.x - CanvasSelectionManager.extensionLineWidth;\r\n y1_1 = startPoint.y - CanvasSelectionManager.extensionLineEndingSize;\r\n x1_2 = startPoint.x - CanvasSelectionManager.extensionLineWidth;\r\n y1_2 = startPoint.y + CanvasSelectionManager.extensionLineEndingSize;\r\n x2_1 = endPoint.x - CanvasSelectionManager.extensionLineWidth;\r\n y2_1 = startPoint.y - CanvasSelectionManager.extensionLineEndingSize;\r\n x2_2 = endPoint.x - CanvasSelectionManager.extensionLineWidth;\r\n y2_2 = startPoint.y + CanvasSelectionManager.extensionLineEndingSize;\r\n }\r\n else if (startPoint.x === endPoint.x) {\r\n x1_1 = startPoint.x - CanvasSelectionManager.extensionLineEndingSize;\r\n y1_1 = startPoint.y - CanvasSelectionManager.extensionLineWidth;\r\n x1_2 = startPoint.x + CanvasSelectionManager.extensionLineEndingSize;\r\n y1_2 = startPoint.y - CanvasSelectionManager.extensionLineWidth;\r\n x2_1 = startPoint.x - CanvasSelectionManager.extensionLineEndingSize;\r\n y2_1 = endPoint.y - CanvasSelectionManager.extensionLineWidth;\r\n x2_2 = startPoint.x + CanvasSelectionManager.extensionLineEndingSize;\r\n y2_2 = endPoint.y - CanvasSelectionManager.extensionLineWidth;\r\n }\r\n var sizeLineXCorr = 0;\r\n var sizeLineYCorr = 0;\r\n if (type === ExtensionLinesVisualizer_1.ExtensionLineType.RightToRightAbove || type === ExtensionLinesVisualizer_1.ExtensionLineType.RightToRightBelow)\r\n sizeLineXCorr -= CanvasSelectionManager.extensionLineWidth;\r\n if (type === ExtensionLinesVisualizer_1.ExtensionLineType.BottomToBottomAfter || type === ExtensionLinesVisualizer_1.ExtensionLineType.BottomToBottomBefore)\r\n sizeLineYCorr -= CanvasSelectionManager.extensionLineWidth;\r\n var children = [\r\n new PathPrimitive_1.PathPrimitive([\r\n PathPrimitive_1.PathPrimitiveMoveToCommand.fromPoint(startPoint.clone().offset(sizeLineXCorr, sizeLineYCorr)),\r\n PathPrimitive_1.PathPrimitiveLineToCommand.fromPoint(endPoint.clone().offset(sizeLineXCorr, sizeLineYCorr))\r\n ], Style_1.StrokeStyle.default1pxInstance, \"size-line\"),\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(x1_1, y1_1),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(x1_2, y1_2),\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(x2_1, y2_1),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(x2_2, y2_2)\r\n ], Style_1.StrokeStyle.default1pxInstance),\r\n 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)\r\n ];\r\n var primitive = new GroupPrimitive_1.GroupPrimitive(children, className);\r\n var ellEl = this.getExtensionLineElement(primitive, index);\r\n this.changePrimitiveElement(primitive, ellEl);\r\n };\r\n CanvasSelectionManager.prototype.hideExtensionLines = function () {\r\n for (var i = 0; i < this.extensionLineElements.length; i++)\r\n if (this.extensionLineElements[i])\r\n this.dom.changeByFunc(this.extensionLineElements[i], function (e) { return e.style.display = \"none\"; });\r\n };\r\n CanvasSelectionManager.prototype.getExtensionLineElement = function (primitive, index) {\r\n var ellEl = this.extensionLineElements[index];\r\n if (ellEl !== undefined)\r\n this.dom.changeByFunc(ellEl, function (e) { return e.style.display = \"\"; });\r\n else {\r\n ellEl = this.createPrimitiveElement(primitive, this.visualizersContainer);\r\n this.extensionLineElements[index] = (ellEl);\r\n }\r\n return ellEl;\r\n };\r\n CanvasSelectionManager.prototype.getOrCreateShapeSelection = function (shape, usedItems) {\r\n var element = this.selectionMap[shape.key];\r\n if (!element) {\r\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));\r\n this.selectionMap[shape.key] = element;\r\n }\r\n usedItems && (usedItems[shape.key] = true);\r\n return element;\r\n };\r\n CanvasSelectionManager.prototype.getOrCreateConnectorSelection = function (connector, usedItems) {\r\n var element = this.selectionMap[connector.key];\r\n var points = connector.getRenderPoints();\r\n if (!element) {\r\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) {\r\n var textInfo = Utils_2.GeometryUtils.getPathPointByPosition(points, t.position);\r\n return {\r\n text: connector.getText(t.position),\r\n point: textInfo[0],\r\n pointIndex: textInfo[1],\r\n pos: t.position\r\n };\r\n }).sort(function (a, b) { return a.pos - b.pos; }), connector.points, connector.properties.lineOption);\r\n this.selectionMap[connector.key] = element;\r\n }\r\n usedItems && (usedItems[connector.key] = true);\r\n return element;\r\n };\r\n CanvasSelectionManager.prototype.getOrCreateMultipleSelection = function (usedItems) {\r\n var element = this.selectionMap[MULTIPLE_SELECTION_KEY];\r\n if (!element) {\r\n element = new MultipleSelectionElement(this.itemSelectionContainer, this.selectionMarksContainer, this.actualZoom, this.readOnly, this.dom, this.isTouchUIEnabled);\r\n this.selectionMap[MULTIPLE_SELECTION_KEY] = element;\r\n }\r\n usedItems[MULTIPLE_SELECTION_KEY] = true;\r\n return element;\r\n };\r\n CanvasSelectionManager.prototype.getMultipleSelection = function () {\r\n return this.selectionMap[MULTIPLE_SELECTION_KEY];\r\n };\r\n CanvasSelectionManager.prototype.updateShapeSelection = function (shape, multipleSelection) {\r\n if (shape.key in this.selectionMap) {\r\n this.getOrCreateShapeSelection(shape).onModelChanged(shape.isLocked, shape.rectangle, shape.style, shape.allowResizeHorizontally, shape.allowResizeVertically, shape.description.getParameterPoints(shape));\r\n multipleSelection && multipleSelection.onModelItemChanged(shape.key, shape.rectangle);\r\n }\r\n };\r\n CanvasSelectionManager.prototype.updateConnectorSelection = function (connector, multipleSelection) {\r\n if (connector.key in this.selectionMap) {\r\n var renderPoints_1 = connector.getRenderPoints();\r\n this.getOrCreateConnectorSelection(connector)\r\n .onModelChanged(connector.isLocked, connector.rectangle, renderPoints_1, connector.style, connector.styleText, connector.enableText, connector.texts.map(function (t) {\r\n var textPos = Utils_2.GeometryUtils.getPathPointByPosition(renderPoints_1, t.position);\r\n return {\r\n text: connector.getText(t.position),\r\n pointIndex: textPos[1],\r\n pos: t.position,\r\n point: textPos[0]\r\n };\r\n }).sort(function (a, b) { return a.pos - b.pos; }), connector.points, connector.properties.lineOption);\r\n multipleSelection && multipleSelection.onModelItemChanged(connector.key, connector.rectangle);\r\n }\r\n };\r\n CanvasSelectionManager.prototype.hideOutdatedSelection = function (updated) {\r\n var _this = this;\r\n Object.keys(this.selectionMap)\r\n .filter(function (k) { return !updated[k]; })\r\n .forEach(function (k) {\r\n _this.selectionMap[k].destroy();\r\n delete _this.selectionMap[k];\r\n });\r\n };\r\n CanvasSelectionManager.prototype.selectionCanBeDrawn = function (item) {\r\n return !item.container || (item.container.expanded && this.selectionCanBeDrawn(item.container));\r\n };\r\n CanvasSelectionManager.prototype.notifySelectionChanged = function (selection) {\r\n var _this = this;\r\n var items = selection.getSelectedItems(true).filter(function (item) { return _this.selectionCanBeDrawn(item); });\r\n var changedItems = {};\r\n var isMultipleSelection = items.length > 1;\r\n var shapes = selection.getSelectedShapes(true).filter(function (shape) { return _this.selectionCanBeDrawn(shape); });\r\n var connectors = selection.getSelectedConnectors(true).filter(function (connector) { return _this.selectionCanBeDrawn(connector); });\r\n shapes.forEach(function (shape) { return _this.getOrCreateShapeSelection(shape, changedItems).onSelectionChanged(isMultipleSelection); });\r\n connectors.forEach(function (connector) { return _this.getOrCreateConnectorSelection(connector, changedItems).onSelectionChanged(isMultipleSelection); });\r\n if (isMultipleSelection) {\r\n var strokeWidth = items.length > 0 ? items[0].strokeWidth : 0;\r\n var rectangles_1 = {};\r\n items.filter(function (i) { return !i.isLocked; }).forEach(function (item) { return rectangles_1[item.key] = item.rectangle; });\r\n this.getOrCreateMultipleSelection(changedItems).onSelectionChanged(!!shapes.filter(function (i) { return !i.isLocked; }).length, strokeWidth, rectangles_1);\r\n }\r\n this.hideOutdatedSelection(changedItems);\r\n };\r\n CanvasSelectionManager.prototype.applyChangesCore = function (changes) {\r\n _super.prototype.applyChangesCore.call(this, changes);\r\n var multipleSelection = this.getMultipleSelection();\r\n multipleSelection && multipleSelection.onModelChanged();\r\n };\r\n CanvasSelectionManager.prototype.applyChange = function (change) {\r\n var multipleSelection = this.getMultipleSelection();\r\n if (change.item instanceof Shape_1.Shape)\r\n this.updateShapeSelection(change.item, multipleSelection);\r\n else if (change.item instanceof Connector_1.Connector)\r\n this.updateConnectorSelection(change.item, multipleSelection);\r\n };\r\n CanvasSelectionManager.prototype.notifyPageColorChanged = function (color) { };\r\n CanvasSelectionManager.prototype.notifyPageSizeChanged = function (pageSize, pageLandscape) { };\r\n CanvasSelectionManager.prototype.notifyActualZoomChanged = function (actualZoom) {\r\n var _this = this;\r\n Object.keys(this.selectionMap).forEach(function (k) { return _this.selectionMap[k].notifyZoomChanged(actualZoom); });\r\n this.actualZoom = actualZoom;\r\n };\r\n CanvasSelectionManager.prototype.notifyViewAdjusted = function (canvasOffset) { };\r\n CanvasSelectionManager.prototype.notifyReadOnlyChanged = function (readOnly) {\r\n var _this = this;\r\n this.readOnly = readOnly;\r\n Object.keys(this.selectionMap).forEach(function (k) { return _this.selectionMap[k].notifyReadOnlyChanged(readOnly); });\r\n };\r\n CanvasSelectionManager.prototype.notifySelectionRectShow = function (rect) {\r\n this.showSelectionRect(rect.clone().multiply(this.actualZoom, this.actualZoom));\r\n };\r\n CanvasSelectionManager.prototype.notifySelectionRectHide = function () {\r\n this.hideSelectionRect();\r\n };\r\n CanvasSelectionManager.prototype.notifyResizeInfoShow = function (point, text) {\r\n this.showResizeInfo(point.clone().multiply(this.actualZoom, this.actualZoom), text);\r\n };\r\n CanvasSelectionManager.prototype.notifyResizeInfoHide = function () {\r\n this.hideResizeInfo();\r\n };\r\n CanvasSelectionManager.prototype.notifyConnectionPointsShow = function (key, points, activePointIndex, outsideRectangle) {\r\n var _this = this;\r\n this.hideConnectionPoints();\r\n points.forEach(function (p, index) {\r\n var point = p.point.clone().multiply(_this.actualZoom, _this.actualZoom);\r\n if (outsideRectangle)\r\n switch (p.side) {\r\n case DiagramItem_1.ConnectionPointSide.North:\r\n point.y = outsideRectangle.y * _this.actualZoom - CanvasSelectionManager.connectionPointShift;\r\n break;\r\n case DiagramItem_1.ConnectionPointSide.South:\r\n point.y = outsideRectangle.bottom * _this.actualZoom + CanvasSelectionManager.connectionPointShift;\r\n break;\r\n case DiagramItem_1.ConnectionPointSide.West:\r\n point.x = outsideRectangle.x * _this.actualZoom - CanvasSelectionManager.connectionPointShift;\r\n break;\r\n case DiagramItem_1.ConnectionPointSide.East:\r\n point.x = outsideRectangle.right * _this.actualZoom + CanvasSelectionManager.connectionPointShift;\r\n break;\r\n }\r\n _this.showConnectionPoint(index, point, key, index, index === activePointIndex, p.allowed);\r\n });\r\n };\r\n CanvasSelectionManager.prototype.notifyConnectionPointsHide = function () {\r\n this.hideConnectionPoints();\r\n };\r\n CanvasSelectionManager.prototype.notifyConnectionTargetShow = function (key, info) {\r\n if (!info.allowed)\r\n return;\r\n var rect = CanvasSelectionManager.correctSelectionRect(info.rect.clone().multiply(this.actualZoom, this.actualZoom), info.strokeWidth, CanvasSelectionManager.connectionTargetBorderWidth, this.actualZoom, 0);\r\n this.showConnectionTarget(0, rect);\r\n };\r\n CanvasSelectionManager.prototype.notifyConnectionTargetHide = function () {\r\n this.hideConnectionTarget();\r\n };\r\n CanvasSelectionManager.prototype.notifyContainerTargetShow = function (key, info) {\r\n var rect = CanvasSelectionManager.correctSelectionRect(info.rect.clone().multiply(this.actualZoom, this.actualZoom), info.strokeWidth, CanvasSelectionManager.connectionTargetBorderWidth, this.actualZoom, 0);\r\n this.showContainerTarget(0, rect);\r\n };\r\n CanvasSelectionManager.prototype.notifyContainerTargetHide = function () {\r\n this.hideContainerTarget();\r\n };\r\n CanvasSelectionManager.prototype.notifyExtensionLinesShow = function (lines) {\r\n var _this = this;\r\n this.hideExtensionLines();\r\n lines.forEach(function (line, index) {\r\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);\r\n });\r\n };\r\n CanvasSelectionManager.prototype.notifyExtensionLinesHide = function () {\r\n this.hideExtensionLines();\r\n };\r\n CanvasSelectionManager.prototype.notifyDragStart = function (itemKeys) {\r\n this.dom.changeByFunc(this.selectionMarksContainer, function (e) { return e.style.display = \"none\"; });\r\n };\r\n CanvasSelectionManager.prototype.notifyDragEnd = function (itemKeys) {\r\n this.dom.changeByFunc(this.selectionMarksContainer, function (e) { return e.style.display = \"\"; });\r\n };\r\n CanvasSelectionManager.prototype.notifyDragScrollStart = function () { };\r\n CanvasSelectionManager.prototype.notifyDragScrollEnd = function () { };\r\n CanvasSelectionManager.prototype.notifyTextInputStart = function (item, text, position, size) {\r\n this.dom.changeByFunc(this.visualizersContainer, function (e) { return e.style.display = \"none\"; });\r\n };\r\n CanvasSelectionManager.prototype.notifyTextInputEnd = function (item) {\r\n this.dom.changeByFunc(this.visualizersContainer, function (e) { return e.style.display = \"\"; });\r\n };\r\n CanvasSelectionManager.prototype.notifyTextInputPermissionsCheck = function (item, allowed) { };\r\n CanvasSelectionManager.correctSelectionRect = function (rect, targetLineWidth, selectionLineWidth, zoomLevel, outsideOffset) {\r\n if (outsideOffset === void 0) { outsideOffset = CanvasSelectionManager.selectionOffset; }\r\n var evenOddWidth = unit_converter_1.UnitConverter.twipsToPixels(targetLineWidth) % 2 !== unit_converter_1.UnitConverter.twipsToPixels(selectionLineWidth) % 2;\r\n var corr = Math.ceil(targetLineWidth / 2 * zoomLevel);\r\n rect = rect.clone().inflate(corr, corr);\r\n var lwCorr = Math.floor(selectionLineWidth / 2);\r\n rect.x -= lwCorr;\r\n rect.y -= lwCorr;\r\n rect.width += selectionLineWidth;\r\n rect.height += selectionLineWidth;\r\n if (evenOddWidth) {\r\n var correction = CanvasSelectionManager.evenOddSelectionCorrection * (unit_converter_1.UnitConverter.twipsToPixels(selectionLineWidth) % 2 === 1 ? -1 : 1);\r\n rect = rect.clone().moveRectangle(correction, correction);\r\n }\r\n return rect.clone().inflate(outsideOffset, outsideOffset);\r\n };\r\n CanvasSelectionManager.selectionMarkSize = unit_converter_1.UnitConverter.pixelsToTwips(10);\r\n CanvasSelectionManager.lockedSelectionMarkSize = unit_converter_1.UnitConverter.pixelsToTwips(8);\r\n CanvasSelectionManager.selectionOffset = unit_converter_1.UnitConverter.pixelsToTwips(2);\r\n CanvasSelectionManager.selectionRectLineWidth = unit_converter_1.UnitConverter.pixelsToTwips(1);\r\n CanvasSelectionManager.multiSelectionRectLineWidth = unit_converter_1.UnitConverter.pixelsToTwips(1);\r\n CanvasSelectionManager.connectionPointSmallSize = unit_converter_1.UnitConverter.pixelsToTwips(5);\r\n CanvasSelectionManager.connectionPointLargeSize = unit_converter_1.UnitConverter.pixelsToTwips(12);\r\n CanvasSelectionManager.connectionPointShift = unit_converter_1.UnitConverter.pixelsToTwips(16);\r\n CanvasSelectionManager.connectionTargetBorderWidth = unit_converter_1.UnitConverter.pixelsToTwips(2);\r\n CanvasSelectionManager.geomertyMarkSize = unit_converter_1.UnitConverter.pixelsToTwips(8);\r\n CanvasSelectionManager.connectorPointMarkSize = unit_converter_1.UnitConverter.pixelsToTwips(6);\r\n CanvasSelectionManager.connectorSideMarkSize = unit_converter_1.UnitConverter.pixelsToTwips(6);\r\n CanvasSelectionManager.extensionLineWidth = unit_converter_1.UnitConverter.pixelsToTwips(1);\r\n CanvasSelectionManager.extensionLineOffset = unit_converter_1.UnitConverter.pixelsToTwips(1);\r\n CanvasSelectionManager.extensionLineEndingSize = unit_converter_1.UnitConverter.pixelsToTwips(6);\r\n CanvasSelectionManager.resizeInfoOffset = unit_converter_1.UnitConverter.pixelsToTwips(16);\r\n CanvasSelectionManager.resizeInfoTextOffset = unit_converter_1.UnitConverter.pixelsToTwips(2);\r\n CanvasSelectionManager.resizeInfoLineWidth = unit_converter_1.UnitConverter.pixelsToTwips(1);\r\n CanvasSelectionManager.evenOddSelectionCorrection = unit_converter_1.UnitConverter.pixelsToTwips(1);\r\n return CanvasSelectionManager;\r\n}(CanvasManager_1.CanvasManager));\r\nexports.CanvasSelectionManager = CanvasSelectionManager;\r\nvar CanvasElement = /** @class */ (function () {\r\n function CanvasElement(rectsContainer, marksContainer, key, zoomLevel, readOnly, dom, isTouchUIEnabled) {\r\n this.rectsContainer = rectsContainer;\r\n this.marksContainer = marksContainer;\r\n this.key = key;\r\n this.zoomLevel = zoomLevel;\r\n this.readOnly = readOnly;\r\n this.dom = dom;\r\n this.isTouchUIEnabled = isTouchUIEnabled;\r\n this.elements = {};\r\n this.updatedElements = {};\r\n }\r\n CanvasElement.prototype.notifyZoomChanged = function (zoom) {\r\n if (this.zoomLevel !== zoom) {\r\n this.zoomLevel = zoom;\r\n this.redraw();\r\n }\r\n };\r\n CanvasElement.prototype.notifyReadOnlyChanged = function (readOnly) {\r\n this.readOnly = readOnly;\r\n this.redraw();\r\n };\r\n CanvasElement.prototype.destroy = function () {\r\n var _this = this;\r\n Object.keys(this.elements)\r\n .forEach(function (key) {\r\n _this.elements[key].parentNode.removeChild(_this.elements[key]);\r\n delete _this.elements[key];\r\n });\r\n };\r\n CanvasElement.prototype.redraw = function () {\r\n var _this = this;\r\n this.updatedElements = {};\r\n this.redrawCore();\r\n Object.keys(this.elements)\r\n .filter(function (key) { return !_this.updatedElements[key]; })\r\n .forEach(function (key) {\r\n _this.elements[key].parentNode.removeChild(_this.elements[key]);\r\n delete _this.elements[key];\r\n });\r\n this.updatedElements = {};\r\n };\r\n CanvasElement.prototype.drawSelectionMarks = function (rect, allowResizeHorizontally, allowResizeVertically) {\r\n if (this.readOnly)\r\n return;\r\n var hasEWMarks = allowResizeHorizontally && rect.height > CanvasSelectionManager.selectionMarkSize * 3;\r\n var hasNSMarks = allowResizeVertically && rect.width > CanvasSelectionManager.selectionMarkSize * 3;\r\n var hasCornerMarks = allowResizeHorizontally || allowResizeVertically;\r\n if (hasCornerMarks)\r\n 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);\r\n if (hasNSMarks && !this.isTouchUIEnabled)\r\n 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);\r\n if (hasCornerMarks)\r\n 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);\r\n if (hasEWMarks && !this.isTouchUIEnabled)\r\n 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);\r\n if (hasCornerMarks)\r\n 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);\r\n if (hasNSMarks && !this.isTouchUIEnabled)\r\n 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);\r\n if (hasCornerMarks)\r\n 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);\r\n if (hasEWMarks && !this.isTouchUIEnabled)\r\n 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);\r\n };\r\n CanvasElement.prototype.drawSelectionMark = function (index, point, size, type, value, className) {\r\n var _this = this;\r\n this.getOrCreateElement(\"SM\" + index, new RectaglePrimitive_1.RectanglePrimitive(point.x - size / 2, point.y - size / 2, size, size, null, className, undefined, function (el) {\r\n Utils_1.RenderUtils.setElementEventData(el, type, _this.key, value);\r\n }), this.marksContainer);\r\n };\r\n CanvasElement.prototype.drawSelectionRect = function (rectangle, type, className) {\r\n var primitive = new RectaglePrimitive_1.RectanglePrimitive(rectangle.x, rectangle.y, rectangle.width, rectangle.height, Style_1.StrokeStyle.default1pxInstance, className, undefined, function (el) {\r\n Utils_1.RenderUtils.setElementEventData(el, type, \"-1\", -1);\r\n });\r\n this.getOrCreateElement(\"shapeSelection\", primitive, this.rectsContainer);\r\n };\r\n CanvasElement.prototype.getOrCreateElement = function (cacheKey, primitive, container) {\r\n var element = this.elements[cacheKey];\r\n if (!element) {\r\n element = primitive.createElement(function (el) { return container.appendChild(el); });\r\n this.elements[cacheKey] = element;\r\n }\r\n this.updatedElements[cacheKey] = true;\r\n this.dom.changeByPrimitive(element, primitive);\r\n return element;\r\n };\r\n return CanvasElement;\r\n}());\r\nvar ItemSelectionElement = /** @class */ (function (_super) {\r\n __extends(ItemSelectionElement, _super);\r\n function ItemSelectionElement(rectsContainer, marksContainer, key, zoomLevel, readOnly, dom, isTouchUIEnabled, isLocked, rectangle) {\r\n var _this = _super.call(this, rectsContainer, marksContainer, key, zoomLevel, readOnly, dom, isTouchUIEnabled) || this;\r\n _this.isLocked = isLocked;\r\n _this.rectangle = rectangle;\r\n return _this;\r\n }\r\n ItemSelectionElement.prototype.onSelectionChanged = function (isMultipleSelection) {\r\n if (this.isMultipleSelection !== isMultipleSelection) {\r\n this.isMultipleSelection = isMultipleSelection;\r\n this.redraw();\r\n }\r\n };\r\n ItemSelectionElement.prototype.isLockedRender = function () {\r\n return this.isLocked && !this.readOnly;\r\n };\r\n ItemSelectionElement.prototype.drawLockedSelectionMark = function (index, point, size, className) {\r\n var primitive = new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(point.x - size / 2, point.y - size / 2),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(point.x + size / 2, point.y + size / 2),\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(point.x + size / 2, point.y - size / 2),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(point.x - size / 2, point.y + size / 2)\r\n ], null, className);\r\n this.getOrCreateElement(\"LSM\" + index, primitive, this.marksContainer);\r\n };\r\n return ItemSelectionElement;\r\n}(CanvasElement));\r\nvar MultipleSelectionElement = /** @class */ (function (_super) {\r\n __extends(MultipleSelectionElement, _super);\r\n function MultipleSelectionElement(rectsContainer, marksContainer, zoomLevel, readOnly, dom, isTouchUIEnabled) {\r\n var _this = _super.call(this, rectsContainer, marksContainer, \"-1\", zoomLevel, readOnly, dom, isTouchUIEnabled) || this;\r\n _this.rectangles = {};\r\n return _this;\r\n }\r\n MultipleSelectionElement.prototype.onModelItemChanged = function (key, rectangle) {\r\n if (key in this.rectangles)\r\n this.rectangles[key] = rectangle;\r\n };\r\n MultipleSelectionElement.prototype.onModelChanged = function () {\r\n this.redraw();\r\n };\r\n MultipleSelectionElement.prototype.onSelectionChanged = function (needDrawSelectionMarks, strokeWidth, rectangles) {\r\n this.needDrawSelectionMarks = needDrawSelectionMarks;\r\n this.strokeWidth = strokeWidth;\r\n this.rectangles = rectangles;\r\n this.redraw();\r\n };\r\n MultipleSelectionElement.prototype.redrawCore = function () {\r\n var _this = this;\r\n var rectKeys = Object.keys(this.rectangles);\r\n if (!rectKeys.length)\r\n return;\r\n var rect = Utils_2.GeometryUtils.getCommonRectangle(rectKeys.map(function (key) { return _this.rectangles[key]; })).clone().multiply(this.zoomLevel, this.zoomLevel);\r\n var selRect = CanvasSelectionManager.correctSelectionRect(rect, this.strokeWidth, CanvasSelectionManager.selectionRectLineWidth, this.zoomLevel);\r\n this.drawSelectionRect(selRect, Event_1.MouseEventElementType.SelectionRect, exports.SELECTION_ELEMENT_CLASSNAMES.ITEMS_SELECTION_RECT);\r\n if (this.needDrawSelectionMarks)\r\n this.drawSelectionMarks(rect, true, true);\r\n };\r\n return MultipleSelectionElement;\r\n}(CanvasElement));\r\nvar ShapeSelectionElement = /** @class */ (function (_super) {\r\n __extends(ShapeSelectionElement, _super);\r\n function ShapeSelectionElement(rectsContainer, marksContainer, zoomLevel, readOnly, dom, isTouchUIEnabled, key, isLocked, rectangle, style, allowResizeHorizontally, allowResizeVertically, shapeParameterPoints) {\r\n var _this = _super.call(this, rectsContainer, marksContainer, key, zoomLevel, readOnly, dom, isTouchUIEnabled, isLocked, rectangle) || this;\r\n _this.style = style;\r\n _this.allowResizeHorizontally = allowResizeHorizontally;\r\n _this.allowResizeVertically = allowResizeVertically;\r\n _this.shapeParameterPoints = shapeParameterPoints;\r\n return _this;\r\n }\r\n ShapeSelectionElement.prototype.onModelChanged = function (isLocked, rectangle, style, allowResizeHorizontally, allowResizeVertically, shapeParameterPoints) {\r\n this.isLocked = isLocked;\r\n this.rectangle = rectangle;\r\n this.style = style;\r\n this.allowResizeHorizontally = allowResizeHorizontally;\r\n this.allowResizeVertically = allowResizeVertically;\r\n this.shapeParameterPoints = shapeParameterPoints;\r\n this.redraw();\r\n };\r\n ShapeSelectionElement.prototype.redrawCore = function () {\r\n var rect = this.rectangle.clone().multiply(this.zoomLevel, this.zoomLevel);\r\n if (this.isLockedRender())\r\n this.drawLockedSelection(rect);\r\n else\r\n this.drawUnlockedSelection(rect);\r\n };\r\n ShapeSelectionElement.prototype.drawLockedSelection = function (rect) {\r\n this.drawLockedSelectionMark(0, new point_1.Point(rect.x, rect.y), CanvasSelectionManager.lockedSelectionMarkSize, exports.SELECTION_ELEMENT_CLASSNAMES.LOCKED_SELECTION_MARK);\r\n this.drawLockedSelectionMark(1, new point_1.Point(rect.right, rect.y), CanvasSelectionManager.lockedSelectionMarkSize, exports.SELECTION_ELEMENT_CLASSNAMES.LOCKED_SELECTION_MARK);\r\n this.drawLockedSelectionMark(2, new point_1.Point(rect.right, rect.bottom), CanvasSelectionManager.lockedSelectionMarkSize, exports.SELECTION_ELEMENT_CLASSNAMES.LOCKED_SELECTION_MARK);\r\n this.drawLockedSelectionMark(3, new point_1.Point(rect.x, rect.bottom), CanvasSelectionManager.lockedSelectionMarkSize, exports.SELECTION_ELEMENT_CLASSNAMES.LOCKED_SELECTION_MARK);\r\n };\r\n ShapeSelectionElement.prototype.drawUnlockedSelection = function (rect) {\r\n var selRect = CanvasSelectionManager.correctSelectionRect(rect, this.style.strokeWidth, CanvasSelectionManager.selectionRectLineWidth, this.zoomLevel);\r\n this.drawSelectionRect(selRect, Event_1.MouseEventElementType.SelectionRect, this.isMultipleSelection ? exports.SELECTION_ELEMENT_CLASSNAMES.ITEM_MULTI_SELECTION : exports.SELECTION_ELEMENT_CLASSNAMES.ITEM_SELECTION_RECT);\r\n if (!this.isMultipleSelection)\r\n this.drawSelectionMarks(rect, this.allowResizeHorizontally, this.allowResizeVertically);\r\n this.drawShapeParameterPoints();\r\n };\r\n ShapeSelectionElement.prototype.drawShapeParameterPoints = function () {\r\n var _this = this;\r\n if (this.readOnly)\r\n return;\r\n this.shapeParameterPoints.forEach(function (pp, index) {\r\n var point = pp.point.clone().multiply(_this.zoomLevel, _this.zoomLevel);\r\n _this.drawShapeParameterPoint(point, index, pp.key);\r\n });\r\n };\r\n ShapeSelectionElement.prototype.drawShapeParameterPoint = function (point, index, pointKey) {\r\n var _this = this;\r\n var size = CanvasSelectionManager.geomertyMarkSize;\r\n var primitive = new RectaglePrimitive_1.RectanglePrimitive(point.x - size / 2, point.y - size / 2, size, size, null, \"geometry-mark\", undefined, function (el) {\r\n Utils_1.RenderUtils.setElementEventData(el, Event_1.MouseEventElementType.ShapeParameterBox, _this.key, pointKey);\r\n });\r\n this.getOrCreateElement(\"pp\" + index.toString(), primitive, this.marksContainer);\r\n };\r\n return ShapeSelectionElement;\r\n}(ItemSelectionElement));\r\nvar ConnectorSelectionElement = /** @class */ (function (_super) {\r\n __extends(ConnectorSelectionElement, _super);\r\n function ConnectorSelectionElement(rectsContainer, marksContainer, zoomLevel, readOnly, dom, isTouchUIEnabled, key, isLocked, rectangle, renderPoints, style, styleText, enableText, texts, points, lineType) {\r\n var _this = _super.call(this, rectsContainer, marksContainer, key, zoomLevel, readOnly, dom, isTouchUIEnabled, isLocked, rectangle) || this;\r\n _this.renderPoints = renderPoints;\r\n _this.style = style;\r\n _this.styleText = styleText;\r\n _this.enableText = enableText;\r\n _this.texts = texts;\r\n _this.points = points;\r\n _this.lineType = lineType;\r\n return _this;\r\n }\r\n ConnectorSelectionElement.prototype.onModelChanged = function (isLocked, rectangle, renderPoints, style, styleText, enableText, texts, points, lineType) {\r\n this.isLocked = isLocked;\r\n this.rectangle = rectangle;\r\n this.renderPoints = renderPoints;\r\n this.style = style;\r\n this.styleText = styleText;\r\n this.enableText = enableText;\r\n this.texts = texts;\r\n this.points = points;\r\n this.lineType = lineType;\r\n this.redraw();\r\n };\r\n ConnectorSelectionElement.prototype.redrawCore = function () {\r\n if (this.isLockedRender())\r\n this.drawLockedSelection();\r\n else\r\n this.drawUnlockedSelection();\r\n };\r\n ConnectorSelectionElement.prototype.drawLockedSelection = function () {\r\n var _this = this;\r\n this.renderPoints.forEach(function (pt, index) {\r\n _this.drawLockedSelectionMark(index, pt, CanvasSelectionManager.lockedSelectionMarkSize, exports.SELECTION_ELEMENT_CLASSNAMES.LOCKED_SELECTION_MARK);\r\n });\r\n };\r\n ConnectorSelectionElement.prototype.drawUnlockedSelection = function () {\r\n this.drawConnectorSelection();\r\n if (!this.isMultipleSelection && !this.readOnly)\r\n this.drawConnectorSelectionMarks();\r\n };\r\n ConnectorSelectionElement.prototype.drawConnectorSelection = function () {\r\n var commands = [];\r\n var commandsWB = [];\r\n var className = this.isMultipleSelection ? exports.SELECTION_ELEMENT_CLASSNAMES.CONNECTOR_MULTI_SELECTION : exports.SELECTION_ELEMENT_CLASSNAMES.CONNECTOR_SELECTION;\r\n this.populateSelectionPrimitiveCommands(commands, commandsWB);\r\n var primitive = new PathPrimitive_1.PathPrimitive(commands.concat(commandsWB.reverse()), Style_1.StrokeStyle.default1pxInstance, className);\r\n this.getOrCreateElement(\"CS\", primitive, this.rectsContainer);\r\n };\r\n ConnectorSelectionElement.prototype.populateSelectionPrimitiveCommands = function (commands, commandsWB) {\r\n var texts = this.texts;\r\n var txtAlign = this.styleText.getAlignment();\r\n var points = this.createNotSkippedRenderPoints();\r\n var zoomLevel = this.zoomLevel;\r\n var strokeWidthPx = this.style.strokeWidthPx;\r\n var selectionOffset = this.getSelectionOffset(strokeWidthPx);\r\n var strokeWidthPxIsEvenOdd = strokeWidthPx % 2 === 0;\r\n var prevPt = points[0];\r\n var textIndex = 0;\r\n var offset;\r\n var distance;\r\n var nextOffset;\r\n var nextDistance;\r\n for (var i = 1, pt = void 0; pt = points[i]; i++) {\r\n var nextPt = points[i + 1];\r\n if (offset === undefined) {\r\n distance = metrics_1.Metrics.euclideanDistance(prevPt, pt);\r\n if (math_1.MathUtils.numberCloseTo(distance, 0))\r\n continue;\r\n offset = Utils_2.GeometryUtils.getSelectionOffsetPoint(prevPt, pt, distance).multiply(selectionOffset, selectionOffset);\r\n }\r\n if (nextPt) {\r\n nextDistance = metrics_1.Metrics.euclideanDistance(pt, nextPt);\r\n if (math_1.MathUtils.numberCloseTo(nextDistance, 0))\r\n continue;\r\n nextOffset = Utils_2.GeometryUtils.getSelectionOffsetPoint(pt, nextPt, nextDistance).multiply(selectionOffset, selectionOffset);\r\n }\r\n var offsetX = offset.x;\r\n var offsetY = offset.y;\r\n var offsetXNegative = -offsetX;\r\n var offsetYNegative = -offsetY;\r\n var nextOffsetX = nextOffset && nextOffset.x;\r\n var nextOffsetY = nextOffset && nextOffset.y;\r\n var nextOffsetXNegative = nextOffset && -nextOffset.x;\r\n var nextOffsetYNegative = nextOffset && -nextOffset.y;\r\n if (strokeWidthPxIsEvenOdd) {\r\n if (offsetXNegative > 0)\r\n offsetXNegative -= CanvasSelectionManager.evenOddSelectionCorrection;\r\n else if (offsetX > 0)\r\n offsetX -= CanvasSelectionManager.evenOddSelectionCorrection;\r\n if (offsetYNegative > 0)\r\n offsetYNegative -= CanvasSelectionManager.evenOddSelectionCorrection;\r\n else if (offsetY > 0)\r\n offsetY -= CanvasSelectionManager.evenOddSelectionCorrection;\r\n if (nextOffsetXNegative > 0)\r\n nextOffsetXNegative -= CanvasSelectionManager.evenOddSelectionCorrection;\r\n else if (nextOffsetX > 0)\r\n nextOffsetX -= CanvasSelectionManager.evenOddSelectionCorrection;\r\n if (nextOffsetYNegative > 0)\r\n nextOffsetYNegative -= CanvasSelectionManager.evenOddSelectionCorrection;\r\n else if (nextOffsetY > 0)\r\n nextOffsetY -= CanvasSelectionManager.evenOddSelectionCorrection;\r\n }\r\n while (texts[textIndex] && texts[textIndex].pointIndex <= i) {\r\n var text = texts[textIndex];\r\n var size = this.getConnectorSelectionTextSize(text.text, selectionOffset);\r\n var textPts = Utils_2.GeometryUtils.getSelectionTextStartEndPoints(prevPt, pt, distance, text.point, size, txtAlign);\r\n if (texts[textIndex].pointIndex < i) {\r\n prevPt = textPts[1];\r\n commands.push(PathPrimitive_1.PathPrimitiveMoveToCommand.fromPoint(prevPt.clone().offset(offsetX, offsetY).multiply(zoomLevel, zoomLevel)));\r\n commandsWB.push(PathPrimitive_1.PathPrimitiveLineToCommand.fromPoint(prevPt.clone().offset(offsetXNegative, offsetYNegative).multiply(zoomLevel, zoomLevel)));\r\n }\r\n else {\r\n if (!commands.length) {\r\n commands.push(PathPrimitive_1.PathPrimitiveMoveToCommand.fromPoint(prevPt.clone().offset(offsetX, offsetY).multiply(zoomLevel, zoomLevel)));\r\n commandsWB.push(PathPrimitive_1.PathPrimitiveLineToCommand.fromPoint(prevPt.clone().offset(offsetXNegative, offsetYNegative).multiply(zoomLevel, zoomLevel)));\r\n }\r\n commands.push(PathPrimitive_1.PathPrimitiveLineToCommand.fromPoint(textPts[0].clone().offset(offsetX, offsetY).multiply(zoomLevel, zoomLevel)));\r\n commands.push(PathPrimitive_1.PathPrimitiveMoveToCommand.fromPoint(textPts[1].clone().offset(offsetX, offsetY).multiply(zoomLevel, zoomLevel)));\r\n commandsWB.push(PathPrimitive_1.PathPrimitiveMoveToCommand.fromPoint(textPts[0].clone().offset(offsetXNegative, offsetYNegative).multiply(zoomLevel, zoomLevel)));\r\n commandsWB.push(PathPrimitive_1.PathPrimitiveLineToCommand.fromPoint(textPts[1].clone().offset(offsetXNegative, offsetYNegative).multiply(zoomLevel, zoomLevel)));\r\n prevPt = textPts[1];\r\n }\r\n textIndex++;\r\n }\r\n if (!commands.length) {\r\n commands.push(PathPrimitive_1.PathPrimitiveMoveToCommand.fromPoint(prevPt.clone().offset(offsetX, offsetY).multiply(zoomLevel, zoomLevel)));\r\n commandsWB.push(PathPrimitive_1.PathPrimitiveLineToCommand.fromPoint(prevPt.clone().offset(offsetXNegative, offsetYNegative).multiply(zoomLevel, zoomLevel)));\r\n }\r\n if (nextPt) {\r\n Utils_2.GeometryUtils.addSelectedLinesTo(prevPt, pt, nextPt, offsetX, offsetY, offsetXNegative, offsetYNegative, nextOffsetX, nextOffsetY, nextOffsetXNegative, nextOffsetYNegative, function (x, y) { return commands.push(new PathPrimitive_1.PathPrimitiveLineToCommand(x * zoomLevel, y * zoomLevel)); }, function (x, y) { return commandsWB.push(new PathPrimitive_1.PathPrimitiveLineToCommand(x * zoomLevel, y * zoomLevel)); });\r\n offset = nextOffset;\r\n distance = nextDistance;\r\n }\r\n else {\r\n commands.push(PathPrimitive_1.PathPrimitiveLineToCommand.fromPoint(pt.clone().offset(offsetX, offsetY).multiply(zoomLevel, zoomLevel)));\r\n commandsWB.push(PathPrimitive_1.PathPrimitiveMoveToCommand.fromPoint(pt.clone().offset(offsetXNegative, offsetYNegative).multiply(zoomLevel, zoomLevel)));\r\n }\r\n prevPt = pt;\r\n }\r\n };\r\n ConnectorSelectionElement.prototype.createNotSkippedRenderPoints = function () {\r\n var clonedRenderPoints = this.renderPoints.map(function (p) { return p.clone(); });\r\n if (this.lineType === ConnectorProperties_1.ConnectorLineOption.Straight) {\r\n ModelUtils_1.ModelUtils.removeUnnecessaryRenderPoints(clonedRenderPoints);\r\n return clonedRenderPoints.filter(function (p) { return !p.skipped; });\r\n }\r\n ModelUtils_1.ModelUtils.removeUnnecessaryRightAngleRenderPoints(clonedRenderPoints);\r\n return clonedRenderPoints.filter(function (p) { return !p.skipped; });\r\n };\r\n ConnectorSelectionElement.prototype.getSelectionOffset = function (strokeWidthPx) {\r\n return CanvasSelectionManager.selectionOffset + unit_converter_1.UnitConverter.pixelsToTwips(Math.round(strokeWidthPx / 2) + (strokeWidthPx + 1) % 2);\r\n };\r\n ConnectorSelectionElement.prototype.getConnectorSelectionTextSize = function (text, selectionOffset) {\r\n return this.dom.measurer.measureTextLine(text, this.styleText, ITextMeasurer_1.TextOwner.Connector)\r\n .applyConverter(unit_converter_1.UnitConverter.pixelsToTwips)\r\n .clone().offset(selectionOffset, selectionOffset).nonNegativeSize();\r\n };\r\n ConnectorSelectionElement.prototype.drawConnectorSelectionMarks = function () {\r\n var _this = this;\r\n var pointsCount = this.points.length - 1;\r\n this.points.forEach(function (pt, index) {\r\n var isEdgePoint = index === 0 || index === pointsCount;\r\n var className = isEdgePoint ? exports.SELECTION_ELEMENT_CLASSNAMES.SELECTION_MARK : exports.SELECTION_ELEMENT_CLASSNAMES.CONNECTOR_POINT_MARK;\r\n var markSize = isEdgePoint ? CanvasSelectionManager.selectionMarkSize : CanvasSelectionManager.connectorPointMarkSize;\r\n if (isEdgePoint || _this.lineType === ConnectorProperties_1.ConnectorLineOption.Straight)\r\n _this.drawSelectionMark(index, pt.clone().multiply(_this.zoomLevel, _this.zoomLevel), markSize, Event_1.MouseEventElementType.ConnectorPoint, index, className);\r\n else\r\n _this.drawSelectionMark(index, pt.clone().multiply(_this.zoomLevel, _this.zoomLevel), markSize, Event_1.MouseEventElementType.Undefined, -1, className + \" disabled\");\r\n });\r\n this.drawConnectorSideMarks();\r\n };\r\n ConnectorSelectionElement.prototype.drawConnectorSideMarks = function () {\r\n var _this = this;\r\n var type = (this.lineType === ConnectorProperties_1.ConnectorLineOption.Straight) ?\r\n Event_1.MouseEventElementType.ConnectorSide : Event_1.MouseEventElementType.ConnectorOrthogonalSide;\r\n var prevPt;\r\n var prevPtIndex;\r\n this.renderPoints.filter(function (rp) { return !rp.skipped; }).forEach(function (pt, index) {\r\n if (pt.skipped)\r\n return;\r\n if (prevPt !== undefined)\r\n if (_this.canDrawConnectorSideMark(pt, prevPt)) {\r\n var classNameSuffix = _this.lineType === ConnectorProperties_1.ConnectorLineOption.Orthogonal ?\r\n (pt.x - prevPt.x === 0 ? \"vertical\" : \"horizontal\") : \"\";\r\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);\r\n }\r\n prevPt = pt;\r\n prevPtIndex = index;\r\n });\r\n };\r\n ConnectorSelectionElement.prototype.canDrawConnectorSideMark = function (current, prev) {\r\n if (this.lineType === ConnectorProperties_1.ConnectorLineOption.Straight) {\r\n var minSize = CanvasSelectionManager.selectionMarkSize + CanvasSelectionManager.connectorSideMarkSize;\r\n return metrics_1.Metrics.euclideanDistance(current, prev) > minSize;\r\n }\r\n if (this.lineType === ConnectorProperties_1.ConnectorLineOption.Orthogonal) {\r\n var hasBeginPoint = prev.pointIndex === 0;\r\n var hasEndPoint = Utils_2.GeometryUtils.areDuplicatedPoints(this.points[this.points.length - 1], current);\r\n if (hasBeginPoint && hasEndPoint)\r\n return metrics_1.Metrics.euclideanDistance(current, prev) > 2 * Connector_1.Connector.minOffset;\r\n if (!hasBeginPoint && hasEndPoint || hasBeginPoint && !hasEndPoint)\r\n return metrics_1.Metrics.euclideanDistance(current, prev) > Connector_1.Connector.minOffset;\r\n var minSize = CanvasSelectionManager.selectionMarkSize + CanvasSelectionManager.connectorSideMarkSize;\r\n return metrics_1.Metrics.euclideanDistance(current, prev) > minSize;\r\n // return ((MathUtils.numberCloseTo(point1.x, point2.x) || Math.abs(point1.x - point2.x) > Connector.minOffset) &&\r\n // (point1.y - point2.y === 0 || Math.abs(point1.y - point2.y) > Connector.minOffset));\r\n }\r\n return false;\r\n };\r\n return ConnectorSelectionElement;\r\n}(ItemSelectionElement));\r\n\n\n/***/ }),\n/* 158 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DiagramDraggingEvent = exports.ToolboxDraggingObject = exports.DragState = exports.Toolbox = exports.TOUCH_DRAGTIMEOUT_MS = void 0;\r\nvar Utils_1 = __webpack_require__(3);\r\nvar Data_1 = __webpack_require__(45);\r\nvar dom_1 = __webpack_require__(23);\r\nvar CanvasItemsManager_1 = __webpack_require__(77);\r\nvar TOOLBOX_CSSCLASS = \"dxdi-toolbox\";\r\nvar DRAG_CAPTURED_CSSCLASS = \"dxdi-tb-drag-captured\";\r\nexports.TOUCH_DRAGTIMEOUT_MS = 800;\r\nvar Toolbox = /** @class */ (function () {\r\n function Toolbox(parent, readOnly, allowDragging, shapeDescriptionManager, shapeTypes, getAllowedShapeTypes, isTouchUIEnabled) {\r\n this.readOnly = readOnly;\r\n this.allowDragging = allowDragging;\r\n this.shapeDescriptionManager = shapeDescriptionManager;\r\n this.shapeTypes = shapeTypes;\r\n this.getAllowedShapeTypes = getAllowedShapeTypes;\r\n this.isTouchUIEnabled = isTouchUIEnabled;\r\n this.dragPrepareTimeout = -1;\r\n this.onDragOperation = new Utils_1.EventDispatcher();\r\n this.onClickOperation = new Utils_1.EventDispatcher();\r\n this.dragState = DragState.None;\r\n if (parent)\r\n this.mainElement = this.createMainElement(parent);\r\n }\r\n Toolbox.prototype.clean = function (removeElement) {\r\n if (this.dragEventsHandler) {\r\n this.dragEventsHandler.detach();\r\n this.dragEventsHandler = undefined;\r\n }\r\n if (removeElement)\r\n removeElement(this.mainElement);\r\n };\r\n Toolbox.prototype.createMainElement = function (parent) {\r\n var element = document.createElement(\"div\");\r\n element.setAttribute(\"class\", TOOLBOX_CSSCLASS);\r\n element.draggable = true;\r\n if (this.isTouchUIEnabled)\r\n element.tabIndex = 0;\r\n parent.appendChild(element);\r\n return element;\r\n };\r\n Toolbox.prototype.render = function (filter) {\r\n if (this.mainElement.childNodes)\r\n this.mainElement.innerHTML = \"\";\r\n var shapeTypes = this.shapeTypes;\r\n shapeTypes = this.getAllowedShapeTypes ? this.getAllowedShapeTypes(shapeTypes) : shapeTypes;\r\n shapeTypes = filter ? shapeTypes.filter(filter) : shapeTypes;\r\n if (shapeTypes.length)\r\n this.createElements(this.mainElement, shapeTypes);\r\n return !!shapeTypes.length;\r\n };\r\n Toolbox.prototype.createDraggingObject = function (shapeType) {\r\n var evt = new DiagramDraggingEvent();\r\n evt.data = shapeType;\r\n evt.onFinishDragging = this.finishDragging.bind(this);\r\n evt.onCaptured = this.capture.bind(this);\r\n return new ToolboxDraggingObject(evt);\r\n };\r\n Toolbox.prototype.getDragShapeType = function (element) {\r\n while (element && !dom_1.DomUtils.hasClassName(element, TOOLBOX_CSSCLASS)) {\r\n if (element.getAttribute && element.getAttribute(\"data-tb-type\"))\r\n return element.getAttribute(\"data-tb-type\");\r\n element = element.parentNode;\r\n }\r\n return undefined;\r\n };\r\n Toolbox.prototype.shouldPrepareDrag = function () {\r\n return this.shouldChangeDragState(DragState.Prepare);\r\n };\r\n Toolbox.prototype.prepareDragging = function (startPoint, startShapeType) {\r\n this.dragState = DragState.Prepare;\r\n this.dragStartPoint = startPoint;\r\n this.dragStartShapeType = startShapeType;\r\n };\r\n Toolbox.prototype.shouldStartDragging = function () {\r\n return this.dragState === DragState.Prepare && this.shouldChangeDragState(DragState.Start);\r\n };\r\n Toolbox.prototype.startTouchDragging = function () {\r\n this.dragPrepareTimeout = setTimeout(this.startDragTimeout.bind(this), exports.TOUCH_DRAGTIMEOUT_MS);\r\n };\r\n Toolbox.prototype.startDragging = function () {\r\n if (!this.shouldChangeDragState(DragState.Start))\r\n return;\r\n this.dragState = DragState.Start;\r\n dom_1.DomUtils.addClassName(document.body, \"dxdi-dragging\");\r\n this.draggingObject = this.createDraggingObject(this.dragStartShapeType);\r\n if (this.dragStartShapeType) {\r\n this.raiseDragStart();\r\n this.draggingObject.element = this.createDraggingElement(this.draggingObject);\r\n if (this.draggingObject.captured !== undefined)\r\n this.capture(this.draggingObject.captured, true);\r\n this.updatePositionsOnDragging(this.dragStartPoint);\r\n }\r\n else\r\n dom_1.DomUtils.addClassName(document.body, CanvasItemsManager_1.NOT_VALID_CSSCLASS);\r\n };\r\n Toolbox.prototype.shouldContinueDragging = function () {\r\n return this.draggingObject && this.draggingObject.element && this.shouldChangeDragState(DragState.Dragging);\r\n };\r\n Toolbox.prototype.continueDragging = function (point) {\r\n this.dragState = DragState.Dragging;\r\n this.updatePositionsOnDragging(point);\r\n };\r\n Toolbox.prototype.updatePositionsOnDragging = function (point) {\r\n var element = this.draggingObject.element;\r\n var xPos = point.x - element.offsetWidth / 2;\r\n var yPos = point.y - element.offsetHeight / 2;\r\n Data_1.SetAbsoluteX(element, xPos);\r\n Data_1.SetAbsoluteY(element, yPos);\r\n };\r\n Toolbox.prototype.finishDragging = function () {\r\n if (!this.shouldChangeDragState(DragState.None))\r\n return;\r\n this.dragState = DragState.None;\r\n if (this.draggingObject) {\r\n this.raiseDragEnd();\r\n var element = this.draggingObject.element;\r\n if (element)\r\n element.parentNode.removeChild(element);\r\n delete this.draggingObject;\r\n }\r\n this.dragStartPoint = undefined;\r\n this.dragStartShapeType = undefined;\r\n dom_1.DomUtils.removeClassName(document.body, CanvasItemsManager_1.NOT_VALID_CSSCLASS);\r\n setTimeout(function () { return dom_1.DomUtils.removeClassName(document.body, \"dxdi-dragging\"); }, 500); // prevent selection on dragend\r\n };\r\n Toolbox.prototype.startDragTimeout = function () {\r\n this.dragPrepareTimeout = -1;\r\n if (this.dragState === DragState.Prepare)\r\n this.startDragging();\r\n };\r\n Toolbox.prototype.shouldChangeDragState = function (newState) {\r\n if (this.readOnly || !this.allowDragging || (newState === DragState.None && this.dragState === DragState.None))\r\n return false;\r\n if (this.dragPrepareTimeout > -1) {\r\n clearTimeout(this.dragPrepareTimeout);\r\n this.dragPrepareTimeout = -1;\r\n }\r\n return newState - this.dragState <= 1 && (newState === DragState.None || newState >= this.dragState);\r\n };\r\n Toolbox.prototype.capture = function (captured, forced) {\r\n if (this.draggingObject && (this.draggingObject.captured !== captured || forced)) {\r\n this.draggingObject.captured = captured;\r\n if (this.draggingObject.element)\r\n dom_1.DomUtils.toggleClassName(this.draggingObject.element, DRAG_CAPTURED_CSSCLASS, captured);\r\n }\r\n };\r\n Toolbox.prototype.raiseDragStart = function () {\r\n this.onDragOperation.raise(\"notifyToolboxDragStart\");\r\n };\r\n Toolbox.prototype.raiseDragEnd = function () {\r\n this.onDragOperation.raise(\"notifyToolboxDragEnd\");\r\n };\r\n Toolbox.prototype.raiseNotifyToolboxClick = function (shapeType) {\r\n this.onClickOperation.raise(\"notifyToolboxClick\", shapeType);\r\n };\r\n Toolbox.prototype.notifyReadOnlyChanged = function (readOnly) {\r\n this.readOnly = readOnly;\r\n };\r\n return Toolbox;\r\n}());\r\nexports.Toolbox = Toolbox;\r\nvar DragState;\r\n(function (DragState) {\r\n DragState[DragState[\"None\"] = -1] = \"None\";\r\n DragState[DragState[\"Prepare\"] = 0] = \"Prepare\";\r\n DragState[DragState[\"Start\"] = 1] = \"Start\";\r\n DragState[DragState[\"Dragging\"] = 2] = \"Dragging\";\r\n})(DragState = exports.DragState || (exports.DragState = {}));\r\nvar ToolboxDraggingObject = /** @class */ (function () {\r\n function ToolboxDraggingObject(evt) {\r\n this.evt = evt;\r\n }\r\n return ToolboxDraggingObject;\r\n}());\r\nexports.ToolboxDraggingObject = ToolboxDraggingObject;\r\nvar DiagramDraggingEvent = /** @class */ (function () {\r\n function DiagramDraggingEvent() {\r\n }\r\n return DiagramDraggingEvent;\r\n}());\r\nexports.DiagramDraggingEvent = DiagramDraggingEvent;\r\n\n\n/***/ }),\n/* 159 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RightAngleConnectorRoutingMathOperations = void 0;\r\nvar segment_1 = __webpack_require__(33);\r\nvar math_1 = __webpack_require__(32);\r\nvar AStarMetrics_1 = __webpack_require__(160);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar RightAngleConnectorRoutingMathOperations = /** @class */ (function () {\r\n function RightAngleConnectorRoutingMathOperations() {\r\n }\r\n RightAngleConnectorRoutingMathOperations.createUnionSegments = function (segments, shouldCreateSegment) {\r\n var result = [];\r\n var startRenderPoint = segments[0].startPoint;\r\n var endRenderPoint = segments[0].endPoint;\r\n for (var i = 1; i < segments.length; i++) {\r\n var currentSegment = segments[i];\r\n if (shouldCreateSegment(endRenderPoint, currentSegment.startPoint)) {\r\n result.push(new segment_1.Segment(startRenderPoint.clone(), endRenderPoint.clone()));\r\n startRenderPoint = currentSegment.startPoint;\r\n }\r\n endRenderPoint = currentSegment.endPoint;\r\n }\r\n result.push(new segment_1.Segment(startRenderPoint, endRenderPoint));\r\n return result;\r\n };\r\n RightAngleConnectorRoutingMathOperations.unionPoints = function (points) {\r\n var index = 0;\r\n while (index < points.length - 2)\r\n if (Utils_1.GeometryUtils.isCorner(points[index], points[index + 1], points[index + 2]))\r\n index++;\r\n else {\r\n points.splice(index + 1, 1);\r\n index = Math.max(0, index - 1);\r\n }\r\n };\r\n RightAngleConnectorRoutingMathOperations.getTurnDirection = function (angle) {\r\n if (math_1.MathUtils.numberCloseTo(angle, 0))\r\n return AStarMetrics_1.RightAngleTurnDirection.Straight;\r\n if (math_1.MathUtils.numberCloseTo(angle, Math.PI))\r\n return AStarMetrics_1.RightAngleTurnDirection.Backwards;\r\n return angle < Math.PI ? AStarMetrics_1.RightAngleTurnDirection.Left : AStarMetrics_1.RightAngleTurnDirection.Right;\r\n };\r\n RightAngleConnectorRoutingMathOperations.isSegmentNormal = function (segment, isHorizontal) {\r\n return isHorizontal ? math_1.MathUtils.numberCloseTo(segment.startPoint.y, segment.endPoint.y) : math_1.MathUtils.numberCloseTo(segment.startPoint.x, segment.endPoint.x);\r\n };\r\n RightAngleConnectorRoutingMathOperations.isConnectionRectanleLineIntersected = function (rect, segment, side, excludeBeginPoint, excludeEndPoint, createPoint) {\r\n switch (side) {\r\n case DiagramItem_1.ConnectionPointSide.North:\r\n return Utils_1.GeometryUtils.isLineIntersected(createPoint(rect.x, rect.y), createPoint(rect.right, rect.y), segment, excludeBeginPoint, excludeEndPoint);\r\n case DiagramItem_1.ConnectionPointSide.South:\r\n return Utils_1.GeometryUtils.isLineIntersected(createPoint(rect.right, rect.bottom), createPoint(rect.x, rect.bottom), segment, excludeBeginPoint, excludeEndPoint);\r\n case DiagramItem_1.ConnectionPointSide.West:\r\n return Utils_1.GeometryUtils.isLineIntersected(createPoint(rect.x, rect.y), createPoint(rect.x, rect.bottom), segment, excludeBeginPoint, excludeEndPoint);\r\n case DiagramItem_1.ConnectionPointSide.East:\r\n return Utils_1.GeometryUtils.isLineIntersected(createPoint(rect.right, rect.y), createPoint(rect.right, rect.bottom), segment, excludeBeginPoint, excludeEndPoint);\r\n default:\r\n return false;\r\n }\r\n };\r\n RightAngleConnectorRoutingMathOperations.createBeginConnectionSegment = function (beginConnectionSide, beginPoint, offset, createPoint) {\r\n switch (beginConnectionSide) {\r\n case DiagramItem_1.ConnectionPointSide.North:\r\n return new segment_1.Segment(beginPoint, createPoint(beginPoint.x, beginPoint.y - offset));\r\n case DiagramItem_1.ConnectionPointSide.South:\r\n return new segment_1.Segment(beginPoint, createPoint(beginPoint.x, beginPoint.y + offset));\r\n case DiagramItem_1.ConnectionPointSide.West:\r\n return new segment_1.Segment(beginPoint, createPoint(beginPoint.x - offset, beginPoint.y));\r\n case DiagramItem_1.ConnectionPointSide.East:\r\n return new segment_1.Segment(beginPoint, createPoint(beginPoint.x + offset, beginPoint.y));\r\n default:\r\n return beginPoint;\r\n }\r\n };\r\n RightAngleConnectorRoutingMathOperations.createEndConnectionSegment = function (endConnectionSide, endPoint, offset, createPoint) {\r\n switch (endConnectionSide) {\r\n case DiagramItem_1.ConnectionPointSide.North:\r\n return new segment_1.Segment(createPoint(endPoint.x, endPoint.y - offset), endPoint);\r\n case DiagramItem_1.ConnectionPointSide.South:\r\n return new segment_1.Segment(createPoint(endPoint.x, endPoint.y + offset), endPoint);\r\n case DiagramItem_1.ConnectionPointSide.West:\r\n return new segment_1.Segment(createPoint(endPoint.x - offset, endPoint.y), endPoint);\r\n case DiagramItem_1.ConnectionPointSide.East:\r\n return new segment_1.Segment(createPoint(endPoint.x + offset, endPoint.y), endPoint);\r\n default:\r\n return endPoint;\r\n }\r\n };\r\n return RightAngleConnectorRoutingMathOperations;\r\n}());\r\nexports.RightAngleConnectorRoutingMathOperations = RightAngleConnectorRoutingMathOperations;\r\n\n\n/***/ }),\n/* 160 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.IntersectedShapeZone = exports.AStarMetrics = exports.IntersectedShapesMetrics = exports.TurnDirectionMetrics = exports.IntersectedShapeMetrics = exports.RightAngleTurnDirection = void 0;\r\nvar point_1 = __webpack_require__(1);\r\nvar metrics_1 = __webpack_require__(36);\r\nvar RightAngleTurnDirection;\r\n(function (RightAngleTurnDirection) {\r\n RightAngleTurnDirection[RightAngleTurnDirection[\"Straight\"] = 0] = \"Straight\";\r\n RightAngleTurnDirection[RightAngleTurnDirection[\"Left\"] = 1] = \"Left\";\r\n RightAngleTurnDirection[RightAngleTurnDirection[\"Right\"] = 2] = \"Right\";\r\n RightAngleTurnDirection[RightAngleTurnDirection[\"Backwards\"] = 3] = \"Backwards\";\r\n})(RightAngleTurnDirection = exports.RightAngleTurnDirection || (exports.RightAngleTurnDirection = {}));\r\nvar IntersectedShapeMetrics = /** @class */ (function () {\r\n function IntersectedShapeMetrics(description, shapeMargin) {\r\n this.description = description;\r\n this.shapeMargin = shapeMargin;\r\n }\r\n IntersectedShapeMetrics.prototype.penalty = function (oldValue, distance, position, item) {\r\n var rectangle = item.rectangle;\r\n if (rectangle.containsPoint(position))\r\n return oldValue + this.description.shape * distance;\r\n var relativePenalty = this.createRelativeMarginPenalty(position, rectangle, this.shapeMargin);\r\n if (relativePenalty > 0)\r\n return oldValue + this.description.margin * relativePenalty * distance;\r\n return oldValue;\r\n };\r\n IntersectedShapeMetrics.prototype.createRelativeMarginPenalty = function (point, rectangle, margin) {\r\n var isTopPosition = this.isTopPosition(point, rectangle, margin);\r\n var isLeftPosition = this.isLeftPosition(point, rectangle, margin);\r\n var isBottomPosition = this.isBottomPosition(point, rectangle, margin);\r\n var isRightPosition = this.isRightPosition(point, rectangle, margin);\r\n if (isTopPosition) {\r\n if (isLeftPosition) {\r\n var extendedRectangle = rectangle.clone().inflate(margin);\r\n var extendedTopLeft = extendedRectangle.createPosition();\r\n var rectangleTopLeft = rectangle.createPosition();\r\n var topLeftDistance = metrics_1.Metrics.euclideanDistance(rectangleTopLeft, extendedTopLeft);\r\n var currentDistance = metrics_1.Metrics.euclideanDistance(rectangleTopLeft, point);\r\n return 1 - currentDistance / topLeftDistance;\r\n }\r\n if (isRightPosition) {\r\n var extendedRectangle = rectangle.clone().inflate(margin);\r\n var extendedTopRight = new point_1.Point(extendedRectangle.right, extendedRectangle.y);\r\n var rectangleTopRight = new point_1.Point(rectangle.right, rectangle.y);\r\n var topRightDistance = metrics_1.Metrics.euclideanDistance(rectangleTopRight, extendedTopRight);\r\n var currentDistance = metrics_1.Metrics.euclideanDistance(rectangleTopRight, point);\r\n return 1 - currentDistance / topRightDistance;\r\n }\r\n return 1 - (rectangle.y - point.y) / margin;\r\n }\r\n if (isBottomPosition) {\r\n if (isLeftPosition) {\r\n var extendedRectangle = rectangle.clone().inflate(margin);\r\n var extendedBottomLeft = new point_1.Point(extendedRectangle.x, extendedRectangle.bottom);\r\n var rectangleBottomLeft = new point_1.Point(rectangle.x, rectangle.bottom);\r\n var bottomLeftDistance = metrics_1.Metrics.euclideanDistance(rectangleBottomLeft, extendedBottomLeft);\r\n var currentDistance = metrics_1.Metrics.euclideanDistance(rectangleBottomLeft, point);\r\n return 1 - currentDistance / bottomLeftDistance;\r\n }\r\n if (isRightPosition) {\r\n var extendedRectangle = rectangle.clone().inflate(margin);\r\n var extendedBottomRight = new point_1.Point(extendedRectangle.right, extendedRectangle.bottom);\r\n var rectangleBottomRight = new point_1.Point(rectangle.right, rectangle.bottom);\r\n var bottomRightDistance = metrics_1.Metrics.euclideanDistance(rectangleBottomRight, extendedBottomRight);\r\n var currentDistance = metrics_1.Metrics.euclideanDistance(rectangleBottomRight, point);\r\n return 1 - currentDistance / bottomRightDistance;\r\n }\r\n return 1 - (point.y - rectangle.bottom) / margin;\r\n }\r\n if (isLeftPosition)\r\n return 1 - (rectangle.x - point.x) / margin;\r\n if (isRightPosition)\r\n return 1 - (point.x - rectangle.right) / margin;\r\n return 0;\r\n };\r\n IntersectedShapeMetrics.prototype.isTopPosition = function (point, rectangle, margin) {\r\n return point.x > rectangle.x - margin && point.x < rectangle.right + margin &&\r\n point.y > rectangle.y - margin && point.y < rectangle.y;\r\n };\r\n IntersectedShapeMetrics.prototype.isBottomPosition = function (point, rectangle, margin) {\r\n return point.x > rectangle.x - margin && point.x < rectangle.right + margin &&\r\n point.y > rectangle.bottom && point.y < rectangle.bottom + margin;\r\n };\r\n IntersectedShapeMetrics.prototype.isLeftPosition = function (point, rectangle, margin) {\r\n return point.x > rectangle.x - margin && point.x < rectangle.x &&\r\n point.y > rectangle.y - margin && point.y < rectangle.bottom + margin;\r\n };\r\n IntersectedShapeMetrics.prototype.isRightPosition = function (point, rectangle, margin) {\r\n return point.x > rectangle.right && point.x < rectangle.right + margin &&\r\n point.y > rectangle.y - margin && point.y < rectangle.bottom + margin;\r\n };\r\n return IntersectedShapeMetrics;\r\n}());\r\nexports.IntersectedShapeMetrics = IntersectedShapeMetrics;\r\nvar TurnDirectionMetrics = /** @class */ (function () {\r\n function TurnDirectionMetrics(description) {\r\n this.description = description;\r\n }\r\n TurnDirectionMetrics.prototype.penalty = function (oldValue, turnDirection) {\r\n switch (turnDirection) {\r\n case RightAngleTurnDirection.Backwards: return oldValue * this.description.turnBack;\r\n case RightAngleTurnDirection.Left: return oldValue * this.description.turnLeft;\r\n case RightAngleTurnDirection.Right: return oldValue * this.description.turnRight;\r\n }\r\n return oldValue;\r\n };\r\n return TurnDirectionMetrics;\r\n}());\r\nexports.TurnDirectionMetrics = TurnDirectionMetrics;\r\nvar IntersectedShapesMetrics = /** @class */ (function () {\r\n function IntersectedShapesMetrics(shapeMetrics) {\r\n this.shapeMetrics = shapeMetrics;\r\n }\r\n IntersectedShapesMetrics.prototype.penalty = function (oldValue, distance, position, intersectedItems) {\r\n var _this = this;\r\n if (!intersectedItems || !intersectedItems.length)\r\n return oldValue;\r\n var result = oldValue;\r\n intersectedItems.forEach(function (item) { return result = _this.shapeMetrics.penalty(result, distance, position, item); });\r\n return result;\r\n };\r\n return IntersectedShapesMetrics;\r\n}());\r\nexports.IntersectedShapesMetrics = IntersectedShapesMetrics;\r\nvar AStarMetrics = /** @class */ (function () {\r\n function AStarMetrics(turnDirectionMetrics, shapesMetrics) {\r\n this.turnDirectionMetrics = turnDirectionMetrics;\r\n this.shapesMetrics = shapesMetrics;\r\n }\r\n AStarMetrics.prototype.distance = function (point1, point2) {\r\n return metrics_1.Metrics.manhattanDistance(point1, point2);\r\n };\r\n AStarMetrics.prototype.penalty = function (distance, position, turnDirection, intersectedItems) {\r\n var result = distance;\r\n result = this.shapesMetrics.penalty(result, distance, position, intersectedItems);\r\n result = this.turnDirectionMetrics.penalty(result, turnDirection);\r\n return result;\r\n };\r\n return AStarMetrics;\r\n}());\r\nexports.AStarMetrics = AStarMetrics;\r\nvar IntersectedShapeZone;\r\n(function (IntersectedShapeZone) {\r\n IntersectedShapeZone[IntersectedShapeZone[\"None\"] = 0] = \"None\";\r\n IntersectedShapeZone[IntersectedShapeZone[\"Shape\"] = 1] = \"Shape\";\r\n IntersectedShapeZone[IntersectedShapeZone[\"Margin\"] = 2] = \"Margin\";\r\n})(IntersectedShapeZone = exports.IntersectedShapeZone || (exports.IntersectedShapeZone = {}));\r\n\n\n/***/ }),\n/* 161 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.TOUCH_ACTION_NONE = void 0;\r\nexports.TOUCH_ACTION_NONE = \"dxdi-touch-action\";\r\n\n\n/***/ }),\n/* 162 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DeleteCommand = void 0;\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar DeleteCommand = /** @class */ (function (_super) {\r\n __extends(DeleteCommand, _super);\r\n function DeleteCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DeleteCommand.prototype.isEnabled = function () {\r\n var items = this.control.selection.getSelectedItems();\r\n return _super.prototype.isEnabled.call(this) && items.length && (items.length > 1 || this.permissionsProvider.canDeleteItems(items));\r\n };\r\n DeleteCommand.prototype.executeCore = function (state) {\r\n var items = this.control.selection.getSelectedItems(true, true);\r\n this.permissionsProvider.beginDeleteItems(items);\r\n ModelUtils_1.ModelUtils.deleteSelection(this.control.history, this.control.model, this.control.selection);\r\n this.permissionsProvider.endDeleteItems();\r\n return true;\r\n };\r\n Object.defineProperty(DeleteCommand.prototype, \"isPermissionsRequired\", {\r\n get: function () { return true; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return DeleteCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.DeleteCommand = DeleteCommand;\r\n\n\n/***/ }),\n/* 163 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Flag = (function () {\r\n function Flag(initValue) {\r\n if (initValue === void 0) { initValue = 0; }\r\n this.value = initValue;\r\n }\r\n Flag.prototype.get = function (enumVal) {\r\n return (this.value & enumVal) === enumVal;\r\n };\r\n Flag.prototype.set = function (enumVal, newValue) {\r\n var currVal = (this.value & enumVal) === enumVal;\r\n if (currVal !== newValue) {\r\n if (newValue)\r\n this.value |= enumVal;\r\n else\r\n this.value ^= enumVal;\r\n }\r\n return this;\r\n };\r\n Flag.prototype.add = function (value) {\r\n this.value |= value;\r\n };\r\n Flag.prototype.anyOf = function () {\r\n var flags = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n flags[_i] = arguments[_i];\r\n }\r\n for (var _a = 0, flags_1 = flags; _a < flags_1.length; _a++) {\r\n var flag = flags_1[_a];\r\n if ((this.value & flag) === flag)\r\n return true;\r\n }\r\n return false;\r\n };\r\n Flag.prototype.getValue = function () {\r\n return this.value;\r\n };\r\n Flag.prototype.clone = function () {\r\n return new Flag(this.value);\r\n };\r\n return Flag;\r\n}());\r\nexports.Flag = Flag;\r\n\n\n/***/ }),\n/* 164 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar list_1 = __webpack_require__(82);\r\nvar search_1 = __webpack_require__(42);\r\nvar fixed_1 = __webpack_require__(108);\r\nvar collector_1 = __webpack_require__(169);\r\nvar IntervalAlgorithms = (function () {\r\n function IntervalAlgorithms() {\r\n }\r\n IntervalAlgorithms.oneConstainsOtherArraysOfInterval = function (mergedIntervalsA, intervalsB) {\r\n var shouldBeContais = list_1.ListUtils.deepCopy(intervalsB);\r\n var currenInterval = shouldBeContais.pop();\r\n while (currenInterval) {\r\n if (!list_1.ListUtils.unsafeAnyOf(mergedIntervalsA, function (mergedInterval) { return mergedInterval.containsInterval(currenInterval); }))\r\n return false;\r\n currenInterval = shouldBeContais.pop();\r\n }\r\n return true;\r\n };\r\n IntervalAlgorithms.getIntersection = function (intervalA, intervalB) {\r\n return IntervalAlgorithms.getIntersectionTemplate(intervalA, intervalB, intervalA);\r\n };\r\n IntervalAlgorithms.getIntersectionTemplate = function (intervalA, intervalB, template) {\r\n var start = Math.max(intervalA.start, intervalB.start);\r\n var end = Math.min(intervalA.end, intervalB.end);\r\n if (start > end)\r\n return null;\r\n return template.makeByStartEnd(start, end);\r\n };\r\n IntervalAlgorithms.getIntersectionNonNullLength = function (intervalA, intervalB) {\r\n return IntervalAlgorithms.getIntersectionNonNullLengthTemplate(intervalA, intervalB, intervalA);\r\n };\r\n IntervalAlgorithms.getIntersectionNonNullLengthTemplate = function (intervalA, intervalB, template) {\r\n var inters = IntervalAlgorithms.getIntersectionTemplate(intervalA, intervalB, template);\r\n return inters && inters.length ? inters : null;\r\n };\r\n IntervalAlgorithms.getIntersectionsTwoArraysOfInterval = function (intervalsA, intervalsB) {\r\n return IntervalAlgorithms.getIntersectionsTwoArraysOfIntervalTemplate(intervalsA, intervalsB, intervalsA[0]);\r\n };\r\n IntervalAlgorithms.getIntersectionsTwoArraysOfIntervalTemplate = function (intervalsA, intervalsB, template) {\r\n var result = [];\r\n var lengthIntervalsA = intervalsA.length;\r\n var lengthIntervalsB = intervalsB.length;\r\n var intervalsAIndex = 0;\r\n var intervalsBIndex = 0;\r\n var currAInterval = intervalsA[intervalsAIndex];\r\n var currBInterval = intervalsB[intervalsBIndex];\r\n var currResultInterval = null;\r\n while (intervalsAIndex < lengthIntervalsA && intervalsBIndex < lengthIntervalsB) {\r\n var intersection = IntervalAlgorithms.getIntersectionTemplate(currAInterval, currBInterval, template);\r\n if (intersection) {\r\n if (currResultInterval && currResultInterval.end === intersection.start)\r\n currResultInterval.length += intersection.length;\r\n else {\r\n currResultInterval = intersection;\r\n result.push(currResultInterval);\r\n }\r\n }\r\n if (currAInterval.end < currBInterval.end) {\r\n intervalsAIndex++;\r\n currAInterval = intervalsA[intervalsAIndex];\r\n }\r\n else {\r\n intervalsBIndex++;\r\n currBInterval = intervalsB[intervalsBIndex];\r\n }\r\n }\r\n return result;\r\n };\r\n IntervalAlgorithms.getAffectedObjects = function (objects, intervals, getFirstIndex, conflictResolver) {\r\n if (getFirstIndex === void 0) { getFirstIndex = function (start) {\r\n return search_1.SearchUtils.normedInterpolationIndexOf(objects, function (obj) { return obj.interval.start; }, start);\r\n }; }\r\n if (conflictResolver === void 0) { conflictResolver = function (objectInterval, touchingIntervalLength, touchPoint) {\r\n return objectInterval.start === touchPoint && touchingIntervalLength === 0;\r\n }; }\r\n return IntervalAlgorithms.getAffectedObjectsTemplate(objects, intervals, intervals[0], getFirstIndex, conflictResolver);\r\n };\r\n IntervalAlgorithms.getAffectedObjectsTemplate = function (objects, intervals, template, getFirstIndex, conflictResolver) {\r\n if (getFirstIndex === void 0) { getFirstIndex = function (start) {\r\n return search_1.SearchUtils.normedInterpolationIndexOf(objects, function (obj) { return obj.interval.start; }, start);\r\n }; }\r\n if (conflictResolver === void 0) { conflictResolver = function (objectInterval, touchingIntervalLength, touchPoint) {\r\n return objectInterval.start === touchPoint && touchingIntervalLength === 0;\r\n }; }\r\n var collector = new collector_1.SparseIntervalsCollector(template);\r\n for (var _i = 0, intervals_1 = intervals; _i < intervals_1.length; _i++) {\r\n var interval = intervals_1[_i];\r\n var ind = Math.max(0, getFirstIndex(interval.start, objects));\r\n for (var obj = void 0; obj = objects[ind]; ind++) {\r\n var objInterval = obj.interval;\r\n if (objInterval.start > interval.end)\r\n break;\r\n var intersection = IntervalAlgorithms.getIntersectionTemplate(objInterval, interval, template);\r\n if (intersection && (intersection.length || conflictResolver(objInterval, interval.length, intersection.start)))\r\n collector.add(ind);\r\n }\r\n }\r\n return collector.getIntervals();\r\n };\r\n IntervalAlgorithms.handleAffectedObjects = function (objects, intervals, callback, getFirstIndex) {\r\n if (getFirstIndex === void 0) { getFirstIndex = function (start) {\r\n return search_1.SearchUtils.normedInterpolationIndexOf(objects, function (obj) { return obj.interval.start; }, start);\r\n }; }\r\n var template = new fixed_1.FixedInterval(0, 0);\r\n for (var _i = 0, intervals_2 = intervals; _i < intervals_2.length; _i++) {\r\n var interval = intervals_2[_i];\r\n var ind = Math.max(0, getFirstIndex(interval.start, objects));\r\n for (var obj = void 0; obj = objects[ind]; ind++) {\r\n var objInterval = obj.interval;\r\n if (objInterval.start > interval.end)\r\n break;\r\n var intersection = IntervalAlgorithms.getIntersectionTemplate(objInterval, interval, template);\r\n if (intersection)\r\n callback(obj, ind, interval, intersection);\r\n }\r\n }\r\n };\r\n IntervalAlgorithms.getMergedIntervals = function (intervals, needSort) {\r\n return IntervalAlgorithms.getMergedIntervalsTemplate(intervals, needSort, intervals[0]);\r\n };\r\n IntervalAlgorithms.getMergedIntervalsTemplate = function (intervals, needSort, template) {\r\n if (intervals.length < 2)\r\n return intervals.length > 0 ? [template.makeByStartLength(intervals[0].start, intervals[0].length)] : [];\r\n var sortedIntervals = needSort ?\r\n [].concat(intervals).sort(function (a, b) { return a.start - b.start; }) :\r\n intervals;\r\n var result = [];\r\n for (var i = 0, interval = void 0; interval = sortedIntervals[i];) {\r\n var minBound = interval.start;\r\n var maxBound = interval.end;\r\n for (++i; (interval = sortedIntervals[i]) !== undefined && (interval.start <= maxBound); i++) {\r\n if (interval.end > maxBound)\r\n maxBound = interval.end;\r\n }\r\n result.push(template.makeByStartEnd(minBound, maxBound));\r\n }\r\n return result;\r\n };\r\n IntervalAlgorithms.reflectIntervals = function (intervals, bounds) {\r\n return IntervalAlgorithms.reflectIntervalsTemplate(intervals, bounds, bounds);\r\n };\r\n IntervalAlgorithms.reflectIntervalsTemplate = function (intervals, bounds, template) {\r\n if (!intervals.length)\r\n return [template.makeByStartLength(bounds.start, bounds.length)];\r\n var lastIntervalEnd = list_1.ListUtils.last(intervals).end;\r\n var result = list_1.ListUtils.reducedMap(intervals, function (curr, i) {\r\n return IntervalAlgorithms.getIntersectionNonNullLengthTemplate(template.makeByStartEnd(intervals[i - 1].end, curr.start), bounds, template);\r\n }, 1);\r\n if (bounds.start < intervals[0].start)\r\n result.unshift(template.makeByStartEnd(bounds.start, intervals[0].start));\r\n if (bounds.end > lastIntervalEnd)\r\n result.push(template.makeByStartEnd(lastIntervalEnd, bounds.end));\r\n return result;\r\n };\r\n IntervalAlgorithms.reflectionOfPointOnInterval = function (value, valInterval, targetInterval) {\r\n return (value - valInterval.start) / valInterval.length * targetInterval.length + targetInterval.start;\r\n };\r\n return IntervalAlgorithms;\r\n}());\r\nexports.IntervalAlgorithms = IntervalAlgorithms;\r\n\n\n/***/ }),\n/* 165 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(57);\r\nvar MinMax = (function () {\r\n function MinMax(minElement, maxElement) {\r\n this.minElement = minElement;\r\n this.maxElement = maxElement;\r\n }\r\n return MinMax;\r\n}());\r\nexports.MinMax = MinMax;\r\nvar MinMaxNumber = (function (_super) {\r\n tslib_1.__extends(MinMaxNumber, _super);\r\n function MinMaxNumber() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(MinMaxNumber.prototype, \"length\", {\r\n get: function () {\r\n return this.maxElement - this.minElement;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return MinMaxNumber;\r\n}(MinMax));\r\nexports.MinMaxNumber = MinMaxNumber;\r\nvar ExtendedMin = (function () {\r\n function ExtendedMin(minElement, minValue) {\r\n this.minElement = minElement;\r\n this.minValue = minValue;\r\n }\r\n return ExtendedMin;\r\n}());\r\nexports.ExtendedMin = ExtendedMin;\r\nvar ExtendedMax = (function () {\r\n function ExtendedMax(maxElement, maxValue) {\r\n this.maxElement = maxElement;\r\n this.maxValue = maxValue;\r\n }\r\n return ExtendedMax;\r\n}());\r\nexports.ExtendedMax = ExtendedMax;\r\nvar ExtendedMinMax = (function (_super) {\r\n tslib_1.__extends(ExtendedMinMax, _super);\r\n function ExtendedMinMax(minElement, minValue, maxElement, maxValue) {\r\n var _this = _super.call(this, minElement, maxElement) || this;\r\n _this.minValue = minValue;\r\n _this.maxValue = maxValue;\r\n return _this;\r\n }\r\n return ExtendedMinMax;\r\n}(MinMax));\r\nexports.ExtendedMinMax = ExtendedMinMax;\r\n\n\n/***/ }),\n/* 166 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Comparers = (function () {\r\n function Comparers() {\r\n }\r\n Comparers.number = function (a, b) {\r\n return a - b;\r\n };\r\n Comparers.string = function (a, b) {\r\n return ((a === b) ? 0 : ((a > b) ? 1 : -1));\r\n };\r\n Comparers.stringIgnoreCase = function (a, b) {\r\n a = a.toLowerCase();\r\n b = b.toLowerCase();\r\n return ((a === b) ? 0 : ((a > b) ? 1 : -1));\r\n };\r\n return Comparers;\r\n}());\r\nexports.Comparers = Comparers;\r\nvar Equals = (function () {\r\n function Equals() {\r\n }\r\n Equals.simpleType = function (a, b) {\r\n return a === b;\r\n };\r\n Equals.object = function (a, b) {\r\n return a && b && (a === b || a.equals(b));\r\n };\r\n return Equals;\r\n}());\r\nexports.Equals = Equals;\r\n\n\n/***/ }),\n/* 167 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(57);\r\nvar const_1 = __webpack_require__(168);\r\nvar MutableInterval = (function (_super) {\r\n tslib_1.__extends(MutableInterval, _super);\r\n function MutableInterval() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MutableInterval.prototype.normalizeLength = function () {\r\n if (this.length < 0)\r\n this.length = 0;\r\n return this;\r\n };\r\n return MutableInterval;\r\n}(const_1.ConstInterval));\r\nexports.MutableInterval = MutableInterval;\r\n\n\n/***/ }),\n/* 168 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ConstInterval = (function () {\r\n function ConstInterval() {\r\n }\r\n Object.defineProperty(ConstInterval.prototype, \"center\", {\r\n get: function () {\r\n return this.start + (this.length / 2);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ConstInterval.prototype.isNormalized = function () {\r\n return this.end >= this.start;\r\n };\r\n ConstInterval.prototype.isCollapsed = function () {\r\n return this.length === 0;\r\n };\r\n ConstInterval.prototype.equals = function (obj) {\r\n return this.start === obj.start && this.end === obj.end;\r\n };\r\n ConstInterval.isCollapsed = function (intervals) {\r\n return !intervals[1] && intervals[0].isCollapsed();\r\n };\r\n ConstInterval.prototype.containsInterval = function (interval) {\r\n return this.start <= interval.start && this.end >= interval.end;\r\n };\r\n ConstInterval.prototype.containsIntervalWithoutEnd = function (interval) {\r\n return this.start <= interval.start && this.end > interval.end;\r\n };\r\n ConstInterval.prototype.contains = function (pos) {\r\n return this.start <= pos && pos < this.end;\r\n };\r\n ConstInterval.prototype.containsWithIntervalEnd = function (val) {\r\n return this.start <= val && val <= this.end;\r\n };\r\n ConstInterval.prototype.containsWithoutIntervalEndAndStart = function (pos) {\r\n return this.start < pos && pos < this.end;\r\n };\r\n return ConstInterval;\r\n}());\r\nexports.ConstInterval = ConstInterval;\r\n\n\n/***/ }),\n/* 169 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar intervals_1 = __webpack_require__(170);\r\nvar SparseIntervalsCollector = (function () {\r\n function SparseIntervalsCollector(template) {\r\n this.intervals = [];\r\n this.template = template;\r\n }\r\n SparseIntervalsCollector.prototype.add = function (index) {\r\n if (this.curr && this.curr.end === index) {\r\n this.curr.length++;\r\n return;\r\n }\r\n this.curr = this.template.makeByStartLength(index, 1);\r\n this.intervals.push(this.curr);\r\n };\r\n SparseIntervalsCollector.prototype.getIntervals = function () {\r\n return new intervals_1.SparseIntervals(this.intervals);\r\n };\r\n return SparseIntervalsCollector;\r\n}());\r\nexports.SparseIntervalsCollector = SparseIntervalsCollector;\r\n\n\n/***/ }),\n/* 170 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar iterator_1 = __webpack_require__(109);\r\nvar objects_iterator_1 = __webpack_require__(171);\r\nvar SparseIntervals = (function () {\r\n function SparseIntervals(list) {\r\n if (list === void 0) { list = []; }\r\n this.list = list;\r\n this._count = 0;\r\n this._numIntervals = 0;\r\n for (var _i = 0, list_1 = list; _i < list_1.length; _i++) {\r\n var curr = list_1[_i];\r\n this._count += curr.length;\r\n this._numIntervals++;\r\n }\r\n }\r\n Object.defineProperty(SparseIntervals.prototype, \"count\", {\r\n get: function () {\r\n return this._count;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SparseIntervals.prototype, \"numIntervals\", {\r\n get: function () {\r\n return this._numIntervals;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n SparseIntervals.prototype.getInterval = function (index) {\r\n return this.list[index];\r\n };\r\n SparseIntervals.prototype.getNativeIterator = function () {\r\n return new iterator_1.SparseIntervalsIterator(this);\r\n };\r\n SparseIntervals.prototype.getObjectsIterator = function (objects) {\r\n return new objects_iterator_1.SparseObjectsIterator(this, objects);\r\n };\r\n return SparseIntervals;\r\n}());\r\nexports.SparseIntervals = SparseIntervals;\r\n\n\n/***/ }),\n/* 171 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(57);\r\nvar iterator_1 = __webpack_require__(109);\r\nvar SparseObjectsIterator = (function (_super) {\r\n tslib_1.__extends(SparseObjectsIterator, _super);\r\n function SparseObjectsIterator(sparseIntervals, objects) {\r\n var _this = _super.call(this, sparseIntervals) || this;\r\n _this.objects = objects;\r\n return _this;\r\n }\r\n SparseObjectsIterator.prototype.initObject = function () {\r\n this.obj = this.objects[this.index];\r\n };\r\n return SparseObjectsIterator;\r\n}(iterator_1.SparseIntervalsIterator));\r\nexports.SparseObjectsIterator = SparseObjectsIterator;\r\n\n\n/***/ }),\n/* 172 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.TextFloodFilterPrimitive = exports.TextFilterPrimitive = void 0;\r\nvar RenderHelper_1 = __webpack_require__(15);\r\nvar FilterPrimitive_1 = __webpack_require__(110);\r\nvar Model_1 = __webpack_require__(61);\r\nvar color_1 = __webpack_require__(22);\r\nvar TextFilterPrimitive = /** @class */ (function (_super) {\r\n __extends(TextFilterPrimitive, _super);\r\n function TextFilterPrimitive(id, x, y, width, height) {\r\n if (x === void 0) { x = \"-0.05\"; }\r\n if (y === void 0) { y = \"-0.05\"; }\r\n if (width === void 0) { width = \"1.1\"; }\r\n if (height === void 0) { height = \"1.1\"; }\r\n var _this = _super.call(this, id, x, y, width, height) || this;\r\n _this.id = id;\r\n _this.x = x;\r\n _this.y = y;\r\n _this.width = width;\r\n _this.height = height;\r\n return _this;\r\n }\r\n TextFilterPrimitive.prototype.createChildElements = function (parent) {\r\n var feFlood = document.createElementNS(RenderHelper_1.svgNS, \"feFlood\");\r\n parent.appendChild(feFlood);\r\n var feComposite = document.createElementNS(RenderHelper_1.svgNS, \"feComposite\");\r\n feComposite.setAttribute(\"in\", \"SourceGraphic\");\r\n feComposite.setAttribute(\"operator\", \"atop\");\r\n parent.appendChild(feComposite);\r\n };\r\n return TextFilterPrimitive;\r\n}(FilterPrimitive_1.FilterPrimitive));\r\nexports.TextFilterPrimitive = TextFilterPrimitive;\r\nvar TextFloodFilterPrimitive = /** @class */ (function (_super) {\r\n __extends(TextFloodFilterPrimitive, _super);\r\n function TextFloodFilterPrimitive(id, floodColor, x, y, width, height) {\r\n if (x === void 0) { x = \"-0.05\"; }\r\n if (y === void 0) { y = \"-0.05\"; }\r\n if (width === void 0) { width = \"1.1\"; }\r\n if (height === void 0) { height = \"1.1\"; }\r\n var _this = _super.call(this, id, x, y, width, height) || this;\r\n _this.id = id;\r\n _this.floodColor = floodColor;\r\n _this.x = x;\r\n _this.y = y;\r\n _this.width = width;\r\n _this.height = height;\r\n return _this;\r\n }\r\n TextFloodFilterPrimitive.prototype.applyChildrenProperties = function (element) {\r\n for (var child = void 0, i = 0; child = element.childNodes[i]; i++)\r\n if (child.nodeName && child.nodeName.toUpperCase() === \"FEFLOOD\") {\r\n this.prepareFEFloodNode(child);\r\n break;\r\n }\r\n };\r\n TextFloodFilterPrimitive.prototype.prepareFEFloodNode = function (node) {\r\n var colorHash = color_1.ColorUtils.colorToHash(this.floodColor);\r\n node.setAttribute(\"flood-color\", colorHash);\r\n node.setAttribute(\"class\", \"text-filter-flood\");\r\n if (this.floodColor !== Model_1.DiagramModel.defaultPageColor)\r\n node.style.setProperty(\"flood-color\", colorHash);\r\n else\r\n node.style.setProperty(\"flood-color\", \"\");\r\n };\r\n return TextFloodFilterPrimitive;\r\n}(TextFilterPrimitive));\r\nexports.TextFloodFilterPrimitive = TextFloodFilterPrimitive;\r\n\n\n/***/ }),\n/* 173 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EncodeUtils = (function () {\r\n function EncodeUtils() {\r\n }\r\n EncodeUtils.encodeHtml = function (text) {\r\n return text\r\n .replace(/&/g, '&')\r\n .replace(//g, '>');\r\n };\r\n EncodeUtils.decodeHtml = function (text) {\r\n return text\r\n .replace(/&/g, '&')\r\n .replace(/</g, '<')\r\n .replace(/>/g, '>');\r\n };\r\n EncodeUtils.prepareTextForRequest = function (text) {\r\n return text\r\n .replace(/%/g, '%25')\r\n .replace(/&/g, '%26amp;')\r\n .replace(/\\+/g, '%2B')\r\n .replace(//g, '%26gt;')\r\n .replace(/\"/g, '%26quot;');\r\n };\r\n EncodeUtils.prepareTextForCallBackRequest = function (text) {\r\n return text\r\n .replace(/&/g, '&')\r\n .replace(//g, '>')\r\n .replace(/\"/g, '"');\r\n };\r\n EncodeUtils.decodeViaTextArea = function (html) {\r\n var textArea = document.createElement('TEXTAREA');\r\n textArea.innerHTML = html;\r\n return textArea.value;\r\n };\r\n return EncodeUtils;\r\n}());\r\nexports.EncodeUtils = EncodeUtils;\r\n\n\n/***/ }),\n/* 174 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar browser_1 = __webpack_require__(19);\r\nvar common_1 = __webpack_require__(34);\r\nvar TouchUtils = (function () {\r\n function TouchUtils() {\r\n }\r\n TouchUtils.onEventAttachingToDocument = function (eventName, func) {\r\n if (browser_1.Browser.MacOSMobilePlatform && TouchUtils.isTouchEventName(eventName)) {\r\n if (!TouchUtils.documentTouchHandlers[eventName])\r\n TouchUtils.documentTouchHandlers[eventName] = [];\r\n TouchUtils.documentTouchHandlers[eventName].push(func);\r\n return TouchUtils.documentEventAttachingAllowed;\r\n }\r\n return true;\r\n };\r\n TouchUtils.isTouchEventName = function (eventName) {\r\n return browser_1.Browser.WebKitTouchUI && (eventName.indexOf('touch') > -1 || eventName.indexOf('gesture') > -1);\r\n };\r\n TouchUtils.isTouchEvent = function (evt) {\r\n return browser_1.Browser.WebKitTouchUI && common_1.isDefined(evt.changedTouches);\r\n };\r\n TouchUtils.getEventX = function (evt) {\r\n return browser_1.Browser.IE ? evt.pageX : evt.changedTouches[0].pageX;\r\n };\r\n TouchUtils.getEventY = function (evt) {\r\n return browser_1.Browser.IE ? evt.pageY : evt.changedTouches[0].pageY;\r\n };\r\n TouchUtils.touchMouseDownEventName = browser_1.Browser.WebKitTouchUI ? 'touchstart' : (browser_1.Browser.Edge && browser_1.Browser.MSTouchUI && window.PointerEvent ? 'pointerdown' : 'mousedown');\r\n TouchUtils.touchMouseUpEventName = browser_1.Browser.WebKitTouchUI ? 'touchend' : (browser_1.Browser.Edge && browser_1.Browser.MSTouchUI && window.PointerEvent ? 'pointerup' : 'mouseup');\r\n TouchUtils.touchMouseMoveEventName = browser_1.Browser.WebKitTouchUI ? 'touchmove' : (browser_1.Browser.Edge && browser_1.Browser.MSTouchUI && window.PointerEvent ? 'pointermove' : 'mousemove');\r\n TouchUtils.msTouchDraggableClassName = 'dxMSTouchDraggable';\r\n TouchUtils.documentTouchHandlers = {};\r\n TouchUtils.documentEventAttachingAllowed = true;\r\n return TouchUtils;\r\n}());\r\nexports.TouchUtils = TouchUtils;\r\n\n\n/***/ }),\n/* 175 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(176).polyfill();\n\n\n/***/ }),\n/* 176 */\n/***/ (function(module, exports, __webpack_require__) {\n\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\n\nfunction 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 for (var i = 1; i < arguments.length; i++) {\n var nextSource = arguments[i];\n if (nextSource === undefined || nextSource === null) {\n continue;\n }\n\n var keysArray = Object.keys(Object(nextSource));\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n return to;\n}\n\nfunction 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\nmodule.exports = {\n assign: assign,\n polyfill: polyfill\n};\n\n\n/***/ }),\n/* 177 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar browser_1 = __webpack_require__(19);\r\nvar base64_1 = __webpack_require__(83);\r\nvar common_1 = __webpack_require__(34);\r\nvar FileUtils = (function () {\r\n function FileUtils() {\r\n }\r\n FileUtils.loadJavascriptFile = function (srcUri, callback) {\r\n var _a;\r\n var headElem = document.getElementsByTagName('head')[0];\r\n if (!headElem) {\r\n headElem = document.createElement('head');\r\n var bodyElem = document.getElementsByTagName('body')[0];\r\n (_a = bodyElem.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(headElem, bodyElem);\r\n }\r\n var scriptElem = document.createElement('script');\r\n scriptElem.onload = callback;\r\n scriptElem.src = srcUri;\r\n headElem.appendChild(scriptElem);\r\n return { htmlScriptElement: scriptElem };\r\n };\r\n FileUtils.startDownloadFileLocal = function (content, fileName) {\r\n if (content instanceof ArrayBuffer)\r\n content = base64_1.Base64Utils.fromArrayBuffer(content);\r\n if (common_1.isString(content))\r\n content = base64_1.Base64Utils.getFileFromBase64(content);\r\n if (window.navigator.msSaveOrOpenBlob)\r\n window.navigator.msSaveOrOpenBlob(content, fileName);\r\n else {\r\n var a_1 = document.createElement('a');\r\n var url_1 = URL.createObjectURL(content);\r\n a_1.href = url_1;\r\n a_1.download = fileName;\r\n document.body.appendChild(a_1);\r\n a_1.click();\r\n setTimeout(function () {\r\n document.body.removeChild(a_1);\r\n window.URL.revokeObjectURL(url_1);\r\n }, 0);\r\n }\r\n };\r\n FileUtils.createFile = function (fileBits, fileName, options) {\r\n var _a;\r\n if (browser_1.Browser.IE || browser_1.Browser.Edge && browser_1.Browser.MajorVersion < 86) {\r\n var blob = new Blob(fileBits, options);\r\n blob['lastModifiedDate'] = (_a = options === null || options === void 0 ? void 0 : options.lastModified) !== null && _a !== void 0 ? _a : Date.now();\r\n blob['name'] = fileName;\r\n return blob;\r\n }\r\n else\r\n return new File(fileBits, fileName, options);\r\n };\r\n FileUtils.isFile = function (file) {\r\n if (browser_1.Browser.IE || browser_1.Browser.Edge && browser_1.Browser.MajorVersion < 86)\r\n return (file instanceof File) || (file instanceof Blob && common_1.isDefined(file.name));\r\n else\r\n return file instanceof File;\r\n };\r\n return FileUtils;\r\n}());\r\nexports.FileUtils = FileUtils;\r\n\n\n/***/ }),\n/* 178 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar _a, _b, _c;\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.OpenXmlMimeType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\r\nexports.RtfMimeType = 'application/rtf';\r\nexports.PlainTextMimeType = 'text/plain';\r\nexports.DocmMimeType = 'application/vnd.ms-word.document.macroEnabled.12';\r\nexports.ImagePngMimeType = 'image/png';\r\nexports.ImageGifMimeType = 'image/gif';\r\nexports.ImageJpegMimeType = 'image/jpeg';\r\nexports.ImagePjpegMimeType = 'image/pjpeg';\r\nexports.ImageSvgMimeType = 'image/svg+xml';\r\nexports.ImageTiffMimeType = 'image/tiff';\r\nexports.ImageIcoMimeType = 'image/vnd.microsoft.icon';\r\nexports.ImageWbmpMimeType = 'image/vnd.wap.wbmp';\r\nexports.ImageWebpMimeType = 'image/webp';\r\nvar DxMimeType;\r\n(function (DxMimeType) {\r\n DxMimeType[DxMimeType[\"Unknown\"] = 0] = \"Unknown\";\r\n DxMimeType[DxMimeType[\"OpenXml\"] = 1] = \"OpenXml\";\r\n DxMimeType[DxMimeType[\"Rtf\"] = 2] = \"Rtf\";\r\n DxMimeType[DxMimeType[\"PlainText\"] = 3] = \"PlainText\";\r\n DxMimeType[DxMimeType[\"Docm\"] = 4] = \"Docm\";\r\n DxMimeType[DxMimeType[\"Png\"] = 5] = \"Png\";\r\n DxMimeType[DxMimeType[\"Gif\"] = 6] = \"Gif\";\r\n DxMimeType[DxMimeType[\"Jpeg\"] = 7] = \"Jpeg\";\r\n DxMimeType[DxMimeType[\"Pjpeg\"] = 8] = \"Pjpeg\";\r\n DxMimeType[DxMimeType[\"Svg\"] = 9] = \"Svg\";\r\n DxMimeType[DxMimeType[\"Tiff\"] = 10] = \"Tiff\";\r\n DxMimeType[DxMimeType[\"Ico\"] = 11] = \"Ico\";\r\n DxMimeType[DxMimeType[\"Wbmp\"] = 12] = \"Wbmp\";\r\n DxMimeType[DxMimeType[\"Webp\"] = 13] = \"Webp\";\r\n})(DxMimeType = exports.DxMimeType || (exports.DxMimeType = {}));\r\nvar MimeTypeUtils = (function () {\r\n function MimeTypeUtils() {\r\n }\r\n MimeTypeUtils.stringTypeToExtension = function (mimeTypeAsStr) {\r\n var mimeType = MimeTypeUtils.stringTypeToTypeMap[mimeTypeAsStr];\r\n return mimeType === undefined ? '' : MimeTypeUtils.typeToExtensionMap[mimeType];\r\n };\r\n MimeTypeUtils.typeToExtension = function (mimeType) {\r\n var ext = MimeTypeUtils.typeToExtensionMap[mimeType];\r\n return ext !== null && ext !== void 0 ? ext : '';\r\n };\r\n MimeTypeUtils.extensionToType = function (extension) {\r\n extension = extension.toLowerCase();\r\n if (extension[0] !== '.')\r\n extension += '.';\r\n var mimeType = MimeTypeUtils.extensionToTypeMap[extension];\r\n return mimeType !== null && mimeType !== void 0 ? mimeType : DxMimeType.Unknown;\r\n };\r\n MimeTypeUtils.typeToStringType = function (mimeType) {\r\n var str = MimeTypeUtils.typeToStringTypeMap[mimeType];\r\n return str !== null && str !== void 0 ? str : '';\r\n };\r\n MimeTypeUtils.stringTypeToType = function (mimeTypeAsStr) {\r\n var mimeType = MimeTypeUtils.stringTypeToTypeMap[mimeTypeAsStr];\r\n return mimeType === undefined ? DxMimeType.Unknown : mimeType;\r\n };\r\n MimeTypeUtils.stringTypeToTypeMap = (_a = {},\r\n _a[exports.OpenXmlMimeType] = DxMimeType.OpenXml,\r\n _a[exports.RtfMimeType] = DxMimeType.Rtf,\r\n _a[exports.PlainTextMimeType] = DxMimeType.PlainText,\r\n _a[exports.DocmMimeType] = DxMimeType.Docm,\r\n _a[exports.ImagePngMimeType] = DxMimeType.Png,\r\n _a[exports.ImageGifMimeType] = DxMimeType.Gif,\r\n _a[exports.ImageJpegMimeType] = DxMimeType.Jpeg,\r\n _a[exports.ImagePjpegMimeType] = DxMimeType.Pjpeg,\r\n _a[exports.ImageSvgMimeType] = DxMimeType.Svg,\r\n _a[exports.ImageTiffMimeType] = DxMimeType.Tiff,\r\n _a[exports.ImageIcoMimeType] = DxMimeType.Ico,\r\n _a[exports.ImageWbmpMimeType] = DxMimeType.Wbmp,\r\n _a[exports.ImageWebpMimeType] = DxMimeType.Webp,\r\n _a);\r\n MimeTypeUtils.typeToStringTypeMap = (_b = {},\r\n _b[DxMimeType.Unknown] = undefined,\r\n _b[DxMimeType.OpenXml] = exports.OpenXmlMimeType,\r\n _b[DxMimeType.Rtf] = exports.RtfMimeType,\r\n _b[DxMimeType.PlainText] = exports.PlainTextMimeType,\r\n _b[DxMimeType.Docm] = exports.DocmMimeType,\r\n _b[DxMimeType.Png] = exports.ImagePngMimeType,\r\n _b[DxMimeType.Gif] = exports.ImageGifMimeType,\r\n _b[DxMimeType.Jpeg] = exports.ImageJpegMimeType,\r\n _b[DxMimeType.Pjpeg] = exports.ImagePjpegMimeType,\r\n _b[DxMimeType.Svg] = exports.ImageSvgMimeType,\r\n _b[DxMimeType.Tiff] = exports.ImageTiffMimeType,\r\n _b[DxMimeType.Ico] = exports.ImageIcoMimeType,\r\n _b[DxMimeType.Wbmp] = exports.ImageWbmpMimeType,\r\n _b[DxMimeType.Webp] = exports.ImageWebpMimeType,\r\n _b);\r\n MimeTypeUtils.typeToExtensionMap = (_c = {},\r\n _c[DxMimeType.Unknown] = undefined,\r\n _c[DxMimeType.OpenXml] = '.docx',\r\n _c[DxMimeType.Rtf] = '.rtf',\r\n _c[DxMimeType.PlainText] = '.txt',\r\n _c[DxMimeType.Docm] = '.docm',\r\n _c[DxMimeType.Png] = '.png',\r\n _c[DxMimeType.Gif] = '.gif',\r\n _c[DxMimeType.Jpeg] = '.jpeg',\r\n _c[DxMimeType.Pjpeg] = '.pjpeg',\r\n _c[DxMimeType.Svg] = '.svg',\r\n _c[DxMimeType.Tiff] = '.tiff',\r\n _c[DxMimeType.Ico] = '.ico',\r\n _c[DxMimeType.Wbmp] = '.wbmp',\r\n _c[DxMimeType.Webp] = '.webp',\r\n _c);\r\n MimeTypeUtils.extensionToTypeMap = {\r\n '.docx': DxMimeType.OpenXml,\r\n '.rtf': DxMimeType.Rtf,\r\n '.txt': DxMimeType.PlainText,\r\n '.docm': DxMimeType.Docm,\r\n '.png': DxMimeType.Png,\r\n '.gif': DxMimeType.Gif,\r\n '.jpeg': DxMimeType.Jpeg,\r\n '.pjpeg': DxMimeType.Pjpeg,\r\n '.svg': DxMimeType.Svg,\r\n '.tiff': DxMimeType.Tiff,\r\n '.ico': DxMimeType.Ico,\r\n '.wbmp': DxMimeType.Wbmp,\r\n '.webp': DxMimeType.Webp,\r\n };\r\n return MimeTypeUtils;\r\n}());\r\nexports.MimeTypeUtils = MimeTypeUtils;\r\n\n\n/***/ }),\n/* 179 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ConnectorPointsCalculator = void 0;\r\nvar ConnectorPointsCalculatorBase_1 = __webpack_require__(113);\r\nvar ConnectorRenderPoint_1 = __webpack_require__(29);\r\nvar ConnectorPointsCalculator = /** @class */ (function (_super) {\r\n __extends(ConnectorPointsCalculator, _super);\r\n function ConnectorPointsCalculator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ConnectorPointsCalculator.prototype.getPoints = function () {\r\n return this.connector.points.map(function (pt, index) { return new ConnectorRenderPoint_1.ConnectorRenderPoint(pt.x, pt.y, index); });\r\n };\r\n return ConnectorPointsCalculator;\r\n}(ConnectorPointsCalculatorBase_1.ConnectorPointsCalculatorBase));\r\nexports.ConnectorPointsCalculator = ConnectorPointsCalculator;\r\n\n\n/***/ }),\n/* 180 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ConnectorPointsOrthogonalCalculator = void 0;\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar ConnectorPointsCalculatorBase_1 = __webpack_require__(113);\r\nvar ConnectorPointsOrthogonalUndefinedSideCalculator_1 = __webpack_require__(181);\r\nvar ConnectorPointsOrthogonalSouthSideCalculator_1 = __webpack_require__(182);\r\nvar ConnectorPointsOrthogonalNorthSideCalculator_1 = __webpack_require__(183);\r\nvar ConnectorPointsOrthogonalEastSideCalculator_1 = __webpack_require__(184);\r\nvar ConnectorPointsOrthogonalWestSideCalculator_1 = __webpack_require__(185);\r\nvar ConnectorRenderPoint_1 = __webpack_require__(29);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar ConnectorPointsOrthogonalCalculator = /** @class */ (function (_super) {\r\n __extends(ConnectorPointsOrthogonalCalculator, _super);\r\n function ConnectorPointsOrthogonalCalculator(connector) {\r\n var _this = _super.call(this, connector) || this;\r\n _this.sideCalculators = {};\r\n _this.sideCalculators[DiagramItem_1.ConnectionPointSide.Undefined] = new ConnectorPointsOrthogonalUndefinedSideCalculator_1.ConnectorPointsOrthogonalUndefinedSideCalculator(_this);\r\n _this.sideCalculators[DiagramItem_1.ConnectionPointSide.South] = new ConnectorPointsOrthogonalSouthSideCalculator_1.ConnectorPointsOrthogonalSouthSideCalculator(_this);\r\n _this.sideCalculators[DiagramItem_1.ConnectionPointSide.North] = new ConnectorPointsOrthogonalNorthSideCalculator_1.ConnectorPointsOrthogonalNorthSideCalculator(_this);\r\n _this.sideCalculators[DiagramItem_1.ConnectionPointSide.East] = new ConnectorPointsOrthogonalEastSideCalculator_1.ConnectorPointsOrthogonalEastSideCalculator(_this);\r\n _this.sideCalculators[DiagramItem_1.ConnectionPointSide.West] = new ConnectorPointsOrthogonalWestSideCalculator_1.ConnectorPointsOrthogonalWestSideCalculator(_this);\r\n return _this;\r\n }\r\n Object.defineProperty(ConnectorPointsOrthogonalCalculator.prototype, \"beginRect\", {\r\n get: function () { return this.connector.beginItem ? this.connector.beginItem.rectangle : undefined; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ConnectorPointsOrthogonalCalculator.prototype, \"endRect\", {\r\n get: function () { return this.connector.endItem ? this.connector.endItem.rectangle : undefined; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ConnectorPointsOrthogonalCalculator.prototype.getPoints = function () {\r\n var points = this.connector.points.map(function (pt, index) { return new ConnectorRenderPoint_1.ConnectorRenderPoint(pt.x, pt.y, index); });\r\n ModelUtils_1.ModelUtils.removeUnnecessaryRenderPoints(points);\r\n var beginIndex = 0;\r\n var endIndex = points.length - 1;\r\n var beginSide = this.getPointSide(points, 0);\r\n var beginNextSide = this.getPointSide(points, 1);\r\n var endSide = this.getPointSide(points, points.length - 1);\r\n var endPrevSide = this.getPointSide(points, points.length - 1 - 1);\r\n var beginSideCalculator = this.getSideCalculator(beginSide);\r\n var endSideCalculator = this.getSideCalculator(endSide);\r\n var originRect = this.beginRect;\r\n var originPoint = beginSideCalculator.getCorrectOriginPoint(points[beginIndex], originRect);\r\n var targetPoint = points[beginIndex + 1];\r\n if (points.length === 2 && beginSideCalculator.isOnSidePoint(originPoint, targetPoint) &&\r\n beginSideCalculator.isDirectConnectionAllowed(beginNextSide, originPoint, targetPoint)) {\r\n var directConnectionPoints = beginSideCalculator.getDirectConnectionPoints(originPoint, targetPoint);\r\n directConnectionPoints.forEach(function (pt) {\r\n points.splice(beginIndex + 1, 0, pt);\r\n beginIndex++;\r\n endIndex++;\r\n });\r\n }\r\n else {\r\n var bOffsetPoints = beginSideCalculator.getBeginOffsetPoints(beginNextSide, points[beginIndex], points[beginIndex + 1], this.beginRect);\r\n bOffsetPoints.forEach(function (pt) {\r\n points.splice(beginIndex + 1, 0, pt);\r\n });\r\n beginIndex += bOffsetPoints.length;\r\n endIndex += bOffsetPoints.length;\r\n var eOffsetPoints = endSideCalculator.getEndOffsetPoints(endPrevSide, points[endIndex], points[endIndex - 1], this.endRect);\r\n eOffsetPoints.forEach(function (pt, index) {\r\n points.splice(endIndex + index, 0, pt);\r\n });\r\n this.addMiddlePoints(points, beginIndex, endIndex);\r\n }\r\n ModelUtils_1.ModelUtils.removeUnnecessaryRightAngleRenderPoints(points);\r\n return points;\r\n };\r\n ConnectorPointsOrthogonalCalculator.prototype.getSideCalculator = function (side) {\r\n return this.sideCalculators[side];\r\n };\r\n ConnectorPointsOrthogonalCalculator.prototype.getPointSide = function (points, index) {\r\n if (index === 0 && this.connector.beginItem) {\r\n var connectionPointIndex = this.connector.beginConnectionPointIndex;\r\n return this.connector.beginItem.getConnectionPointSideByIndex(connectionPointIndex, points[1]);\r\n }\r\n if (index === points.length - 1 && this.connector.endItem) {\r\n var connectionPointIndex = this.connector.endConnectionPointIndex;\r\n return this.connector.endItem.getConnectionPointSideByIndex(connectionPointIndex, points[points.length - 2]);\r\n }\r\n return DiagramItem_1.ConnectionPointSide.Undefined;\r\n };\r\n ConnectorPointsOrthogonalCalculator.prototype.addMiddlePoints = function (points, beginIndex, endIndex) {\r\n for (var index = beginIndex; index < endIndex; index++) {\r\n var nextIndex = index + 1;\r\n var middlePoint = this.getMiddlePoint(points[index], points[index - 1], index - 1 === 0, points[nextIndex], points[nextIndex + 1], nextIndex + 1 === points.length - 1);\r\n if (middlePoint !== undefined) {\r\n points.splice(index + 1, 0, middlePoint);\r\n index++;\r\n endIndex++;\r\n }\r\n }\r\n };\r\n ConnectorPointsOrthogonalCalculator.prototype.getMiddlePoints = function (point1, point2) {\r\n if (point1.x === point2.x || point1.y === point2.y)\r\n return [];\r\n return [\r\n new ConnectorRenderPoint_1.ConnectorRenderPoint(point1.x, point2.y),\r\n new ConnectorRenderPoint_1.ConnectorRenderPoint(point2.x, point1.y)\r\n ];\r\n };\r\n ConnectorPointsOrthogonalCalculator.prototype.getMiddlePoint = function (point1, directionPoint1, nextToBegin, point2, directionPoint2, nextToEnd) {\r\n var _this = this;\r\n var point;\r\n var points = this.getMiddlePoints(point1, point2);\r\n points.forEach(function (pt) {\r\n var rect1 = _this.createPointsRect(point1, pt);\r\n var rect2 = _this.createPointsRect(pt, point2);\r\n var itemRect1 = _this.connector.beginItem ? _this.connector.beginItem.rectangle : undefined;\r\n var itemRect2 = _this.connector.endItem ? _this.connector.endItem.rectangle : undefined;\r\n if (itemRect1)\r\n if (rectangle_1.Rectangle.areIntersected(itemRect1, rect1) || rectangle_1.Rectangle.areIntersected(itemRect1, rect2))\r\n return;\r\n if (itemRect2)\r\n if (rectangle_1.Rectangle.areIntersected(itemRect2, rect1) || rectangle_1.Rectangle.areIntersected(itemRect2, rect2))\r\n return;\r\n if ((!_this.isReturnPoint(pt, point1, directionPoint1) || _this.isIntermediatePoints(point1, directionPoint1)) &&\r\n (!_this.isReturnPoint(pt, point2, directionPoint2) || _this.isIntermediatePoints(point2, directionPoint2)))\r\n if (point === undefined)\r\n point = pt;\r\n else if (_this.isPriorMiddlePoint(pt, point1, directionPoint1, point2, directionPoint2))\r\n point = pt;\r\n });\r\n if (point === undefined && points.length > 0)\r\n point = points[0];\r\n return point;\r\n };\r\n ConnectorPointsOrthogonalCalculator.prototype.createPointsRect = function (point1, point2) {\r\n var result = rectangle_1.Rectangle.fromPoints(point1, point2);\r\n if (result.width > 0)\r\n result = result.clone().inflate(-1, 0);\r\n if (result.height > 0)\r\n result = result.clone().inflate(0, -1);\r\n return result;\r\n };\r\n ConnectorPointsOrthogonalCalculator.prototype.isPriorMiddlePoint = function (point, point1, directionPoint1, point2, directionPoint2) {\r\n if (directionPoint1)\r\n if (point.x === directionPoint1.x || point.y === directionPoint1.y)\r\n return true;\r\n if (directionPoint2)\r\n if (point.x === directionPoint2.x || point.y === directionPoint2.y)\r\n return true;\r\n return false;\r\n };\r\n ConnectorPointsOrthogonalCalculator.prototype.isReturnPoint = function (point, point1, point2) {\r\n if (point1 !== undefined && point2 !== undefined) {\r\n if (point.x === point2.x)\r\n if (point1.y < point.y && point.y < point2.y || point1.y > point.y && point.y > point2.y)\r\n return true;\r\n if (point.y === point2.y)\r\n if (point1.x < point.x && point.x < point2.x || point1.x > point.x && point.x > point2.x)\r\n return true;\r\n }\r\n return false;\r\n };\r\n ConnectorPointsOrthogonalCalculator.prototype.isIntermediatePoints = function (point1, point2) {\r\n return 0 < point1.pointIndex && point1.pointIndex < this.connector.points.length - 1 &&\r\n 0 < point2.pointIndex && point2.pointIndex < this.connector.points.length - 1;\r\n };\r\n return ConnectorPointsOrthogonalCalculator;\r\n}(ConnectorPointsCalculatorBase_1.ConnectorPointsCalculatorBase));\r\nexports.ConnectorPointsOrthogonalCalculator = ConnectorPointsOrthogonalCalculator;\r\n\n\n/***/ }),\n/* 181 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ConnectorPointsOrthogonalUndefinedSideCalculator = void 0;\r\nvar ConnectorPointsOrthogonalSideCalculatorBase_1 = __webpack_require__(52);\r\nvar ConnectorRenderPoint_1 = __webpack_require__(29);\r\nvar ConnectorPointsOrthogonalUndefinedSideCalculator = /** @class */ (function (_super) {\r\n __extends(ConnectorPointsOrthogonalUndefinedSideCalculator, _super);\r\n function ConnectorPointsOrthogonalUndefinedSideCalculator(parent) {\r\n return _super.call(this, parent) || this;\r\n }\r\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.getCorrectOriginPoint = function (originPoint, originRect) {\r\n return originPoint;\r\n };\r\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.getSameShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n return [];\r\n };\r\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.getOverlappedPointsOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n return [];\r\n };\r\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.getBeginOverlappedShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n return [];\r\n };\r\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.getEndOverlappedShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n return [];\r\n };\r\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.getBeginOnSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n return [];\r\n };\r\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.getEndOnSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n return [];\r\n };\r\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.getBeginOffSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n return [];\r\n };\r\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.getEndOffSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n return [];\r\n };\r\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.isOnSidePoint = function (originPoint, targetPoint) {\r\n return true;\r\n };\r\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.isDirectConnectionAllowed = function (targetSide, originPoint, targetPoint) {\r\n var calculator = this.getSideCalculator(originPoint, targetPoint);\r\n if (calculator !== undefined)\r\n return calculator.isDirectConnectionAllowed(targetSide, originPoint, targetPoint);\r\n return true;\r\n };\r\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.getDirectConnectionPoints = function (originPoint, targetPoint) {\r\n var diffX = Math.abs(targetPoint.x - originPoint.x);\r\n var diffY = Math.abs(targetPoint.y - originPoint.y);\r\n if (diffX > diffY) {\r\n var minX = Math.min(originPoint.x, targetPoint.x);\r\n var cx = minX + diffX / 2;\r\n return [\r\n new ConnectorRenderPoint_1.ConnectorRenderPoint(cx, originPoint.y),\r\n new ConnectorRenderPoint_1.ConnectorRenderPoint(cx, targetPoint.y)\r\n ];\r\n }\r\n else {\r\n var minY = Math.min(originPoint.y, targetPoint.y);\r\n var cy = minY + diffY / 2;\r\n return [\r\n new ConnectorRenderPoint_1.ConnectorRenderPoint(originPoint.x, cy),\r\n new ConnectorRenderPoint_1.ConnectorRenderPoint(targetPoint.x, cy)\r\n ];\r\n }\r\n };\r\n return ConnectorPointsOrthogonalUndefinedSideCalculator;\r\n}(ConnectorPointsOrthogonalSideCalculatorBase_1.ConnectorPointsOrthogonalSideCalculatorBase));\r\nexports.ConnectorPointsOrthogonalUndefinedSideCalculator = ConnectorPointsOrthogonalUndefinedSideCalculator;\r\n\n\n/***/ }),\n/* 182 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ConnectorPointsOrthogonalSouthSideCalculator = void 0;\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar ConnectorPointsOrthogonalSideCalculatorBase_1 = __webpack_require__(52);\r\nvar ConnectorRenderPoint_1 = __webpack_require__(29);\r\nvar ConnectorPointsOrthogonalSouthSideCalculator = /** @class */ (function (_super) {\r\n __extends(ConnectorPointsOrthogonalSouthSideCalculator, _super);\r\n function ConnectorPointsOrthogonalSouthSideCalculator(parent) {\r\n return _super.call(this, parent) || this;\r\n }\r\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getCorrectOriginPoint = function (originPoint, originRect) {\r\n if (originPoint.y < originRect.bottom)\r\n originPoint = originPoint.clone().offset(0, originRect.bottom - originPoint.y);\r\n return originPoint;\r\n };\r\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getSameShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n switch (targetSide) {\r\n case DiagramItem_1.ConnectionPointSide.East:\r\n case DiagramItem_1.ConnectionPointSide.West:\r\n case DiagramItem_1.ConnectionPointSide.South:\r\n return [originPoint.clone().offset(0, this.getMinOffset())];\r\n case DiagramItem_1.ConnectionPointSide.North:\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset());\r\n }\r\n };\r\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getOverlappedPointsOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n switch (targetSide) {\r\n case DiagramItem_1.ConnectionPointSide.South:\r\n return [originPoint.clone().offset(0, this.getMinOffset())];\r\n case DiagramItem_1.ConnectionPointSide.North:\r\n return [originPoint.clone().offset(0, -this.getMinOffset())];\r\n }\r\n return [];\r\n };\r\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getBeginOverlappedShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n switch (targetSide) {\r\n case DiagramItem_1.ConnectionPointSide.East:\r\n if (originPoint.y < targetPoint.y)\r\n if (originPoint.x > targetPoint.x)\r\n return [];\r\n else\r\n return [originPoint.clone().offset(0, this.getMinOffset())];\r\n if (originPoint.y > this.endRect.bottom)\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), false);\r\n return [originPoint.clone().offset(0, this.getMinOffset())];\r\n case DiagramItem_1.ConnectionPointSide.West:\r\n if (originPoint.y < targetPoint.y)\r\n if (originPoint.x < targetPoint.x)\r\n return [];\r\n else\r\n return [originPoint.clone().offset(0, this.getMinOffset())];\r\n if (originPoint.y > this.endRect.bottom)\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), true);\r\n return [originPoint.clone().offset(0, this.getMinOffset())];\r\n case DiagramItem_1.ConnectionPointSide.South:\r\n return [originPoint.clone().offset(0, this.getMinOffset())];\r\n case DiagramItem_1.ConnectionPointSide.North:\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), originPoint.x < targetPoint.x);\r\n }\r\n };\r\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getEndOverlappedShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n switch (targetSide) {\r\n case DiagramItem_1.ConnectionPointSide.East:\r\n if (targetPoint.y < originPoint.y)\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), false);\r\n if (originPoint.x < targetPoint.x)\r\n return [originPoint.clone().offset(0, this.getMinOffset())];\r\n return [];\r\n case DiagramItem_1.ConnectionPointSide.West:\r\n if (targetPoint.y < originPoint.y)\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), true);\r\n if (originPoint.x > targetPoint.x)\r\n return [originPoint.clone().offset(0, this.getMinOffset())];\r\n return [];\r\n case DiagramItem_1.ConnectionPointSide.South:\r\n return [originPoint.clone().offset(0, this.getMinOffset())];\r\n case DiagramItem_1.ConnectionPointSide.North: {\r\n var offset = this.getMinOffset();\r\n if (this.beginRect.bottom > originPoint.y)\r\n offset += this.beginRect.bottom - originPoint.y;\r\n return [originPoint.clone().offset(0, offset)];\r\n }\r\n }\r\n };\r\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getBeginOnSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n return [originPoint.clone().offset(0, this.getScaleableOffsetY(originPoint, targetPoint, false))];\r\n };\r\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getEndOnSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n return [originPoint.clone().offset(0, this.getScaleableOffsetY(originPoint, targetPoint, true))];\r\n };\r\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getBeginOffSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n switch (targetSide) {\r\n case DiagramItem_1.ConnectionPointSide.East:\r\n if (this.isBeginEndOverlappedX())\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false, false);\r\n break;\r\n case DiagramItem_1.ConnectionPointSide.West:\r\n if (this.isBeginEndOverlappedX())\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false, true);\r\n break;\r\n case DiagramItem_1.ConnectionPointSide.South:\r\n if (this.isBeginEndOverlappedX())\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false);\r\n break;\r\n case DiagramItem_1.ConnectionPointSide.Undefined:\r\n case DiagramItem_1.ConnectionPointSide.North:\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false);\r\n }\r\n return [originPoint.clone().offset(0, this.getScaleableOffsetY(originPoint, targetPoint, false))];\r\n };\r\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getEndOffSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n if (targetSide === DiagramItem_1.ConnectionPointSide.Undefined)\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, true);\r\n else if (this.isBeginEndOverlappedX()) {\r\n var direction = this.beginRect.center.x > this.endRect.center.x;\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, true, direction);\r\n }\r\n return [originPoint.clone().offset(0, this.getScaleableOffsetY(originPoint, targetPoint, true))];\r\n };\r\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getAsideOffsetPoints = function (originPoint, targetPoint, originRect, offset, asideOffset, direction) {\r\n var points = [];\r\n if (originRect !== undefined) {\r\n if (direction === undefined)\r\n direction = targetPoint.x < originPoint.x;\r\n if (direction)\r\n points.push(originPoint.clone().offset(-(originPoint.x - originRect.x + asideOffset), offset));\r\n else\r\n points.push(originPoint.clone().offset((originRect.right - originPoint.x + asideOffset), offset));\r\n }\r\n points.push(originPoint.clone().offset(0, offset));\r\n return points;\r\n };\r\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getScaleableAsideOffsetPoints = function (originPoint, targetPoint, originRect, isEnd, direction) {\r\n var offset = this.getScaleableOffsetY(originPoint, targetPoint, isEnd);\r\n var asideOffset = this.getScaleableOffsetX(originPoint, targetPoint, isEnd);\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, offset, asideOffset, direction);\r\n };\r\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getScaleableOffsetX = function (originPoint, targetPoint, isEnd) {\r\n if (this.beginRect && this.endRect)\r\n if (!isEnd && !this.isBeginEndOverlappedX()) {\r\n var distance = void 0;\r\n if (targetPoint.x < originPoint.x)\r\n distance = this.beginRect.x - this.endRect.right;\r\n else\r\n distance = this.endRect.x - this.beginRect.right;\r\n if (distance < this.getMinOffset() * 2)\r\n return distance / 2;\r\n }\r\n return this.getMinOffset();\r\n };\r\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getScaleableOffsetY = function (originPoint, targetPoint, isEnd) {\r\n if (this.beginRect && this.endRect) {\r\n var distance = isEnd ? this.beginRect.y - originPoint.y : this.endRect.y - originPoint.y;\r\n if (distance > 0 && distance < this.getMinOffset() * 2)\r\n return distance / 2;\r\n }\r\n return this.getMinOffset();\r\n };\r\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.isOnSidePoint = function (originPoint, targetPoint) {\r\n return targetPoint.y > originPoint.y;\r\n };\r\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.isDirectConnectionAllowed = function (targetSide, originPoint, targetPoint) {\r\n return targetSide === DiagramItem_1.ConnectionPointSide.North || targetSide === DiagramItem_1.ConnectionPointSide.Undefined;\r\n };\r\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getDirectConnectionPoints = function (originPoint, targetPoint) {\r\n var cy = originPoint.y + (targetPoint.y - originPoint.y) / 2;\r\n return [\r\n new ConnectorRenderPoint_1.ConnectorRenderPoint(originPoint.x, cy),\r\n new ConnectorRenderPoint_1.ConnectorRenderPoint(targetPoint.x, cy)\r\n ];\r\n };\r\n return ConnectorPointsOrthogonalSouthSideCalculator;\r\n}(ConnectorPointsOrthogonalSideCalculatorBase_1.ConnectorPointsOrthogonalSideCalculatorBase));\r\nexports.ConnectorPointsOrthogonalSouthSideCalculator = ConnectorPointsOrthogonalSouthSideCalculator;\r\n\n\n/***/ }),\n/* 183 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ConnectorPointsOrthogonalNorthSideCalculator = void 0;\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar ConnectorPointsOrthogonalSideCalculatorBase_1 = __webpack_require__(52);\r\nvar ConnectorRenderPoint_1 = __webpack_require__(29);\r\nvar ConnectorPointsOrthogonalNorthSideCalculator = /** @class */ (function (_super) {\r\n __extends(ConnectorPointsOrthogonalNorthSideCalculator, _super);\r\n function ConnectorPointsOrthogonalNorthSideCalculator(parent) {\r\n return _super.call(this, parent) || this;\r\n }\r\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getCorrectOriginPoint = function (originPoint, originRect) {\r\n if (originPoint.y > originRect.y)\r\n originPoint = originPoint.clone().offset(0, originRect.y - originPoint.y);\r\n return originPoint;\r\n };\r\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getSameShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n switch (targetSide) {\r\n case DiagramItem_1.ConnectionPointSide.East:\r\n case DiagramItem_1.ConnectionPointSide.West:\r\n case DiagramItem_1.ConnectionPointSide.North:\r\n return [originPoint.clone().offset(0, -this.getMinOffset())];\r\n case DiagramItem_1.ConnectionPointSide.South:\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset());\r\n }\r\n };\r\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getOverlappedPointsOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n switch (targetSide) {\r\n case DiagramItem_1.ConnectionPointSide.South:\r\n return [originPoint.clone().offset(0, this.getMinOffset())];\r\n case DiagramItem_1.ConnectionPointSide.North:\r\n return [originPoint.clone().offset(0, -this.getMinOffset())];\r\n }\r\n return [];\r\n };\r\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getBeginOverlappedShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n switch (targetSide) {\r\n case DiagramItem_1.ConnectionPointSide.East:\r\n if (originPoint.y > targetPoint.y)\r\n if (originPoint.x > targetPoint.x)\r\n return [];\r\n else\r\n return [originPoint.clone().offset(0, -this.getMinOffset())];\r\n if (originPoint.y < this.endRect.y)\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), false);\r\n return [originPoint.clone().offset(0, -this.getMinOffset())];\r\n case DiagramItem_1.ConnectionPointSide.West:\r\n if (originPoint.y > targetPoint.y)\r\n if (originPoint.x < targetPoint.x)\r\n return [];\r\n else\r\n return [originPoint.clone().offset(0, -this.getMinOffset())];\r\n if (originPoint.y < this.endRect.y)\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), true);\r\n return [originPoint.clone().offset(0, -this.getMinOffset())];\r\n case DiagramItem_1.ConnectionPointSide.North:\r\n return [originPoint.clone().offset(0, -this.getMinOffset())];\r\n case DiagramItem_1.ConnectionPointSide.South:\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), originPoint.x < targetPoint.x);\r\n }\r\n };\r\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getEndOverlappedShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n switch (targetSide) {\r\n case DiagramItem_1.ConnectionPointSide.East:\r\n if (targetPoint.y > originPoint.y)\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), false);\r\n if (originPoint.x < targetPoint.x)\r\n return [originPoint.clone().offset(0, -this.getMinOffset())];\r\n return [];\r\n case DiagramItem_1.ConnectionPointSide.West:\r\n if (targetPoint.y > originPoint.y)\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), true);\r\n if (originPoint.x > targetPoint.x)\r\n return [originPoint.clone().offset(0, -this.getMinOffset())];\r\n return [];\r\n case DiagramItem_1.ConnectionPointSide.North:\r\n return [originPoint.clone().offset(0, -this.getMinOffset())];\r\n case DiagramItem_1.ConnectionPointSide.South: {\r\n var offset = -this.getMinOffset();\r\n if (this.beginRect.y < originPoint.y)\r\n offset -= originPoint.y - this.beginRect.y;\r\n return [originPoint.clone().offset(0, offset)];\r\n }\r\n }\r\n };\r\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getBeginOnSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n return [originPoint.clone().offset(0, -this.getScaleableOffsetY(originPoint, targetPoint, false))];\r\n };\r\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getEndOnSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n return [originPoint.clone().offset(0, -this.getScaleableOffsetY(originPoint, targetPoint, true))];\r\n };\r\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getBeginOffSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n switch (targetSide) {\r\n case DiagramItem_1.ConnectionPointSide.East:\r\n if (this.isBeginEndOverlappedX())\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false, false);\r\n break;\r\n case DiagramItem_1.ConnectionPointSide.West:\r\n if (this.isBeginEndOverlappedX())\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false, true);\r\n break;\r\n case DiagramItem_1.ConnectionPointSide.North:\r\n if (this.isBeginEndOverlappedX())\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false);\r\n break;\r\n case DiagramItem_1.ConnectionPointSide.Undefined:\r\n case DiagramItem_1.ConnectionPointSide.South:\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false);\r\n }\r\n return [originPoint.clone().offset(0, -this.getScaleableOffsetY(originPoint, targetPoint, false))];\r\n };\r\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getEndOffSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n if (targetSide === DiagramItem_1.ConnectionPointSide.Undefined)\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, true);\r\n else if (this.isBeginEndOverlappedX()) {\r\n var direction = this.beginRect.center.x > this.endRect.center.x;\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, true, direction);\r\n }\r\n return [originPoint.clone().offset(0, -this.getScaleableOffsetY(originPoint, targetPoint, true))];\r\n };\r\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getAsideOffsetPoints = function (originPoint, targetPoint, originRect, offset, asideOffset, direction) {\r\n var points = [];\r\n if (originRect !== undefined) {\r\n if (direction === undefined)\r\n direction = targetPoint.x < originPoint.x;\r\n if (direction)\r\n points.push(originPoint.clone().offset(-(originPoint.x - originRect.x + asideOffset), -offset));\r\n else\r\n points.push(originPoint.clone().offset((originRect.right - originPoint.x + asideOffset), -offset));\r\n }\r\n points.push(originPoint.clone().offset(0, -offset));\r\n return points;\r\n };\r\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getScaleableAsideOffsetPoints = function (originPoint, targetPoint, originRect, isEnd, direction) {\r\n var offset = this.getScaleableOffsetY(originPoint, targetPoint, isEnd);\r\n var asideOffset = this.getScaleableOffsetX(originPoint, targetPoint, isEnd);\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, offset, asideOffset, direction);\r\n };\r\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getScaleableOffsetX = function (originPoint, targetPoint, isEnd) {\r\n if (this.beginRect && this.endRect)\r\n if (!isEnd && !this.isBeginEndOverlappedX()) {\r\n var distance = void 0;\r\n if (targetPoint.x < originPoint.x)\r\n distance = this.beginRect.x - this.endRect.right;\r\n else\r\n distance = this.endRect.x - this.beginRect.right;\r\n if (distance < this.getMinOffset() * 2)\r\n return distance / 2;\r\n }\r\n return this.getMinOffset();\r\n };\r\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getScaleableOffsetY = function (originPoint, targetPoint, isEnd) {\r\n if (this.beginRect && this.endRect) {\r\n var distance = isEnd ? originPoint.y - this.beginRect.bottom : originPoint.y - this.endRect.bottom;\r\n if (distance > 0 && distance < this.getMinOffset() * 2)\r\n return distance / 2;\r\n }\r\n return this.getMinOffset();\r\n };\r\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.isOnSidePoint = function (originPoint, targetPoint) {\r\n return targetPoint.y < originPoint.y;\r\n };\r\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.isDirectConnectionAllowed = function (targetSide, originPoint, targetPoint) {\r\n return targetSide === DiagramItem_1.ConnectionPointSide.South || targetSide === DiagramItem_1.ConnectionPointSide.Undefined;\r\n };\r\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getDirectConnectionPoints = function (originPoint, targetPoint) {\r\n var cy = targetPoint.y + (originPoint.y - targetPoint.y) / 2;\r\n return [\r\n new ConnectorRenderPoint_1.ConnectorRenderPoint(originPoint.x, cy),\r\n new ConnectorRenderPoint_1.ConnectorRenderPoint(targetPoint.x, cy)\r\n ];\r\n };\r\n return ConnectorPointsOrthogonalNorthSideCalculator;\r\n}(ConnectorPointsOrthogonalSideCalculatorBase_1.ConnectorPointsOrthogonalSideCalculatorBase));\r\nexports.ConnectorPointsOrthogonalNorthSideCalculator = ConnectorPointsOrthogonalNorthSideCalculator;\r\n\n\n/***/ }),\n/* 184 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ConnectorPointsOrthogonalEastSideCalculator = void 0;\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar ConnectorPointsOrthogonalSideCalculatorBase_1 = __webpack_require__(52);\r\nvar ConnectorRenderPoint_1 = __webpack_require__(29);\r\nvar ConnectorPointsOrthogonalEastSideCalculator = /** @class */ (function (_super) {\r\n __extends(ConnectorPointsOrthogonalEastSideCalculator, _super);\r\n function ConnectorPointsOrthogonalEastSideCalculator(parent) {\r\n return _super.call(this, parent) || this;\r\n }\r\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getCorrectOriginPoint = function (originPoint, originRect) {\r\n if (originPoint.x < originRect.right)\r\n originPoint = originPoint.clone().offset(originRect.right - originPoint.x, 0);\r\n return originPoint;\r\n };\r\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getSameShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n switch (targetSide) {\r\n case DiagramItem_1.ConnectionPointSide.North:\r\n case DiagramItem_1.ConnectionPointSide.South:\r\n case DiagramItem_1.ConnectionPointSide.East:\r\n return [originPoint.clone().offset(this.getMinOffset(), 0)];\r\n case DiagramItem_1.ConnectionPointSide.West:\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset());\r\n }\r\n };\r\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getOverlappedPointsOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n switch (targetSide) {\r\n case DiagramItem_1.ConnectionPointSide.East:\r\n return [originPoint.clone().offset(this.getMinOffset(), 0)];\r\n case DiagramItem_1.ConnectionPointSide.West:\r\n return [originPoint.clone().offset(-this.getMinOffset(), 0)];\r\n }\r\n return [];\r\n };\r\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getBeginOverlappedShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n switch (targetSide) {\r\n case DiagramItem_1.ConnectionPointSide.North:\r\n if (originPoint.x < targetPoint.x)\r\n if (originPoint.y < targetPoint.y)\r\n return [];\r\n else\r\n return [originPoint.clone().offset(this.getMinOffset(), 0)];\r\n if (originPoint.x > this.endRect.right)\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), true);\r\n return [originPoint.clone().offset(this.getMinOffset(), 0)];\r\n case DiagramItem_1.ConnectionPointSide.South:\r\n if (originPoint.x < targetPoint.x)\r\n if (originPoint.y > targetPoint.y)\r\n return [];\r\n else\r\n return [originPoint.clone().offset(this.getMinOffset(), 0)];\r\n if (originPoint.x > this.endRect.right)\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), false);\r\n return [originPoint.clone().offset(this.getMinOffset(), 0)];\r\n case DiagramItem_1.ConnectionPointSide.East:\r\n return [originPoint.clone().offset(this.getMinOffset(), 0)];\r\n case DiagramItem_1.ConnectionPointSide.West:\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), originPoint.y < targetPoint.y);\r\n }\r\n };\r\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getEndOverlappedShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n switch (targetSide) {\r\n case DiagramItem_1.ConnectionPointSide.East:\r\n return [originPoint.clone().offset(this.getMinOffset(), 0)];\r\n case DiagramItem_1.ConnectionPointSide.West: {\r\n var offset = this.getMinOffset();\r\n if (this.beginRect.right > originPoint.x)\r\n offset += this.beginRect.right - originPoint.x;\r\n return [originPoint.clone().offset(offset, 0)];\r\n }\r\n case DiagramItem_1.ConnectionPointSide.North:\r\n if (targetPoint.x < originPoint.x)\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), true);\r\n if (originPoint.y > targetPoint.y)\r\n return [originPoint.clone().offset(this.getMinOffset(), 0)];\r\n return [];\r\n case DiagramItem_1.ConnectionPointSide.South:\r\n if (targetPoint.x < originPoint.x)\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), false);\r\n if (originPoint.y < targetPoint.y)\r\n return [originPoint.clone().offset(this.getMinOffset(), 0)];\r\n return [];\r\n }\r\n };\r\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getBeginOnSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n return [originPoint.clone().offset(this.getScaleableOffsetX(originPoint, targetPoint, false), 0)];\r\n };\r\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getEndOnSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n return [originPoint.clone().offset(this.getScaleableOffsetX(originPoint, targetPoint, true), 0)];\r\n };\r\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getBeginOffSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n switch (targetSide) {\r\n case DiagramItem_1.ConnectionPointSide.South:\r\n if (this.isBeginEndOverlappedY())\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false, false);\r\n break;\r\n case DiagramItem_1.ConnectionPointSide.North:\r\n if (this.isBeginEndOverlappedY())\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false, true);\r\n break;\r\n case DiagramItem_1.ConnectionPointSide.East:\r\n if (this.isBeginEndOverlappedY())\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false);\r\n break;\r\n case DiagramItem_1.ConnectionPointSide.Undefined:\r\n case DiagramItem_1.ConnectionPointSide.West:\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false);\r\n }\r\n return [originPoint.clone().offset(this.getScaleableOffsetX(originPoint, targetPoint, false), 0)];\r\n };\r\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getEndOffSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n if (targetSide === DiagramItem_1.ConnectionPointSide.Undefined)\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, true);\r\n else if (this.isBeginEndOverlappedY()) {\r\n var direction = this.beginRect.center.y > this.endRect.center.y;\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, true, direction);\r\n }\r\n return [originPoint.clone().offset(this.getScaleableOffsetX(originPoint, targetPoint, true), 0)];\r\n };\r\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getAsideOffsetPoints = function (originPoint, targetPoint, originRect, offset, asideOffset, direction) {\r\n var points = [];\r\n if (originRect !== undefined) {\r\n if (direction === undefined)\r\n direction = targetPoint.y < originPoint.y;\r\n if (direction)\r\n points.push(originPoint.clone().offset(offset, -(originPoint.y - originRect.y + asideOffset)));\r\n else\r\n points.push(originPoint.clone().offset(offset, (originRect.bottom - originPoint.y + asideOffset)));\r\n }\r\n points.push(originPoint.clone().offset(offset, 0));\r\n return points;\r\n };\r\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getScaleableAsideOffsetPoints = function (originPoint, targetPoint, originRect, isEnd, direction) {\r\n var offset = this.getScaleableOffsetX(originPoint, targetPoint, isEnd);\r\n var asideOffset = this.getScaleableOffsetY(originPoint, targetPoint, isEnd);\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, offset, asideOffset, direction);\r\n };\r\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getScaleableOffsetX = function (originPoint, targetPoint, isEnd) {\r\n if (this.beginRect && this.endRect) {\r\n var distance = isEnd ? this.beginRect.x - originPoint.x : this.endRect.x - originPoint.x;\r\n if (distance > 0 && distance < this.getMinOffset() * 2)\r\n return distance / 2;\r\n }\r\n return this.getMinOffset();\r\n };\r\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getScaleableOffsetY = function (originPoint, targetPoint, isEnd) {\r\n if (this.beginRect && this.endRect)\r\n if (!isEnd && !this.isBeginEndOverlappedY()) {\r\n var distance = void 0;\r\n if (targetPoint.y < originPoint.y)\r\n distance = this.beginRect.y - this.endRect.bottom;\r\n else\r\n distance = this.endRect.y - this.beginRect.bottom;\r\n if (distance < this.getMinOffset() * 2)\r\n return distance / 2;\r\n }\r\n return this.getMinOffset();\r\n };\r\n ConnectorPointsOrthogonalEastSideCalculator.prototype.isOnSidePoint = function (originPoint, targetPoint) {\r\n return targetPoint.x > originPoint.x;\r\n };\r\n ConnectorPointsOrthogonalEastSideCalculator.prototype.isDirectConnectionAllowed = function (targetSide, originPoint, targetPoint) {\r\n return targetSide === DiagramItem_1.ConnectionPointSide.West || targetSide === DiagramItem_1.ConnectionPointSide.Undefined;\r\n };\r\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getDirectConnectionPoints = function (originPoint, targetPoint) {\r\n var cx = originPoint.x + (targetPoint.x - originPoint.x) / 2;\r\n return [\r\n new ConnectorRenderPoint_1.ConnectorRenderPoint(cx, originPoint.y),\r\n new ConnectorRenderPoint_1.ConnectorRenderPoint(cx, targetPoint.y)\r\n ];\r\n };\r\n return ConnectorPointsOrthogonalEastSideCalculator;\r\n}(ConnectorPointsOrthogonalSideCalculatorBase_1.ConnectorPointsOrthogonalSideCalculatorBase));\r\nexports.ConnectorPointsOrthogonalEastSideCalculator = ConnectorPointsOrthogonalEastSideCalculator;\r\n\n\n/***/ }),\n/* 185 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ConnectorPointsOrthogonalWestSideCalculator = void 0;\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar ConnectorPointsOrthogonalSideCalculatorBase_1 = __webpack_require__(52);\r\nvar ConnectorRenderPoint_1 = __webpack_require__(29);\r\nvar ConnectorPointsOrthogonalWestSideCalculator = /** @class */ (function (_super) {\r\n __extends(ConnectorPointsOrthogonalWestSideCalculator, _super);\r\n function ConnectorPointsOrthogonalWestSideCalculator(parent) {\r\n return _super.call(this, parent) || this;\r\n }\r\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getCorrectOriginPoint = function (originPoint, originRect) {\r\n if (originPoint.x > originRect.x)\r\n originPoint = originPoint.clone().offset(originRect.x - originPoint.x, 0);\r\n return originPoint;\r\n };\r\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getSameShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n switch (targetSide) {\r\n case DiagramItem_1.ConnectionPointSide.North:\r\n case DiagramItem_1.ConnectionPointSide.South:\r\n case DiagramItem_1.ConnectionPointSide.West:\r\n return [originPoint.clone().offset(-this.getMinOffset(), 0)];\r\n case DiagramItem_1.ConnectionPointSide.East:\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset());\r\n }\r\n };\r\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getOverlappedPointsOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n switch (targetSide) {\r\n case DiagramItem_1.ConnectionPointSide.East:\r\n return [originPoint.clone().offset(this.getMinOffset(), 0)];\r\n case DiagramItem_1.ConnectionPointSide.West:\r\n return [originPoint.clone().offset(-this.getMinOffset(), 0)];\r\n }\r\n return [];\r\n };\r\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getBeginOverlappedShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n switch (targetSide) {\r\n case DiagramItem_1.ConnectionPointSide.North:\r\n if (originPoint.x > targetPoint.x)\r\n if (originPoint.y < targetPoint.y)\r\n return [];\r\n else\r\n return [originPoint.clone().offset(-this.getMinOffset(), 0)];\r\n if (originPoint.x < this.endRect.x)\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), true);\r\n return [originPoint.clone().offset(-this.getMinOffset(), 0)];\r\n case DiagramItem_1.ConnectionPointSide.South:\r\n if (originPoint.x > targetPoint.x)\r\n if (originPoint.y > targetPoint.y)\r\n return [];\r\n else\r\n return [originPoint.clone().offset(-this.getMinOffset(), 0)];\r\n if (originPoint.x < this.endRect.x)\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), false);\r\n return [originPoint.clone().offset(-this.getMinOffset(), 0)];\r\n case DiagramItem_1.ConnectionPointSide.West:\r\n return [originPoint.clone().offset(-this.getMinOffset(), 0)];\r\n case DiagramItem_1.ConnectionPointSide.East:\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), originPoint.y < targetPoint.y);\r\n }\r\n };\r\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getEndOverlappedShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n switch (targetSide) {\r\n case DiagramItem_1.ConnectionPointSide.East: {\r\n var offset = -this.getMinOffset();\r\n if (this.beginRect.x < originPoint.x)\r\n offset -= originPoint.x - this.beginRect.x;\r\n return [originPoint.clone().offset(offset, 0)];\r\n }\r\n case DiagramItem_1.ConnectionPointSide.West:\r\n return [originPoint.clone().offset(-this.getMinOffset(), 0)];\r\n case DiagramItem_1.ConnectionPointSide.North:\r\n if (targetPoint.x > originPoint.x)\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), true);\r\n if (originPoint.y > targetPoint.y)\r\n return [originPoint.clone().offset(-this.getMinOffset(), 0)];\r\n return [];\r\n case DiagramItem_1.ConnectionPointSide.South:\r\n if (targetPoint.x > originPoint.x)\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), false);\r\n if (originPoint.y < targetPoint.y)\r\n return [originPoint.clone().offset(-this.getMinOffset(), 0)];\r\n return [];\r\n }\r\n };\r\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getBeginOnSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n return [originPoint.clone().offset(-this.getScaleableOffsetX(originPoint, false), 0)];\r\n };\r\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getEndOnSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n return [originPoint.clone().offset(-this.getScaleableOffsetX(originPoint, true), 0)];\r\n };\r\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getBeginOffSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n switch (targetSide) {\r\n case DiagramItem_1.ConnectionPointSide.South:\r\n if (this.isBeginEndOverlappedY())\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false, false);\r\n break;\r\n case DiagramItem_1.ConnectionPointSide.North:\r\n if (this.isBeginEndOverlappedY())\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false, true);\r\n break;\r\n case DiagramItem_1.ConnectionPointSide.West:\r\n if (this.isBeginEndOverlappedY())\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false);\r\n break;\r\n case DiagramItem_1.ConnectionPointSide.Undefined:\r\n case DiagramItem_1.ConnectionPointSide.East:\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false);\r\n }\r\n return [originPoint.clone().offset(-this.getScaleableOffsetX(originPoint, false), 0)];\r\n };\r\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getEndOffSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\r\n if (targetSide === DiagramItem_1.ConnectionPointSide.Undefined)\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, true);\r\n else if (this.isBeginEndOverlappedY()) {\r\n var direction = this.beginRect.center.y > this.endRect.center.y;\r\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, true, direction);\r\n }\r\n return [originPoint.clone().offset(-this.getScaleableOffsetX(originPoint, true), 0)];\r\n };\r\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getAsideOffsetPoints = function (originPoint, targetPoint, originRect, offset, asideOffset, direction) {\r\n var points = [];\r\n if (originRect !== undefined) {\r\n if (direction === undefined)\r\n direction = targetPoint.y < originPoint.y;\r\n if (direction)\r\n points.push(originPoint.clone().offset(-offset, -(originPoint.y - originRect.y + asideOffset)));\r\n else\r\n points.push(originPoint.clone().offset(-offset, (originRect.bottom - originPoint.y + asideOffset)));\r\n }\r\n points.push(originPoint.clone().offset(-offset, 0));\r\n return points;\r\n };\r\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getScaleableAsideOffsetPoints = function (originPoint, targetPoint, originRect, isEnd, direction) {\r\n var offset = this.getScaleableOffsetX(originPoint, isEnd);\r\n var asideOffset = this.getScaleableOffsetY(originPoint, targetPoint, isEnd);\r\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, offset, asideOffset, direction);\r\n };\r\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getScaleableOffsetX = function (originPoint, isEnd) {\r\n if (this.beginRect && this.endRect) {\r\n var distance = isEnd ? originPoint.x - this.beginRect.right : originPoint.x - this.endRect.right;\r\n if (distance > 0 && distance < this.getMinOffset() * 2)\r\n return distance / 2;\r\n }\r\n return this.getMinOffset();\r\n };\r\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getScaleableOffsetY = function (originPoint, targetPoint, isEnd) {\r\n if (this.beginRect && this.endRect)\r\n if (!isEnd && !this.isBeginEndOverlappedY()) {\r\n var distance = void 0;\r\n if (targetPoint.y < originPoint.y)\r\n distance = this.beginRect.y - this.endRect.bottom;\r\n else\r\n distance = this.endRect.y - this.beginRect.bottom;\r\n if (distance < this.getMinOffset() * 2)\r\n return distance / 2;\r\n }\r\n return this.getMinOffset();\r\n };\r\n ConnectorPointsOrthogonalWestSideCalculator.prototype.isOnSidePoint = function (originPoint, targetPoint) {\r\n return targetPoint.x < originPoint.x;\r\n };\r\n ConnectorPointsOrthogonalWestSideCalculator.prototype.isDirectConnectionAllowed = function (targetSide, originPoint, targetPoint) {\r\n return targetSide === DiagramItem_1.ConnectionPointSide.East || targetSide === DiagramItem_1.ConnectionPointSide.Undefined;\r\n };\r\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getDirectConnectionPoints = function (originPoint, targetPoint) {\r\n var cx = targetPoint.x + (originPoint.x - targetPoint.x) / 2;\r\n return [\r\n new ConnectorRenderPoint_1.ConnectorRenderPoint(cx, originPoint.y),\r\n new ConnectorRenderPoint_1.ConnectorRenderPoint(cx, targetPoint.y)\r\n ];\r\n };\r\n return ConnectorPointsOrthogonalWestSideCalculator;\r\n}(ConnectorPointsOrthogonalSideCalculatorBase_1.ConnectorPointsOrthogonalSideCalculatorBase));\r\nexports.ConnectorPointsOrthogonalWestSideCalculator = ConnectorPointsOrthogonalWestSideCalculator;\r\n\n\n/***/ }),\n/* 186 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ConnectorLineEndingFilledTriangleStrategy = exports.ConnectorLineEndingOutlinedTriangleStrategy = exports.ConnectorLineEndingArrowStrategy = exports.ConnectorLineEndingNoneStrategy = exports.ConnectorLineEndingStrategy = void 0;\r\nvar Utils_1 = __webpack_require__(3);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar ConnectorLineEndingStrategy = /** @class */ (function () {\r\n function ConnectorLineEndingStrategy(style) {\r\n this.style = style;\r\n }\r\n ConnectorLineEndingStrategy.prototype.hasCommands = function () {\r\n return true;\r\n };\r\n ConnectorLineEndingStrategy.prototype.needCreateSeparatePrimitive = function () {\r\n return false;\r\n };\r\n ConnectorLineEndingStrategy.prototype.createPrimitive = function () {\r\n return new PathPrimitive_1.PathPrimitive([], this.getStyle(), this.getCssClass());\r\n };\r\n ConnectorLineEndingStrategy.prototype.createCommands = function (point, directionPoint) {\r\n return [];\r\n };\r\n ConnectorLineEndingStrategy.prototype.getStyle = function () {\r\n var style = this.style.clone();\r\n style.resetStrokeDashArray();\r\n return style;\r\n };\r\n ConnectorLineEndingStrategy.prototype.getCssClass = function () {\r\n return undefined;\r\n };\r\n return ConnectorLineEndingStrategy;\r\n}());\r\nexports.ConnectorLineEndingStrategy = ConnectorLineEndingStrategy;\r\nvar ConnectorLineEndingNoneStrategy = /** @class */ (function (_super) {\r\n __extends(ConnectorLineEndingNoneStrategy, _super);\r\n function ConnectorLineEndingNoneStrategy() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ConnectorLineEndingNoneStrategy.prototype.hasCommands = function () {\r\n return false;\r\n };\r\n return ConnectorLineEndingNoneStrategy;\r\n}(ConnectorLineEndingStrategy));\r\nexports.ConnectorLineEndingNoneStrategy = ConnectorLineEndingNoneStrategy;\r\nvar ConnectorLineEndingArrowStrategy = /** @class */ (function (_super) {\r\n __extends(ConnectorLineEndingArrowStrategy, _super);\r\n function ConnectorLineEndingArrowStrategy() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(ConnectorLineEndingArrowStrategy.prototype, \"arrowHeight\", {\r\n get: function () { return this.style.strokeWidth * 6; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ConnectorLineEndingArrowStrategy.prototype, \"arrowWidth\", {\r\n get: function () { return this.style.strokeWidth * 2; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ConnectorLineEndingArrowStrategy.prototype.needCreateSeparatePrimitive = function () {\r\n return !this.style.isDefaultStrokeDashArray();\r\n };\r\n ConnectorLineEndingArrowStrategy.prototype.createCommands = function (point, directionPoint) {\r\n var arrowPoints = this.getArrowPoints(point, directionPoint);\r\n var commands = [\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(arrowPoints.point1.x, arrowPoints.point1.y),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(point.x, point.y),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(arrowPoints.point2.x, arrowPoints.point2.y)\r\n ];\r\n if (!this.style.isDefaultStrokeDashArray())\r\n commands = commands.concat([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(point.x, point.y),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(arrowPoints.point3.x, arrowPoints.point3.y)\r\n ]);\r\n return commands;\r\n };\r\n ConnectorLineEndingArrowStrategy.prototype.getArrowPoints = function (point, directionPoint) {\r\n var arrowHeight = this.arrowHeight;\r\n if (point.x === directionPoint.x) {\r\n var distance = Math.abs(point.y - directionPoint.y);\r\n if (distance < arrowHeight)\r\n arrowHeight = distance;\r\n }\r\n if (point.y === directionPoint.y) {\r\n var distance = Math.abs(point.x - directionPoint.x);\r\n if (distance < arrowHeight)\r\n arrowHeight = distance;\r\n }\r\n return Utils_1.GeometryUtils.getArrowPoints(point, directionPoint, arrowHeight, this.arrowWidth);\r\n };\r\n return ConnectorLineEndingArrowStrategy;\r\n}(ConnectorLineEndingStrategy));\r\nexports.ConnectorLineEndingArrowStrategy = ConnectorLineEndingArrowStrategy;\r\nvar ConnectorLineEndingOutlinedTriangleStrategy = /** @class */ (function (_super) {\r\n __extends(ConnectorLineEndingOutlinedTriangleStrategy, _super);\r\n function ConnectorLineEndingOutlinedTriangleStrategy() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ConnectorLineEndingOutlinedTriangleStrategy.prototype.needCreateSeparatePrimitive = function () {\r\n return true;\r\n };\r\n ConnectorLineEndingOutlinedTriangleStrategy.prototype.createCommands = function (point, directionPoint) {\r\n var arrowPoints = this.getArrowPoints(point, directionPoint);\r\n return [\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(arrowPoints.point1.x, arrowPoints.point1.y),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(point.x, point.y),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(arrowPoints.point2.x, arrowPoints.point2.y),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ];\r\n };\r\n ConnectorLineEndingOutlinedTriangleStrategy.prototype.getCssClass = function () {\r\n return \"outlined-line-ending\";\r\n };\r\n return ConnectorLineEndingOutlinedTriangleStrategy;\r\n}(ConnectorLineEndingArrowStrategy));\r\nexports.ConnectorLineEndingOutlinedTriangleStrategy = ConnectorLineEndingOutlinedTriangleStrategy;\r\nvar ConnectorLineEndingFilledTriangleStrategy = /** @class */ (function (_super) {\r\n __extends(ConnectorLineEndingFilledTriangleStrategy, _super);\r\n function ConnectorLineEndingFilledTriangleStrategy() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ConnectorLineEndingFilledTriangleStrategy.prototype.getStyle = function () {\r\n var style = _super.prototype.getStyle.call(this);\r\n style[\"fill\"] = style[\"stroke\"];\r\n return style;\r\n };\r\n ConnectorLineEndingFilledTriangleStrategy.prototype.getCssClass = function () {\r\n return \"filled-line-ending\";\r\n };\r\n return ConnectorLineEndingFilledTriangleStrategy;\r\n}(ConnectorLineEndingOutlinedTriangleStrategy));\r\nexports.ConnectorLineEndingFilledTriangleStrategy = ConnectorLineEndingFilledTriangleStrategy;\r\n\n\n/***/ }),\n/* 187 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ConnectorTexts = exports.ConnectorText = void 0;\r\nvar ConnectorText = /** @class */ (function () {\r\n function ConnectorText(position, value) {\r\n this.position = position;\r\n this.value = value;\r\n }\r\n return ConnectorText;\r\n}());\r\nexports.ConnectorText = ConnectorText;\r\nvar ConnectorTexts = /** @class */ (function () {\r\n function ConnectorTexts() {\r\n this.items = {};\r\n }\r\n ConnectorTexts.prototype.get = function (position) {\r\n return this.items[position];\r\n };\r\n ConnectorTexts.prototype.set = function (position, text) {\r\n this.items[position] = text;\r\n };\r\n ConnectorTexts.prototype.remove = function (position) {\r\n delete this.items[position];\r\n };\r\n ConnectorTexts.prototype.map = function (callback) {\r\n var list = [];\r\n this.forEach(function (t) { return list.push(callback(t)); });\r\n return list;\r\n };\r\n ConnectorTexts.prototype.forEach = function (callback) {\r\n for (var key in this.items)\r\n if (Object.prototype.hasOwnProperty.call(this.items, key))\r\n callback(this.items[key]);\r\n };\r\n ConnectorTexts.prototype.count = function () {\r\n return Object.keys(this.items).length;\r\n };\r\n ConnectorTexts.prototype.clone = function () {\r\n var result = new ConnectorTexts();\r\n this.forEach(function (t) { result.set(t.position, new ConnectorText(t.position, t.value)); });\r\n return result;\r\n };\r\n ConnectorTexts.prototype.toObject = function () {\r\n var result = {};\r\n var modified = false;\r\n this.forEach(function (t) {\r\n result[t.position] = t.value;\r\n modified = true;\r\n });\r\n return modified ? result : null;\r\n };\r\n ConnectorTexts.prototype.fromObject = function (obj) {\r\n for (var key in obj)\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var position = parseFloat(key);\r\n if (!isNaN(position) && typeof obj[key] === \"string\")\r\n this.set(position, new ConnectorText(position, obj[key]));\r\n }\r\n };\r\n return ConnectorTexts;\r\n}());\r\nexports.ConnectorTexts = ConnectorTexts;\r\n\n\n/***/ }),\n/* 188 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.AddConnectorPointHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar AddConnectorPointHistoryItem = /** @class */ (function (_super) {\r\n __extends(AddConnectorPointHistoryItem, _super);\r\n function AddConnectorPointHistoryItem(connectorKey, pointIndex, point) {\r\n var _this = _super.call(this) || this;\r\n _this.connectorKey = connectorKey;\r\n _this.pointIndex = pointIndex;\r\n _this.point = point;\r\n return _this;\r\n }\r\n AddConnectorPointHistoryItem.prototype.redo = function (manipulator) {\r\n var _this = this;\r\n var connector = manipulator.model.findConnector(this.connectorKey);\r\n this.renderContext = connector.createRenderPointsContext();\r\n manipulator.addDeleteConnectorPoint(connector, function (connector) {\r\n connector.addPoint(_this.pointIndex, _this.point);\r\n connector.onAddPoint(_this.pointIndex, _this.point);\r\n });\r\n };\r\n AddConnectorPointHistoryItem.prototype.undo = function (manipulator) {\r\n var _this = this;\r\n var connector = manipulator.model.findConnector(this.connectorKey);\r\n manipulator.addDeleteConnectorPoint(connector, function (connector) {\r\n connector.deletePoint(_this.pointIndex);\r\n connector.replaceRenderPoints(_this.renderContext);\r\n });\r\n };\r\n return AddConnectorPointHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.AddConnectorPointHistoryItem = AddConnectorPointHistoryItem;\r\n\n\n/***/ }),\n/* 189 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.InsertToContainerHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar InsertToContainerHistoryItem = /** @class */ (function (_super) {\r\n __extends(InsertToContainerHistoryItem, _super);\r\n function InsertToContainerHistoryItem(item, container) {\r\n var _this = _super.call(this) || this;\r\n _this.containerKey = container.key;\r\n _this.itemKey = item.key;\r\n return _this;\r\n }\r\n InsertToContainerHistoryItem.prototype.redo = function (manipulator) {\r\n var item = manipulator.model.findItem(this.itemKey);\r\n var container = manipulator.model.findShape(this.containerKey);\r\n manipulator.insertToContainer(item, container);\r\n };\r\n InsertToContainerHistoryItem.prototype.undo = function (manipulator) {\r\n var item = manipulator.model.findItem(this.itemKey);\r\n manipulator.removeFromContainer(item);\r\n };\r\n return InsertToContainerHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.InsertToContainerHistoryItem = InsertToContainerHistoryItem;\r\n\n\n/***/ }),\n/* 190 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MoveConnectorRightAnglePointsHistoryItem = exports.MoveConnectorPointHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar MoveConnectorPointHistoryItem = /** @class */ (function (_super) {\r\n __extends(MoveConnectorPointHistoryItem, _super);\r\n function MoveConnectorPointHistoryItem(connectorKey, pointIndex, newPoint) {\r\n var _this = _super.call(this) || this;\r\n _this.connectorKey = connectorKey;\r\n _this.pointIndex = pointIndex;\r\n _this.newPoint = newPoint;\r\n return _this;\r\n }\r\n MoveConnectorPointHistoryItem.prototype.redo = function (manipulator) {\r\n var _this = this;\r\n var connector = manipulator.model.findConnector(this.connectorKey);\r\n this.oldPoint = connector.points[this.pointIndex].clone();\r\n this.renderContext = connector.createRenderPointsContext();\r\n manipulator.moveConnectorPoint(connector, this.pointIndex, function (connector) {\r\n connector.movePoint(_this.pointIndex, _this.newPoint);\r\n connector.onMovePoint(_this.pointIndex, _this.newPoint);\r\n });\r\n };\r\n MoveConnectorPointHistoryItem.prototype.undo = function (manipulator) {\r\n var _this = this;\r\n var connector = manipulator.model.findConnector(this.connectorKey);\r\n manipulator.moveConnectorPoint(connector, this.pointIndex, function (connector) {\r\n connector.movePoint(_this.pointIndex, _this.oldPoint);\r\n connector.replaceRenderPoints(_this.renderContext);\r\n });\r\n };\r\n return MoveConnectorPointHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.MoveConnectorPointHistoryItem = MoveConnectorPointHistoryItem;\r\nvar MoveConnectorRightAnglePointsHistoryItem = /** @class */ (function (_super) {\r\n __extends(MoveConnectorRightAnglePointsHistoryItem, _super);\r\n function MoveConnectorRightAnglePointsHistoryItem(connectorKey, beginPointIndex, newBeginPoint, lastPointIndex, newLastPoint) {\r\n var _this = _super.call(this) || this;\r\n _this.connectorKey = connectorKey;\r\n _this.beginPointIndex = beginPointIndex;\r\n _this.newBeginPoint = newBeginPoint;\r\n _this.lastPointIndex = lastPointIndex;\r\n _this.newLastPoint = newLastPoint;\r\n return _this;\r\n }\r\n MoveConnectorRightAnglePointsHistoryItem.prototype.redo = function (manipulator) {\r\n var _this = this;\r\n var connector = manipulator.model.findConnector(this.connectorKey);\r\n this.oldBeginPoint = connector.points[this.beginPointIndex].clone();\r\n this.oldLastPoint = connector.points[this.lastPointIndex].clone();\r\n this.renderContext = connector.createRenderPointsContext();\r\n manipulator.changeConnectorPoints(connector, function (connector) {\r\n connector.movePoint(_this.beginPointIndex, _this.newBeginPoint);\r\n connector.movePoint(_this.lastPointIndex, _this.newLastPoint);\r\n connector.onMovePoints(_this.beginPointIndex, _this.newBeginPoint, _this.lastPointIndex, _this.newLastPoint);\r\n });\r\n };\r\n MoveConnectorRightAnglePointsHistoryItem.prototype.undo = function (manipulator) {\r\n var _this = this;\r\n var connector = manipulator.model.findConnector(this.connectorKey);\r\n manipulator.changeConnectorPoints(connector, function (connector) {\r\n connector.movePoint(_this.beginPointIndex, _this.oldBeginPoint);\r\n connector.movePoint(_this.lastPointIndex, _this.oldLastPoint);\r\n connector.replaceRenderPoints(_this.renderContext);\r\n });\r\n };\r\n return MoveConnectorRightAnglePointsHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.MoveConnectorRightAnglePointsHistoryItem = MoveConnectorRightAnglePointsHistoryItem;\r\n\n\n/***/ }),\n/* 191 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MoveShapeHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar MoveShapeHistoryItem = /** @class */ (function (_super) {\r\n __extends(MoveShapeHistoryItem, _super);\r\n function MoveShapeHistoryItem(shapeKey, position) {\r\n var _this = _super.call(this) || this;\r\n _this.shapeKey = shapeKey;\r\n _this.position = position;\r\n return _this;\r\n }\r\n MoveShapeHistoryItem.prototype.redo = function (manipulator) {\r\n var shape = manipulator.model.findShape(this.shapeKey);\r\n this.oldPosition = shape.position.clone();\r\n manipulator.moveShape(shape, this.position);\r\n };\r\n MoveShapeHistoryItem.prototype.undo = function (manipulator) {\r\n var shape = manipulator.model.findShape(this.shapeKey);\r\n manipulator.moveShape(shape, this.oldPosition);\r\n };\r\n return MoveShapeHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.MoveShapeHistoryItem = MoveShapeHistoryItem;\r\n\n\n/***/ }),\n/* 192 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RemoveFromContainerHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar RemoveFromContainerHistoryItem = /** @class */ (function (_super) {\r\n __extends(RemoveFromContainerHistoryItem, _super);\r\n function RemoveFromContainerHistoryItem(item) {\r\n var _this = _super.call(this) || this;\r\n _this.itemKey = item.key;\r\n return _this;\r\n }\r\n RemoveFromContainerHistoryItem.prototype.redo = function (manipulator) {\r\n var item = manipulator.model.findItem(this.itemKey);\r\n this.containerKey = item.container && item.container.key;\r\n manipulator.removeFromContainer(item);\r\n };\r\n RemoveFromContainerHistoryItem.prototype.undo = function (manipulator) {\r\n var container = manipulator.model.findContainer(this.containerKey);\r\n var item = manipulator.model.findItem(this.itemKey);\r\n manipulator.insertToContainer(item, container);\r\n };\r\n return RemoveFromContainerHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.RemoveFromContainerHistoryItem = RemoveFromContainerHistoryItem;\r\n\n\n/***/ }),\n/* 193 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ModelResizeHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar offsets_1 = __webpack_require__(87);\r\nvar size_1 = __webpack_require__(2);\r\nvar ModelResizeHistoryItem = /** @class */ (function (_super) {\r\n __extends(ModelResizeHistoryItem, _super);\r\n function ModelResizeHistoryItem(offset) {\r\n var _this = _super.call(this) || this;\r\n _this.offset = offset;\r\n return _this;\r\n }\r\n ModelResizeHistoryItem.prototype.redo = function (manipulator) {\r\n this.oldSize = manipulator.model.size.clone();\r\n this.backOffset = new offsets_1.Offsets(-this.offset.left, -this.offset.right, -this.offset.top, -this.offset.bottom);\r\n var newWidth = Math.max(this.oldSize.width + this.offset.left + this.offset.right, manipulator.model.pageWidth);\r\n var newHeight = Math.max(this.oldSize.height + this.offset.top + this.offset.bottom, manipulator.model.pageHeight);\r\n manipulator.changeModelSize(new size_1.Size(newWidth, newHeight), this.offset);\r\n };\r\n ModelResizeHistoryItem.prototype.undo = function (manipulator) {\r\n manipulator.changeModelSize(this.oldSize, this.backOffset);\r\n };\r\n return ModelResizeHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.ModelResizeHistoryItem = ModelResizeHistoryItem;\r\n\n\n/***/ }),\n/* 194 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.UpdatePositionsOnPageResizeHistoryItem = void 0;\r\nvar Connector_1 = __webpack_require__(6);\r\nvar Shape_1 = __webpack_require__(13);\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar UpdatePositionsOnPageResizeHistoryItem = /** @class */ (function (_super) {\r\n __extends(UpdatePositionsOnPageResizeHistoryItem, _super);\r\n function UpdatePositionsOnPageResizeHistoryItem(offset) {\r\n var _this = _super.call(this) || this;\r\n _this.offset = offset;\r\n return _this;\r\n }\r\n UpdatePositionsOnPageResizeHistoryItem.prototype.redo = function (manipulator) {\r\n var _this = this;\r\n manipulator.model.iterateItems(function (item) {\r\n if (item instanceof Shape_1.Shape)\r\n manipulator.moveShape(item, _this.applyOffset(item.position, _this.offset.x, _this.offset.y));\r\n if (item instanceof Connector_1.Connector)\r\n manipulator.changeConnectorPoints(item, function (i) { return i.updatePointsOnPageResize(_this.offset.x, _this.offset.y); });\r\n });\r\n };\r\n UpdatePositionsOnPageResizeHistoryItem.prototype.undo = function (manipulator) {\r\n var _this = this;\r\n manipulator.model.iterateItems(function (item) {\r\n if (item instanceof Shape_1.Shape)\r\n manipulator.moveShape(item, _this.applyOffset(item.position, -_this.offset.x, -_this.offset.y));\r\n if (item instanceof Connector_1.Connector)\r\n manipulator.changeConnectorPoints(item, function (i) { return i.updatePointsOnPageResize(-_this.offset.x, -_this.offset.y); });\r\n });\r\n };\r\n UpdatePositionsOnPageResizeHistoryItem.prototype.applyOffset = function (point, offsetX, offsetY) {\r\n return point.clone().offset(offsetX, offsetY);\r\n };\r\n return UpdatePositionsOnPageResizeHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.UpdatePositionsOnPageResizeHistoryItem = UpdatePositionsOnPageResizeHistoryItem;\r\n\n\n/***/ }),\n/* 195 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.GraphInfo = void 0;\r\nvar LayoutUtils_1 = __webpack_require__(196);\r\nvar GraphInfo = /** @class */ (function () {\r\n function GraphInfo(container, sourceGraph) {\r\n this.container = container;\r\n this.sourceGraph = sourceGraph;\r\n }\r\n Object.defineProperty(GraphInfo.prototype, \"graph\", {\r\n get: function () {\r\n return this._graph || (this._graph = this.getNodeInfoGraph());\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(GraphInfo.prototype, \"level\", {\r\n get: function () {\r\n return this._level !== undefined ? this._level : (this._level = this.getLevel());\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n GraphInfo.prototype.getNodeInfoGraph = function () {\r\n return this.sourceGraph.cast(LayoutUtils_1.LayoutUtils.shapeToLayout);\r\n };\r\n GraphInfo.prototype.getLevel = function () {\r\n var level = 0;\r\n if (this.container)\r\n level = this.getContainerLevel(this.container);\r\n return level;\r\n };\r\n GraphInfo.prototype.getContainerLevel = function (container) {\r\n var level = 1;\r\n var parentContainer = container.container;\r\n if (parentContainer)\r\n level += this.getContainerLevel(parentContainer);\r\n return level;\r\n };\r\n return GraphInfo;\r\n}());\r\nexports.GraphInfo = GraphInfo;\r\n\n\n/***/ }),\n/* 196 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.LayoutUtils = void 0;\r\nvar NodeLayout_1 = __webpack_require__(70);\r\nvar LayoutUtils = /** @class */ (function () {\r\n function LayoutUtils() {\r\n }\r\n LayoutUtils.shapeToLayout = function (shape) {\r\n var margin = new NodeLayout_1.Margin(0);\r\n var shapeRect = shape.rectangle;\r\n shape.attachedConnectors.filter(function (c) { return !c.beginItem || !c.endItem; }).forEach(function (c) {\r\n var connRect = c.rectangle;\r\n margin.left = Math.max(margin.left, shapeRect.x - connRect.x);\r\n margin.right = Math.max(margin.right, connRect.right - shapeRect.right);\r\n margin.top = Math.max(margin.top, shapeRect.y - connRect.y);\r\n margin.bottom = Math.max(margin.bottom, connRect.bottom - shapeRect.bottom);\r\n });\r\n var layout = new NodeLayout_1.NodeInfo(shape.key, margin, shape.size.clone());\r\n layout.connectionPoints = shape.description.getConnectionPoints();\r\n return layout;\r\n };\r\n return LayoutUtils;\r\n}());\r\nexports.LayoutUtils = LayoutUtils;\r\n\n\n/***/ }),\n/* 197 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CommandBase = void 0;\r\nvar CommandBase = /** @class */ (function () {\r\n function CommandBase(control) {\r\n this.control = control;\r\n }\r\n CommandBase.prototype.execute = function (parameter) {\r\n if (this.isPermissionsRequired)\r\n this.permissionsProvider.lockPermissions();\r\n var state = this.getState();\r\n if (this.isPermissionsRequired)\r\n this.permissionsProvider.unlockPermissions();\r\n if (!state.enabled)\r\n return false;\r\n this.control.beginUpdate();\r\n var executed = false;\r\n if (this.isPermissionsRequired)\r\n executed = this.executeWithPermissions(state, parameter);\r\n else\r\n executed = this.executeCore(state, parameter);\r\n this.control.endUpdate();\r\n if (executed)\r\n this.updateControlState();\r\n return executed;\r\n };\r\n CommandBase.prototype.executeWithPermissions = function (state, parameter) {\r\n var executed = false;\r\n this.permissionsProvider.beginStorePermissions();\r\n this.control.history.beginTransaction();\r\n executed = this.executeCore(state, parameter);\r\n if (!this.permissionsProvider.isStoredPermissionsGranted()) {\r\n this.permissionsProvider.lockPermissions();\r\n this.control.history.undoTransaction();\r\n this.permissionsProvider.unlockPermissions();\r\n executed = false;\r\n }\r\n this.control.history.endTransaction();\r\n this.permissionsProvider.endStorePermissions();\r\n return executed;\r\n };\r\n CommandBase.prototype.updateControlState = function () {\r\n if (!this.lockInputPositionUpdating())\r\n this.control.selection.inputPosition.reset();\r\n if (!this.lockUIUpdating())\r\n this.control.barManager.updateItemsState();\r\n };\r\n Object.defineProperty(CommandBase.prototype, \"permissionsProvider\", {\r\n get: function () { return this.control && this.control.permissionsProvider; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(CommandBase.prototype, \"isPermissionsRequired\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n CommandBase.prototype.lockUIUpdating = function () {\r\n return false;\r\n };\r\n CommandBase.prototype.lockInputPositionUpdating = function () {\r\n return false;\r\n };\r\n return CommandBase;\r\n}());\r\nexports.CommandBase = CommandBase;\r\n\n\n/***/ }),\n/* 198 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SimpleCommandState = void 0;\r\nvar SimpleCommandState = /** @class */ (function () {\r\n function SimpleCommandState(enabled, value, defaultValue, items, visible) {\r\n this.visible = true;\r\n this.denyUpdateValue = false;\r\n this.enabled = enabled;\r\n this.value = value;\r\n this.items = items;\r\n this.visible = visible;\r\n this.defaultValue = defaultValue;\r\n }\r\n return SimpleCommandState;\r\n}());\r\nexports.SimpleCommandState = SimpleCommandState;\r\n\n\n/***/ }),\n/* 199 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.UndoCommand = void 0;\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar UndoCommand = /** @class */ (function (_super) {\r\n __extends(UndoCommand, _super);\r\n function UndoCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n UndoCommand.prototype.executeCore = function (state) {\r\n this.control.beginUpdateCanvas();\r\n this.permissionsProvider.lockPermissions();\r\n this.control.history.undo();\r\n this.permissionsProvider.unlockPermissions();\r\n this.control.endUpdateCanvas();\r\n return true;\r\n };\r\n UndoCommand.prototype.isEnabled = function () {\r\n return _super.prototype.isEnabled.call(this) && this.control.history.canUndo();\r\n };\r\n return UndoCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.UndoCommand = UndoCommand;\r\n\n\n/***/ }),\n/* 200 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RedoCommand = void 0;\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar RedoCommand = /** @class */ (function (_super) {\r\n __extends(RedoCommand, _super);\r\n function RedoCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n RedoCommand.prototype.executeCore = function (state) {\r\n this.control.beginUpdateCanvas();\r\n this.permissionsProvider.lockPermissions();\r\n this.control.history.redo();\r\n this.permissionsProvider.unlockPermissions();\r\n this.control.endUpdateCanvas();\r\n return true;\r\n };\r\n RedoCommand.prototype.isEnabled = function () {\r\n return _super.prototype.isEnabled.call(this) && this.control.history.canRedo();\r\n };\r\n return RedoCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.RedoCommand = RedoCommand;\r\n\n\n/***/ }),\n/* 201 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ImportCommand = void 0;\r\nvar Importer_1 = __webpack_require__(120);\r\nvar ExportImportCommandBase_1 = __webpack_require__(56);\r\nvar ImportCommand = /** @class */ (function (_super) {\r\n __extends(ImportCommand, _super);\r\n function ImportCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ImportCommand.prototype.executeCore = function (state, parameter) {\r\n this.permissionsProvider.lockPermissions();\r\n var data = parameter[\"data\"] ? parameter[\"data\"] : parameter;\r\n var importer = new Importer_1.Importer(this.control.shapeDescriptionManager, data);\r\n if (parameter[\"keepExistingItems\"] === true) {\r\n importer.importItemsData(this.control.model);\r\n this.control.importItemsData();\r\n }\r\n else {\r\n var model = importer.import();\r\n this.control.importModel(model);\r\n }\r\n this.permissionsProvider.unlockPermissions();\r\n return true;\r\n };\r\n return ImportCommand;\r\n}(ExportImportCommandBase_1.ExportImportCommandBase));\r\nexports.ImportCommand = ImportCommand;\r\n\n\n/***/ }),\n/* 202 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ProcessShapeDescription = void 0;\r\nvar RectangleShapeDescription_1 = __webpack_require__(18);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar ProcessShapeDescription = /** @class */ (function (_super) {\r\n __extends(ProcessShapeDescription, _super);\r\n function ProcessShapeDescription() {\r\n return _super.call(this, undefined, true) || this;\r\n }\r\n Object.defineProperty(ProcessShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.Process; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ProcessShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return ProcessShapeDescription;\r\n}(RectangleShapeDescription_1.RectangleShapeDescription));\r\nexports.ProcessShapeDescription = ProcessShapeDescription;\r\n\n\n/***/ }),\n/* 203 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DecisionShapeDescription = void 0;\r\nvar DiamondShapeDescription_1 = __webpack_require__(121);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar size_1 = __webpack_require__(2);\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar DecisionShapeDescription = /** @class */ (function (_super) {\r\n __extends(DecisionShapeDescription, _super);\r\n function DecisionShapeDescription() {\r\n return _super.call(this, new size_1.Size(ShapeDescription_1.ShapeDefaultDimension, ShapeDescription_1.ShapeDefaultDimension * 0.75), true) || this;\r\n }\r\n Object.defineProperty(DecisionShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.Decision; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return DecisionShapeDescription;\r\n}(DiamondShapeDescription_1.DiamondShapeDescription));\r\nexports.DecisionShapeDescription = DecisionShapeDescription;\r\n\n\n/***/ }),\n/* 204 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ManualInputShapeDescription = void 0;\r\nvar RectangleShapeDescription_1 = __webpack_require__(18);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar ManualInputShapeDescription = /** @class */ (function (_super) {\r\n __extends(ManualInputShapeDescription, _super);\r\n function ManualInputShapeDescription() {\r\n return _super.call(this, undefined, true) || this;\r\n }\r\n Object.defineProperty(ManualInputShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.ManualInput; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ManualInputShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ManualInputShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var _a = shape.rectangle, left = _a.x, top = _a.y, right = _a.right, bottom = _a.bottom, height = _a.height;\r\n var y1 = top + height * ManualInputShapeDescription.slopeHeightRatio;\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(left, y1),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left, bottom),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ], shape.style)\r\n ];\r\n };\r\n ManualInputShapeDescription.prototype.processConnectionPoint = function (shape, point) {\r\n var side = shape.getConnectionPointSide(point);\r\n if (side === DiagramItem_1.ConnectionPointSide.North)\r\n point.y += ManualInputShapeDescription.slopeHeightRatio / 2 * shape.size.height;\r\n };\r\n ManualInputShapeDescription.prototype.getTextRectangle = function (shape) {\r\n var yOffset = shape.size.height * ManualInputShapeDescription.slopeHeightRatio;\r\n return shape.rectangle.clone()\r\n .moveRectangle(ShapeDescription_1.ShapeTextPadding, yOffset)\r\n .resize(-ShapeDescription_1.ShapeTextPadding * 2, -yOffset - ShapeDescription_1.ShapeTextPadding)\r\n .nonNegativeSize();\r\n };\r\n ManualInputShapeDescription.slopeHeightRatio = 0.1;\r\n return ManualInputShapeDescription;\r\n}(RectangleShapeDescription_1.RectangleShapeDescription));\r\nexports.ManualInputShapeDescription = ManualInputShapeDescription;\r\n\n\n/***/ }),\n/* 205 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DataShapeDescription = void 0;\r\nvar RectangleShapeDescription_1 = __webpack_require__(18);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar DataShapeDescription = /** @class */ (function (_super) {\r\n __extends(DataShapeDescription, _super);\r\n function DataShapeDescription() {\r\n return _super.call(this, undefined, true) || this;\r\n }\r\n Object.defineProperty(DataShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.Data; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n DataShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var _a = shape.rectangle, left = _a.x, top = _a.y, right = _a.right, bottom = _a.bottom, width = _a.width, height = _a.height;\r\n var px = Math.min(Math.max(0, height / Math.tan(DataShapeDescription.slopeAngle)), width);\r\n var x1 = left + px;\r\n var x2 = right - px;\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(x1, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(x2, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left, bottom),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ], shape.style)\r\n ];\r\n };\r\n DataShapeDescription.prototype.processConnectionPoint = function (shape, point) {\r\n var offset = shape.size.height / Math.tan(DataShapeDescription.slopeAngle);\r\n var side = shape.getConnectionPointSide(point);\r\n if (side === DiagramItem_1.ConnectionPointSide.East)\r\n point.x -= offset / 2;\r\n else if (side === DiagramItem_1.ConnectionPointSide.West)\r\n point.x += offset / 2;\r\n };\r\n DataShapeDescription.prototype.getTextRectangle = function (shape) {\r\n var px = Math.min(Math.max(0, shape.size.height / Math.tan(DataShapeDescription.slopeAngle)), shape.size.width);\r\n return shape.rectangle.clone().moveRectangle(px, ShapeDescription_1.ShapeTextPadding).resize(-px * 2, -ShapeDescription_1.ShapeTextPadding * 2);\r\n };\r\n DataShapeDescription.slopeAngle = 81 * Math.PI / 180;\r\n return DataShapeDescription;\r\n}(RectangleShapeDescription_1.RectangleShapeDescription));\r\nexports.DataShapeDescription = DataShapeDescription;\r\n\n\n/***/ }),\n/* 206 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.TerminatorShapeDescription = void 0;\r\nvar RectangleShapeDescription_1 = __webpack_require__(18);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar size_1 = __webpack_require__(2);\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar TerminatorShapeDescription = /** @class */ (function (_super) {\r\n __extends(TerminatorShapeDescription, _super);\r\n function TerminatorShapeDescription() {\r\n return _super.call(this, new size_1.Size(ShapeDescription_1.ShapeDefaultDimension, ShapeDescription_1.ShapeDefaultDimension * 0.5), true) || this;\r\n }\r\n Object.defineProperty(TerminatorShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.Terminator; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(TerminatorShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n TerminatorShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom, width = rect.width;\r\n var cy = rect.center.y;\r\n var x1 = left + width * TerminatorShapeDescription.curveWidthRatio;\r\n var x2 = left + width * (1 - TerminatorShapeDescription.curveWidthRatio);\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(x1, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(x2, top),\r\n new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(right, top, right, cy),\r\n new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(right, bottom, x2, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(x1, bottom),\r\n new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(left, bottom, left, cy),\r\n new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(left, top, x1, top),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ], shape.style)\r\n ];\r\n };\r\n TerminatorShapeDescription.prototype.getTextRectangle = function (shape) {\r\n var textSize = Utils_1.GeometryUtils.getMaxRectangleEnscribedInEllipse(shape.size);\r\n return rectangle_1.Rectangle.fromGeometry(shape.position.clone().offset((shape.size.width - textSize.width) / 2, (shape.size.height - textSize.height) / 2), textSize);\r\n };\r\n TerminatorShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\r\n return Utils_1.GeometryUtils.getEllipseByEnscribedRectangle(textSize);\r\n };\r\n TerminatorShapeDescription.curveWidthRatio = 0.3;\r\n return TerminatorShapeDescription;\r\n}(RectangleShapeDescription_1.RectangleShapeDescription));\r\nexports.TerminatorShapeDescription = TerminatorShapeDescription;\r\n\n\n/***/ }),\n/* 207 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PredefinedProcessShapeDescription = exports.PredefinedProcessEdgeParameterName = void 0;\r\nvar RectangleShapeDescription_1 = __webpack_require__(18);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar ShapeParameters_1 = __webpack_require__(38);\r\nvar ShapeParameterPoint_1 = __webpack_require__(31);\r\nvar point_1 = __webpack_require__(1);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nexports.PredefinedProcessEdgeParameterName = \"e\";\r\nvar PredefinedProcessShapeDescription = /** @class */ (function (_super) {\r\n __extends(PredefinedProcessShapeDescription, _super);\r\n function PredefinedProcessShapeDescription() {\r\n return _super.call(this, undefined, true) || this;\r\n }\r\n Object.defineProperty(PredefinedProcessShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.PredefinedProcess; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(PredefinedProcessShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n PredefinedProcessShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom;\r\n var x1 = left + shape.parameters.get(exports.PredefinedProcessEdgeParameterName).value;\r\n var x2 = right - shape.parameters.get(exports.PredefinedProcessEdgeParameterName).value;\r\n var primitives = _super.prototype.createShapePrimitives.call(this, shape);\r\n return primitives.concat([\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(x1, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(x1, bottom),\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(x2, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(x2, bottom)\r\n ], shape.style)\r\n ]);\r\n };\r\n PredefinedProcessShapeDescription.prototype.createParameters = function (parameters) {\r\n parameters.add(new ShapeParameters_1.ShapeParameter(exports.PredefinedProcessEdgeParameterName, this.defaultSize.width * 0.1));\r\n };\r\n PredefinedProcessShapeDescription.prototype.normalizeParameters = function (shape, parameters) {\r\n this.changeParameterValue(parameters, exports.PredefinedProcessEdgeParameterName, function (p) { return Math.max(PredefinedProcessShapeDescription.minEdge, Math.min(shape.size.width * 0.3, p.value)); });\r\n };\r\n PredefinedProcessShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\r\n this.changeParameterValue(parameters, exports.PredefinedProcessEdgeParameterName, function (p) { return p.value + deltaX; });\r\n this.normalizeParameters(shape, parameters);\r\n };\r\n PredefinedProcessShapeDescription.prototype.getParameterPoints = function (shape) {\r\n return [\r\n new ShapeParameterPoint_1.ShapeParameterPoint(\"c\", new point_1.Point(shape.normalizeX(shape.position.x + shape.parameters.get(exports.PredefinedProcessEdgeParameterName).value), shape.position.y))\r\n ];\r\n };\r\n PredefinedProcessShapeDescription.prototype.getTextRectangle = function (shape) {\r\n var rect = shape.rectangle;\r\n var dx = shape.parameters.get(exports.PredefinedProcessEdgeParameterName).value;\r\n return rect.clone().resize(-2 * dx, 0).clone().moveRectangle(dx, 0);\r\n };\r\n PredefinedProcessShapeDescription.minEdge = 72;\r\n return PredefinedProcessShapeDescription;\r\n}(RectangleShapeDescription_1.RectangleShapeDescription));\r\nexports.PredefinedProcessShapeDescription = PredefinedProcessShapeDescription;\r\n\n\n/***/ }),\n/* 208 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ArrowUpDownShapeDescription = void 0;\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar ShapeParameterPoint_1 = __webpack_require__(31);\r\nvar point_1 = __webpack_require__(1);\r\nvar ArrowVerticalShapeDescription_1 = __webpack_require__(92);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar ArrowUpDownShapeDescription = /** @class */ (function (_super) {\r\n __extends(ArrowUpDownShapeDescription, _super);\r\n function ArrowUpDownShapeDescription() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(ArrowUpDownShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.ArrowUpDown; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ArrowUpDownShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom, width = rect.width;\r\n var cx = rect.center.x;\r\n var p1dx = (width - shape.parameters.get(ArrowVerticalShapeDescription_1.ArrowVerticalLineWidthParameterName).value) / 2;\r\n var p0dy = shape.parameters.get(ArrowVerticalShapeDescription_1.ArrowVerticalTriangleHeightParameterName).value;\r\n var p1x1 = shape.normalizeX(left + p1dx);\r\n var p0y1 = shape.normalizeY(top + p0dy);\r\n var p1x2 = shape.normalizeX(right - p1dx);\r\n var p0y2 = shape.normalizeY(bottom - p0dy);\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(cx, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, p0y1),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p1x2, p0y1),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p1x2, p0y2),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, p0y2),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(cx, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left, p0y2),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p1x1, p0y2),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p1x1, p0y1),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left, p0y1),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ], shape.style)\r\n ];\r\n };\r\n ArrowUpDownShapeDescription.prototype.normalizeParameters = function (shape, parameters) {\r\n this.changeParameterValue(parameters, ArrowVerticalShapeDescription_1.ArrowVerticalTriangleHeightParameterName, function (p) { return Math.max(0, Math.min(shape.size.height / 2 - 2 * shape.strokeWidth, p.value)); });\r\n this.changeParameterValue(parameters, ArrowVerticalShapeDescription_1.ArrowVerticalLineWidthParameterName, function (p) { return Math.max(0, Math.min(shape.size.width, p.value)); });\r\n };\r\n ArrowUpDownShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\r\n this.changeParameterValue(parameters, ArrowVerticalShapeDescription_1.ArrowVerticalTriangleHeightParameterName, function (p) { return p.value + deltaY; });\r\n this.changeParameterValue(parameters, ArrowVerticalShapeDescription_1.ArrowVerticalLineWidthParameterName, function (p) { return p.value - deltaX * 2; });\r\n this.normalizeParameters(shape, parameters);\r\n };\r\n ArrowUpDownShapeDescription.prototype.getParameterPoints = function (shape) {\r\n return [\r\n 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)))\r\n ];\r\n };\r\n return ArrowUpDownShapeDescription;\r\n}(ArrowVerticalShapeDescription_1.ArrowVerticalShapeDescription));\r\nexports.ArrowUpDownShapeDescription = ArrowUpDownShapeDescription;\r\n\n\n/***/ }),\n/* 209 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ArrowRightShapeDescription = void 0;\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar ArrowHorizontalShapeDescription_1 = __webpack_require__(93);\r\nvar ShapeParameterPoint_1 = __webpack_require__(31);\r\nvar point_1 = __webpack_require__(1);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar ArrowRightShapeDescription = /** @class */ (function (_super) {\r\n __extends(ArrowRightShapeDescription, _super);\r\n function ArrowRightShapeDescription() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(ArrowRightShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.ArrowRight; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ArrowRightShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom, width = rect.width, height = rect.height;\r\n var cy = rect.center.y;\r\n var p0dx = width - shape.parameters.get(ArrowHorizontalShapeDescription_1.ArrowVerticalTriangleWidthParameterName).value;\r\n var p1dy = (height - shape.parameters.get(ArrowHorizontalShapeDescription_1.ArrowVerticalLineHeightParameterName).value) / 2;\r\n var p0x1 = shape.normalizeX(left + p0dx);\r\n var p1y1 = shape.normalizeY(top + p1dy);\r\n var p1y2 = shape.normalizeY(bottom - p1dy);\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(left, p1y1),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, p1y1),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, cy),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, p1y2),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left, p1y2),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ], shape.style)\r\n ];\r\n };\r\n ArrowRightShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\r\n this.changeParameterValue(parameters, ArrowHorizontalShapeDescription_1.ArrowVerticalTriangleWidthParameterName, function (p) { return p.value - deltaX; });\r\n this.changeParameterValue(parameters, ArrowHorizontalShapeDescription_1.ArrowVerticalLineHeightParameterName, function (p) { return p.value - deltaY * 2; });\r\n this.normalizeParameters(shape, parameters);\r\n };\r\n ArrowRightShapeDescription.prototype.getParameterPoints = function (shape) {\r\n return [\r\n 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)))\r\n ];\r\n };\r\n ArrowRightShapeDescription.prototype.processConnectionPoint = function (shape, point) {\r\n var triangleWidth = shape.parameters.get(ArrowHorizontalShapeDescription_1.ArrowVerticalTriangleWidthParameterName).value;\r\n if (point.x > shape.position.x + shape.size.width - triangleWidth) {\r\n var tg = shape.size.height / 2 / triangleWidth;\r\n var delta = (point.x - (shape.position.x + shape.size.width - triangleWidth)) * tg;\r\n var side = shape.getConnectionPointSide(point);\r\n if (side === DiagramItem_1.ConnectionPointSide.North)\r\n point.y += delta;\r\n else if (side === DiagramItem_1.ConnectionPointSide.South)\r\n point.y -= delta;\r\n }\r\n else\r\n _super.prototype.processConnectionPoint.call(this, shape, point);\r\n };\r\n return ArrowRightShapeDescription;\r\n}(ArrowHorizontalShapeDescription_1.ArrowHorizontalShapeDescription));\r\nexports.ArrowRightShapeDescription = ArrowRightShapeDescription;\r\n\n\n/***/ }),\n/* 210 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ArrowUpShapeDescription = void 0;\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar ShapeParameterPoint_1 = __webpack_require__(31);\r\nvar point_1 = __webpack_require__(1);\r\nvar ArrowVerticalShapeDescription_1 = __webpack_require__(92);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar ArrowUpShapeDescription = /** @class */ (function (_super) {\r\n __extends(ArrowUpShapeDescription, _super);\r\n function ArrowUpShapeDescription() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(ArrowUpShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.ArrowUp; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ArrowUpShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom, width = rect.width;\r\n var cx = rect.center.x;\r\n var p1dx = (width - shape.parameters.get(ArrowVerticalShapeDescription_1.ArrowVerticalLineWidthParameterName).value) / 2;\r\n var p0dy = shape.parameters.get(ArrowVerticalShapeDescription_1.ArrowVerticalTriangleHeightParameterName).value;\r\n var p1x1 = shape.normalizeX(left + p1dx);\r\n var p0y1 = shape.normalizeY(top + p0dy);\r\n var p1x2 = shape.normalizeX(right - p1dx);\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(cx, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, p0y1),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p1x2, p0y1),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p1x2, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p1x1, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p1x1, p0y1),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left, p0y1),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ], shape.style)\r\n ];\r\n };\r\n ArrowUpShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\r\n this.changeParameterValue(parameters, ArrowVerticalShapeDescription_1.ArrowVerticalTriangleHeightParameterName, function (p) { return p.value + deltaY; });\r\n this.changeParameterValue(parameters, ArrowVerticalShapeDescription_1.ArrowVerticalLineWidthParameterName, function (p) { return p.value - deltaX * 2; });\r\n this.normalizeParameters(shape, parameters);\r\n };\r\n ArrowUpShapeDescription.prototype.getParameterPoints = function (shape) {\r\n return [\r\n 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)))\r\n ];\r\n };\r\n ArrowUpShapeDescription.prototype.processConnectionPoint = function (shape, point) {\r\n var triangleHeight = shape.parameters.get(ArrowVerticalShapeDescription_1.ArrowVerticalTriangleHeightParameterName).value;\r\n if (point.y < shape.position.y + triangleHeight) {\r\n var tg = shape.size.width / 2 / triangleHeight;\r\n var delta = (shape.position.y + triangleHeight - point.y) * tg;\r\n var side = shape.getConnectionPointSide(point);\r\n if (side === DiagramItem_1.ConnectionPointSide.East)\r\n point.x -= delta;\r\n else if (side === DiagramItem_1.ConnectionPointSide.West)\r\n point.x += delta;\r\n }\r\n else\r\n _super.prototype.processConnectionPoint.call(this, shape, point);\r\n };\r\n return ArrowUpShapeDescription;\r\n}(ArrowVerticalShapeDescription_1.ArrowVerticalShapeDescription));\r\nexports.ArrowUpShapeDescription = ArrowUpShapeDescription;\r\n\n\n/***/ }),\n/* 211 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CrossShapeDescription = exports.CrossVerticalWidthParameterName = exports.CrossHorizontalWidthParameterName = void 0;\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar point_1 = __webpack_require__(1);\r\nvar ShapeParameters_1 = __webpack_require__(38);\r\nvar ShapeParameterPoint_1 = __webpack_require__(31);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nexports.CrossHorizontalWidthParameterName = \"chw\";\r\nexports.CrossVerticalWidthParameterName = \"cvw\";\r\nvar CrossShapeDescription = /** @class */ (function (_super) {\r\n __extends(CrossShapeDescription, _super);\r\n function CrossShapeDescription() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(CrossShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.Cross; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(CrossShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return true; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n CrossShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom, width = rect.width, height = rect.height;\r\n var p0dx = (width - shape.parameters.get(exports.CrossHorizontalWidthParameterName).value) / 2;\r\n var p1dy = (height - shape.parameters.get(exports.CrossVerticalWidthParameterName).value) / 2;\r\n var p0x1 = shape.normalizeX(left + p0dx);\r\n var p1y1 = shape.normalizeY(top + p1dy);\r\n var p0x2 = shape.normalizeX(right - p0dx);\r\n var p1y2 = shape.normalizeY(bottom - p1dy);\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(left, p1y1),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, p1y1),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x2, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x2, p1y1),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, p1y1),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, p1y2),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x2, p1y2),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x2, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, p1y2),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left, p1y2),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ], shape.style)\r\n ];\r\n };\r\n CrossShapeDescription.prototype.createParameters = function (parameters) {\r\n parameters.addRange([\r\n new ShapeParameters_1.ShapeParameter(exports.CrossHorizontalWidthParameterName, this.defaultSize.width * 0.2),\r\n new ShapeParameters_1.ShapeParameter(exports.CrossVerticalWidthParameterName, this.defaultSize.height * 0.2)\r\n ]);\r\n };\r\n CrossShapeDescription.prototype.normalizeParameters = function (shape, parameters) {\r\n this.changeParameterValue(parameters, exports.CrossHorizontalWidthParameterName, function (p) { return Math.max(0, Math.min(shape.size.width, p.value)); });\r\n this.changeParameterValue(parameters, exports.CrossVerticalWidthParameterName, function (p) { return Math.max(0, Math.min(shape.size.height, p.value)); });\r\n };\r\n CrossShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\r\n this.changeParameterValue(parameters, exports.CrossHorizontalWidthParameterName, function (p) { return p.value - deltaX * 2; });\r\n this.changeParameterValue(parameters, exports.CrossVerticalWidthParameterName, function (p) { return p.value - deltaY * 2; });\r\n this.normalizeParameters(shape, parameters);\r\n };\r\n CrossShapeDescription.prototype.getParameterPoints = function (shape) {\r\n return [\r\n 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)))\r\n ];\r\n };\r\n CrossShapeDescription.prototype.getTextRectangle = function (shape) {\r\n return shape.rectangle.clone().inflate(-ShapeDescription_1.ShapeTextPadding, -ShapeDescription_1.ShapeTextPadding);\r\n };\r\n CrossShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\r\n return textSize.clone().offset(ShapeDescription_1.ShapeTextPadding * 2, ShapeDescription_1.ShapeTextPadding * 2);\r\n };\r\n return CrossShapeDescription;\r\n}(ShapeDescription_1.ShapeDescription));\r\nexports.CrossShapeDescription = CrossShapeDescription;\r\n\n\n/***/ }),\n/* 212 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.HeartShapeDescription = void 0;\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar ConnectionPoint_1 = __webpack_require__(46);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar HeartShapeDescription = /** @class */ (function (_super) {\r\n __extends(HeartShapeDescription, _super);\r\n function HeartShapeDescription() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(HeartShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.Heart; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(HeartShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return true; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n HeartShapeDescription.prototype.createConnectionPoints = function () {\r\n return [\r\n new ConnectionPoint_1.ConnectionPoint(0.5, 0.15, DiagramItem_1.ConnectionPointSide.North),\r\n new ConnectionPoint_1.ConnectionPoint(1, 0.25, DiagramItem_1.ConnectionPointSide.East),\r\n new ConnectionPoint_1.ConnectionPoint(0.5, 1, DiagramItem_1.ConnectionPointSide.South),\r\n new ConnectionPoint_1.ConnectionPoint(0, 0.25, DiagramItem_1.ConnectionPointSide.West)\r\n ];\r\n };\r\n HeartShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom, width = rect.width, height = rect.height;\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(right - width * 0.25, top),\r\n new PathPrimitive_1.PathPrimitiveCubicCurveToCommand(right - width * 0.15, top, right, top + height * 0.1, right, top + height * 0.25),\r\n 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),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(rect.center.x, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left + width * 0.05, top + height * 0.4),\r\n new PathPrimitive_1.PathPrimitiveCubicCurveToCommand(left + width * 0.02, top + height * 0.35, left, top + height * 0.3, left, top + height * 0.25),\r\n new PathPrimitive_1.PathPrimitiveCubicCurveToCommand(left, top + height * 0.1, left + width * 0.15, top, left + width * 0.25, top),\r\n 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),\r\n new PathPrimitive_1.PathPrimitiveCubicCurveToCommand(right - width * 0.45, top + height * 0.03, right - width * 0.3, top, right - width * 0.25, top),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ], shape.style)\r\n ];\r\n };\r\n HeartShapeDescription.prototype.getTextRectangle = function (shape) {\r\n return shape.rectangle.clone().inflate(-ShapeDescription_1.ShapeTextPadding, -ShapeDescription_1.ShapeTextPadding);\r\n };\r\n HeartShapeDescription.prototype.getSizeByText = function (_textSize, shape) {\r\n return shape.size.clone().offset(ShapeDescription_1.ShapeTextPadding * 2, ShapeDescription_1.ShapeTextPadding * 2);\r\n };\r\n return HeartShapeDescription;\r\n}(ShapeDescription_1.ShapeDescription));\r\nexports.HeartShapeDescription = HeartShapeDescription;\r\n\n\n/***/ }),\n/* 213 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.OctagonShapeDescription = void 0;\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar PolygonShapeDescription_1 = __webpack_require__(94);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar OctagonShapeDescription = /** @class */ (function (_super) {\r\n __extends(OctagonShapeDescription, _super);\r\n function OctagonShapeDescription() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(OctagonShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.Octagon; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(OctagonShapeDescription.prototype, \"angleCount\", {\r\n get: function () { return 8; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n OctagonShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom, width = rect.width, height = rect.height;\r\n var angle = Math.PI - this.angle;\r\n var sideX = width / (1 + 2 * Math.cos(angle));\r\n var sideY = height / (1 + 2 * Math.cos(angle));\r\n var x1 = left + (width - sideX) / 2;\r\n var x2 = x1 + sideX;\r\n var y1 = top + (height - sideY) / 2;\r\n var y2 = y1 + sideY;\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(x1, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(x2, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, y1),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, y2),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(x2, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(x1, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left, y2),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left, y1),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ], shape.style)\r\n ];\r\n };\r\n OctagonShapeDescription.prototype.calculateHeight = function (width) {\r\n return width;\r\n };\r\n OctagonShapeDescription.prototype.getTextRectangle = function (shape) {\r\n var textSize = Utils_1.GeometryUtils.getMaxRectangleEnscribedInEllipse(shape.size);\r\n return rectangle_1.Rectangle.fromGeometry(shape.position.clone().offset((shape.size.width - textSize.width) / 2, (shape.size.height - textSize.height) / 2), textSize);\r\n };\r\n OctagonShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\r\n return Utils_1.GeometryUtils.getEllipseByEnscribedRectangle(textSize);\r\n };\r\n return OctagonShapeDescription;\r\n}(PolygonShapeDescription_1.PolygonShapeDescription));\r\nexports.OctagonShapeDescription = OctagonShapeDescription;\r\n\n\n/***/ }),\n/* 214 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StarShapeDescription = exports.StarConvexParameterName = void 0;\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar PentagonShapeDescription_1 = __webpack_require__(123);\r\nvar ShapeParameters_1 = __webpack_require__(38);\r\nvar ShapeParameterPoint_1 = __webpack_require__(31);\r\nvar point_1 = __webpack_require__(1);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nexports.StarConvexParameterName = \"sc\";\r\nvar StarShapeDescription = /** @class */ (function (_super) {\r\n __extends(StarShapeDescription, _super);\r\n function StarShapeDescription() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(StarShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.Star; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n StarShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, width = rect.width, height = rect.height;\r\n var bottom = this.getActualBottom(top, rect.bottom, width, height);\r\n var cx = rect.center.x;\r\n var cy = top + (bottom - top) / 2;\r\n var ratio = height / width;\r\n var angle = Math.PI - this.angle;\r\n var py = width / 2 * Math.tan(angle / 2) * ratio;\r\n var y = top + py;\r\n var px = (height - py) / Math.tan(angle) / ratio;\r\n var x1 = left + px;\r\n var x2 = right - px;\r\n var pDistance = shape.parameters.get(exports.StarConvexParameterName).value;\r\n var distance = this.getInnerPointDistance(cx, cx, right, cy, top, y);\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(cx, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(this.getInnerPointPos(cx, cx, right, pDistance, distance), this.getInnerPointPos(cy, top, y, pDistance, distance)),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, y),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(this.getInnerPointPos(cx, right, x2, pDistance, distance), this.getInnerPointPos(cy, y, bottom, pDistance, distance)),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(x2, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(this.getInnerPointPos(cx, x2, x1, pDistance, distance), this.getInnerPointPos(cy, bottom, bottom, pDistance, distance)),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(x1, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(this.getInnerPointPos(cx, x1, left, pDistance, distance), this.getInnerPointPos(cy, bottom, y, pDistance, distance)),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left, y),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(this.getInnerPointPos(cx, left, cx, pDistance, distance), this.getInnerPointPos(cy, y, top, pDistance, distance)),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ], shape.style)\r\n ];\r\n };\r\n StarShapeDescription.prototype.createParameters = function (parameters) {\r\n parameters.addRange([\r\n new ShapeParameters_1.ShapeParameter(exports.StarConvexParameterName, 300)\r\n ]);\r\n };\r\n StarShapeDescription.prototype.normalizeParameters = function (shape, parameters) {\r\n var rect = shape.rectangle;\r\n var top = rect.y, right = rect.right, width = rect.width, height = rect.height;\r\n var bottom = this.getActualBottom(top, rect.bottom, width, height);\r\n var cx = rect.center.x;\r\n var cy = top + (bottom - top) / 2;\r\n var ratio = height / width;\r\n var angle = Math.PI - this.angle;\r\n var py = width / 2 * Math.tan(angle / 2) * ratio;\r\n var y = top + py;\r\n var distance = this.getInnerPointDistance(cx, cx, right, cy, top, y);\r\n this.changeParameterValue(parameters, exports.StarConvexParameterName, function (p) { return Math.max(0, Math.min(distance, p.value)); });\r\n };\r\n StarShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\r\n var distance = Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\r\n if (deltaX < 0 || deltaY > 0)\r\n distance = -distance;\r\n this.changeParameterValue(parameters, exports.StarConvexParameterName, function (p) { return p.value + distance; });\r\n this.normalizeParameters(shape, parameters);\r\n };\r\n StarShapeDescription.prototype.getParameterPoints = function (shape) {\r\n var rect = shape.rectangle;\r\n var top = rect.y, right = rect.right, width = rect.width, height = rect.height;\r\n var bottom = this.getActualBottom(top, rect.bottom, width, height);\r\n var cx = rect.center.x;\r\n var cy = top + (bottom - top) / 2;\r\n var ratio = height / width;\r\n var angle = Math.PI - this.angle;\r\n var py = width / 2 * Math.tan(angle / 2) * ratio;\r\n var y = top + py;\r\n var pDistance = shape.parameters.get(exports.StarConvexParameterName).value;\r\n var distance = this.getInnerPointDistance(cx, cx, right, cy, top, y);\r\n var innerPointX = this.getInnerPointPos(cx, cx, right, pDistance, distance);\r\n var innerPointY = this.getInnerPointPos(cy, top, y, pDistance, distance);\r\n return [\r\n new ShapeParameterPoint_1.ShapeParameterPoint(\"c\", new point_1.Point(innerPointX, innerPointY))\r\n ];\r\n };\r\n StarShapeDescription.prototype.processConnectionPoint = function (shape, point) {\r\n _super.prototype.processConnectionPoint.call(this, shape, point);\r\n var side = shape.getConnectionPointSide(point);\r\n if (side === DiagramItem_1.ConnectionPointSide.South) {\r\n var rect = shape.rectangle;\r\n var top_1 = rect.y, right = rect.right, width = rect.width, height = rect.height;\r\n var bottom = this.getActualBottom(top_1, rect.bottom, width, height);\r\n var cx = rect.center.x;\r\n var cy = top_1 + (bottom - top_1) / 2;\r\n var ratio = height / width;\r\n var angle = Math.PI - this.angle;\r\n var py = width / 2 * Math.tan(angle / 2) * ratio;\r\n var y = top_1 + py;\r\n var pDistance = shape.parameters.get(exports.StarConvexParameterName).value;\r\n var distance = this.getInnerPointDistance(cx, cx, right, cy, top_1, y);\r\n point.y = this.getInnerPointPos(cy, bottom, bottom, pDistance, distance);\r\n }\r\n };\r\n StarShapeDescription.prototype.getInnerPointDistanceByAxis = function (center, edge1, edge2) {\r\n var edgeX = Math.min(edge1, edge2) + Math.abs(edge1 - edge2) / 2;\r\n return edgeX - center;\r\n };\r\n StarShapeDescription.prototype.getInnerPointPos = function (center, edge1, edge2, pDistance, distance) {\r\n var ratio = Math.min(1, pDistance / distance);\r\n return center + this.getInnerPointDistanceByAxis(center, edge1, edge2) * ratio;\r\n };\r\n StarShapeDescription.prototype.getInnerPointDistance = function (centerX, edgeX1, edgeX2, centerY, edgeY1, edgeY2) {\r\n var disX = this.getInnerPointDistanceByAxis(centerX, edgeX1, edgeX2);\r\n var disY = this.getInnerPointDistanceByAxis(centerY, edgeY1, edgeY2);\r\n return Math.sqrt(Math.pow(disX, 2) + Math.pow(disY, 2));\r\n };\r\n StarShapeDescription.prototype.getActualBottom = function (top, bottom, width, height) {\r\n var result = top + _super.prototype.calculateHeight.call(this, width) * height / width;\r\n return result < bottom ? result : bottom;\r\n };\r\n StarShapeDescription.prototype.calculateHeight = function (width) {\r\n return width;\r\n };\r\n return StarShapeDescription;\r\n}(PentagonShapeDescription_1.PentagonShapeDescription));\r\nexports.StarShapeDescription = StarShapeDescription;\r\n\n\n/***/ }),\n/* 215 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ArrowDownShapeDescription = void 0;\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar ShapeParameterPoint_1 = __webpack_require__(31);\r\nvar point_1 = __webpack_require__(1);\r\nvar ArrowVerticalShapeDescription_1 = __webpack_require__(92);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar ArrowDownShapeDescription = /** @class */ (function (_super) {\r\n __extends(ArrowDownShapeDescription, _super);\r\n function ArrowDownShapeDescription() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(ArrowDownShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.ArrowDown; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ArrowDownShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom, width = rect.width, height = rect.height;\r\n var cx = rect.center.x;\r\n var p1dx = (width - shape.parameters.get(ArrowVerticalShapeDescription_1.ArrowVerticalLineWidthParameterName).value) / 2;\r\n var p0dy = height - shape.parameters.get(ArrowVerticalShapeDescription_1.ArrowVerticalTriangleHeightParameterName).value;\r\n var p1x1 = shape.normalizeX(left + p1dx);\r\n var p0y1 = shape.normalizeY(top + p0dy);\r\n var p1x2 = shape.normalizeX(right - p1dx);\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(p1x1, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p1x2, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p1x2, p0y1),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, p0y1),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(cx, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left, p0y1),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p1x1, p0y1),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ], shape.style)\r\n ];\r\n };\r\n ArrowDownShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\r\n this.changeParameterValue(parameters, ArrowVerticalShapeDescription_1.ArrowVerticalTriangleHeightParameterName, function (p) { return p.value - deltaY; });\r\n this.changeParameterValue(parameters, ArrowVerticalShapeDescription_1.ArrowVerticalLineWidthParameterName, function (p) { return p.value - deltaX * 2; });\r\n this.normalizeParameters(shape, parameters);\r\n };\r\n ArrowDownShapeDescription.prototype.getParameterPoints = function (shape) {\r\n return [\r\n 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)))\r\n ];\r\n };\r\n ArrowDownShapeDescription.prototype.processConnectionPoint = function (shape, point) {\r\n var triangleHeight = shape.parameters.get(ArrowVerticalShapeDescription_1.ArrowVerticalTriangleHeightParameterName).value;\r\n if (point.y > shape.position.y + shape.size.height - triangleHeight) {\r\n var tg = shape.size.width / 2 / triangleHeight;\r\n var delta = (point.y - (shape.position.y + shape.size.height - triangleHeight)) * tg;\r\n var side = shape.getConnectionPointSide(point);\r\n if (side === DiagramItem_1.ConnectionPointSide.East)\r\n point.x -= delta;\r\n else if (side === DiagramItem_1.ConnectionPointSide.West)\r\n point.x += delta;\r\n }\r\n else\r\n _super.prototype.processConnectionPoint.call(this, shape, point);\r\n };\r\n return ArrowDownShapeDescription;\r\n}(ArrowVerticalShapeDescription_1.ArrowVerticalShapeDescription));\r\nexports.ArrowDownShapeDescription = ArrowDownShapeDescription;\r\n\n\n/***/ }),\n/* 216 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ArrowLeftRightShapeDescription = void 0;\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar ArrowHorizontalShapeDescription_1 = __webpack_require__(93);\r\nvar ShapeParameterPoint_1 = __webpack_require__(31);\r\nvar point_1 = __webpack_require__(1);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar ArrowLeftRightShapeDescription = /** @class */ (function (_super) {\r\n __extends(ArrowLeftRightShapeDescription, _super);\r\n function ArrowLeftRightShapeDescription() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(ArrowLeftRightShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.ArrowLeftRight; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ArrowLeftRightShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom, height = rect.height;\r\n var cy = rect.center.y;\r\n var p0dx = shape.parameters.get(ArrowHorizontalShapeDescription_1.ArrowVerticalTriangleWidthParameterName).value;\r\n var p1dy = (height - shape.parameters.get(ArrowHorizontalShapeDescription_1.ArrowVerticalLineHeightParameterName).value) / 2;\r\n var p0x1 = shape.normalizeX(left + p0dx);\r\n var p1y1 = shape.normalizeY(top + p1dy);\r\n var p0x2 = shape.normalizeX(right - p0dx);\r\n var p1y2 = shape.normalizeY(bottom - p1dy);\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(left, cy),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, p1y1),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x2, p1y1),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x2, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, cy),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x2, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x2, p1y2),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, p1y2),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, bottom),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ], shape.style)\r\n ];\r\n };\r\n ArrowLeftRightShapeDescription.prototype.normalizeParameters = function (shape, parameters) {\r\n this.changeParameterValue(parameters, ArrowHorizontalShapeDescription_1.ArrowVerticalTriangleWidthParameterName, function (p) { return Math.max(0, Math.min(shape.size.width / 2 - 2 * shape.strokeWidth, p.value)); });\r\n this.changeParameterValue(parameters, ArrowHorizontalShapeDescription_1.ArrowVerticalLineHeightParameterName, function (p) { return Math.max(0, Math.min(shape.size.height, p.value)); });\r\n };\r\n ArrowLeftRightShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\r\n this.changeParameterValue(parameters, ArrowHorizontalShapeDescription_1.ArrowVerticalTriangleWidthParameterName, function (p) { return p.value + deltaX; });\r\n this.changeParameterValue(parameters, ArrowHorizontalShapeDescription_1.ArrowVerticalLineHeightParameterName, function (p) { return p.value - deltaY * 2; });\r\n this.normalizeParameters(shape, parameters);\r\n };\r\n ArrowLeftRightShapeDescription.prototype.getParameterPoints = function (shape) {\r\n return [\r\n 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)))\r\n ];\r\n };\r\n return ArrowLeftRightShapeDescription;\r\n}(ArrowHorizontalShapeDescription_1.ArrowHorizontalShapeDescription));\r\nexports.ArrowLeftRightShapeDescription = ArrowLeftRightShapeDescription;\r\n\n\n/***/ }),\n/* 217 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ArrowLeftShapeDescription = void 0;\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar ArrowHorizontalShapeDescription_1 = __webpack_require__(93);\r\nvar ShapeParameterPoint_1 = __webpack_require__(31);\r\nvar point_1 = __webpack_require__(1);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar ArrowLeftShapeDescription = /** @class */ (function (_super) {\r\n __extends(ArrowLeftShapeDescription, _super);\r\n function ArrowLeftShapeDescription() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(ArrowLeftShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.ArrowLeft; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ArrowLeftShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom, height = rect.height;\r\n var cy = rect.center.y;\r\n var p0dx = shape.parameters.get(ArrowHorizontalShapeDescription_1.ArrowVerticalTriangleWidthParameterName).value;\r\n var p1dy = (height - shape.parameters.get(ArrowHorizontalShapeDescription_1.ArrowVerticalLineHeightParameterName).value) / 2;\r\n var p0x1 = shape.normalizeX(left + p0dx);\r\n var p1y1 = shape.normalizeY(top + p1dy);\r\n var p1y2 = shape.normalizeY(bottom - p1dy);\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(left, cy),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, p1y1),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, p1y1),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, p1y2),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, p1y2),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, bottom),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ], shape.style)\r\n ];\r\n };\r\n ArrowLeftShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\r\n this.changeParameterValue(parameters, ArrowHorizontalShapeDescription_1.ArrowVerticalTriangleWidthParameterName, function (p) { return p.value + deltaX; });\r\n this.changeParameterValue(parameters, ArrowHorizontalShapeDescription_1.ArrowVerticalLineHeightParameterName, function (p) { return p.value - deltaY * 2; });\r\n this.normalizeParameters(shape, parameters);\r\n };\r\n ArrowLeftShapeDescription.prototype.getParameterPoints = function (shape) {\r\n return [\r\n 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)))\r\n ];\r\n };\r\n ArrowLeftShapeDescription.prototype.processConnectionPoint = function (shape, point) {\r\n var triangleWidth = shape.parameters.get(ArrowHorizontalShapeDescription_1.ArrowVerticalTriangleWidthParameterName).value;\r\n if (point.x < shape.position.x + triangleWidth) {\r\n var tg = shape.size.height / 2 / triangleWidth;\r\n var delta = (shape.position.x + triangleWidth - point.x) * tg;\r\n var side = shape.getConnectionPointSide(point);\r\n if (side === DiagramItem_1.ConnectionPointSide.North)\r\n point.y += delta;\r\n else if (side === DiagramItem_1.ConnectionPointSide.South)\r\n point.y -= delta;\r\n }\r\n else\r\n _super.prototype.processConnectionPoint.call(this, shape, point);\r\n };\r\n return ArrowLeftShapeDescription;\r\n}(ArrowHorizontalShapeDescription_1.ArrowHorizontalShapeDescription));\r\nexports.ArrowLeftShapeDescription = ArrowLeftShapeDescription;\r\n\n\n/***/ }),\n/* 218 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MultipleDocumentsShapeDescription = void 0;\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar DocumentShapeDescription_1 = __webpack_require__(126);\r\nvar ClipPathPrimitive_1 = __webpack_require__(55);\r\nvar Utils_1 = __webpack_require__(17);\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar size_1 = __webpack_require__(2);\r\nvar MultipleDocumentsShapeDescription = /** @class */ (function (_super) {\r\n __extends(MultipleDocumentsShapeDescription, _super);\r\n function MultipleDocumentsShapeDescription() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(MultipleDocumentsShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.MultipleDocuments; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(MultipleDocumentsShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n MultipleDocumentsShapeDescription.prototype.createShapePrimitives = function (shape, forToolbox) {\r\n var rect = shape.rectangle;\r\n var _a = shape.rectangle, width = _a.width, height = _a.height;\r\n var ratio = forToolbox ? MultipleDocumentsShapeDescription.documentsOffsetRatioForToolbox : MultipleDocumentsShapeDescription.documentsOffsetRatio;\r\n var documentOffsetX = Math.ceil(width * ratio);\r\n var documentOffsetY = Math.ceil(height * ratio);\r\n rect = rect.clone().inflate(-documentOffsetX, -documentOffsetY).clone().moveRectangle(-documentOffsetX, -documentOffsetY);\r\n var rect1 = rect.clone().moveRectangle(documentOffsetX, documentOffsetY);\r\n var rect2 = rect1.clone().moveRectangle(documentOffsetX, documentOffsetY);\r\n var clipPathId = Utils_1.RenderUtils.generateSvgElementId(\"clipRect\");\r\n var primitives = [];\r\n return primitives\r\n .concat(this.createDocumentPrimitives(rect, shape.style, clipPathId + \"1\", rect1))\r\n .concat(this.createDocumentPrimitives(rect1, shape.style, clipPathId + \"2\", rect2))\r\n .concat(this.createDocumentPrimitives(rect2, shape.style));\r\n };\r\n MultipleDocumentsShapeDescription.prototype.createDocumentPrimitives = function (rect, style, clipPathId, clipRect) {\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom, width = rect.width, height = rect.height;\r\n var cx = rect.center.x;\r\n var dy = height * DocumentShapeDescription_1.DocumentShapeDescription.curveOffsetRatio;\r\n var primitives = [];\r\n primitives = primitives.concat([\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(left, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, bottom),\r\n new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(right - width * 0.25, bottom - 2 * dy, cx, bottom - dy),\r\n new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(left + width * 0.25, bottom + dy, left, bottom - dy),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ], style, undefined, clipRect && clipPathId)\r\n ]);\r\n if (clipRect && clipPathId)\r\n primitives = primitives.concat([\r\n new ClipPathPrimitive_1.ClipPathPrimitive(clipPathId, [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(left - style.strokeWidth, top - style.strokeWidth),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right + style.strokeWidth, top - style.strokeWidth),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right + style.strokeWidth, clipRect.y),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(clipRect.x, clipRect.y),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(clipRect.x, bottom + style.strokeWidth),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left - style.strokeWidth, bottom + style.strokeWidth),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ])\r\n ])\r\n ]);\r\n return primitives;\r\n };\r\n MultipleDocumentsShapeDescription.prototype.getTextRectangle = function (shape) {\r\n var rect = shape.rectangle;\r\n var documentOffsetX = rect.width * MultipleDocumentsShapeDescription.documentsOffsetRatio;\r\n var documentOffsetY = rect.height * MultipleDocumentsShapeDescription.documentsOffsetRatio;\r\n rect = rect.clone().inflate(-documentOffsetX, -documentOffsetY).clone().moveRectangle(-documentOffsetX, -documentOffsetY);\r\n var innerRect = rect.clone().moveRectangle(2 * documentOffsetX + ShapeDescription_1.ShapeTextPadding, 2 * documentOffsetY + ShapeDescription_1.ShapeTextPadding);\r\n return innerRect.clone().resize(-2 * ShapeDescription_1.ShapeTextPadding, -rect.height * DocumentShapeDescription_1.DocumentShapeDescription.curveOffsetRatio - 2 * ShapeDescription_1.ShapeTextPadding);\r\n };\r\n MultipleDocumentsShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\r\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)))\r\n .nonNegativeSize();\r\n };\r\n MultipleDocumentsShapeDescription.documentsOffsetRatio = 0.1;\r\n MultipleDocumentsShapeDescription.documentsOffsetRatioForToolbox = 0.16;\r\n return MultipleDocumentsShapeDescription;\r\n}(DocumentShapeDescription_1.DocumentShapeDescription));\r\nexports.MultipleDocumentsShapeDescription = MultipleDocumentsShapeDescription;\r\n\n\n/***/ }),\n/* 219 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PreparationShapeDescription = void 0;\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar size_1 = __webpack_require__(2);\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar HexagonShapeDescription_1 = __webpack_require__(124);\r\nvar PreparationShapeDescription = /** @class */ (function (_super) {\r\n __extends(PreparationShapeDescription, _super);\r\n function PreparationShapeDescription() {\r\n var _this = _super.call(this, true) || this;\r\n _this.defaultSize = new size_1.Size(ShapeDescription_1.ShapeDefaultDimension, ShapeDescription_1.ShapeDefaultDimension * 0.75);\r\n return _this;\r\n }\r\n Object.defineProperty(PreparationShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.Preparation; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return PreparationShapeDescription;\r\n}(HexagonShapeDescription_1.HexagonShapeDescription));\r\nexports.PreparationShapeDescription = PreparationShapeDescription;\r\n\n\n/***/ }),\n/* 220 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.HardDiskShapeDescription = void 0;\r\nvar RectangleShapeDescription_1 = __webpack_require__(18);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar EllipsePrimitive_1 = __webpack_require__(54);\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar size_1 = __webpack_require__(2);\r\nvar HardDiskShapeDescription = /** @class */ (function (_super) {\r\n __extends(HardDiskShapeDescription, _super);\r\n function HardDiskShapeDescription() {\r\n return _super.call(this, undefined, true) || this;\r\n }\r\n Object.defineProperty(HardDiskShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.HardDisk; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(HardDiskShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n HardDiskShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom, width = rect.width;\r\n var cy = rect.center.y;\r\n var dx = width * HardDiskShapeDescription.arcWidthRatio;\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(right - dx / 2, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left + dx / 2, top),\r\n new PathPrimitive_1.PathPrimitiveArcToCommand(dx / 2, (bottom - top) / 2, 0, false, false, left + dx / 2, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right - dx / 2, bottom),\r\n ], shape.style),\r\n new EllipsePrimitive_1.EllipsePrimitive(right - dx / 2, cy, dx / 2, (bottom - top) / 2, shape.style)\r\n ];\r\n };\r\n HardDiskShapeDescription.prototype.getTextRectangle = function (shape) {\r\n var rect = shape.rectangle;\r\n var dx = rect.width * HardDiskShapeDescription.arcWidthRatio * 1.5;\r\n return rect.clone()\r\n .resize(-dx - 2 * ShapeDescription_1.ShapeTextPadding, -2 * ShapeDescription_1.ShapeTextPadding)\r\n .moveRectangle(ShapeDescription_1.ShapeTextPadding, ShapeDescription_1.ShapeTextPadding)\r\n .nonNegativeSize();\r\n };\r\n HardDiskShapeDescription.prototype.getSizeByText = function (textSize, shape) {\r\n return new size_1.Size((textSize.width + ShapeDescription_1.ShapeTextPadding * 2) / (1 - 1.5 * HardDiskShapeDescription.arcWidthRatio), shape.size.height + ShapeDescription_1.ShapeTextPadding);\r\n };\r\n HardDiskShapeDescription.arcWidthRatio = 0.2;\r\n return HardDiskShapeDescription;\r\n}(RectangleShapeDescription_1.RectangleShapeDescription));\r\nexports.HardDiskShapeDescription = HardDiskShapeDescription;\r\n\n\n/***/ }),\n/* 221 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DatabaseShapeDescription = void 0;\r\nvar RectangleShapeDescription_1 = __webpack_require__(18);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar EllipsePrimitive_1 = __webpack_require__(54);\r\nvar DatabaseShapeDescription = /** @class */ (function (_super) {\r\n __extends(DatabaseShapeDescription, _super);\r\n function DatabaseShapeDescription() {\r\n var _this = _super.call(this, undefined, true) || this;\r\n _this.defaultSize.width = _this.defaultSize.height;\r\n return _this;\r\n }\r\n Object.defineProperty(DatabaseShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.Database; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DatabaseShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n DatabaseShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom, height = rect.height;\r\n var cx = rect.center.x;\r\n var dy = height * DatabaseShapeDescription.arcWidthRatio;\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(right, top + dy / 2),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, bottom - dy / 2),\r\n new PathPrimitive_1.PathPrimitiveArcToCommand((right - left) / 2, dy / 2, 0, false, true, left, bottom - dy / 2),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left, top + dy / 2),\r\n ], shape.style),\r\n new EllipsePrimitive_1.EllipsePrimitive(cx, top + dy / 2, (right - left) / 2, dy / 2, shape.style)\r\n ];\r\n };\r\n DatabaseShapeDescription.prototype.getTextRectangle = function (shape) {\r\n var rect = shape.rectangle;\r\n var dy = rect.height * DatabaseShapeDescription.arcWidthRatio;\r\n return rect.clone().resize(0, -dy).clone().moveRectangle(0, dy);\r\n };\r\n DatabaseShapeDescription.arcWidthRatio = 0.2;\r\n return DatabaseShapeDescription;\r\n}(RectangleShapeDescription_1.RectangleShapeDescription));\r\nexports.DatabaseShapeDescription = DatabaseShapeDescription;\r\n\n\n/***/ }),\n/* 222 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.InternalStorageShapeDescription = exports.InternalStorageVerticalEdgeParameterName = exports.InternalStorageHorizontalEdgeParameterName = void 0;\r\nvar RectangleShapeDescription_1 = __webpack_require__(18);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar ShapeParameters_1 = __webpack_require__(38);\r\nvar ShapeParameterPoint_1 = __webpack_require__(31);\r\nvar point_1 = __webpack_require__(1);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nexports.InternalStorageHorizontalEdgeParameterName = \"he\";\r\nexports.InternalStorageVerticalEdgeParameterName = \"ve\";\r\nvar InternalStorageShapeDescription = /** @class */ (function (_super) {\r\n __extends(InternalStorageShapeDescription, _super);\r\n function InternalStorageShapeDescription() {\r\n return _super.call(this, undefined, true) || this;\r\n }\r\n Object.defineProperty(InternalStorageShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.InternalStorage; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(InternalStorageShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n InternalStorageShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom;\r\n var x = left + shape.parameters.get(exports.InternalStorageHorizontalEdgeParameterName).value;\r\n var y = top + shape.parameters.get(exports.InternalStorageVerticalEdgeParameterName).value;\r\n var primitives = _super.prototype.createShapePrimitives.call(this, shape);\r\n return primitives.concat([\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(x, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(x, bottom),\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(left, y),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, y)\r\n ], shape.style)\r\n ]);\r\n };\r\n InternalStorageShapeDescription.prototype.createParameters = function (parameters) {\r\n parameters.addRange([\r\n new ShapeParameters_1.ShapeParameter(exports.InternalStorageHorizontalEdgeParameterName, this.defaultSize.width * 0.1),\r\n new ShapeParameters_1.ShapeParameter(exports.InternalStorageVerticalEdgeParameterName, this.defaultSize.width * 0.1)\r\n ]);\r\n };\r\n InternalStorageShapeDescription.prototype.normalizeParameters = function (shape, parameters) {\r\n this.changeParameterValue(parameters, exports.InternalStorageHorizontalEdgeParameterName, function (p) { return Math.max(InternalStorageShapeDescription.minEdge, Math.min(shape.size.width * 0.3, p.value)); });\r\n this.changeParameterValue(parameters, exports.InternalStorageVerticalEdgeParameterName, function (p) { return Math.max(InternalStorageShapeDescription.minEdge, Math.min(shape.size.height * 0.3, p.value)); });\r\n };\r\n InternalStorageShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\r\n this.changeParameterValue(parameters, exports.InternalStorageHorizontalEdgeParameterName, function (p) { return p.value + deltaX; });\r\n this.changeParameterValue(parameters, exports.InternalStorageVerticalEdgeParameterName, function (p) { return p.value + deltaY; });\r\n this.normalizeParameters(shape, parameters);\r\n };\r\n InternalStorageShapeDescription.prototype.getParameterPoints = function (shape) {\r\n return [\r\n 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)))\r\n ];\r\n };\r\n InternalStorageShapeDescription.prototype.getTextRectangle = function (shape) {\r\n var rect = shape.rectangle;\r\n var dx = shape.parameters.get(exports.InternalStorageHorizontalEdgeParameterName).value;\r\n return rect.clone().resize(-dx, 0).clone().moveRectangle(dx, 0);\r\n };\r\n InternalStorageShapeDescription.minEdge = 72;\r\n return InternalStorageShapeDescription;\r\n}(RectangleShapeDescription_1.RectangleShapeDescription));\r\nexports.InternalStorageShapeDescription = InternalStorageShapeDescription;\r\n\n\n/***/ }),\n/* 223 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PaperTapeShapeDescription = void 0;\r\nvar RectangleShapeDescription_1 = __webpack_require__(18);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar size_1 = __webpack_require__(2);\r\nvar PaperTapeShapeDescription = /** @class */ (function (_super) {\r\n __extends(PaperTapeShapeDescription, _super);\r\n function PaperTapeShapeDescription() {\r\n return _super.call(this, undefined, true) || this;\r\n }\r\n Object.defineProperty(PaperTapeShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.PaperTape; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(PaperTapeShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n PaperTapeShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n return this.createDocumentPrimitives(shape.rectangle, shape.style);\r\n };\r\n PaperTapeShapeDescription.prototype.createDocumentPrimitives = function (rect, style) {\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom, width = rect.width, height = rect.height;\r\n var cx = rect.center.x;\r\n var dy = height * PaperTapeShapeDescription.curveOffsetRatio;\r\n var primitives = [];\r\n return primitives.concat([\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(left, top),\r\n new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(left + width * 0.25, top + 2 * dy, cx, top + dy),\r\n new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(right - width * 0.25, top - dy, right, top + dy),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, bottom),\r\n new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(right - width * 0.25, bottom - 2 * dy, cx, bottom - dy),\r\n new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(left + width * 0.25, bottom + dy, left, bottom - dy),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ], style)\r\n ]);\r\n };\r\n PaperTapeShapeDescription.prototype.processConnectionPoint = function (shape, point) {\r\n var side = shape.getConnectionPointSide(point);\r\n if (side === DiagramItem_1.ConnectionPointSide.North)\r\n point.y += shape.size.height * PaperTapeShapeDescription.curveOffsetRatio;\r\n if (side === DiagramItem_1.ConnectionPointSide.South)\r\n point.y -= shape.size.height * PaperTapeShapeDescription.curveOffsetRatio;\r\n };\r\n PaperTapeShapeDescription.prototype.getTextRectangle = function (shape) {\r\n var rect = shape.rectangle;\r\n return rect.clone().inflate(ShapeDescription_1.ShapeTextPadding, -rect.height * PaperTapeShapeDescription.curveOffsetRatio);\r\n };\r\n PaperTapeShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\r\n return new size_1.Size(textSize.width + ShapeDescription_1.ShapeTextPadding * 2, textSize.height / (1 - 2 * PaperTapeShapeDescription.curveOffsetRatio));\r\n };\r\n PaperTapeShapeDescription.curveOffsetRatio = 0.1;\r\n return PaperTapeShapeDescription;\r\n}(RectangleShapeDescription_1.RectangleShapeDescription));\r\nexports.PaperTapeShapeDescription = PaperTapeShapeDescription;\r\n\n\n/***/ }),\n/* 224 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ManualOperationShapeDescription = void 0;\r\nvar RectangleShapeDescription_1 = __webpack_require__(18);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar ManualOperationShapeDescription = /** @class */ (function (_super) {\r\n __extends(ManualOperationShapeDescription, _super);\r\n function ManualOperationShapeDescription() {\r\n return _super.call(this, undefined, true) || this;\r\n }\r\n Object.defineProperty(ManualOperationShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.ManualOperation; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ManualOperationShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ManualOperationShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var _a = shape.rectangle, left = _a.x, top = _a.y, right = _a.right, bottom = _a.bottom, width = _a.width, height = _a.height;\r\n var px = Math.min(Math.max(0, height / Math.tan(ManualOperationShapeDescription.slopeAngle)), width);\r\n var cx = rect.center.x;\r\n var x1 = Math.min(left + px, cx);\r\n var x2 = Math.max(right - px, cx);\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(left, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(x2, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(x1, bottom),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ], shape.style)\r\n ];\r\n };\r\n ManualOperationShapeDescription.prototype.processConnectionPoint = function (shape, point) {\r\n var offset = shape.size.height / Math.tan(ManualOperationShapeDescription.slopeAngle);\r\n var side = shape.getConnectionPointSide(point);\r\n if (side === DiagramItem_1.ConnectionPointSide.East)\r\n point.x -= offset / 2;\r\n else if (side === DiagramItem_1.ConnectionPointSide.West)\r\n point.x += offset / 2;\r\n };\r\n ManualOperationShapeDescription.prototype.getTextRectangle = function (shape) {\r\n var px = Math.min(Math.max(0, shape.size.height / Math.tan(ManualOperationShapeDescription.slopeAngle)), shape.size.width);\r\n return shape.rectangle.clone()\r\n .moveRectangle(px, ShapeDescription_1.ShapeTextPadding)\r\n .resize(-px * 2, -ShapeDescription_1.ShapeTextPadding * 2)\r\n .nonNegativeSize();\r\n };\r\n ManualOperationShapeDescription.slopeAngle = 81 * Math.PI / 180;\r\n return ManualOperationShapeDescription;\r\n}(RectangleShapeDescription_1.RectangleShapeDescription));\r\nexports.ManualOperationShapeDescription = ManualOperationShapeDescription;\r\n\n\n/***/ }),\n/* 225 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DelayShapeDescription = void 0;\r\nvar RectangleShapeDescription_1 = __webpack_require__(18);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar size_1 = __webpack_require__(2);\r\nvar DelayShapeDescription = /** @class */ (function (_super) {\r\n __extends(DelayShapeDescription, _super);\r\n function DelayShapeDescription() {\r\n var _this = _super.call(this, undefined, true) || this;\r\n _this.defaultSize.width = _this.defaultSize.height;\r\n return _this;\r\n }\r\n Object.defineProperty(DelayShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.Delay; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DelayShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n DelayShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom;\r\n var cx = rect.center.x;\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(left, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(cx, top),\r\n new PathPrimitive_1.PathPrimitiveArcToCommand((right - left) / 2, (bottom - top) / 2, 0, false, true, cx, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left, bottom),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ], shape.style)\r\n ];\r\n };\r\n DelayShapeDescription.prototype.getTextRectangle = function (shape) {\r\n var maxRectInEllipse = Utils_1.GeometryUtils.getMaxRectangleEnscribedInEllipse(shape.size);\r\n return shape.rectangle.clone().moveRectangle(ShapeDescription_1.ShapeTextPadding, ShapeDescription_1.ShapeTextPadding)\r\n .setSize({\r\n width: maxRectInEllipse.width / 2 + shape.size.width / 2 - ShapeDescription_1.ShapeTextPadding,\r\n height: maxRectInEllipse.height / 2 + shape.size.height / 2 - ShapeDescription_1.ShapeTextPadding\r\n }).nonNegativeSize();\r\n };\r\n DelayShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\r\n var rectByEllipse = Utils_1.GeometryUtils.getEllipseByEnscribedRectangle(textSize);\r\n return new size_1.Size(rectByEllipse.width / 2 + textSize.width / 2 + ShapeDescription_1.ShapeTextPadding, rectByEllipse.height / 2 + textSize.height / 2 + ShapeDescription_1.ShapeTextPadding);\r\n };\r\n DelayShapeDescription.arcWidthRatio = 0.2;\r\n return DelayShapeDescription;\r\n}(RectangleShapeDescription_1.RectangleShapeDescription));\r\nexports.DelayShapeDescription = DelayShapeDescription;\r\n\n\n/***/ }),\n/* 226 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StoredDataShapeDescription = void 0;\r\nvar RectangleShapeDescription_1 = __webpack_require__(18);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar size_1 = __webpack_require__(2);\r\nvar StoredDataShapeDescription = /** @class */ (function (_super) {\r\n __extends(StoredDataShapeDescription, _super);\r\n function StoredDataShapeDescription() {\r\n return _super.call(this, undefined, true) || this;\r\n }\r\n Object.defineProperty(StoredDataShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.StoredData; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(StoredDataShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n StoredDataShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom, width = rect.width;\r\n var dx = width * StoredDataShapeDescription.arcWidthRatio;\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(right, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left + dx / 2, top),\r\n new PathPrimitive_1.PathPrimitiveArcToCommand(dx / 2, (bottom - top) / 2, 0, false, false, left + dx / 2, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, bottom),\r\n new PathPrimitive_1.PathPrimitiveArcToCommand(dx / 2, (bottom - top) / 2, 0, false, true, right, top)\r\n ], shape.style)\r\n ];\r\n };\r\n StoredDataShapeDescription.prototype.getTextRectangle = function (shape) {\r\n var rect = shape.rectangle;\r\n var dx = rect.width * StoredDataShapeDescription.arcWidthRatio / 2;\r\n return rect.clone()\r\n .resize(-dx - 2 * ShapeDescription_1.ShapeTextPadding, -2 * ShapeDescription_1.ShapeTextPadding)\r\n .moveRectangle(ShapeDescription_1.ShapeTextPadding, ShapeDescription_1.ShapeTextPadding)\r\n .nonNegativeSize();\r\n };\r\n StoredDataShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\r\n return new size_1.Size((textSize.width + 2 * ShapeDescription_1.ShapeTextPadding) / (1 - StoredDataShapeDescription.arcWidthRatio / 2), textSize.height + 2 * ShapeDescription_1.ShapeTextPadding);\r\n };\r\n StoredDataShapeDescription.arcWidthRatio = 0.2;\r\n return StoredDataShapeDescription;\r\n}(RectangleShapeDescription_1.RectangleShapeDescription));\r\nexports.StoredDataShapeDescription = StoredDataShapeDescription;\r\n\n\n/***/ }),\n/* 227 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MergeShapeDescription = void 0;\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar TriangleShapeDescription_1 = __webpack_require__(125);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar size_1 = __webpack_require__(2);\r\nvar MergeShapeDescription = /** @class */ (function (_super) {\r\n __extends(MergeShapeDescription, _super);\r\n function MergeShapeDescription() {\r\n return _super.call(this, true) || this;\r\n }\r\n Object.defineProperty(MergeShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.Merge; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n MergeShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom;\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(left, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(rect.center.x, bottom),\r\n new PathPrimitive_1.PathPrimitiveClosePathCommand()\r\n ], shape.style)\r\n ];\r\n };\r\n MergeShapeDescription.prototype.calculateHeight = function (width) {\r\n return width * 0.75;\r\n };\r\n MergeShapeDescription.prototype.getTextRectangle = function (shape) {\r\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));\r\n };\r\n MergeShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\r\n return new size_1.Size(textSize.width * 2, (textSize.height + ShapeDescription_1.ShapeTextPadding) * 2);\r\n };\r\n return MergeShapeDescription;\r\n}(TriangleShapeDescription_1.TriangleShapeDescription));\r\nexports.MergeShapeDescription = MergeShapeDescription;\r\n\n\n/***/ }),\n/* 228 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DisplayShapeDescription = void 0;\r\nvar RectangleShapeDescription_1 = __webpack_require__(18);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar DisplayShapeDescription = /** @class */ (function (_super) {\r\n __extends(DisplayShapeDescription, _super);\r\n function DisplayShapeDescription() {\r\n return _super.call(this, undefined, true) || this;\r\n }\r\n Object.defineProperty(DisplayShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.Display; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DisplayShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n DisplayShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom, width = rect.width;\r\n var cy = rect.center.y;\r\n var dx = width * DisplayShapeDescription.arcWidthRatio;\r\n return [\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(right - dx / 2, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left + dx / 2, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left, cy),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(left + dx / 2, bottom),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right - dx / 2, bottom),\r\n new PathPrimitive_1.PathPrimitiveArcToCommand(dx / 2, (bottom - top) / 2, 0, false, false, right - dx / 2, top)\r\n ], shape.style),\r\n ];\r\n };\r\n DisplayShapeDescription.prototype.getTextRectangle = function (shape) {\r\n var dx = shape.size.width * DisplayShapeDescription.arcWidthRatio;\r\n return shape.rectangle\r\n .clone()\r\n .moveRectangle(dx / 2, ShapeDescription_1.ShapeTextPadding)\r\n .resize(-dx, -ShapeDescription_1.ShapeTextPadding * 2)\r\n .nonNegativeSize();\r\n };\r\n DisplayShapeDescription.arcWidthRatio = 0.2;\r\n return DisplayShapeDescription;\r\n}(RectangleShapeDescription_1.RectangleShapeDescription));\r\nexports.DisplayShapeDescription = DisplayShapeDescription;\r\n\n\n/***/ }),\n/* 229 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.OrShapeDescription = void 0;\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar size_1 = __webpack_require__(2);\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar EllipseShapeDescription_1 = __webpack_require__(71);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar OrShapeDescription = /** @class */ (function (_super) {\r\n __extends(OrShapeDescription, _super);\r\n function OrShapeDescription() {\r\n var _this = _super.call(this, true) || this;\r\n _this.defaultSize = new size_1.Size(ShapeDescription_1.ShapeDefaultDimension * 0.5, ShapeDescription_1.ShapeDefaultDimension * 0.5);\r\n return _this;\r\n }\r\n Object.defineProperty(OrShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.Or; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(OrShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return true; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(OrShapeDescription.prototype, \"enableText\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n OrShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, right = rect.right, bottom = rect.bottom;\r\n var _a = rect.center, cx = _a.x, cy = _a.y;\r\n var primitives = [];\r\n return primitives\r\n .concat(_super.prototype.createShapePrimitives.call(this, shape))\r\n .concat([\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(cx, top),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(cx, bottom),\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(left, cy),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(right, cy)\r\n ], shape.style)\r\n ]);\r\n };\r\n return OrShapeDescription;\r\n}(EllipseShapeDescription_1.EllipseShapeDescription));\r\nexports.OrShapeDescription = OrShapeDescription;\r\n\n\n/***/ }),\n/* 230 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SummingJunctionShapeDescription = void 0;\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar size_1 = __webpack_require__(2);\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar EllipseShapeDescription_1 = __webpack_require__(71);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar SummingJunctionShapeDescription = /** @class */ (function (_super) {\r\n __extends(SummingJunctionShapeDescription, _super);\r\n function SummingJunctionShapeDescription() {\r\n var _this = _super.call(this, true) || this;\r\n _this.defaultSize = new size_1.Size(ShapeDescription_1.ShapeDefaultDimension * 0.5, ShapeDescription_1.ShapeDefaultDimension * 0.5);\r\n return _this;\r\n }\r\n Object.defineProperty(SummingJunctionShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.SummingJunction; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(SummingJunctionShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return true; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(SummingJunctionShapeDescription.prototype, \"enableText\", {\r\n get: function () { return false; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n SummingJunctionShapeDescription.prototype.createShapePrimitives = function (shape) {\r\n var rect = shape.rectangle;\r\n var width = rect.width, height = rect.height;\r\n var _a = rect.center, cx = _a.x, cy = _a.y;\r\n var rx = width / 2;\r\n var ry = height / 2;\r\n var angle = Math.atan(ry / rx);\r\n var ex = 1 / Math.sqrt(1 / Math.pow(rx, 2) + Math.pow(Math.tan(angle), 2) / Math.pow(ry, 2));\r\n var ey = ex * Math.tan(angle);\r\n var primitives = [];\r\n return primitives\r\n .concat(_super.prototype.createShapePrimitives.call(this, shape))\r\n .concat([\r\n new PathPrimitive_1.PathPrimitive([\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(cx - ex, cy - ey),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(cx + ex, cy + ey),\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(cx - ex, cy + ey),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(cx + ex, cy - ey)\r\n ], shape.style)\r\n ]);\r\n };\r\n return SummingJunctionShapeDescription;\r\n}(EllipseShapeDescription_1.EllipseShapeDescription));\r\nexports.SummingJunctionShapeDescription = SummingJunctionShapeDescription;\r\n\n\n/***/ }),\n/* 231 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SvgElementPrimitive = void 0;\r\nvar RenderHelper_1 = __webpack_require__(15);\r\nvar Primitive_1 = __webpack_require__(25);\r\nvar SvgElementPrimitive = /** @class */ (function (_super) {\r\n __extends(SvgElementPrimitive, _super);\r\n function SvgElementPrimitive(x, y, width, height, createContent, destroyContent, data, className, onApplyProperties) {\r\n var _this = _super.call(this, null, className, undefined, onApplyProperties) || this;\r\n _this.x = x;\r\n _this.y = y;\r\n _this.width = width;\r\n _this.height = height;\r\n _this.createContent = createContent;\r\n _this.destroyContent = destroyContent;\r\n _this.data = data;\r\n return _this;\r\n }\r\n SvgElementPrimitive.prototype.createMainElement = function () {\r\n return document.createElementNS(RenderHelper_1.svgNS, \"svg\");\r\n };\r\n SvgElementPrimitive.prototype.applyElementProperties = function (element, measurer) {\r\n this.setUnitAttribute(element, \"x\", this.x);\r\n this.setUnitAttribute(element, \"y\", this.y);\r\n this.setUnitAttribute(element, \"width\", this.width);\r\n this.setUnitAttribute(element, \"height\", this.height);\r\n this.setPositionCorrectionAttribute(element);\r\n _super.prototype.applyElementProperties.call(this, element, measurer);\r\n };\r\n SvgElementPrimitive.prototype.createCustomContent = function (parent) {\r\n if (this.createContent)\r\n this.createContent(parent, this.data);\r\n };\r\n SvgElementPrimitive.prototype.destroyCustomContent = function (parent) {\r\n if (this.destroyContent)\r\n this.destroyContent(parent);\r\n };\r\n return SvgElementPrimitive;\r\n}(Primitive_1.SvgPrimitive));\r\nexports.SvgElementPrimitive = SvgElementPrimitive;\r\n\n\n/***/ }),\n/* 232 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.VerticalContainerDescription = void 0;\r\nvar point_1 = __webpack_require__(1);\r\nvar size_1 = __webpack_require__(2);\r\nvar RectaglePrimitive_1 = __webpack_require__(21);\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar ContainerDescription_1 = __webpack_require__(132);\r\nvar VerticalContainerDescription = /** @class */ (function (_super) {\r\n __extends(VerticalContainerDescription, _super);\r\n function VerticalContainerDescription() {\r\n return _super.call(this, new size_1.Size(ShapeDescription_1.ShapeDefaultDimension * 2, ShapeDescription_1.ShapeDefaultDimension * 1.5)) || this;\r\n }\r\n Object.defineProperty(VerticalContainerDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.VerticalContainer; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n VerticalContainerDescription.prototype.getExpandedSize = function (shape) {\r\n return new size_1.Size(shape.size.width, shape.expandedSize.height);\r\n };\r\n VerticalContainerDescription.prototype.getCollapsedSize = function (shape) {\r\n return new size_1.Size(shape.size.width, ContainerDescription_1.CONTAINER_HEADER_SIZE + 2 * shape.strokeWidth);\r\n };\r\n VerticalContainerDescription.prototype.allowResizeVertically = function (shape) {\r\n return shape.expanded;\r\n };\r\n VerticalContainerDescription.prototype.createHeaderPrimitives = function (shape, forToolbox) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, width = rect.width;\r\n var headerSize = this.getHeaderSize(shape, forToolbox);\r\n var primitives = [];\r\n primitives = primitives.concat([\r\n new RectaglePrimitive_1.RectanglePrimitive(left, top, width, headerSize, shape.style)\r\n ]);\r\n if (!forToolbox)\r\n primitives = primitives.concat(this.createExpandButtonPrimitives(shape, new rectangle_1.Rectangle(left, top, headerSize, headerSize)));\r\n return primitives;\r\n };\r\n VerticalContainerDescription.prototype.getClientRectangle = function (shape) {\r\n var rect = shape.rectangle;\r\n var headerSize = this.getHeaderSize(shape);\r\n return rectangle_1.Rectangle.fromGeometry(new point_1.Point(rect.x, rect.y + headerSize), new size_1.Size(rect.width, rect.height - headerSize));\r\n };\r\n VerticalContainerDescription.prototype.getTextRectangle = function (shape) {\r\n var rect = shape.rectangle;\r\n var headerSize = this.getHeaderSize(shape);\r\n return rectangle_1.Rectangle.fromGeometry(new point_1.Point(rect.x + headerSize, rect.y), new size_1.Size(rect.width - headerSize, headerSize));\r\n };\r\n VerticalContainerDescription.prototype.getSizeByText = function (textSize, shape) {\r\n var headerSize = this.getHeaderSize(shape);\r\n return new size_1.Size(Math.max(shape.size.width, textSize.width + headerSize), shape.size.height);\r\n };\r\n VerticalContainerDescription.prototype.getHeaderSize = function (shape, forToolbox) {\r\n var rect = shape.rectangle;\r\n return forToolbox ? rect.height * ContainerDescription_1.CONTAINER_HEADER_TOOLBOX_SIZE_RATIO : (ContainerDescription_1.CONTAINER_HEADER_SIZE + 2 * shape.strokeWidth);\r\n };\r\n return VerticalContainerDescription;\r\n}(ContainerDescription_1.ContainerDescription));\r\nexports.VerticalContainerDescription = VerticalContainerDescription;\r\n\n\n/***/ }),\n/* 233 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.HorizontalContainerDescription = void 0;\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar size_1 = __webpack_require__(2);\r\nvar point_1 = __webpack_require__(1);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar ContainerDescription_1 = __webpack_require__(132);\r\nvar RectaglePrimitive_1 = __webpack_require__(21);\r\nvar TextPrimitive_1 = __webpack_require__(62);\r\nvar HorizontalContainerDescription = /** @class */ (function (_super) {\r\n __extends(HorizontalContainerDescription, _super);\r\n function HorizontalContainerDescription() {\r\n return _super.call(this, new size_1.Size(ShapeDescription_1.ShapeDefaultDimension * 2, ShapeDescription_1.ShapeDefaultDimension * 1.5)) || this;\r\n }\r\n Object.defineProperty(HorizontalContainerDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.HorizontalContainer; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n HorizontalContainerDescription.prototype.getExpandedSize = function (shape) {\r\n return new size_1.Size(shape.expandedSize.width, shape.size.height);\r\n };\r\n HorizontalContainerDescription.prototype.getCollapsedSize = function (shape) {\r\n return new size_1.Size(ContainerDescription_1.CONTAINER_HEADER_SIZE + 2 * shape.strokeWidth, shape.size.height);\r\n };\r\n HorizontalContainerDescription.prototype.allowResizeHorizontally = function (shape) {\r\n return shape.expanded;\r\n };\r\n HorizontalContainerDescription.prototype.createHeaderPrimitives = function (shape, forToolbox) {\r\n var rect = shape.rectangle;\r\n var left = rect.x, top = rect.y, height = rect.height;\r\n var headerSize = this.getHeaderSize(shape, forToolbox);\r\n var primitives = [];\r\n primitives = primitives.concat([\r\n new RectaglePrimitive_1.RectanglePrimitive(left, top, headerSize, height, shape.style)\r\n ]);\r\n if (!forToolbox)\r\n primitives = primitives.concat(this.createExpandButtonPrimitives(shape, new rectangle_1.Rectangle(left, top, headerSize, headerSize)));\r\n return primitives;\r\n };\r\n HorizontalContainerDescription.prototype.getClientRectangle = function (shape) {\r\n var rect = shape.rectangle;\r\n var headerSize = this.getHeaderSize(shape);\r\n return rectangle_1.Rectangle.fromGeometry(new point_1.Point(rect.x + headerSize, rect.y), new size_1.Size(rect.width - headerSize, rect.height));\r\n };\r\n HorizontalContainerDescription.prototype.getTextRectangle = function (shape) {\r\n var rect = shape.rectangle;\r\n var headerSize = this.getHeaderSize(shape);\r\n return rectangle_1.Rectangle.fromGeometry(new point_1.Point(rect.x, rect.y + headerSize), new size_1.Size(headerSize, rect.height - headerSize))\r\n .nonNegativeSize();\r\n };\r\n HorizontalContainerDescription.prototype.getSizeByText = function (textSize, shape) {\r\n var headerSize = this.getHeaderSize(shape);\r\n return new size_1.Size(shape.size.width, Math.max(shape.size.height, Math.max(textSize.width + headerSize, shape.size.height)));\r\n };\r\n HorizontalContainerDescription.prototype.getTextEditRectangle = function (shape) {\r\n var rect = this.getTextRectangle(shape);\r\n return rectangle_1.Rectangle.fromGeometry(new point_1.Point(rect.x, rect.y + rect.height), new size_1.Size(rect.height, rect.width));\r\n };\r\n HorizontalContainerDescription.prototype.getTextAngle = function () {\r\n return TextPrimitive_1.TextAngle.Angle270deg;\r\n };\r\n HorizontalContainerDescription.prototype.getHeaderSize = function (shape, forToolbox) {\r\n var rect = shape.rectangle;\r\n return forToolbox ? rect.height * ContainerDescription_1.CONTAINER_HEADER_TOOLBOX_SIZE_RATIO : (ContainerDescription_1.CONTAINER_HEADER_SIZE + 2 * shape.strokeWidth);\r\n };\r\n return HorizontalContainerDescription;\r\n}(ContainerDescription_1.ContainerDescription));\r\nexports.HorizontalContainerDescription = HorizontalContainerDescription;\r\n\n\n/***/ }),\n/* 234 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CardWithImageOnTopDescription = void 0;\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar size_1 = __webpack_require__(2);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar CardBaseDescription_1 = __webpack_require__(133);\r\nvar unit_converter_1 = __webpack_require__(11);\r\nvar CardWithImageOnTopDescription = /** @class */ (function (_super) {\r\n __extends(CardWithImageOnTopDescription, _super);\r\n function CardWithImageOnTopDescription() {\r\n var _this = _super.call(this, new size_1.Size(32 / 40 * ShapeDescription_1.ShapeDefaultDimension, ShapeDescription_1.ShapeDefaultDimension)) || this;\r\n _this.isTextAfterImage = true;\r\n _this.isHorizontal = false;\r\n return _this;\r\n }\r\n Object.defineProperty(CardWithImageOnTopDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.CardWithImageOnTop; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n CardWithImageOnTopDescription.prototype.getImageSize = function (shapeSize, includeMargins, forToolbox) {\r\n var w = shapeSize.width / 2;\r\n if (unit_converter_1.UnitConverter.twipsToPixels(w) % 2 === 1)\r\n w -= unit_converter_1.UnitConverter.pixelsToTwips(1);\r\n var imageSize = Math.max(0, shapeSize.height - (includeMargins ? 0 : 2 * this.getImageMargin(forToolbox)));\r\n imageSize = Math.min(w, imageSize);\r\n return new size_1.Size(imageSize, imageSize);\r\n };\r\n CardWithImageOnTopDescription.prototype.getImageSizeByTextBlockSize = function (textBlockSize) {\r\n return this.getImageSize(new size_1.Size(textBlockSize.width, Number.MAX_VALUE), true);\r\n };\r\n return CardWithImageOnTopDescription;\r\n}(CardBaseDescription_1.CardBaseDescription));\r\nexports.CardWithImageOnTopDescription = CardWithImageOnTopDescription;\r\n\n\n/***/ }),\n/* 235 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RoundedRectanglePrimitive = void 0;\r\nvar RenderHelper_1 = __webpack_require__(15);\r\nvar RectaglePrimitive_1 = __webpack_require__(21);\r\nvar RoundedRectanglePrimitive = /** @class */ (function (_super) {\r\n __extends(RoundedRectanglePrimitive, _super);\r\n function RoundedRectanglePrimitive(x, y, width, height, rx, ry, style, className, clipPathId, onApplyProperties) {\r\n if (rx === void 0) { rx = 0; }\r\n if (ry === void 0) { ry = 0; }\r\n var _this = _super.call(this, x, y, width, height, style, className, clipPathId, onApplyProperties) || this;\r\n _this.x = x;\r\n _this.y = y;\r\n _this.width = width;\r\n _this.height = height;\r\n _this.rx = rx;\r\n _this.ry = ry;\r\n return _this;\r\n }\r\n RoundedRectanglePrimitive.prototype.createMainElement = function () {\r\n return document.createElementNS(RenderHelper_1.svgNS, \"rect\");\r\n };\r\n RoundedRectanglePrimitive.prototype.applyElementProperties = function (element, measurer) {\r\n this.setUnitAttribute(element, \"rx\", this.rx);\r\n this.setUnitAttribute(element, \"ry\", this.ry);\r\n _super.prototype.applyElementProperties.call(this, element, measurer);\r\n };\r\n return RoundedRectanglePrimitive;\r\n}(RectaglePrimitive_1.RectanglePrimitive));\r\nexports.RoundedRectanglePrimitive = RoundedRectanglePrimitive;\r\n\n\n/***/ }),\n/* 236 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ConnectorShapeDescription = void 0;\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar size_1 = __webpack_require__(2);\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar EllipseShapeDescription_1 = __webpack_require__(71);\r\nvar ConnectorShapeDescription = /** @class */ (function (_super) {\r\n __extends(ConnectorShapeDescription, _super);\r\n function ConnectorShapeDescription() {\r\n var _this = _super.call(this, false) || this;\r\n _this.defaultSize = new size_1.Size(ShapeDescription_1.ShapeDefaultDimension * 0.5, ShapeDescription_1.ShapeDefaultDimension * 0.5);\r\n return _this;\r\n }\r\n Object.defineProperty(ConnectorShapeDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.Connector; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ConnectorShapeDescription.prototype, \"keepRatioOnAutoSize\", {\r\n get: function () { return true; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return ConnectorShapeDescription;\r\n}(EllipseShapeDescription_1.EllipseShapeDescription));\r\nexports.ConnectorShapeDescription = ConnectorShapeDescription;\r\n\n\n/***/ }),\n/* 237 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CardWithImageOnRightDescription = exports.CardWithImageOnLeftDescription = void 0;\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar CardBaseDescription_1 = __webpack_require__(133);\r\nvar size_1 = __webpack_require__(2);\r\nvar CardWithHorizontalImageDescription = /** @class */ (function (_super) {\r\n __extends(CardWithHorizontalImageDescription, _super);\r\n function CardWithHorizontalImageDescription() {\r\n var _this = _super.call(this, new size_1.Size(1.5 * ShapeDescription_1.ShapeDefaultDimension, 0.5 * ShapeDescription_1.ShapeDefaultDimension)) || this;\r\n _this.isHorizontal = true;\r\n return _this;\r\n }\r\n CardWithHorizontalImageDescription.prototype.getToolboxHeightToWidthRatio = function (_width, _height) {\r\n return 26 / 46;\r\n };\r\n CardWithHorizontalImageDescription.prototype.getImageSize = function (shapeSize, includeMargins, forToolbox) {\r\n var imageSize = Math.min(shapeSize.height, shapeSize.width);\r\n if (!includeMargins)\r\n imageSize = Math.max(0, imageSize - 2 * this.getImageMargin(forToolbox));\r\n return new size_1.Size(imageSize, imageSize);\r\n };\r\n CardWithHorizontalImageDescription.prototype.getImageSizeByTextBlockSize = function (textBlockSize) {\r\n return this.getImageSize(new size_1.Size(Number.MAX_VALUE, textBlockSize.height), true);\r\n };\r\n return CardWithHorizontalImageDescription;\r\n}(CardBaseDescription_1.CardBaseDescription));\r\nvar CardWithImageOnLeftDescription = /** @class */ (function (_super) {\r\n __extends(CardWithImageOnLeftDescription, _super);\r\n function CardWithImageOnLeftDescription() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.isTextAfterImage = true;\r\n return _this;\r\n }\r\n Object.defineProperty(CardWithImageOnLeftDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.CardWithImageOnLeft; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return CardWithImageOnLeftDescription;\r\n}(CardWithHorizontalImageDescription));\r\nexports.CardWithImageOnLeftDescription = CardWithImageOnLeftDescription;\r\nvar CardWithImageOnRightDescription = /** @class */ (function (_super) {\r\n __extends(CardWithImageOnRightDescription, _super);\r\n function CardWithImageOnRightDescription() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.isTextAfterImage = false;\r\n return _this;\r\n }\r\n Object.defineProperty(CardWithImageOnRightDescription.prototype, \"key\", {\r\n get: function () { return ShapeTypes_1.ShapeTypes.CardWithImageOnRight; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return CardWithImageOnRightDescription;\r\n}(CardWithHorizontalImageDescription));\r\nexports.CardWithImageOnRightDescription = CardWithImageOnRightDescription;\r\n\n\n/***/ }),\n/* 238 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ExportCommand = void 0;\r\nvar Exporter_1 = __webpack_require__(72);\r\nvar ExportImportCommandBase_1 = __webpack_require__(56);\r\nvar ExportCommand = /** @class */ (function (_super) {\r\n __extends(ExportCommand, _super);\r\n function ExportCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ExportCommand.prototype.executeCore = function (state, parameter) {\r\n var exporter = new Exporter_1.Exporter();\r\n var data = exporter.export(this.control.model);\r\n parameter(data);\r\n return true;\r\n };\r\n return ExportCommand;\r\n}(ExportImportCommandBase_1.ExportImportCommandBase));\r\nexports.ExportCommand = ExportCommand;\r\n\n\n/***/ }),\n/* 239 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ToggleFontBoldCommand = void 0;\r\nvar ToggleStyleTextPropertyCommand_1 = __webpack_require__(73);\r\nvar ToggleFontBoldCommand = /** @class */ (function (_super) {\r\n __extends(ToggleFontBoldCommand, _super);\r\n function ToggleFontBoldCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ToggleFontBoldCommand.prototype.getStyleProperty = function () {\r\n return \"font-weight\";\r\n };\r\n ToggleFontBoldCommand.prototype.getStylePropertyValue = function () {\r\n return \"bold\";\r\n };\r\n return ToggleFontBoldCommand;\r\n}(ToggleStyleTextPropertyCommand_1.ToggleStyleTextPropertyCommand));\r\nexports.ToggleFontBoldCommand = ToggleFontBoldCommand;\r\n\n\n/***/ }),\n/* 240 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ToggleFontItalicCommand = void 0;\r\nvar ToggleStyleTextPropertyCommand_1 = __webpack_require__(73);\r\nvar ToggleFontItalicCommand = /** @class */ (function (_super) {\r\n __extends(ToggleFontItalicCommand, _super);\r\n function ToggleFontItalicCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ToggleFontItalicCommand.prototype.getStyleProperty = function () {\r\n return \"font-style\";\r\n };\r\n ToggleFontItalicCommand.prototype.getStylePropertyValue = function () {\r\n return \"italic\";\r\n };\r\n return ToggleFontItalicCommand;\r\n}(ToggleStyleTextPropertyCommand_1.ToggleStyleTextPropertyCommand));\r\nexports.ToggleFontItalicCommand = ToggleFontItalicCommand;\r\n\n\n/***/ }),\n/* 241 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ToggleFontUnderlineCommand = void 0;\r\nvar ToggleStyleTextPropertyCommand_1 = __webpack_require__(73);\r\nvar ToggleFontUnderlineCommand = /** @class */ (function (_super) {\r\n __extends(ToggleFontUnderlineCommand, _super);\r\n function ToggleFontUnderlineCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ToggleFontUnderlineCommand.prototype.getStyleProperty = function () {\r\n return \"text-decoration\";\r\n };\r\n ToggleFontUnderlineCommand.prototype.getStylePropertyValue = function () {\r\n return \"underline\";\r\n };\r\n return ToggleFontUnderlineCommand;\r\n}(ToggleStyleTextPropertyCommand_1.ToggleStyleTextPropertyCommand));\r\nexports.ToggleFontUnderlineCommand = ToggleFontUnderlineCommand;\r\n\n\n/***/ }),\n/* 242 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeFontNameCommand = void 0;\r\nvar ChangeStyleTextPropertyCommand_1 = __webpack_require__(96);\r\nvar ChangeFontNameCommand = /** @class */ (function (_super) {\r\n __extends(ChangeFontNameCommand, _super);\r\n function ChangeFontNameCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeFontNameCommand.prototype.getStyleProperty = function () {\r\n return \"font-family\";\r\n };\r\n return ChangeFontNameCommand;\r\n}(ChangeStyleTextPropertyCommand_1.ChangeStyleTextPropertyCommand));\r\nexports.ChangeFontNameCommand = ChangeFontNameCommand;\r\n\n\n/***/ }),\n/* 243 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeFontSizeCommand = void 0;\r\nvar ChangeStyleTextPropertyCommand_1 = __webpack_require__(96);\r\nvar ChangeFontSizeCommand = /** @class */ (function (_super) {\r\n __extends(ChangeFontSizeCommand, _super);\r\n function ChangeFontSizeCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeFontSizeCommand.prototype.getStyleProperty = function () {\r\n return \"font-size\";\r\n };\r\n return ChangeFontSizeCommand;\r\n}(ChangeStyleTextPropertyCommand_1.ChangeStyleTextPropertyCommand));\r\nexports.ChangeFontSizeCommand = ChangeFontSizeCommand;\r\n\n\n/***/ }),\n/* 244 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeFontColorCommand = void 0;\r\nvar ChangeStyleTextPropertyCommand_1 = __webpack_require__(96);\r\nvar color_1 = __webpack_require__(22);\r\nvar ChangeFontColorCommand = /** @class */ (function (_super) {\r\n __extends(ChangeFontColorCommand, _super);\r\n function ChangeFontColorCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeFontColorCommand.prototype.processParameter = function (parameter) {\r\n return color_1.ColorUtils.stringToHash(parameter);\r\n };\r\n ChangeFontColorCommand.prototype.getStyleProperty = function () {\r\n return \"fill\";\r\n };\r\n return ChangeFontColorCommand;\r\n}(ChangeStyleTextPropertyCommand_1.ChangeStyleTextPropertyCommand));\r\nexports.ChangeFontColorCommand = ChangeFontColorCommand;\r\n\n\n/***/ }),\n/* 245 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeFillColorCommand = void 0;\r\nvar ChangeStylePropertyCommand_1 = __webpack_require__(74);\r\nvar color_1 = __webpack_require__(22);\r\nvar ChangeFillColorCommand = /** @class */ (function (_super) {\r\n __extends(ChangeFillColorCommand, _super);\r\n function ChangeFillColorCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeFillColorCommand.prototype.processParameter = function (parameter) {\r\n return color_1.ColorUtils.stringToHash(parameter);\r\n };\r\n ChangeFillColorCommand.prototype.getStyleProperty = function () {\r\n return \"fill\";\r\n };\r\n return ChangeFillColorCommand;\r\n}(ChangeStylePropertyCommand_1.ChangeStylePropertyCommand));\r\nexports.ChangeFillColorCommand = ChangeFillColorCommand;\r\n\n\n/***/ }),\n/* 246 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeStrokeColorCommand = void 0;\r\nvar ChangeStylePropertyCommand_1 = __webpack_require__(74);\r\nvar color_1 = __webpack_require__(22);\r\nvar ChangeStrokeColorCommand = /** @class */ (function (_super) {\r\n __extends(ChangeStrokeColorCommand, _super);\r\n function ChangeStrokeColorCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeStrokeColorCommand.prototype.processParameter = function (parameter) {\r\n return color_1.ColorUtils.stringToHash(parameter);\r\n };\r\n ChangeStrokeColorCommand.prototype.getStyleProperty = function () {\r\n return \"stroke\";\r\n };\r\n return ChangeStrokeColorCommand;\r\n}(ChangeStylePropertyCommand_1.ChangeStylePropertyCommand));\r\nexports.ChangeStrokeColorCommand = ChangeStrokeColorCommand;\r\n\n\n/***/ }),\n/* 247 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.TextRightAlignCommand = exports.TextCenterAlignCommand = exports.TextLeftAlignCommand = exports.ChangeTextAlignCommand = void 0;\r\nvar ToggleStyleTextPropertyCommand_1 = __webpack_require__(73);\r\nvar ChangeTextAlignCommand = /** @class */ (function (_super) {\r\n __extends(ChangeTextAlignCommand, _super);\r\n function ChangeTextAlignCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeTextAlignCommand.prototype.getStyleProperty = function () {\r\n return \"text-anchor\";\r\n };\r\n return ChangeTextAlignCommand;\r\n}(ToggleStyleTextPropertyCommand_1.ToggleStyleTextPropertyCommand));\r\nexports.ChangeTextAlignCommand = ChangeTextAlignCommand;\r\nvar TextLeftAlignCommand = /** @class */ (function (_super) {\r\n __extends(TextLeftAlignCommand, _super);\r\n function TextLeftAlignCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TextLeftAlignCommand.prototype.getStylePropertyValue = function () {\r\n return \"start\";\r\n };\r\n return TextLeftAlignCommand;\r\n}(ChangeTextAlignCommand));\r\nexports.TextLeftAlignCommand = TextLeftAlignCommand;\r\nvar TextCenterAlignCommand = /** @class */ (function (_super) {\r\n __extends(TextCenterAlignCommand, _super);\r\n function TextCenterAlignCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TextCenterAlignCommand.prototype.getStylePropertyValue = function () {\r\n return \"middle\";\r\n };\r\n return TextCenterAlignCommand;\r\n}(ChangeTextAlignCommand));\r\nexports.TextCenterAlignCommand = TextCenterAlignCommand;\r\nvar TextRightAlignCommand = /** @class */ (function (_super) {\r\n __extends(TextRightAlignCommand, _super);\r\n function TextRightAlignCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TextRightAlignCommand.prototype.getStylePropertyValue = function () {\r\n return \"end\";\r\n };\r\n return TextRightAlignCommand;\r\n}(ChangeTextAlignCommand));\r\nexports.TextRightAlignCommand = TextRightAlignCommand;\r\n\n\n/***/ }),\n/* 248 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeConnectorEndLineEndingCommand = exports.ChangeConnectorStartLineEndingCommand = void 0;\r\nvar ChangeConnectorPropertyCommand_1 = __webpack_require__(137);\r\nvar ConnectorProperties_1 = __webpack_require__(30);\r\nvar ChangeConnectorStartLineEndingCommand = /** @class */ (function (_super) {\r\n __extends(ChangeConnectorStartLineEndingCommand, _super);\r\n function ChangeConnectorStartLineEndingCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeConnectorStartLineEndingCommand.prototype.getPropertyName = function () {\r\n return \"startLineEnding\";\r\n };\r\n ChangeConnectorStartLineEndingCommand.prototype.getPropertyDefaultValue = function () {\r\n return ConnectorProperties_1.ConnectorLineEnding.None;\r\n };\r\n return ChangeConnectorStartLineEndingCommand;\r\n}(ChangeConnectorPropertyCommand_1.ChangeConnectorPropertyCommand));\r\nexports.ChangeConnectorStartLineEndingCommand = ChangeConnectorStartLineEndingCommand;\r\nvar ChangeConnectorEndLineEndingCommand = /** @class */ (function (_super) {\r\n __extends(ChangeConnectorEndLineEndingCommand, _super);\r\n function ChangeConnectorEndLineEndingCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeConnectorEndLineEndingCommand.prototype.getPropertyName = function () {\r\n return \"endLineEnding\";\r\n };\r\n ChangeConnectorEndLineEndingCommand.prototype.getPropertyDefaultValue = function () {\r\n return ConnectorProperties_1.ConnectorLineEnding.Arrow;\r\n };\r\n return ChangeConnectorEndLineEndingCommand;\r\n}(ChangeConnectorPropertyCommand_1.ChangeConnectorPropertyCommand));\r\nexports.ChangeConnectorEndLineEndingCommand = ChangeConnectorEndLineEndingCommand;\r\n\n\n/***/ }),\n/* 249 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeConnectorLineOptionCommand = void 0;\r\nvar ChangeConnectorPropertyCommand_1 = __webpack_require__(137);\r\nvar ConnectorProperties_1 = __webpack_require__(30);\r\nvar ChangeConnectorLineOptionCommand = /** @class */ (function (_super) {\r\n __extends(ChangeConnectorLineOptionCommand, _super);\r\n function ChangeConnectorLineOptionCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeConnectorLineOptionCommand.prototype.getPropertyName = function () {\r\n return \"lineOption\";\r\n };\r\n ChangeConnectorLineOptionCommand.prototype.getPropertyDefaultValue = function () {\r\n return ConnectorProperties_1.ConnectorLineOption.Straight;\r\n };\r\n return ChangeConnectorLineOptionCommand;\r\n}(ChangeConnectorPropertyCommand_1.ChangeConnectorPropertyCommand));\r\nexports.ChangeConnectorLineOptionCommand = ChangeConnectorLineOptionCommand;\r\n\n\n/***/ }),\n/* 250 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SelectAllCommand = void 0;\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar SelectAllCommand = /** @class */ (function (_super) {\r\n __extends(SelectAllCommand, _super);\r\n function SelectAllCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SelectAllCommand.prototype.isEnabledInReadOnlyMode = function () {\r\n return true;\r\n };\r\n SelectAllCommand.prototype.executeCore = function (state, parameter) {\r\n var itemKeys = [];\r\n this.control.model.iterateItems(function (i) { return itemKeys.push(i.key); });\r\n this.control.selection.set(itemKeys);\r\n return true;\r\n };\r\n return SelectAllCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.SelectAllCommand = SelectAllCommand;\r\n\n\n/***/ }),\n/* 251 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ScrollIntoViewOnUndoHistoryItem = exports.ScrollIntoViewOnRedoHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar ScrollIntoViewOnRedoHistoryItem = /** @class */ (function (_super) {\r\n __extends(ScrollIntoViewOnRedoHistoryItem, _super);\r\n function ScrollIntoViewOnRedoHistoryItem(view, rectangle) {\r\n var _this = _super.call(this) || this;\r\n _this.view = view;\r\n _this.rectangle = rectangle;\r\n _this.view = view;\r\n _this.rectangle = rectangle.clone();\r\n return _this;\r\n }\r\n ScrollIntoViewOnRedoHistoryItem.prototype.redo = function (manipulator) {\r\n this.view.scrollIntoView(this.rectangle);\r\n };\r\n ScrollIntoViewOnRedoHistoryItem.prototype.undo = function (manipulator) { };\r\n return ScrollIntoViewOnRedoHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.ScrollIntoViewOnRedoHistoryItem = ScrollIntoViewOnRedoHistoryItem;\r\nvar ScrollIntoViewOnUndoHistoryItem = /** @class */ (function (_super) {\r\n __extends(ScrollIntoViewOnUndoHistoryItem, _super);\r\n function ScrollIntoViewOnUndoHistoryItem(view, rectangle) {\r\n var _this = _super.call(this) || this;\r\n _this.view = view;\r\n _this.rectangle = rectangle;\r\n _this.view = view;\r\n _this.rectangle = rectangle.clone();\r\n return _this;\r\n }\r\n ScrollIntoViewOnUndoHistoryItem.prototype.redo = function (manipulator) { };\r\n ScrollIntoViewOnUndoHistoryItem.prototype.undo = function (manipulator) {\r\n this.view.scrollIntoView(this.rectangle);\r\n };\r\n return ScrollIntoViewOnUndoHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.ScrollIntoViewOnUndoHistoryItem = ScrollIntoViewOnUndoHistoryItem;\r\n\n\n/***/ }),\n/* 252 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Tree = void 0;\r\nvar Structures_1 = __webpack_require__(39);\r\nvar Tree = /** @class */ (function () {\r\n function Tree(root, parentToChildren) {\r\n var _this = this;\r\n this.childToParent = {};\r\n this.root = root;\r\n this.parentToChildren = parentToChildren;\r\n var _loop_1 = function (key) {\r\n if (!Object.prototype.hasOwnProperty.call(parentToChildren, key))\r\n return \"continue\";\r\n parentToChildren[key].forEach(function (c) { return _this.childToParent[c.key] = key; });\r\n };\r\n for (var key in parentToChildren) {\r\n _loop_1(key);\r\n }\r\n }\r\n Tree.prototype.getChildren = function (node) {\r\n return node && this.parentToChildren[node.key] ? this.parentToChildren[node.key] : [];\r\n };\r\n Tree.prototype.hasChildren = function (node) {\r\n return this.parentToChildren[node.key] && this.parentToChildren[node.key].length > 0;\r\n };\r\n Tree.prototype.iterate = function (callback) {\r\n this.iterateCore(this.root, 0, callback);\r\n };\r\n Tree.createSpanningTree = function (component) {\r\n var rootKey = Tree.findRoot(component);\r\n var iterator = component.createIterator(Structures_1.ConnectionMode.Outgoing);\r\n var parentToChildren = {};\r\n iterator.skipEdge = (function (e) { return e.to === undefined || iterator.isNodeVisited(e.to); });\r\n iterator.onNode = function (n) { return parentToChildren[n.key] = []; };\r\n iterator.onEdge = function (e) {\r\n var node = component.getNode(e.to);\r\n node && parentToChildren[e.from].push(node);\r\n };\r\n iterator.iterate(rootKey);\r\n return new Tree(component.getNode(rootKey), parentToChildren);\r\n };\r\n Tree.prototype.iterateCore = function (node, level, callback) {\r\n var _this = this;\r\n callback(node, level);\r\n this.getChildren(node).forEach(function (n) { return _this.iterateCore(n, level + 1, callback); });\r\n };\r\n Tree.findRoot = function (component) {\r\n return component.nodes.reduce(function (aggregator, cur) {\r\n var edges = component.getAdjacentEdges(cur);\r\n var inc = edges.filter(function (l) { return l.to === cur; }).length;\r\n var out = edges.filter(function (l) { return l.from === cur; }).length;\r\n if (aggregator.candidate === undefined || (inc === 0 && aggregator.inc > 0) || (aggregator.inc !== 0 && aggregator.out - aggregator.inc < out - inc)) {\r\n aggregator.candidate = cur;\r\n aggregator.inc = inc;\r\n aggregator.out = out;\r\n }\r\n return aggregator;\r\n }, { inc: -1, out: -1, candidate: undefined }).candidate;\r\n };\r\n return Tree;\r\n}());\r\nexports.Tree = Tree;\r\n\n\n/***/ }),\n/* 253 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeSnapToGridCommand = void 0;\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar ChangeSnapToGridCommand = /** @class */ (function (_super) {\r\n __extends(ChangeSnapToGridCommand, _super);\r\n function ChangeSnapToGridCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeSnapToGridCommand.prototype.executeCore = function (state, parameter) {\r\n var newValue = parameter === undefined ? !this.control.settings.snapToGrid : !!parameter;\r\n if (this.control.settings.snapToGrid !== newValue) {\r\n this.control.settings.snapToGrid = newValue;\r\n return true;\r\n }\r\n return false;\r\n };\r\n ChangeSnapToGridCommand.prototype.getValue = function () {\r\n return this.control.settings.snapToGrid;\r\n };\r\n return ChangeSnapToGridCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.ChangeSnapToGridCommand = ChangeSnapToGridCommand;\r\n\n\n/***/ }),\n/* 254 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeGridSizeItemsCommand = exports.ChangeGridSizeCommand = void 0;\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar ChangeGridSizeCommand = /** @class */ (function (_super) {\r\n __extends(ChangeGridSizeCommand, _super);\r\n function ChangeGridSizeCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeGridSizeCommand.prototype.isEnabledInReadOnlyMode = function () {\r\n return true;\r\n };\r\n ChangeGridSizeCommand.prototype.getValue = function () {\r\n return this.getModelUnit(this.control.settings.gridSize);\r\n };\r\n ChangeGridSizeCommand.prototype.executeCore = function (state, parameter) {\r\n this.control.settings.gridSize = this.getModelUnitTwipsValue(parameter);\r\n return true;\r\n };\r\n ChangeGridSizeCommand.prototype.getItems = function () {\r\n var _this = this;\r\n return this.control.settings.gridSizeItems.map(function (s) {\r\n return { value: _this.getModelUnit(s), text: _this.getViewUnitText(s) };\r\n });\r\n };\r\n return ChangeGridSizeCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.ChangeGridSizeCommand = ChangeGridSizeCommand;\r\nvar ChangeGridSizeItemsCommand = /** @class */ (function (_super) {\r\n __extends(ChangeGridSizeItemsCommand, _super);\r\n function ChangeGridSizeItemsCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeGridSizeItemsCommand.prototype.isEnabledInReadOnlyMode = function () {\r\n return true;\r\n };\r\n ChangeGridSizeItemsCommand.prototype.getValue = function () {\r\n var _this = this;\r\n return this.control.settings.gridSizeItems.map(function (s) { return _this.getModelUnit(s); });\r\n };\r\n ChangeGridSizeItemsCommand.prototype.executeCore = function (state, parameter) {\r\n var _this = this;\r\n this.control.settings.gridSizeItems = parameter.map(function (s) { return _this.getModelUnitTwipsValue(s); });\r\n return true;\r\n };\r\n return ChangeGridSizeItemsCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.ChangeGridSizeItemsCommand = ChangeGridSizeItemsCommand;\r\n\n\n/***/ }),\n/* 255 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangePageLandscapeCommand = void 0;\r\nvar ChangePagePropertyCommand_1 = __webpack_require__(76);\r\nvar ChangePageLandscapeHistoryItem_1 = __webpack_require__(256);\r\nvar ChangePageLandscapeCommand = /** @class */ (function (_super) {\r\n __extends(ChangePageLandscapeCommand, _super);\r\n function ChangePageLandscapeCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangePageLandscapeCommand.prototype.getValue = function () {\r\n return this.control.model.pageLandscape;\r\n };\r\n ChangePageLandscapeCommand.prototype.createHistoryItems = function (parameter) {\r\n return [new ChangePageLandscapeHistoryItem_1.ChangePageLandscapeHistoryItem(parameter)];\r\n };\r\n return ChangePageLandscapeCommand;\r\n}(ChangePagePropertyCommand_1.ChangePagePropertyCommand));\r\nexports.ChangePageLandscapeCommand = ChangePageLandscapeCommand;\r\n\n\n/***/ }),\n/* 256 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangePageLandscapeHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar ChangePageLandscapeHistoryItem = /** @class */ (function (_super) {\r\n __extends(ChangePageLandscapeHistoryItem, _super);\r\n function ChangePageLandscapeHistoryItem(value) {\r\n var _this = _super.call(this) || this;\r\n _this.value = value;\r\n return _this;\r\n }\r\n ChangePageLandscapeHistoryItem.prototype.redo = function (manipulator) {\r\n this.oldValue = manipulator.model.pageLandscape;\r\n manipulator.changePageLandscape(this.value);\r\n };\r\n ChangePageLandscapeHistoryItem.prototype.undo = function (manipulator) {\r\n manipulator.changePageLandscape(this.oldValue);\r\n };\r\n return ChangePageLandscapeHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.ChangePageLandscapeHistoryItem = ChangePageLandscapeHistoryItem;\r\n\n\n/***/ }),\n/* 257 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangePageSizeItemsCommand = exports.ChangePageSizeCommand = void 0;\r\nvar ChangePagePropertyCommand_1 = __webpack_require__(76);\r\nvar size_1 = __webpack_require__(2);\r\nvar ChangePageSizeHistoryItem_1 = __webpack_require__(258);\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar ChangePageSizeCommand = /** @class */ (function (_super) {\r\n __extends(ChangePageSizeCommand, _super);\r\n function ChangePageSizeCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangePageSizeCommand.prototype.getValue = function () {\r\n return this.getModelUnitSize(this.control.model.pageSize);\r\n };\r\n ChangePageSizeCommand.prototype.createHistoryItems = function (parameter) {\r\n return [new ChangePageSizeHistoryItem_1.ChangePageSizeHistoryItem(new size_1.Size(this.getModelUnitTwipsValue(parameter.width), this.getModelUnitTwipsValue(parameter.height)))];\r\n };\r\n ChangePageSizeCommand.prototype.getItems = function () {\r\n var _this = this;\r\n return this.control.settings.pageSizeItems.map(function (i) {\r\n return {\r\n value: _this.getModelUnitSize(i.size),\r\n text: i.text.replace(\"{width}\", _this.getViewUnitText(i.size.width)).replace(\"{height}\", _this.getViewUnitText(i.size.height))\r\n };\r\n });\r\n };\r\n ChangePageSizeCommand.prototype.getModelUnitSize = function (size) {\r\n return new size_1.Size(this.getModelUnit(size.width), this.getModelUnit(size.height));\r\n };\r\n return ChangePageSizeCommand;\r\n}(ChangePagePropertyCommand_1.ChangePagePropertyCommand));\r\nexports.ChangePageSizeCommand = ChangePageSizeCommand;\r\nvar ChangePageSizeItemsCommand = /** @class */ (function (_super) {\r\n __extends(ChangePageSizeItemsCommand, _super);\r\n function ChangePageSizeItemsCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangePageSizeItemsCommand.prototype.isEnabled = function () {\r\n return true;\r\n };\r\n ChangePageSizeItemsCommand.prototype.getValue = function () {\r\n var _this = this;\r\n return this.control.settings.pageSizeItems.map(function (i) {\r\n return {\r\n size: new size_1.Size(_this.getModelUnit(i.width), _this.getModelUnit(i.height)),\r\n text: i.text\r\n };\r\n });\r\n };\r\n ChangePageSizeItemsCommand.prototype.executeCore = function (state, parameter) {\r\n var _this = this;\r\n this.control.settings.pageSizeItems = parameter.map(function (i) {\r\n return {\r\n size: new size_1.Size(_this.getModelUnitTwipsValue(i.width), _this.getModelUnitTwipsValue(i.height)),\r\n text: i.text\r\n };\r\n });\r\n return true;\r\n };\r\n return ChangePageSizeItemsCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.ChangePageSizeItemsCommand = ChangePageSizeItemsCommand;\r\n\n\n/***/ }),\n/* 258 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangePageSizeHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar ChangePageSizeHistoryItem = /** @class */ (function (_super) {\r\n __extends(ChangePageSizeHistoryItem, _super);\r\n function ChangePageSizeHistoryItem(size) {\r\n var _this = _super.call(this) || this;\r\n _this.size = size;\r\n return _this;\r\n }\r\n ChangePageSizeHistoryItem.prototype.redo = function (manipulator) {\r\n this.oldSize = manipulator.model.pageSize;\r\n manipulator.changePageSize(this.size);\r\n };\r\n ChangePageSizeHistoryItem.prototype.undo = function (manipulator) {\r\n manipulator.changePageSize(this.oldSize);\r\n };\r\n return ChangePageSizeHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.ChangePageSizeHistoryItem = ChangePageSizeHistoryItem;\r\n\n\n/***/ }),\n/* 259 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ExportPngCommand = void 0;\r\nvar ExportImageCommand_1 = __webpack_require__(98);\r\nvar ExportPngCommand = /** @class */ (function (_super) {\r\n __extends(ExportPngCommand, _super);\r\n function ExportPngCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ExportPngCommand.prototype.getExtension = function () { return \"png\"; };\r\n ExportPngCommand.prototype.getExportFunc = function () {\r\n return this.exporter.exportPng;\r\n };\r\n return ExportPngCommand;\r\n}(ExportImageCommand_1.ExportImageCommand));\r\nexports.ExportPngCommand = ExportPngCommand;\r\n\n\n/***/ }),\n/* 260 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CanvasExportManager = void 0;\r\nvar unit_converter_1 = __webpack_require__(11);\r\nvar browser_1 = __webpack_require__(19);\r\nvar Utils_1 = __webpack_require__(17);\r\nvar CanvasManagerBase_1 = __webpack_require__(43);\r\nvar RenderHelper_1 = __webpack_require__(15);\r\nvar DOMManipulator_1 = __webpack_require__(100);\r\nvar color_1 = __webpack_require__(22);\r\nvar EXPORT_IMAGE_QUALITY = 1;\r\nvar CanvasExportManager = /** @class */ (function (_super) {\r\n __extends(CanvasExportManager, _super);\r\n function CanvasExportManager(itemsContainer, measurer) {\r\n var _this = _super.call(this, 1, new DOMManipulator_1.ExportDOMManipulator(measurer)) || this;\r\n _this.itemsContainer = itemsContainer;\r\n return _this;\r\n }\r\n CanvasExportManager.prototype.getSvgImage = function (modelSize, pageColor, exportAsInline, exportForBinaryImage) {\r\n var svgEl = RenderHelper_1.RenderHelper.createSvgElement(undefined, true);\r\n var modelAbsSize = modelSize.clone().applyConverter(unit_converter_1.UnitConverter.twipsToPixelsF).clone().applyConverter(Math.ceil);\r\n Utils_1.RenderUtils.updateSvgElementSize(svgEl, modelAbsSize.width, modelAbsSize.height, true);\r\n svgEl.style.backgroundColor = color_1.ColorUtils.colorToHash(pageColor);\r\n this.createTextFloodFilter(undefined, svgEl, pageColor);\r\n var exportCssRules = !exportAsInline && !browser_1.Browser.IE && this.getExportCssRules();\r\n if (exportCssRules) {\r\n var style = document.createElementNS(RenderHelper_1.svgNS, \"style\");\r\n style.innerHTML = exportCssRules;\r\n svgEl.appendChild(style);\r\n }\r\n if (exportForBinaryImage) { // Only for IE11, fix for canvg.Canvg\r\n var bk = document.createElementNS(RenderHelper_1.svgNS, \"rect\");\r\n bk.setAttributeNS(null, \"x\", \"0\");\r\n bk.setAttributeNS(null, \"y\", \"0\");\r\n bk.setAttributeNS(null, \"height\", modelAbsSize.height.toString());\r\n bk.setAttributeNS(null, \"width\", modelAbsSize.width.toString());\r\n bk.setAttributeNS(null, \"fill\", svgEl.style.backgroundColor);\r\n svgEl.appendChild(bk);\r\n }\r\n for (var i = 0; i < this.itemsContainer.childNodes.length; i++) {\r\n var node = this.itemsContainer.childNodes[i].cloneNode(true);\r\n if (!exportCssRules)\r\n this.inlineStyle(node, this.itemsContainer.childNodes[i]);\r\n svgEl.appendChild(node);\r\n }\r\n return svgEl;\r\n };\r\n CanvasExportManager.prototype.getSvgImageUrl = function (modelSize, pageColor, exportAsInline) {\r\n var svgEl = this.getSvgImage(modelSize, pageColor, exportAsInline, false);\r\n return this.getSvgBase64String(svgEl);\r\n };\r\n CanvasExportManager.prototype.getSvgString = function (svgElement) {\r\n return new XMLSerializer().serializeToString(svgElement);\r\n };\r\n CanvasExportManager.prototype.getSvgBase64String = function (svgElement) {\r\n var xml = this.getSvgString(svgElement);\r\n return CanvasExportManager.base64Start + this.getBase64EncodeUnicode(xml);\r\n };\r\n CanvasExportManager.prototype.getBase64EncodeUnicode = function (s) {\r\n return btoa(encodeURIComponent(s).replace(/%([0-9A-F]{2})/g, function (match, p1) { return String.fromCharCode(parseInt(\"0x\" + p1, 16)); }));\r\n };\r\n CanvasExportManager.prototype.getExportCssRules = function () {\r\n for (var i = 0; i < document.styleSheets.length; i++) {\r\n var rules = this.getRules(document.styleSheets[i]);\r\n if (rules) {\r\n var cssText = \"\";\r\n for (var j = 0; j < rules.length; j++) {\r\n var rule = rules[j];\r\n var selectorText = this.isCSSStyleRule(rule) ? rule.selectorText : null;\r\n if (selectorText && this.checkSelector(selectorText))\r\n cssText += rule.cssText + \"\\n\";\r\n }\r\n if (cssText.length > 0)\r\n return \"\\n\" + cssText;\r\n }\r\n }\r\n };\r\n CanvasExportManager.prototype.checkSelector = function (selectorText) {\r\n for (var i = 0; i < CanvasExportManager.exportStyleRules.length; i++)\r\n if (selectorText.indexOf(CanvasExportManager.exportStyleRules[i]) === 0)\r\n return true;\r\n return false;\r\n };\r\n CanvasExportManager.prototype.getRules = function (styleSheet) {\r\n try {\r\n return this.isCSSStyleSheet(styleSheet) ? styleSheet.rules || styleSheet.cssRules : null;\r\n }\r\n catch (_a) { } // Catch access dinied exception\r\n };\r\n CanvasExportManager.prototype.isCSSStyleSheet = function (stylesheet) {\r\n return stylesheet.rules !== undefined;\r\n };\r\n CanvasExportManager.prototype.isCSSStyleRule = function (rule) {\r\n return rule.selectorText !== undefined;\r\n };\r\n CanvasExportManager.prototype.inlineStyle = function (destNode, srcNode) {\r\n for (var i = 0; i < destNode.childNodes.length; i++) {\r\n var child = destNode.childNodes[i];\r\n if (!child.tagName)\r\n continue;\r\n if (child.tagName === \"g\")\r\n this.inlineStyle(child, srcNode.childNodes[i]);\r\n else if (child.style) {\r\n var style = window.getComputedStyle(srcNode.childNodes[i]);\r\n if (style !== undefined)\r\n for (var index = 0; index < CanvasExportManager.exportStyleAttributes.length; index++) {\r\n var styleProperty = CanvasExportManager.exportStyleAttributes[index];\r\n child.style.setProperty(styleProperty, style.getPropertyValue(styleProperty));\r\n }\r\n this.inlineStyle(child, srcNode.childNodes[i]);\r\n }\r\n }\r\n };\r\n CanvasExportManager.prototype.exportSvgImage = function (modelSize, pageColor, callback) {\r\n callback(this.getSvgImageUrl(modelSize, pageColor, true));\r\n };\r\n CanvasExportManager.prototype.exportBinaryImage = function (modelSize, pageColor, mimeType, callback) {\r\n var modelAbsSize = this.getAbsoluteSize(modelSize).clone().applyConverter(Math.ceil);\r\n var canvasEl = document.createElement(\"canvas\");\r\n canvasEl.width = modelAbsSize.width;\r\n canvasEl.height = modelAbsSize.height;\r\n var ctx = canvasEl.getContext(\"2d\");\r\n ctx.fillStyle = color_1.ColorUtils.colorToHash(pageColor);\r\n ctx.fillRect(0, 0, modelAbsSize.width, modelAbsSize.height);\r\n if (browser_1.Browser.IE && typeof canvg === \"object\")\r\n this.exportBinaryImageCanvgAsync(modelSize, pageColor, canvasEl, ctx, mimeType).then(function (dataUrl) { return callback(dataUrl); });\r\n else if (browser_1.Browser.IE && typeof canvg === \"function\")\r\n this.exportBinaryImageCanvgOld(modelSize, pageColor, canvasEl, ctx, mimeType, callback);\r\n else {\r\n var imgEl_1 = new Image();\r\n imgEl_1.width = modelAbsSize.width;\r\n imgEl_1.height = modelAbsSize.height;\r\n imgEl_1.setAttribute(\"crossOrigin\", \"anonymous\");\r\n imgEl_1.onload = function () {\r\n ctx.drawImage(imgEl_1, 0, 0);\r\n callback(canvasEl.toDataURL(mimeType, EXPORT_IMAGE_QUALITY));\r\n };\r\n imgEl_1.src = this.getSvgImageUrl(modelSize, pageColor, true);\r\n }\r\n };\r\n CanvasExportManager.prototype.exportBinaryImageCanvgOld = function (modelSize, pageColor, canvasEl, ctx, mimeType, callback) {\r\n var svgEl = this.getSvgImage(modelSize, pageColor, true, false);\r\n var svgStr = this.getSvgString(svgEl);\r\n ctx[\"drawSvg\"](svgStr, 0, 0, null, null, {\r\n renderCallback: function () {\r\n callback(canvasEl.toDataURL(mimeType, EXPORT_IMAGE_QUALITY));\r\n }\r\n });\r\n };\r\n CanvasExportManager.prototype.exportBinaryImageCanvgAsync = function (modelSize, pageColor, canvas, ctx, mimeType) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var svgEl, svgStr, v;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n svgEl = this.getSvgImage(modelSize, pageColor, true, true);\r\n svgStr = this.getSvgString(svgEl);\r\n v = canvg.Canvg.fromString(ctx, svgStr);\r\n return [4 /*yield*/, v.render()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, canvas.toDataURL(mimeType, EXPORT_IMAGE_QUALITY)];\r\n }\r\n });\r\n });\r\n };\r\n CanvasExportManager.prototype.exportPngImage = function (modelSize, pageColor, callback) {\r\n this.exportBinaryImage(modelSize, pageColor, \"image/png\", callback);\r\n };\r\n CanvasExportManager.prototype.exportJpgImage = function (modelSize, pageColor, callback) {\r\n this.exportBinaryImage(modelSize, pageColor, \"image/jpeg\", callback);\r\n };\r\n CanvasExportManager.prototype.notifyModelChanged = function (changes) { };\r\n CanvasExportManager.prototype.notifyPageColorChanged = function (color) { };\r\n CanvasExportManager.prototype.notifyPageSizeChanged = function (pageSize, pageLandscape) { };\r\n CanvasExportManager.base64Start = \"data:image/svg+xml;base64,\";\r\n CanvasExportManager.exportStyleRules = [\r\n \".dxdi-canvas .shape \", \".dxdi-canvas .connector \", \".dxdi-canvas text\", \".dxdi-canvas.export\"\r\n ];\r\n CanvasExportManager.exportStyleAttributes = [\r\n \"fill\", \"stroke\", \"stroke-width\", \"stroke-linejoin\",\r\n \"font-family\", \"font-size\", \"font-weight\", \"font-style\", \"text-decoration\", \"text-anchor\"\r\n ];\r\n return CanvasExportManager;\r\n}(CanvasManagerBase_1.CanvasManagerBase));\r\nexports.CanvasExportManager = CanvasExportManager;\r\n\n\n/***/ }),\n/* 261 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ExportSvgCommand = void 0;\r\nvar ExportImageCommand_1 = __webpack_require__(98);\r\nvar ExportSvgCommand = /** @class */ (function (_super) {\r\n __extends(ExportSvgCommand, _super);\r\n function ExportSvgCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ExportSvgCommand.prototype.getExtension = function () { return \"svg\"; };\r\n ExportSvgCommand.prototype.getExportFunc = function () {\r\n return this.exporter.exportSvg;\r\n };\r\n return ExportSvgCommand;\r\n}(ExportImageCommand_1.ExportImageCommand));\r\nexports.ExportSvgCommand = ExportSvgCommand;\r\n\n\n/***/ }),\n/* 262 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ExportJpgCommand = void 0;\r\nvar ExportImageCommand_1 = __webpack_require__(98);\r\nvar ExportJpgCommand = /** @class */ (function (_super) {\r\n __extends(ExportJpgCommand, _super);\r\n function ExportJpgCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ExportJpgCommand.prototype.getExtension = function () { return \"jpg\"; };\r\n ExportJpgCommand.prototype.getExportFunc = function () {\r\n return this.exporter.exportJpg;\r\n };\r\n return ExportJpgCommand;\r\n}(ExportImageCommand_1.ExportImageCommand));\r\nexports.ExportJpgCommand = ExportJpgCommand;\r\n\n\n/***/ }),\n/* 263 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CopySelectionCommand = void 0;\r\nvar Exporter_1 = __webpack_require__(72);\r\nvar ClipboardCommand_1 = __webpack_require__(101);\r\nvar CopySelectionCommand = /** @class */ (function (_super) {\r\n __extends(CopySelectionCommand, _super);\r\n function CopySelectionCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CopySelectionCommand.prototype.isEnabled = function () {\r\n return _super.prototype.isEnabled.call(this) && !this.control.selection.isEmpty(true);\r\n };\r\n CopySelectionCommand.prototype.isEnabledInReadOnlyMode = function () {\r\n return true;\r\n };\r\n CopySelectionCommand.prototype.executeCore = function (state) {\r\n var exporter = new Exporter_1.Exporter();\r\n var data = exporter.exportItems(this.control.selection.getSelectedItems(true, true));\r\n this.setClipboardData(data);\r\n return true;\r\n };\r\n return CopySelectionCommand;\r\n}(ClipboardCommand_1.ClipboardCommand));\r\nexports.CopySelectionCommand = CopySelectionCommand;\r\n\n\n/***/ }),\n/* 264 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CutSelectionCommand = void 0;\r\nvar Exporter_1 = __webpack_require__(72);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar ClipboardCommand_1 = __webpack_require__(101);\r\nvar CutSelectionCommand = /** @class */ (function (_super) {\r\n __extends(CutSelectionCommand, _super);\r\n function CutSelectionCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CutSelectionCommand.prototype.isEnabled = function () {\r\n var items = this.control.selection.getSelectedItems();\r\n return _super.prototype.isEnabled.call(this) && items.length && (items.length > 1 || this.permissionsProvider.canDeleteItems(items));\r\n };\r\n CutSelectionCommand.prototype.executeCore = function (state) {\r\n var exporter = new Exporter_1.Exporter();\r\n var items = this.control.selection.getSelectedItems(true, true);\r\n var data = exporter.exportItems(items);\r\n this.permissionsProvider.beginDeleteItems(items);\r\n this.setClipboardData(data);\r\n ModelUtils_1.ModelUtils.deleteSelection(this.control.history, this.control.model, this.control.selection);\r\n this.permissionsProvider.endDeleteItems();\r\n return true;\r\n };\r\n Object.defineProperty(CutSelectionCommand.prototype, \"isPermissionsRequired\", {\r\n get: function () { return true; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return CutSelectionCommand;\r\n}(ClipboardCommand_1.ClipboardCommand));\r\nexports.CutSelectionCommand = CutSelectionCommand;\r\n\n\n/***/ }),\n/* 265 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PasteSelectionCommand = void 0;\r\nvar PasteSelectoinCommandBase_1 = __webpack_require__(142);\r\nvar PasteSelectionCommand = /** @class */ (function (_super) {\r\n __extends(PasteSelectionCommand, _super);\r\n function PasteSelectionCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PasteSelectionCommand.prototype.getShapeNewPosition = function (position) {\r\n return PasteSelectoinCommandBase_1.PasteSelectionCommandBase.getShapeNewPosition(this.control.model, position);\r\n };\r\n PasteSelectionCommand.prototype.changeConnectorPoints = function (connector) {\r\n PasteSelectoinCommandBase_1.PasteSelectionCommandBase.changeConnectorPoints(this.control.model, connector);\r\n };\r\n return PasteSelectionCommand;\r\n}(PasteSelectoinCommandBase_1.PasteSelectionCommandBase));\r\nexports.PasteSelectionCommand = PasteSelectionCommand;\r\n\n\n/***/ }),\n/* 266 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ImportShapeHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar ImportShapeHistoryItem = /** @class */ (function (_super) {\r\n __extends(ImportShapeHistoryItem, _super);\r\n function ImportShapeHistoryItem(shape) {\r\n var _this = _super.call(this) || this;\r\n _this.shape = shape;\r\n return _this;\r\n }\r\n ImportShapeHistoryItem.prototype.redo = function (manipulator) {\r\n this.shapeKey = this.shape.key;\r\n manipulator.insertShape(this.shape);\r\n };\r\n ImportShapeHistoryItem.prototype.undo = function (manipulator) {\r\n manipulator.removeShape(manipulator.model.findShape(this.shapeKey), true);\r\n };\r\n return ImportShapeHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.ImportShapeHistoryItem = ImportShapeHistoryItem;\r\n\n\n/***/ }),\n/* 267 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ImportConnectorHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar ImportConnectorHistoryItem = /** @class */ (function (_super) {\r\n __extends(ImportConnectorHistoryItem, _super);\r\n function ImportConnectorHistoryItem(connector) {\r\n var _this = _super.call(this) || this;\r\n _this.connector = connector;\r\n return _this;\r\n }\r\n ImportConnectorHistoryItem.prototype.redo = function (manipulator) {\r\n this.connectorKey = this.connector.key;\r\n manipulator.insertConnector(this.connector);\r\n };\r\n ImportConnectorHistoryItem.prototype.undo = function (manipulator) {\r\n var connector = manipulator.model.findConnector(this.connectorKey);\r\n manipulator.removeConnector(connector);\r\n };\r\n return ImportConnectorHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.ImportConnectorHistoryItem = ImportConnectorHistoryItem;\r\n\n\n/***/ }),\n/* 268 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ImportBPMNCommand = void 0;\r\nvar BPMNImporter_1 = __webpack_require__(269);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar AddShapeHistoryItem_1 = __webpack_require__(53);\r\nvar point_1 = __webpack_require__(1);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar AddConnectorHistoryItem_1 = __webpack_require__(64);\r\nvar AddConnectionHistoryItem_1 = __webpack_require__(49);\r\nvar Sugiyama_1 = __webpack_require__(79);\r\nvar LayoutSettings_1 = __webpack_require__(20);\r\nvar ExportImportCommandBase_1 = __webpack_require__(56);\r\nvar ImportBPMNCommand = /** @class */ (function (_super) {\r\n __extends(ImportBPMNCommand, _super);\r\n function ImportBPMNCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ImportBPMNCommand.prototype.executeCore = function (state, parameter) {\r\n var importer = new BPMNImporter_1.BPMNImporter(parameter);\r\n var graph = importer.import();\r\n this.updateModel(graph);\r\n return true;\r\n };\r\n ImportBPMNCommand.prototype.updateModel = function (graph) {\r\n var _this = this;\r\n var externalKeyToModelKey = {};\r\n var shapes = [];\r\n var connectors = [];\r\n this.control.history.beginTransaction();\r\n graph.items.forEach(function (node) {\r\n var insert = new AddShapeHistoryItem_1.AddShapeHistoryItem(_this.getShapeDescription(node.type), new point_1.Point(0, 0), node.text, node.key);\r\n _this.control.history.addAndRedo(insert);\r\n externalKeyToModelKey[node.key] = insert.shapeKey;\r\n var shape = _this.control.model.findShape(insert.shapeKey);\r\n shapes.push(shape);\r\n });\r\n graph.edges.forEach(function (edge) {\r\n var from = _this.control.model.findShape(externalKeyToModelKey[edge.from]);\r\n var to = _this.control.model.findShape(externalKeyToModelKey[edge.to]);\r\n var insert = new AddConnectorHistoryItem_1.AddConnectorHistoryItem([from.getConnectionPointPosition(0), to.getConnectionPointPosition(0)]);\r\n _this.control.history.addAndRedo(insert);\r\n var connector = _this.control.model.findConnector(insert.connectorKey);\r\n _this.control.history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(connector, from, 0, Connector_1.ConnectorPosition.Begin));\r\n _this.control.history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(connector, to, 0, Connector_1.ConnectorPosition.End));\r\n connectors.push(connector);\r\n });\r\n var settings = new LayoutSettings_1.LayoutSettings();\r\n var graphInfo = ModelUtils_1.ModelUtils.getGraphInfoByItems(this.control.model, shapes, connectors);\r\n graphInfo.forEach(function (info) {\r\n var layout = new Sugiyama_1.SugiyamaLayoutBuilder(settings, info.graph).build();\r\n var nonGraphItems = ModelUtils_1.ModelUtils.getNonGraphItems(_this.control.model, info.container, layout.nodeToLayout, shapes, connectors);\r\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);\r\n });\r\n ModelUtils_1.ModelUtils.tryUpdateModelRectangle(this.control.history);\r\n this.control.history.endTransaction();\r\n };\r\n ImportBPMNCommand.prototype.getShapeDescription = function (shapeType) {\r\n return this.control.shapeDescriptionManager.get(shapeType);\r\n };\r\n return ImportBPMNCommand;\r\n}(ExportImportCommandBase_1.ExportImportCommandBase));\r\nexports.ImportBPMNCommand = ImportBPMNCommand;\r\n\n\n/***/ }),\n/* 269 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.BPMNNode = exports.BPMNImporter = void 0;\r\nvar Graph_1 = __webpack_require__(69);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar Structures_1 = __webpack_require__(39);\r\nvar ImportUtils_1 = __webpack_require__(95);\r\nvar BPMNImporter = /** @class */ (function () {\r\n function BPMNImporter(xml) {\r\n this.doc = ImportUtils_1.ImportUtils.createDocument(xml);\r\n this.graph = new Graph_1.Graph([], []);\r\n }\r\n BPMNImporter.prototype.import = function () {\r\n for (var child = void 0, i = 0; child = this.doc.children[i]; i++)\r\n if (child.nodeName.toUpperCase() === \"DEFINITIONS\")\r\n this.onDefinitionsElement(child);\r\n this.validate();\r\n return this.graph;\r\n };\r\n BPMNImporter.prototype.validate = function () {\r\n var nodesMap = {};\r\n this.graph.nodes.forEach(function (n) { return nodesMap[n] = true; });\r\n for (var i = 0, edge = void 0; edge = this.graph.edges[i]; i++)\r\n if (!nodesMap[edge.from] || !nodesMap[edge.to]) {\r\n this.graph.edges.splice(i, 1);\r\n i--;\r\n }\r\n };\r\n BPMNImporter.prototype.onDefinitionsElement = function (element) {\r\n this.dataSourceKey = element.getAttribute(\"id\");\r\n for (var child = void 0, i = 0; child = element.children[i]; i++)\r\n if (child.nodeName.toUpperCase() === \"PROCESS\")\r\n this.onProcessElement(child);\r\n };\r\n BPMNImporter.prototype.onProcessElement = function (element) {\r\n for (var child = void 0, i = 0; child = element.children[i]; i++)\r\n switch (child.nodeName.toUpperCase()) {\r\n case \"STARTEVENT\":\r\n this.onStartEventElement(child);\r\n break;\r\n case \"SEQUENCEFLOW\":\r\n this.onSequenceFlowElement(child);\r\n break;\r\n case \"SCRIPTTASK\":\r\n this.onScriptTaskElement(child);\r\n break;\r\n case \"USERTASK\":\r\n this.onUserTaskElement(child);\r\n break;\r\n case \"SERVICETASK\":\r\n this.onServiceTaskElement(child);\r\n break;\r\n case \"SENDTASK\":\r\n this.onSendTaskElement(child);\r\n break;\r\n case \"EXCLUSIVEGATEWAY\":\r\n this.onExclusiveGateway(child);\r\n break;\r\n case \"ENDEVENT\":\r\n this.onEndEventGateway(child);\r\n break;\r\n }\r\n };\r\n BPMNImporter.prototype.onStartEventElement = function (element) {\r\n var node = this.createNode(element);\r\n node.type = ShapeTypes_1.ShapeTypes.Ellipse;\r\n node.text = element.getAttribute(\"name\");\r\n this.graph.addNode(node);\r\n };\r\n BPMNImporter.prototype.onSequenceFlowElement = function (element) {\r\n var fromKey = element.getAttribute(\"sourceRef\");\r\n var toKey = element.getAttribute(\"targetRef\");\r\n var edge = this.createEdge(element, fromKey, toKey);\r\n if (element.hasAttribute(\"name\"))\r\n edge.text = element.getAttribute(\"name\");\r\n this.graph.addEdge(edge);\r\n };\r\n BPMNImporter.prototype.onScriptTaskElement = function (element) {\r\n var node = this.createNode(element);\r\n node.text = element.getAttribute(\"name\");\r\n this.graph.addNode(node);\r\n };\r\n BPMNImporter.prototype.onUserTaskElement = function (element) {\r\n var node = this.createNode(element);\r\n node.text = element.getAttribute(\"name\");\r\n this.graph.addNode(node);\r\n };\r\n BPMNImporter.prototype.onServiceTaskElement = function (element) {\r\n var node = this.createNode(element);\r\n node.text = element.getAttribute(\"name\");\r\n this.graph.addNode(node);\r\n };\r\n BPMNImporter.prototype.onSendTaskElement = function (element) {\r\n var node = this.createNode(element);\r\n node.text = element.getAttribute(\"name\");\r\n this.graph.addNode(node);\r\n };\r\n BPMNImporter.prototype.onExclusiveGateway = function (element) {\r\n var node = this.createNode(element);\r\n node.text = element.getAttribute(\"name\");\r\n node.type = ShapeTypes_1.ShapeTypes.Decision;\r\n this.graph.addNode(node);\r\n };\r\n BPMNImporter.prototype.onEndEventGateway = function (element) {\r\n var node = this.createNode(element);\r\n node.text = element.getAttribute(\"name\");\r\n node.type = ShapeTypes_1.ShapeTypes.Ellipse;\r\n this.graph.addNode(node);\r\n };\r\n BPMNImporter.prototype.createNode = function (element) {\r\n return new BPMNNode(this.dataSourceKey, element.getAttribute(\"id\"));\r\n };\r\n BPMNImporter.prototype.createEdge = function (element, fromKey, toKey) {\r\n return new BPMNEdge(this.dataSourceKey, element.getAttribute(\"id\"), fromKey, toKey);\r\n };\r\n return BPMNImporter;\r\n}());\r\nexports.BPMNImporter = BPMNImporter;\r\nvar BPMNNode = /** @class */ (function () {\r\n function BPMNNode(sourceKey, key) {\r\n this.sourceKey = sourceKey;\r\n this.key = key;\r\n this.type = ShapeTypes_1.ShapeTypes.Rectangle;\r\n }\r\n return BPMNNode;\r\n}());\r\nexports.BPMNNode = BPMNNode;\r\nvar BPMNEdge = /** @class */ (function (_super) {\r\n __extends(BPMNEdge, _super);\r\n function BPMNEdge(sourceKey, key, fromKey, toKey) {\r\n var _this = _super.call(this, key, fromKey, toKey) || this;\r\n _this.sourceKey = sourceKey;\r\n return _this;\r\n }\r\n return BPMNEdge;\r\n}(Structures_1.Edge));\r\n\n\n/***/ }),\n/* 270 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CycleRemover = void 0;\r\nvar Graph_1 = __webpack_require__(69);\r\nvar Structures_1 = __webpack_require__(39);\r\nvar ListUtils_1 = __webpack_require__(90);\r\nvar CycleRemover = /** @class */ (function () {\r\n function CycleRemover() {\r\n }\r\n CycleRemover.removeCycles = function (graph) {\r\n var feedbackSet = this.getFeedbackSet(graph);\r\n return this.reverseEdges(graph, feedbackSet);\r\n };\r\n CycleRemover.getFeedbackSet = function (graph) {\r\n var _this = this;\r\n var feedbackSet = {};\r\n var nonTrivialStronglyConnectedComponents = this.getNonTrivialStronglyConnectedComponents(graph);\r\n while (nonTrivialStronglyConnectedComponents.length) {\r\n nonTrivialStronglyConnectedComponents.forEach(function (g) {\r\n var maxCyclicEdges = _this.getMaxCyclicEdges(g);\r\n maxCyclicEdges.forEach(function (e) { return delete feedbackSet[e.reverse().getHashKey()]; });\r\n maxCyclicEdges.forEach(function (e) { return feedbackSet[e.getHashKey()] = true; });\r\n });\r\n nonTrivialStronglyConnectedComponents = this.getNonTrivialStronglyConnectedComponents(this.reverseEdges(graph, feedbackSet).graph);\r\n }\r\n return feedbackSet;\r\n };\r\n CycleRemover.getMaxCyclicEdges = function (graph) {\r\n var black = {};\r\n var gray = {};\r\n var edgeCycleCount = {};\r\n var visitedEdges = [];\r\n var cycles = [];\r\n var iterator = graph.createIterator(Structures_1.ConnectionMode.Outgoing);\r\n iterator.visitEachEdgeOnce = false;\r\n iterator.onNode = function (n) {\r\n gray[n.key] = true;\r\n };\r\n iterator.skipNode = function (n) {\r\n if (gray[n.key]) {\r\n var cycle = [];\r\n for (var i = 0; i < visitedEdges.length; i++) {\r\n var e = visitedEdges[i];\r\n if (edgeCycleCount[e.key] === undefined)\r\n edgeCycleCount[e.key] = 0;\r\n edgeCycleCount[e.key]++;\r\n cycle.push(e);\r\n if (e.from === n.key)\r\n break;\r\n }\r\n cycles.push(cycle);\r\n }\r\n return gray[n.key] || black[n.key];\r\n };\r\n iterator.skipEdge = function (e) { return false; };\r\n iterator.onEdge = function (e) {\r\n visitedEdges.splice(0, 0, e);\r\n };\r\n iterator.onAfterEdge = function (e) {\r\n visitedEdges.splice(0, 1);\r\n };\r\n iterator.onAllEdges = function (e) {\r\n black[e.key] = true;\r\n gray[e.key] = false;\r\n };\r\n iterator.iterate(graph.nodes[0]);\r\n var edgeSet = new ListUtils_1.HashSet([], function (e) { return e.key; });\r\n cycles.forEach(function (c) {\r\n edgeSet.tryPush(c.reduce(function (max, curr) { return edgeCycleCount[curr.key] > edgeCycleCount[max.key] ? curr : max; }, c[0]));\r\n });\r\n return edgeSet.list();\r\n };\r\n CycleRemover.reverseEdges = function (graph, feedbackSet) {\r\n var edges = new ListUtils_1.HashSet([], function (e) { return e.getHashKey(); });\r\n var reversedEdges = {};\r\n var removedEdges = {};\r\n graph.edges.forEach(function (e) {\r\n if (feedbackSet[e.getHashKey()]) {\r\n e = e.reverse();\r\n reversedEdges[e.key] = true;\r\n }\r\n if (!edges.tryPush(e)) {\r\n removedEdges[e.key] = true;\r\n delete reversedEdges[e.key];\r\n }\r\n });\r\n return {\r\n graph: new Graph_1.Graph(graph.nodes.map(function (n) { return graph.getNode(n); }), edges.list()),\r\n reversedEdges: reversedEdges,\r\n removedEdges: removedEdges\r\n };\r\n };\r\n CycleRemover.getNonTrivialStronglyConnectedComponents = function (graph) {\r\n return this.getStronglyConnectedComponents(graph).filter(function (g) { return g.edges.length; });\r\n };\r\n CycleRemover.getStronglyConnectedComponents = function (graph) {\r\n var _this = this;\r\n // Tarjan algorithm\r\n // https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\r\n var nodesStack = [];\r\n var index = 0;\r\n var lowIndex = {};\r\n var lowLink = {};\r\n var onStack = {};\r\n var components = [];\r\n var visitedNodes = {};\r\n for (var i = 0; i < graph.nodes.length; i++) {\r\n var nodeKey = graph.nodes[i];\r\n var iterator = graph.createIterator(Structures_1.ConnectionMode.Outgoing);\r\n iterator.visitEachEdgeOnce = false;\r\n iterator.visitEachNodeOnce = false;\r\n iterator.onNode = function (n) {\r\n visitedNodes[n.key] = true;\r\n nodesStack.push(n);\r\n onStack[n.key] = true;\r\n lowLink[n.key] = index;\r\n lowIndex[n.key] = index;\r\n index++;\r\n };\r\n iterator.skipNode = function (n) { return visitedNodes[n.key]; };\r\n iterator.skipEdge = function (e) {\r\n var isVisited = visitedNodes[e.to];\r\n if (isVisited && onStack[e.to])\r\n lowLink[e.from] = Math.min(lowLink[e.from], lowIndex[e.to]);\r\n return isVisited;\r\n };\r\n iterator.onAfterEdge = function (e) {\r\n lowLink[e.from] = Math.min(lowLink[e.from], lowLink[e.to]);\r\n };\r\n iterator.onAllEdges = function (n, outgoing) {\r\n if (outgoing && lowLink[n.key] === lowIndex[n.key])\r\n components.push(_this.getStronglyConnectedComponent(graph, n, nodesStack, onStack));\r\n };\r\n iterator.iterate(nodeKey);\r\n }\r\n return components;\r\n };\r\n CycleRemover.getStronglyConnectedComponent = function (graph, root, nodesStack, onStack) {\r\n var itemsMap = {};\r\n var nodes = [];\r\n var edges = [];\r\n var topStackNode;\r\n do {\r\n topStackNode = nodesStack.pop();\r\n if (!itemsMap[topStackNode.key])\r\n nodes.push(topStackNode);\r\n itemsMap[topStackNode.key] = true;\r\n onStack[topStackNode.key] = false;\r\n } while (topStackNode !== root);\r\n nodes.forEach(function (n) {\r\n var aEdges = graph.getAdjacentEdges(n.key, Structures_1.ConnectionMode.Outgoing);\r\n edges = edges.concat(aEdges.filter(function (e) { return !itemsMap[e.key] && itemsMap[e.to]; }));\r\n aEdges.forEach(function (e) { return itemsMap[e.key] = true; });\r\n });\r\n return new Graph_1.Graph(nodes, edges);\r\n };\r\n return CycleRemover;\r\n}());\r\nexports.CycleRemover = CycleRemover;\r\n\n\n/***/ }),\n/* 271 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SendToBackCommand = void 0;\r\nvar ChangeZindexHistoryItem_1 = __webpack_require__(102);\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar SendToBackCommand = /** @class */ (function (_super) {\r\n __extends(SendToBackCommand, _super);\r\n function SendToBackCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SendToBackCommand.prototype.isEnabled = function () {\r\n var items = this.control.selection.getSelectedItems();\r\n return _super.prototype.isEnabled.call(this) && items.length > 0 && this.needSendToBack(items);\r\n };\r\n SendToBackCommand.prototype.executeCore = function (state, parameter) {\r\n var _this = this;\r\n this.control.history.beginTransaction();\r\n var items = this.control.selection.getSelectedItems();\r\n items.forEach(function (item) {\r\n var newZIndex = _this.control.model.getIntersectItemsMinZIndex(item) - 1;\r\n _this.control.history.addAndRedo(new ChangeZindexHistoryItem_1.ChangeZindexHistoryItem(item, newZIndex));\r\n });\r\n this.control.history.endTransaction();\r\n return true;\r\n };\r\n SendToBackCommand.prototype.needSendToBack = function (items) {\r\n var _this = this;\r\n var _loop_1 = function (i) {\r\n var zIndex = this_1.control.model.getIntersectItemsMinZIndex(items[i]);\r\n if (zIndex < items[i].zIndex)\r\n return { value: true };\r\n if (zIndex === items[i].zIndex) {\r\n var result_1 = false;\r\n var sameZIndexItems = this_1.control.model.getIntersectItems(items[i]).filter(function (item) { return item.zIndex === items[i].zIndex; });\r\n sameZIndexItems.forEach(function (item) {\r\n if (_this.control.model.getItemIndex(item) < _this.control.model.getItemIndex(items[i])) {\r\n result_1 = true;\r\n return;\r\n }\r\n });\r\n return { value: result_1 };\r\n }\r\n };\r\n var this_1 = this;\r\n for (var i = 0; i < items.length; i++) {\r\n var state_1 = _loop_1(i);\r\n if (typeof state_1 === \"object\")\r\n return state_1.value;\r\n }\r\n return false;\r\n };\r\n return SendToBackCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.SendToBackCommand = SendToBackCommand;\r\n\n\n/***/ }),\n/* 272 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.BringToFrontCommand = void 0;\r\nvar ChangeZindexHistoryItem_1 = __webpack_require__(102);\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar BringToFrontCommand = /** @class */ (function (_super) {\r\n __extends(BringToFrontCommand, _super);\r\n function BringToFrontCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n BringToFrontCommand.prototype.isEnabled = function () {\r\n var items = this.control.selection.getSelectedItems();\r\n return _super.prototype.isEnabled.call(this) && items.length > 0 && this.needBringToFront(items);\r\n };\r\n BringToFrontCommand.prototype.executeCore = function (state, parameter) {\r\n var _this = this;\r\n this.control.history.beginTransaction();\r\n var items = this.control.selection.getSelectedItems();\r\n items.forEach(function (item) {\r\n var newZIndex = _this.control.model.getIntersectItemsMaxZIndex(item) + 1;\r\n _this.control.history.addAndRedo(new ChangeZindexHistoryItem_1.ChangeZindexHistoryItem(item, newZIndex));\r\n });\r\n this.control.history.endTransaction();\r\n return true;\r\n };\r\n BringToFrontCommand.prototype.needBringToFront = function (items) {\r\n var _this = this;\r\n var _loop_1 = function (i) {\r\n var zIndex = this_1.control.model.getIntersectItemsMaxZIndex(items[i]);\r\n if (zIndex > items[i].zIndex)\r\n return { value: true };\r\n if (zIndex === items[i].zIndex) {\r\n var result_1 = false;\r\n var sameZIndexItems = this_1.control.model.getIntersectItems(items[i]).filter(function (item) { return item.zIndex === items[i].zIndex; });\r\n sameZIndexItems.forEach(function (item) {\r\n if (_this.control.model.getItemIndex(item) > _this.control.model.getItemIndex(items[i])) {\r\n result_1 = true;\r\n return;\r\n }\r\n });\r\n return { value: result_1 };\r\n }\r\n };\r\n var this_1 = this;\r\n for (var i = 0; i < items.length; i++) {\r\n var state_1 = _loop_1(i);\r\n if (typeof state_1 === \"object\")\r\n return state_1.value;\r\n }\r\n return false;\r\n };\r\n return BringToFrontCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.BringToFrontCommand = BringToFrontCommand;\r\n\n\n/***/ }),\n/* 273 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MoveStepDownCommand = exports.MoveDownCommand = exports.MoveStepUpCommand = exports.MoveUpCommand = exports.MoveStepRightCommand = exports.MoveRightCommand = exports.MoveStepLeftCommand = exports.MoveLeftCommand = exports.MoveCommand = void 0;\r\nvar point_1 = __webpack_require__(1);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar unit_converter_1 = __webpack_require__(11);\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar MoveCommand = /** @class */ (function (_super) {\r\n __extends(MoveCommand, _super);\r\n function MoveCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MoveCommand.prototype.isEnabled = function () {\r\n return _super.prototype.isEnabled.call(this) && !this.control.selection.isEmpty();\r\n };\r\n MoveCommand.prototype.executeCore = function (state, parameter) {\r\n var _this = this;\r\n this.control.history.beginTransaction();\r\n var selection = this.control.selection;\r\n selection.getSelectedShapes().forEach(function (shape) {\r\n var pos = _this.getPosition(shape.position);\r\n ModelUtils_1.ModelUtils.setShapePosition(_this.control.history, _this.control.model, shape, pos);\r\n ModelUtils_1.ModelUtils.updateShapeAttachedConnectors(_this.control.history, _this.control.model, shape);\r\n });\r\n var selectedItems = ModelUtils_1.ModelUtils.createSelectedItems(selection);\r\n selection.getSelectedConnectors().forEach(function (connector) {\r\n if (ModelUtils_1.ModelUtils.canMoveConnector(selectedItems, connector)) {\r\n var startPtIndex = connector.beginItem ? 1 : 0;\r\n var endPtIndex = connector.endItem ? (connector.points.length - 2) : (connector.points.length - 1);\r\n for (var i = startPtIndex; i <= endPtIndex; i++) {\r\n var pos = _this.getPosition(connector.points[i]);\r\n ModelUtils_1.ModelUtils.moveConnectorPoint(_this.control.history, connector, i, pos);\r\n }\r\n }\r\n });\r\n ModelUtils_1.ModelUtils.tryUpdateModelRectangle(this.control.history);\r\n this.control.history.endTransaction();\r\n return true;\r\n };\r\n return MoveCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.MoveCommand = MoveCommand;\r\nvar MoveLeftCommand = /** @class */ (function (_super) {\r\n __extends(MoveLeftCommand, _super);\r\n function MoveLeftCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MoveLeftCommand.prototype.getPosition = function (position) {\r\n return position.clone().offset(-unit_converter_1.UnitConverter.pixelsToTwips(1), 0);\r\n };\r\n return MoveLeftCommand;\r\n}(MoveCommand));\r\nexports.MoveLeftCommand = MoveLeftCommand;\r\nvar MoveStepLeftCommand = /** @class */ (function (_super) {\r\n __extends(MoveStepLeftCommand, _super);\r\n function MoveStepLeftCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MoveStepLeftCommand.prototype.getPosition = function (position) {\r\n if (this.control.settings.snapToGrid)\r\n 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);\r\n else\r\n return position.clone().offset(-this.control.settings.gridSize, 0);\r\n };\r\n return MoveStepLeftCommand;\r\n}(MoveCommand));\r\nexports.MoveStepLeftCommand = MoveStepLeftCommand;\r\nvar MoveRightCommand = /** @class */ (function (_super) {\r\n __extends(MoveRightCommand, _super);\r\n function MoveRightCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MoveRightCommand.prototype.getPosition = function (position) {\r\n return position.clone().offset(unit_converter_1.UnitConverter.pixelsToTwips(1), 0);\r\n };\r\n return MoveRightCommand;\r\n}(MoveCommand));\r\nexports.MoveRightCommand = MoveRightCommand;\r\nvar MoveStepRightCommand = /** @class */ (function (_super) {\r\n __extends(MoveStepRightCommand, _super);\r\n function MoveStepRightCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MoveStepRightCommand.prototype.getPosition = function (position) {\r\n if (this.control.settings.snapToGrid)\r\n 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);\r\n else\r\n return position.clone().offset(this.control.settings.gridSize, 0);\r\n };\r\n return MoveStepRightCommand;\r\n}(MoveCommand));\r\nexports.MoveStepRightCommand = MoveStepRightCommand;\r\nvar MoveUpCommand = /** @class */ (function (_super) {\r\n __extends(MoveUpCommand, _super);\r\n function MoveUpCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MoveUpCommand.prototype.getPosition = function (position) {\r\n return position.clone().offset(0, -unit_converter_1.UnitConverter.pixelsToTwips(1));\r\n };\r\n return MoveUpCommand;\r\n}(MoveCommand));\r\nexports.MoveUpCommand = MoveUpCommand;\r\nvar MoveStepUpCommand = /** @class */ (function (_super) {\r\n __extends(MoveStepUpCommand, _super);\r\n function MoveStepUpCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MoveStepUpCommand.prototype.getPosition = function (position) {\r\n if (this.control.settings.snapToGrid)\r\n 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));\r\n else\r\n return position.clone().offset(0, -this.control.settings.gridSize);\r\n };\r\n return MoveStepUpCommand;\r\n}(MoveCommand));\r\nexports.MoveStepUpCommand = MoveStepUpCommand;\r\nvar MoveDownCommand = /** @class */ (function (_super) {\r\n __extends(MoveDownCommand, _super);\r\n function MoveDownCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MoveDownCommand.prototype.getPosition = function (position) {\r\n return position.clone().offset(0, unit_converter_1.UnitConverter.pixelsToTwips(1));\r\n };\r\n return MoveDownCommand;\r\n}(MoveCommand));\r\nexports.MoveDownCommand = MoveDownCommand;\r\nvar MoveStepDownCommand = /** @class */ (function (_super) {\r\n __extends(MoveStepDownCommand, _super);\r\n function MoveStepDownCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MoveStepDownCommand.prototype.getPosition = function (position) {\r\n if (this.control.settings.snapToGrid)\r\n 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));\r\n else\r\n return position.clone().offset(0, this.control.settings.gridSize);\r\n };\r\n return MoveStepDownCommand;\r\n}(MoveCommand));\r\nexports.MoveStepDownCommand = MoveStepDownCommand;\r\n\n\n/***/ }),\n/* 274 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.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;\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar Settings_1 = __webpack_require__(28);\r\nvar ChangeZoomLevelCommand = /** @class */ (function (_super) {\r\n __extends(ChangeZoomLevelCommand, _super);\r\n function ChangeZoomLevelCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeZoomLevelCommand.prototype.isEnabledInReadOnlyMode = function () {\r\n return true;\r\n };\r\n ChangeZoomLevelCommand.prototype.getValue = function () {\r\n return this.control.view.getZoom();\r\n };\r\n ChangeZoomLevelCommand.prototype.executeCore = function (state, parameter) {\r\n this.control.settings.zoomLevel = parameter;\r\n this.control.settings.autoZoom = Settings_1.AutoZoomMode.Disabled;\r\n this.control.updateLayout(true);\r\n return true;\r\n };\r\n ChangeZoomLevelCommand.prototype.getItems = function () {\r\n return this.control.settings.zoomLevelItems.map(function (l) {\r\n return { value: l, text: l * 100 + \"%\" };\r\n });\r\n };\r\n return ChangeZoomLevelCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.ChangeZoomLevelCommand = ChangeZoomLevelCommand;\r\nvar ChangeZoomLevelInPercentageCommand = /** @class */ (function (_super) {\r\n __extends(ChangeZoomLevelInPercentageCommand, _super);\r\n function ChangeZoomLevelInPercentageCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeZoomLevelInPercentageCommand.prototype.executeCore = function (state, parameter) {\r\n return _super.prototype.executeCore.call(this, state, parameter / 100);\r\n };\r\n ChangeZoomLevelInPercentageCommand.prototype.getValue = function () {\r\n return this.control.view.getZoom() * 100;\r\n };\r\n return ChangeZoomLevelInPercentageCommand;\r\n}(ChangeZoomLevelCommand));\r\nexports.ChangeZoomLevelInPercentageCommand = ChangeZoomLevelInPercentageCommand;\r\nvar ChangeZoomLevelExactlyCommand = /** @class */ (function (_super) {\r\n __extends(ChangeZoomLevelExactlyCommand, _super);\r\n function ChangeZoomLevelExactlyCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeZoomLevelExactlyCommand.prototype.getValue = function () {\r\n return this.control.view.getZoom() === this.exactValue;\r\n };\r\n ChangeZoomLevelExactlyCommand.prototype.executeCore = function (state, parameter) {\r\n _super.prototype.executeCore.call(this, state, this.exactValue);\r\n return true;\r\n };\r\n ChangeZoomLevelExactlyCommand.prototype.getItems = function () {\r\n return undefined;\r\n };\r\n return ChangeZoomLevelExactlyCommand;\r\n}(ChangeZoomLevelCommand));\r\nvar ChangeZoomLevelTo25Command = /** @class */ (function (_super) {\r\n __extends(ChangeZoomLevelTo25Command, _super);\r\n function ChangeZoomLevelTo25Command() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.exactValue = 0.25;\r\n return _this;\r\n }\r\n return ChangeZoomLevelTo25Command;\r\n}(ChangeZoomLevelExactlyCommand));\r\nexports.ChangeZoomLevelTo25Command = ChangeZoomLevelTo25Command;\r\nvar ChangeZoomLevelTo50Command = /** @class */ (function (_super) {\r\n __extends(ChangeZoomLevelTo50Command, _super);\r\n function ChangeZoomLevelTo50Command() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.exactValue = 0.5;\r\n return _this;\r\n }\r\n return ChangeZoomLevelTo50Command;\r\n}(ChangeZoomLevelExactlyCommand));\r\nexports.ChangeZoomLevelTo50Command = ChangeZoomLevelTo50Command;\r\nvar ChangeZoomLevelTo75Command = /** @class */ (function (_super) {\r\n __extends(ChangeZoomLevelTo75Command, _super);\r\n function ChangeZoomLevelTo75Command() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.exactValue = 0.75;\r\n return _this;\r\n }\r\n return ChangeZoomLevelTo75Command;\r\n}(ChangeZoomLevelExactlyCommand));\r\nexports.ChangeZoomLevelTo75Command = ChangeZoomLevelTo75Command;\r\nvar ChangeZoomLevelTo100Command = /** @class */ (function (_super) {\r\n __extends(ChangeZoomLevelTo100Command, _super);\r\n function ChangeZoomLevelTo100Command() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.exactValue = 1;\r\n return _this;\r\n }\r\n return ChangeZoomLevelTo100Command;\r\n}(ChangeZoomLevelExactlyCommand));\r\nexports.ChangeZoomLevelTo100Command = ChangeZoomLevelTo100Command;\r\nvar ChangeZoomLevelTo125Command = /** @class */ (function (_super) {\r\n __extends(ChangeZoomLevelTo125Command, _super);\r\n function ChangeZoomLevelTo125Command() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.exactValue = 1.25;\r\n return _this;\r\n }\r\n return ChangeZoomLevelTo125Command;\r\n}(ChangeZoomLevelExactlyCommand));\r\nexports.ChangeZoomLevelTo125Command = ChangeZoomLevelTo125Command;\r\nvar ChangeZoomLevelTo150Command = /** @class */ (function (_super) {\r\n __extends(ChangeZoomLevelTo150Command, _super);\r\n function ChangeZoomLevelTo150Command() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.exactValue = 1.5;\r\n return _this;\r\n }\r\n return ChangeZoomLevelTo150Command;\r\n}(ChangeZoomLevelExactlyCommand));\r\nexports.ChangeZoomLevelTo150Command = ChangeZoomLevelTo150Command;\r\nvar ChangeZoomLevelTo200Command = /** @class */ (function (_super) {\r\n __extends(ChangeZoomLevelTo200Command, _super);\r\n function ChangeZoomLevelTo200Command() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.exactValue = 2;\r\n return _this;\r\n }\r\n return ChangeZoomLevelTo200Command;\r\n}(ChangeZoomLevelExactlyCommand));\r\nexports.ChangeZoomLevelTo200Command = ChangeZoomLevelTo200Command;\r\nvar ChangeZoomLevelItemsCommand = /** @class */ (function (_super) {\r\n __extends(ChangeZoomLevelItemsCommand, _super);\r\n function ChangeZoomLevelItemsCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeZoomLevelItemsCommand.prototype.isEnabledInReadOnlyMode = function () {\r\n return true;\r\n };\r\n ChangeZoomLevelItemsCommand.prototype.getValue = function () {\r\n return this.control.settings.zoomLevelItems;\r\n };\r\n ChangeZoomLevelItemsCommand.prototype.executeCore = function (state, parameter) {\r\n this.control.settings.zoomLevelItems = parameter;\r\n return true;\r\n };\r\n return ChangeZoomLevelItemsCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.ChangeZoomLevelItemsCommand = ChangeZoomLevelItemsCommand;\r\nvar FitZoomCommandBase = /** @class */ (function (_super) {\r\n __extends(FitZoomCommandBase, _super);\r\n function FitZoomCommandBase() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FitZoomCommandBase.prototype.isEnabled = function () {\r\n return _super.prototype.isEnabled.call(this) && !!this.control.render;\r\n };\r\n FitZoomCommandBase.prototype.isEnabledInReadOnlyMode = function () {\r\n return true;\r\n };\r\n FitZoomCommandBase.prototype.executeCore = function (state) {\r\n var zoomLevel = this.getZoomLevel();\r\n this.control.settings.zoomLevel = zoomLevel;\r\n this.control.settings.autoZoom = Settings_1.AutoZoomMode.Disabled;\r\n this.control.updateLayout(true);\r\n return true;\r\n };\r\n return FitZoomCommandBase;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nvar FitToScreenCommand = /** @class */ (function (_super) {\r\n __extends(FitToScreenCommand, _super);\r\n function FitToScreenCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FitToScreenCommand.prototype.getZoomLevel = function () {\r\n return this.control.render.view.getActualAutoZoomLevel(Settings_1.AutoZoomMode.FitContent);\r\n };\r\n return FitToScreenCommand;\r\n}(FitZoomCommandBase));\r\nexports.FitToScreenCommand = FitToScreenCommand;\r\nvar FitToWidthCommand = /** @class */ (function (_super) {\r\n __extends(FitToWidthCommand, _super);\r\n function FitToWidthCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FitToWidthCommand.prototype.getZoomLevel = function () {\r\n return this.control.render.view.getActualAutoZoomLevel(Settings_1.AutoZoomMode.FitToWidth);\r\n };\r\n return FitToWidthCommand;\r\n}(FitZoomCommandBase));\r\nexports.FitToWidthCommand = FitToWidthCommand;\r\nvar SwitchAutoZoomCommand = /** @class */ (function (_super) {\r\n __extends(SwitchAutoZoomCommand, _super);\r\n function SwitchAutoZoomCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SwitchAutoZoomCommand.prototype.isEnabledInReadOnlyMode = function () {\r\n return true;\r\n };\r\n SwitchAutoZoomCommand.prototype.getValue = function () {\r\n return this.control.settings.autoZoom;\r\n };\r\n SwitchAutoZoomCommand.prototype.executeCore = function (state, value) {\r\n value = parseInt(value);\r\n if (this.control.settings.autoZoom === value)\r\n return false;\r\n if (value === Settings_1.AutoZoomMode.Disabled)\r\n this.control.settings.zoomLevel = this.control.view.getZoom();\r\n this.control.settings.autoZoom = value;\r\n this.control.updateLayout(true);\r\n return true;\r\n };\r\n return SwitchAutoZoomCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.SwitchAutoZoomCommand = SwitchAutoZoomCommand;\r\nvar ToggleAutoZoomToContentCommand = /** @class */ (function (_super) {\r\n __extends(ToggleAutoZoomToContentCommand, _super);\r\n function ToggleAutoZoomToContentCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ToggleAutoZoomToContentCommand.prototype.getValue = function () {\r\n return this.control.settings.autoZoom === Settings_1.AutoZoomMode.FitContent;\r\n };\r\n ToggleAutoZoomToContentCommand.prototype.executeCore = function (state, value) {\r\n return _super.prototype.executeCore.call(this, state, Settings_1.AutoZoomMode.FitContent);\r\n };\r\n return ToggleAutoZoomToContentCommand;\r\n}(SwitchAutoZoomCommand));\r\nexports.ToggleAutoZoomToContentCommand = ToggleAutoZoomToContentCommand;\r\nvar ToggleAutoZoomToWidthCommand = /** @class */ (function (_super) {\r\n __extends(ToggleAutoZoomToWidthCommand, _super);\r\n function ToggleAutoZoomToWidthCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ToggleAutoZoomToWidthCommand.prototype.getValue = function () {\r\n return this.control.settings.autoZoom === Settings_1.AutoZoomMode.FitToWidth;\r\n };\r\n ToggleAutoZoomToWidthCommand.prototype.executeCore = function (state, value) {\r\n return _super.prototype.executeCore.call(this, state, Settings_1.AutoZoomMode.FitToWidth);\r\n };\r\n return ToggleAutoZoomToWidthCommand;\r\n}(SwitchAutoZoomCommand));\r\nexports.ToggleAutoZoomToWidthCommand = ToggleAutoZoomToWidthCommand;\r\nvar ToggleAutoZoomCommand = /** @class */ (function (_super) {\r\n __extends(ToggleAutoZoomCommand, _super);\r\n function ToggleAutoZoomCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ToggleAutoZoomCommand.prototype.isEnabled = function () {\r\n return _super.prototype.isEnabled.call(this) && !!this.control.render;\r\n };\r\n ToggleAutoZoomCommand.prototype.isEnabledInReadOnlyMode = function () {\r\n return true;\r\n };\r\n ToggleAutoZoomCommand.prototype.getValue = function () {\r\n return this.control.settings.autoZoom;\r\n };\r\n ToggleAutoZoomCommand.prototype.executeCore = function (state, value) {\r\n var newValue;\r\n if (value === undefined)\r\n newValue = this.control.settings.autoZoom === Settings_1.AutoZoomMode.Disabled ? Settings_1.AutoZoomMode.FitContent : Settings_1.AutoZoomMode.Disabled;\r\n else\r\n newValue = value ? Settings_1.AutoZoomMode.FitContent : Settings_1.AutoZoomMode.Disabled;\r\n if (this.control.settings.autoZoom === newValue)\r\n return false;\r\n if (!newValue)\r\n this.control.settings.zoomLevel = this.control.view.getZoom();\r\n this.control.settings.autoZoom = newValue;\r\n this.control.updateLayout(true);\r\n return true;\r\n };\r\n return ToggleAutoZoomCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.ToggleAutoZoomCommand = ToggleAutoZoomCommand;\r\n\n\n/***/ }),\n/* 275 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.BindDocumentCommand = void 0;\r\nvar DataLayoutParameters_1 = __webpack_require__(103);\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar BindDocumentCommand = /** @class */ (function (_super) {\r\n __extends(BindDocumentCommand, _super);\r\n function BindDocumentCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n BindDocumentCommand.prototype.isEnabledInReadOnlyMode = function () {\r\n return true;\r\n };\r\n BindDocumentCommand.prototype.executeCore = function (state, parameter) {\r\n if (!parameter || !Array.isArray(parameter.nodeDataSource))\r\n throw Error(\"Format exception\");\r\n this.performImportData(parameter);\r\n this.control.updateLayout(true);\r\n return true;\r\n };\r\n BindDocumentCommand.prototype.performImportData = function (parameter) {\r\n var dataSource = this.control.createDocumentDataSource(parameter.nodeDataSource, parameter.edgeDataSource, parameter.dataParameters, parameter.nodeDataImporter, parameter.edgeDataImporter);\r\n this.control.beginUpdateCanvas();\r\n this.permissionsProvider.lockPermissions();\r\n var layoutParameters = new DataLayoutParameters_1.DataLayoutParameters(this.control.settings, parameter.layoutParameters);\r\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);\r\n this.permissionsProvider.unlockPermissions();\r\n this.control.endUpdateCanvas();\r\n };\r\n return BindDocumentCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.BindDocumentCommand = BindDocumentCommand;\r\n\n\n/***/ }),\n/* 276 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.UnbindDocumentCommand = void 0;\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar UnbindDocumentCommand = /** @class */ (function (_super) {\r\n __extends(UnbindDocumentCommand, _super);\r\n function UnbindDocumentCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n UnbindDocumentCommand.prototype.isEnabledInReadOnlyMode = function () {\r\n return true;\r\n };\r\n UnbindDocumentCommand.prototype.executeCore = function (state) {\r\n this.permissionsProvider.lockPermissions();\r\n this.control.deleteDocumentDataSource();\r\n ModelUtils_1.ModelUtils.deleteAllItems(this.control.history, this.control.model, this.control.selection);\r\n this.control.history.clear();\r\n this.permissionsProvider.unlockPermissions();\r\n return true;\r\n };\r\n return UnbindDocumentCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.UnbindDocumentCommand = UnbindDocumentCommand;\r\n\n\n/***/ }),\n/* 277 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.LockCommand = void 0;\r\nvar ChangeLockedCommand_1 = __webpack_require__(146);\r\nvar LockCommand = /** @class */ (function (_super) {\r\n __extends(LockCommand, _super);\r\n function LockCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n LockCommand.prototype.getLockState = function () {\r\n return true;\r\n };\r\n return LockCommand;\r\n}(ChangeLockedCommand_1.ChangeLockedCommand));\r\nexports.LockCommand = LockCommand;\r\n\n\n/***/ }),\n/* 278 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.UnLockCommand = void 0;\r\nvar ChangeLockedCommand_1 = __webpack_require__(146);\r\nvar UnLockCommand = /** @class */ (function (_super) {\r\n __extends(UnLockCommand, _super);\r\n function UnLockCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n UnLockCommand.prototype.getLockState = function () {\r\n return false;\r\n };\r\n return UnLockCommand;\r\n}(ChangeLockedCommand_1.ChangeLockedCommand));\r\nexports.UnLockCommand = UnLockCommand;\r\n\n\n/***/ }),\n/* 279 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CloneDownCommand = exports.CloneUpCommand = exports.CloneRightCommand = exports.CloneLeftCommand = exports.CloneCommand = void 0;\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar CloneCommand = /** @class */ (function (_super) {\r\n __extends(CloneCommand, _super);\r\n function CloneCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CloneCommand.prototype.isEnabled = function () {\r\n var items = this.control.selection.getSelectedItems();\r\n return _super.prototype.isEnabled.call(this) && items.length && items.length > 0 && this.permissionsProvider.canAddItems(items);\r\n };\r\n CloneCommand.prototype.executeCore = function (state, parameter) {\r\n var selectionRect = ModelUtils_1.ModelUtils.createRectangle(this.control.selection.getSelectedItems());\r\n ModelUtils_1.ModelUtils.cloneSelectionToOffset(this.control.history, this.control.model, undefined, this.control.selection, this.getOffsetX(selectionRect), this.getOffsetY(selectionRect));\r\n return true;\r\n };\r\n Object.defineProperty(CloneCommand.prototype, \"isPermissionsRequired\", {\r\n get: function () { return true; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n CloneCommand.prototype.getOffsetX = function (selectionRect) {\r\n return 0;\r\n };\r\n CloneCommand.prototype.getOffsetY = function (selectionRect) {\r\n return 0;\r\n };\r\n return CloneCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.CloneCommand = CloneCommand;\r\nvar CloneLeftCommand = /** @class */ (function (_super) {\r\n __extends(CloneLeftCommand, _super);\r\n function CloneLeftCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CloneLeftCommand.prototype.getOffsetX = function (selectionRect) {\r\n return -selectionRect.width;\r\n };\r\n return CloneLeftCommand;\r\n}(CloneCommand));\r\nexports.CloneLeftCommand = CloneLeftCommand;\r\nvar CloneRightCommand = /** @class */ (function (_super) {\r\n __extends(CloneRightCommand, _super);\r\n function CloneRightCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CloneRightCommand.prototype.getOffsetX = function (selectionRect) {\r\n return selectionRect.width;\r\n };\r\n return CloneRightCommand;\r\n}(CloneCommand));\r\nexports.CloneRightCommand = CloneRightCommand;\r\nvar CloneUpCommand = /** @class */ (function (_super) {\r\n __extends(CloneUpCommand, _super);\r\n function CloneUpCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CloneUpCommand.prototype.getOffsetY = function (selectionRect) {\r\n return -selectionRect.height;\r\n };\r\n return CloneUpCommand;\r\n}(CloneCommand));\r\nexports.CloneUpCommand = CloneUpCommand;\r\nvar CloneDownCommand = /** @class */ (function (_super) {\r\n __extends(CloneDownCommand, _super);\r\n function CloneDownCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CloneDownCommand.prototype.getOffsetY = function (selectionRect) {\r\n return selectionRect.height;\r\n };\r\n return CloneDownCommand;\r\n}(CloneCommand));\r\nexports.CloneDownCommand = CloneDownCommand;\r\n\n\n/***/ }),\n/* 280 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeViewUnitsCommand = exports.ChangeUnitsCommand = void 0;\r\nvar ChangePagePropertyCommand_1 = __webpack_require__(76);\r\nvar ChangeUnitsHistoryItem_1 = __webpack_require__(281);\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar LocalizationService_1 = __webpack_require__(37);\r\nvar ChangeUnitsCommand = /** @class */ (function (_super) {\r\n __extends(ChangeUnitsCommand, _super);\r\n function ChangeUnitsCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeUnitsCommand.prototype.isEnabledInReadOnlyMode = function () {\r\n return true;\r\n };\r\n ChangeUnitsCommand.prototype.getValue = function () {\r\n return this.control.model.units;\r\n };\r\n ChangeUnitsCommand.prototype.createHistoryItems = function (parameter) {\r\n return [new ChangeUnitsHistoryItem_1.ChangeUnitsHistoryItem(parameter)];\r\n };\r\n ChangeUnitsCommand.prototype.getItems = function () {\r\n return Object.keys(LocalizationService_1.DiagramLocalizationService.unitItems).map(function (key) {\r\n return { value: parseInt(key), text: LocalizationService_1.DiagramLocalizationService.unitItems[key] };\r\n });\r\n };\r\n return ChangeUnitsCommand;\r\n}(ChangePagePropertyCommand_1.ChangePagePropertyCommand));\r\nexports.ChangeUnitsCommand = ChangeUnitsCommand;\r\nvar ChangeViewUnitsCommand = /** @class */ (function (_super) {\r\n __extends(ChangeViewUnitsCommand, _super);\r\n function ChangeViewUnitsCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeViewUnitsCommand.prototype.isEnabledInReadOnlyMode = function () {\r\n return true;\r\n };\r\n ChangeViewUnitsCommand.prototype.getValue = function () {\r\n return this.control.settings.viewUnits;\r\n };\r\n ChangeViewUnitsCommand.prototype.executeCore = function (state, parameter) {\r\n this.control.settings.viewUnits = parameter;\r\n return true;\r\n };\r\n ChangeViewUnitsCommand.prototype.getItems = function () {\r\n return Object.keys(LocalizationService_1.DiagramLocalizationService.unitItems).map(function (key) {\r\n return { value: parseInt(key), text: LocalizationService_1.DiagramLocalizationService.unitItems[key] };\r\n });\r\n };\r\n return ChangeViewUnitsCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.ChangeViewUnitsCommand = ChangeViewUnitsCommand;\r\n\n\n/***/ }),\n/* 281 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeUnitsHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar ChangeUnitsHistoryItem = /** @class */ (function (_super) {\r\n __extends(ChangeUnitsHistoryItem, _super);\r\n function ChangeUnitsHistoryItem(units) {\r\n var _this = _super.call(this) || this;\r\n _this.units = units;\r\n return _this;\r\n }\r\n ChangeUnitsHistoryItem.prototype.redo = function (manipulator) {\r\n this.oldUnits = manipulator.model.units;\r\n manipulator.model.units = this.units;\r\n };\r\n ChangeUnitsHistoryItem.prototype.undo = function (manipulator) {\r\n manipulator.model.units = this.oldUnits;\r\n };\r\n return ChangeUnitsHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.ChangeUnitsHistoryItem = ChangeUnitsHistoryItem;\r\n\n\n/***/ }),\n/* 282 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangePageColorCommand = void 0;\r\nvar ChangePagePropertyCommand_1 = __webpack_require__(76);\r\nvar ChangePageColorHistoryItem_1 = __webpack_require__(283);\r\nvar Model_1 = __webpack_require__(61);\r\nvar color_1 = __webpack_require__(22);\r\nvar ChangePageColorCommand = /** @class */ (function (_super) {\r\n __extends(ChangePageColorCommand, _super);\r\n function ChangePageColorCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangePageColorCommand.prototype.getValue = function () {\r\n return color_1.ColorUtils.colorToHash(this.control.model.pageColor);\r\n };\r\n ChangePageColorCommand.prototype.getDefaultValue = function () {\r\n return color_1.ColorUtils.colorToHash(Model_1.DiagramModel.defaultPageColor);\r\n };\r\n ChangePageColorCommand.prototype.createHistoryItems = function (parameter) {\r\n return [new ChangePageColorHistoryItem_1.ChangePageColorHistoryItem(color_1.ColorUtils.fromString(parameter))];\r\n };\r\n return ChangePageColorCommand;\r\n}(ChangePagePropertyCommand_1.ChangePagePropertyCommand));\r\nexports.ChangePageColorCommand = ChangePageColorCommand;\r\n\n\n/***/ }),\n/* 283 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangePageColorHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar ChangePageColorHistoryItem = /** @class */ (function (_super) {\r\n __extends(ChangePageColorHistoryItem, _super);\r\n function ChangePageColorHistoryItem(value) {\r\n var _this = _super.call(this) || this;\r\n _this.value = value;\r\n return _this;\r\n }\r\n ChangePageColorHistoryItem.prototype.redo = function (manipulator) {\r\n this.oldValue = manipulator.model.pageColor;\r\n manipulator.changePageColor(this.value);\r\n };\r\n ChangePageColorHistoryItem.prototype.undo = function (manipulator) {\r\n manipulator.changePageColor(this.oldValue);\r\n };\r\n return ChangePageColorHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.ChangePageColorHistoryItem = ChangePageColorHistoryItem;\r\n\n\n/***/ }),\n/* 284 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeShowGridCommand = void 0;\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar ChangeShowGridCommand = /** @class */ (function (_super) {\r\n __extends(ChangeShowGridCommand, _super);\r\n function ChangeShowGridCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeShowGridCommand.prototype.isEnabledInReadOnlyMode = function () {\r\n return true;\r\n };\r\n ChangeShowGridCommand.prototype.executeCore = function (state, parameter) {\r\n var newValue = parameter === undefined ? !this.control.settings.showGrid : !!parameter;\r\n if (this.control.settings.showGrid !== newValue) {\r\n this.control.settings.showGrid = newValue;\r\n return true;\r\n }\r\n return false;\r\n };\r\n ChangeShowGridCommand.prototype.getValue = function () {\r\n return this.control.settings.showGrid;\r\n };\r\n return ChangeShowGridCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.ChangeShowGridCommand = ChangeShowGridCommand;\r\n\n\n/***/ }),\n/* 285 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ToggleFullscreenCommand = void 0;\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar ToggleFullscreenCommand = /** @class */ (function (_super) {\r\n __extends(ToggleFullscreenCommand, _super);\r\n function ToggleFullscreenCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ToggleFullscreenCommand.prototype.isEnabledInReadOnlyMode = function () {\r\n return true;\r\n };\r\n ToggleFullscreenCommand.prototype.getValue = function () {\r\n return this.control.settings.fullscreen;\r\n };\r\n ToggleFullscreenCommand.prototype.executeCore = function (state, parameter) {\r\n var newValue = typeof parameter === \"boolean\" ? parameter : !state.value;\r\n if (this.control.settings.fullscreen !== newValue) {\r\n this.control.settings.fullscreen = !state.value;\r\n this.control.notifyToggleFullscreen(this.control.settings.fullscreen);\r\n }\r\n return true;\r\n };\r\n return ToggleFullscreenCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.ToggleFullscreenCommand = ToggleFullscreenCommand;\r\n\n\n/***/ }),\n/* 286 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ToggleSimpleViewCommand = void 0;\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar ToggleSimpleViewCommand = /** @class */ (function (_super) {\r\n __extends(ToggleSimpleViewCommand, _super);\r\n function ToggleSimpleViewCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ToggleSimpleViewCommand.prototype.isEnabledInReadOnlyMode = function () {\r\n return true;\r\n };\r\n ToggleSimpleViewCommand.prototype.getValue = function () {\r\n return this.control.settings.simpleView;\r\n };\r\n ToggleSimpleViewCommand.prototype.executeCore = function (state, parameter) {\r\n if (typeof parameter === \"boolean\")\r\n this.control.settings.simpleView = parameter;\r\n else if (parameter === undefined)\r\n this.control.settings.simpleView = !state.value;\r\n this.control.updateLayout(true);\r\n return true;\r\n };\r\n return ToggleSimpleViewCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.ToggleSimpleViewCommand = ToggleSimpleViewCommand;\r\n\n\n/***/ }),\n/* 287 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ToggleReadOnlyCommand = void 0;\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar ToggleReadOnlyCommand = /** @class */ (function (_super) {\r\n __extends(ToggleReadOnlyCommand, _super);\r\n function ToggleReadOnlyCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ToggleReadOnlyCommand.prototype.isEnabledInReadOnlyMode = function () {\r\n return true;\r\n };\r\n ToggleReadOnlyCommand.prototype.getValue = function () {\r\n return this.control.settings.readOnly;\r\n };\r\n ToggleReadOnlyCommand.prototype.executeCore = function (state, parameter) {\r\n if (typeof parameter === \"boolean\")\r\n this.control.settings.readOnly = parameter;\r\n else if (parameter === undefined)\r\n this.control.settings.readOnly = !state.value;\r\n return true;\r\n };\r\n return ToggleReadOnlyCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.ToggleReadOnlyCommand = ToggleReadOnlyCommand;\r\n\n\n/***/ }),\n/* 288 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.EditShapeImageCommand = void 0;\r\nvar EditShapeImageCommandBase_1 = __webpack_require__(104);\r\nvar EditShapeImageCommand = /** @class */ (function (_super) {\r\n __extends(EditShapeImageCommand, _super);\r\n function EditShapeImageCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n EditShapeImageCommand.prototype.isEnabled = function () {\r\n var selectedShape = this.getSelectedShape();\r\n return _super.prototype.isEnabled.call(this) && !selectedShape.image.isEmpty;\r\n };\r\n return EditShapeImageCommand;\r\n}(EditShapeImageCommandBase_1.EditShapeImageCommandBase));\r\nexports.EditShapeImageCommand = EditShapeImageCommand;\r\n\n\n/***/ }),\n/* 289 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PasteSelectionInPositionCommand = void 0;\r\nvar PasteSelectoinCommandBase_1 = __webpack_require__(142);\r\nvar Shape_1 = __webpack_require__(13);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar PasteSelectionInPositionCommand = /** @class */ (function (_super) {\r\n __extends(PasteSelectionInPositionCommand, _super);\r\n function PasteSelectionInPositionCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PasteSelectionInPositionCommand.prototype.calculateSelectionOffset = function (items, position) {\r\n var selectionPos = items.reduce(function (min, i) {\r\n return {\r\n x: Math.min(min.x, i instanceof Shape_1.Shape ? i.position.x : i instanceof Connector_1.Connector ? i.getMinX() : Number.MAX_VALUE),\r\n y: Math.min(min.y, i instanceof Shape_1.Shape ? i.position.y : i instanceof Connector_1.Connector ? i.getMinY() : Number.MAX_VALUE)\r\n };\r\n }, {\r\n x: Number.MAX_VALUE,\r\n y: Number.MAX_VALUE\r\n });\r\n var newSelectionPos = this.control.render.getModelPointByEventPoint(position.x, position.y);\r\n this.offsetX = newSelectionPos.x - selectionPos.x;\r\n this.offsetY = newSelectionPos.y - selectionPos.y;\r\n };\r\n PasteSelectionInPositionCommand.prototype.getShapeNewPosition = function (position) {\r\n var newPosition = position.clone();\r\n if (this.offsetX !== undefined && this.offsetY !== undefined)\r\n newPosition = newPosition.offset(this.offsetX, this.offsetY);\r\n return PasteSelectoinCommandBase_1.PasteSelectionCommandBase.getShapeNewPosition(this.control.model, newPosition);\r\n };\r\n PasteSelectionInPositionCommand.prototype.changeConnectorPoints = function (connector) {\r\n var _this = this;\r\n connector.points.forEach(function (pt) {\r\n pt.x += _this.offsetX;\r\n pt.y += _this.offsetY;\r\n });\r\n PasteSelectoinCommandBase_1.PasteSelectionCommandBase.changeConnectorPoints(this.control.model, connector);\r\n };\r\n return PasteSelectionInPositionCommand;\r\n}(PasteSelectoinCommandBase_1.PasteSelectionCommandBase));\r\nexports.PasteSelectionInPositionCommand = PasteSelectionInPositionCommand;\r\n\n\n/***/ }),\n/* 290 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ImportXMLCommand = void 0;\r\nvar XMLImporter_1 = __webpack_require__(291);\r\nvar ExportImportCommandBase_1 = __webpack_require__(56);\r\nvar ImportXMLCommand = /** @class */ (function (_super) {\r\n __extends(ImportXMLCommand, _super);\r\n function ImportXMLCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ImportXMLCommand.prototype.executeCore = function (state, parameter) {\r\n var importer = new XMLImporter_1.XmlImporter(this.control.shapeDescriptionManager, parameter);\r\n var model = importer.import();\r\n this.control.importModel(model);\r\n return true;\r\n };\r\n return ImportXMLCommand;\r\n}(ExportImportCommandBase_1.ExportImportCommandBase));\r\nexports.ImportXMLCommand = ImportXMLCommand;\r\n\n\n/***/ }),\n/* 291 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.XmlImporter = void 0;\r\nvar Connector_1 = __webpack_require__(6);\r\nvar Shape_1 = __webpack_require__(13);\r\nvar ImporterBase_1 = __webpack_require__(134);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar ShapeDescriptionManager_1 = __webpack_require__(91);\r\nvar size_1 = __webpack_require__(2);\r\nvar point_1 = __webpack_require__(1);\r\nvar ImportUtils_1 = __webpack_require__(95);\r\nvar color_1 = __webpack_require__(22);\r\nvar unit_converter_1 = __webpack_require__(11);\r\nvar XmlImporter = /** @class */ (function (_super) {\r\n __extends(XmlImporter, _super);\r\n function XmlImporter(shapeDescriptionManager, xml) {\r\n var _this = _super.call(this, shapeDescriptionManager) || this;\r\n _this.doc = ImportUtils_1.ImportUtils.createDocument(xml);\r\n return _this;\r\n }\r\n XmlImporter.prototype.getObject = function () {\r\n return this.doc;\r\n };\r\n XmlImporter.prototype.getPageObject = function (obj) {\r\n var pageElements = this.doc.querySelectorAll(\"[ItemKind='DiagramRoot']\");\r\n return pageElements && pageElements[0];\r\n };\r\n XmlImporter.prototype.getShapeObjects = function (obj) {\r\n var shapeObjs = [];\r\n this.doc.querySelectorAll(\"[ItemKind='DiagramRoot'] > Children > [ItemKind='DiagramShape']\").forEach(function (obj) { shapeObjs.push(obj); });\r\n this.doc.querySelectorAll(\"[ItemKind='DiagramRoot'] > Children > [ItemKind='DiagramContainer']\").forEach(function (obj) { shapeObjs.push(obj); });\r\n return shapeObjs;\r\n };\r\n XmlImporter.prototype.getConnectorObjects = function (obj) {\r\n var connectorObjs = [];\r\n this.doc.querySelectorAll(\"[ItemKind='DiagramRoot'] > Children > [ItemKind='DiagramConnector']\").forEach(function (obj) { connectorObjs.push(obj); });\r\n return connectorObjs;\r\n };\r\n XmlImporter.prototype.importPageSettings = function (model, pageObj) {\r\n if (!pageObj)\r\n return;\r\n var pageSizeAttr = pageObj.getAttribute(\"PageSize\");\r\n var pageSize = this.getSize(pageSizeAttr);\r\n if (pageSize) {\r\n model.size = pageSize.clone();\r\n model.pageSize = pageSize.clone();\r\n }\r\n };\r\n XmlImporter.prototype.importShape = function (shapeObj) {\r\n var positionAttr = shapeObj.getAttribute(\"Position\");\r\n var position = this.getPoint(positionAttr);\r\n var shapeAttr = shapeObj.getAttribute(\"Shape\");\r\n var shapeType = this.getShapeType(shapeAttr);\r\n var description = this.shapeDescriptionManager.get(shapeType);\r\n var shape = new Shape_1.Shape(description || ShapeDescriptionManager_1.ShapeDescriptionManager.default, position);\r\n shape.key = this.getItemKey(shapeObj);\r\n var sizeAttr = shapeObj.getAttribute(\"Size\");\r\n var size = this.getSize(sizeAttr);\r\n if (size)\r\n shape.size = size;\r\n var contentAttr = shapeObj.getAttribute(\"Content\");\r\n if (typeof contentAttr === \"string\")\r\n shape.text = contentAttr;\r\n else {\r\n var headerAttr = shapeObj.getAttribute(\"Header\");\r\n if (typeof headerAttr === \"string\")\r\n shape.text = headerAttr;\r\n }\r\n this.importStyle(shapeObj, shape);\r\n return shape;\r\n };\r\n XmlImporter.prototype.importShapeChildren = function (shapeObj, shape) {\r\n var childShapeObjs = [];\r\n shapeObj.setAttribute(\"dxDiagram\", \"\");\r\n this.doc.querySelectorAll(\"[dxDiagram] > Children > [ItemKind='DiagramShape']\").forEach(function (obj) { childShapeObjs.push(obj); });\r\n this.doc.querySelectorAll(\"[dxDiagram] > Children > [ItemKind='DiagramContainer']\").forEach(function (obj) { childShapeObjs.push(obj); });\r\n shapeObj.removeAttribute(\"dxDiagram\");\r\n var result = [];\r\n if (!childShapeObjs)\r\n return result;\r\n for (var i = 0; i < childShapeObjs.length; i++) {\r\n var childShapeObj = childShapeObjs[i];\r\n var childShape = this.importShape(childShapeObj);\r\n childShape.key = shape.key + \",\" + childShape.key;\r\n var rect = shape.clientRectangle;\r\n childShape.position = childShape.position.clone().offset(rect.x, rect.y);\r\n if (!shape[\"childKeys\"])\r\n shape[\"childKeys\"] = [];\r\n shape[\"childKeys\"].push(childShape.key);\r\n result.push(childShape);\r\n result = result.concat(this.importShapeChildren(childShapeObj, childShape));\r\n }\r\n return result;\r\n };\r\n XmlImporter.prototype.importConnector = function (connectorObj) {\r\n var _this = this;\r\n var points = [];\r\n var beginPointAttr = connectorObj.getAttribute(\"BeginPoint\");\r\n var beginPoint = this.getPoint(beginPointAttr);\r\n if (beginPoint)\r\n points.push(beginPoint);\r\n var pointsAttr = connectorObj.getAttribute(\"Points\");\r\n pointsAttr.split(\" \").forEach(function (pointAttr) {\r\n var point = _this.getPoint(pointAttr);\r\n if (point)\r\n points.push(point);\r\n });\r\n var endPointAttr = connectorObj.getAttribute(\"EndPoint\");\r\n var endPoint = this.getPoint(endPointAttr);\r\n if (endPoint)\r\n points.push(endPoint);\r\n var connector = new Connector_1.Connector(points);\r\n connector.key = this.getItemKey(connectorObj);\r\n var endItemPointIndexAttr = connectorObj.getAttribute(\"EndItemPointIndex\");\r\n var endItemPointIndex = parseInt(endItemPointIndexAttr);\r\n connector.endConnectionPointIndex = !isNaN(endItemPointIndex) ? endItemPointIndex : -1;\r\n var beginItemPointIndexAttr = connectorObj.getAttribute(\"BeginItemPointIndex\");\r\n var beginItemPointIndex = parseInt(beginItemPointIndexAttr);\r\n connector.beginConnectionPointIndex = !isNaN(beginItemPointIndex) ? beginItemPointIndex : -1;\r\n var endItemAttr = connectorObj.getAttribute(\"EndItem\");\r\n if (endItemAttr !== undefined)\r\n this.assert(endItemAttr, \"string\");\r\n var beginItemAttr = connectorObj.getAttribute(\"BeginItem\");\r\n if (beginItemAttr !== undefined)\r\n this.assert(beginItemAttr, \"string\");\r\n connector[\"endItemKey\"] = endItemAttr;\r\n connector[\"beginItemKey\"] = beginItemAttr;\r\n var contentAttr = connectorObj.getAttribute(\"Content\");\r\n if (typeof contentAttr === \"string\")\r\n connector.setText(contentAttr);\r\n this.importStyle(connectorObj, connector);\r\n return connector;\r\n };\r\n XmlImporter.prototype.importStyle = function (obj, item) {\r\n var backgroundAttr = obj.getAttribute(\"Background\");\r\n if (typeof backgroundAttr === \"string\")\r\n item.style[\"fill\"] = this.getColor(backgroundAttr);\r\n var strokeAttr = obj.getAttribute(\"Stroke\");\r\n if (typeof strokeAttr === \"string\")\r\n item.style[\"stroke\"] = this.getColor(strokeAttr);\r\n var foregroundAttr = obj.getAttribute(\"Foreground\");\r\n if (typeof foregroundAttr === \"string\")\r\n item.styleText[\"fill\"] = this.getColor(foregroundAttr);\r\n var fontFamilyAttr = obj.getAttribute(\"FontFamily\");\r\n if (typeof fontFamilyAttr === \"string\")\r\n item.styleText[\"font-family\"] = fontFamilyAttr;\r\n var fontSizeAttr = obj.getAttribute(\"FontSize\");\r\n if (typeof fontSizeAttr === \"string\")\r\n item.styleText[\"font-size\"] = fontSizeAttr;\r\n var fontWeightAttr = obj.getAttribute(\"FontWeight\");\r\n if (fontWeightAttr === \"Bold\")\r\n item.styleText[\"font-weight\"] = \"bold\";\r\n var fontStyleAttr = obj.getAttribute(\"FontStyle\");\r\n if (fontStyleAttr === \"Italic\")\r\n item.styleText[\"font-style\"] = \"italic\";\r\n var textDecorationsAttr = obj.getAttribute(\"TextDecorations\");\r\n if (textDecorationsAttr === \"Underline\")\r\n item.styleText[\"text-decoration\"] = \"underline\";\r\n var textAlignmentAttr = obj.getAttribute(\"TextAlignment\");\r\n if (textAlignmentAttr === \"Left\")\r\n item.styleText[\"text-anchor\"] = \"start\";\r\n else if (textAlignmentAttr === \"Right\")\r\n item.styleText[\"text-anchor\"] = \"end\";\r\n else if (textAlignmentAttr === \"Center\")\r\n item.styleText[\"text-anchor\"] = \"middle\";\r\n };\r\n XmlImporter.prototype.getShapeType = function (shapeAttr) {\r\n if (XmlImporter.shapeTypes[shapeAttr])\r\n return XmlImporter.shapeTypes[shapeAttr];\r\n if (shapeAttr && shapeAttr.toLowerCase().indexOf(\"container\") > -1)\r\n return ShapeTypes_1.ShapeTypes.VerticalContainer;\r\n return ShapeTypes_1.ShapeTypes.Rectangle;\r\n };\r\n XmlImporter.prototype.getItemKey = function (obj) {\r\n return (parseInt(obj.tagName.replace(\"Item\", \"\")) - 1).toString();\r\n };\r\n XmlImporter.prototype.getNumbers = function (s) {\r\n var parts = s.split(\",\");\r\n return parts && parts.length ? parts.map(function (part) { return +part; }) : [];\r\n };\r\n XmlImporter.prototype.getSize = function (attrValue) {\r\n if (attrValue) {\r\n var numbers = this.getNumbers(attrValue);\r\n if (numbers.length >= 2) {\r\n this.assert(numbers[0], \"number\");\r\n this.assert(numbers[1], \"number\");\r\n return new size_1.Size(unit_converter_1.UnitConverter.pixelsToTwips(numbers[0]), unit_converter_1.UnitConverter.pixelsToTwips(numbers[1]));\r\n }\r\n }\r\n };\r\n XmlImporter.prototype.getPoint = function (attrValue) {\r\n if (attrValue) {\r\n var numbers = this.getNumbers(attrValue);\r\n if (numbers.length >= 2) {\r\n this.assert(numbers[0], \"number\");\r\n this.assert(numbers[1], \"number\");\r\n return new point_1.Point(unit_converter_1.UnitConverter.pixelsToTwips(numbers[0]), unit_converter_1.UnitConverter.pixelsToTwips(numbers[1]));\r\n }\r\n }\r\n };\r\n XmlImporter.prototype.getColor = function (attrValue) {\r\n attrValue = attrValue.charAt(0) === \"#\" ? attrValue.substr(1) : attrValue;\r\n var color = parseInt(attrValue, 16);\r\n return !isNaN(color) ? color_1.ColorUtils.colorToHash(color) : undefined;\r\n };\r\n XmlImporter.shapeTypes = {\r\n \"BasicShapes.Rectangle\": ShapeTypes_1.ShapeTypes.Rectangle,\r\n \"BasicShapes.Ellipse\": ShapeTypes_1.ShapeTypes.Ellipse,\r\n \"BasicShapes.Triangle\": ShapeTypes_1.ShapeTypes.Triangle,\r\n \"BasicShapes.Pentagon\": ShapeTypes_1.ShapeTypes.Pentagon,\r\n \"BasicShapes.Hexagon\": ShapeTypes_1.ShapeTypes.Hexagon,\r\n \"BasicShapes.Octagon\": ShapeTypes_1.ShapeTypes.Octagon,\r\n \"BasicShapes.Diamond\": ShapeTypes_1.ShapeTypes.Diamond,\r\n \"BasicShapes.Cross\": ShapeTypes_1.ShapeTypes.Cross,\r\n \"BasicShapes.Star5\": ShapeTypes_1.ShapeTypes.Star,\r\n \"BasicFlowchartShapes.StartEnd\": ShapeTypes_1.ShapeTypes.Terminator,\r\n \"BasicFlowchartShapes.Data\": ShapeTypes_1.ShapeTypes.Data,\r\n \"BasicFlowchartShapes.Database\": ShapeTypes_1.ShapeTypes.Database,\r\n \"BasicFlowchartShapes.ExternalData\": ShapeTypes_1.ShapeTypes.StoredData,\r\n \"BasicFlowchartShapes.Process\": ShapeTypes_1.ShapeTypes.Process,\r\n \"BasicFlowchartShapes.Decision\": ShapeTypes_1.ShapeTypes.Decision,\r\n \"BasicFlowchartShapes.Subprocess\": ShapeTypes_1.ShapeTypes.PredefinedProcess,\r\n \"BasicFlowchartShapes.Document\": ShapeTypes_1.ShapeTypes.Document,\r\n \"BasicFlowchartShapes.Custom1\": ShapeTypes_1.ShapeTypes.ManualInput,\r\n \"BasicFlowchartShapes.Custom2\": ShapeTypes_1.ShapeTypes.ManualOperation,\r\n \"ArrowShapes.SimpleArrow\": ShapeTypes_1.ShapeTypes.ArrowLeft,\r\n \"ArrowShapes.SimpleDoubleArrow\": ShapeTypes_1.ShapeTypes.ArrowLeftRight\r\n };\r\n return XmlImporter;\r\n}(ImporterBase_1.ImporterBase));\r\nexports.XmlImporter = XmlImporter;\r\n\n\n/***/ }),\n/* 292 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.InsertShapeImageCommand = void 0;\r\nvar EditShapeImageCommandBase_1 = __webpack_require__(104);\r\nvar InsertShapeImageCommand = /** @class */ (function (_super) {\r\n __extends(InsertShapeImageCommand, _super);\r\n function InsertShapeImageCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n InsertShapeImageCommand.prototype.isEnabled = function () {\r\n var selectedShape = this.getSelectedShape();\r\n return _super.prototype.isEnabled.call(this) && selectedShape.image.isEmpty;\r\n };\r\n return InsertShapeImageCommand;\r\n}(EditShapeImageCommandBase_1.EditShapeImageCommandBase));\r\nexports.InsertShapeImageCommand = InsertShapeImageCommand;\r\n\n\n/***/ }),\n/* 293 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DeleteShapeImageCommand = void 0;\r\nvar EditShapeImageCommandBase_1 = __webpack_require__(104);\r\nvar DeleteShapeImageCommand = /** @class */ (function (_super) {\r\n __extends(DeleteShapeImageCommand, _super);\r\n function DeleteShapeImageCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DeleteShapeImageCommand.prototype.isEnabled = function () {\r\n var selectedShape = this.getSelectedShape();\r\n return _super.prototype.isEnabled.call(this) && !selectedShape.image.isEmpty;\r\n };\r\n DeleteShapeImageCommand.prototype.executeCore = function (state, parameter) {\r\n return _super.prototype.executeCore.call(this, state, undefined);\r\n };\r\n return DeleteShapeImageCommand;\r\n}(EditShapeImageCommandBase_1.EditShapeImageCommandBase));\r\nexports.DeleteShapeImageCommand = DeleteShapeImageCommand;\r\n\n\n/***/ }),\n/* 294 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeStrokeStyleCommand = void 0;\r\nvar ChangeStylePropertyCommand_1 = __webpack_require__(74);\r\nvar ChangeStrokeStyleCommand = /** @class */ (function (_super) {\r\n __extends(ChangeStrokeStyleCommand, _super);\r\n function ChangeStrokeStyleCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeStrokeStyleCommand.prototype.getStyleProperty = function () {\r\n return \"stroke-dasharray\";\r\n };\r\n return ChangeStrokeStyleCommand;\r\n}(ChangeStylePropertyCommand_1.ChangeStylePropertyCommand));\r\nexports.ChangeStrokeStyleCommand = ChangeStrokeStyleCommand;\r\n\n\n/***/ }),\n/* 295 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeStrokeWidthCommand = void 0;\r\nvar ChangeStylePropertyCommand_1 = __webpack_require__(74);\r\nvar ChangeStrokeWidthCommand = /** @class */ (function (_super) {\r\n __extends(ChangeStrokeWidthCommand, _super);\r\n function ChangeStrokeWidthCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeStrokeWidthCommand.prototype.getStyleProperty = function () {\r\n return \"stroke-width\";\r\n };\r\n return ChangeStrokeWidthCommand;\r\n}(ChangeStylePropertyCommand_1.ChangeStylePropertyCommand));\r\nexports.ChangeStrokeWidthCommand = ChangeStrokeWidthCommand;\r\n\n\n/***/ }),\n/* 296 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.AutoLayoutTreeVerticalBottomToTopCommand = void 0;\r\nvar LayoutSettings_1 = __webpack_require__(20);\r\nvar AutoLayoutTreeVerticalCommand_1 = __webpack_require__(138);\r\nvar AutoLayoutTreeVerticalBottomToTopCommand = /** @class */ (function (_super) {\r\n __extends(AutoLayoutTreeVerticalBottomToTopCommand, _super);\r\n function AutoLayoutTreeVerticalBottomToTopCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n AutoLayoutTreeVerticalBottomToTopCommand.prototype.createLayoutSettings = function () {\r\n var settings = _super.prototype.createLayoutSettings.call(this);\r\n settings.direction = LayoutSettings_1.LogicalDirectionKind.Backward;\r\n return settings;\r\n };\r\n return AutoLayoutTreeVerticalBottomToTopCommand;\r\n}(AutoLayoutTreeVerticalCommand_1.AutoLayoutTreeVerticalCommand));\r\nexports.AutoLayoutTreeVerticalBottomToTopCommand = AutoLayoutTreeVerticalBottomToTopCommand;\r\n\n\n/***/ }),\n/* 297 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.AutoLayoutTreeHorizontalRightToLeftCommand = void 0;\r\nvar LayoutSettings_1 = __webpack_require__(20);\r\nvar AutoLayoutTreeHorizontalCommand_1 = __webpack_require__(144);\r\nvar AutoLayoutTreeHorizontalRightToLeftCommand = /** @class */ (function (_super) {\r\n __extends(AutoLayoutTreeHorizontalRightToLeftCommand, _super);\r\n function AutoLayoutTreeHorizontalRightToLeftCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n AutoLayoutTreeHorizontalRightToLeftCommand.prototype.createLayoutSettings = function () {\r\n var settings = _super.prototype.createLayoutSettings.call(this);\r\n settings.direction = LayoutSettings_1.LogicalDirectionKind.Backward;\r\n return settings;\r\n };\r\n return AutoLayoutTreeHorizontalRightToLeftCommand;\r\n}(AutoLayoutTreeHorizontalCommand_1.AutoLayoutTreeHorizontalCommand));\r\nexports.AutoLayoutTreeHorizontalRightToLeftCommand = AutoLayoutTreeHorizontalRightToLeftCommand;\r\n\n\n/***/ }),\n/* 298 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.AutoLayoutLayeredVerticalBottomToTopCommand = void 0;\r\nvar LayoutSettings_1 = __webpack_require__(20);\r\nvar AutoLayoutLayeredVerticalCommand_1 = __webpack_require__(145);\r\nvar AutoLayoutLayeredVerticalBottomToTopCommand = /** @class */ (function (_super) {\r\n __extends(AutoLayoutLayeredVerticalBottomToTopCommand, _super);\r\n function AutoLayoutLayeredVerticalBottomToTopCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n AutoLayoutLayeredVerticalBottomToTopCommand.prototype.createLayoutSettings = function () {\r\n var settings = _super.prototype.createLayoutSettings.call(this);\r\n settings.direction = LayoutSettings_1.LogicalDirectionKind.Backward;\r\n return settings;\r\n };\r\n return AutoLayoutLayeredVerticalBottomToTopCommand;\r\n}(AutoLayoutLayeredVerticalCommand_1.AutoLayoutLayeredVerticalCommand));\r\nexports.AutoLayoutLayeredVerticalBottomToTopCommand = AutoLayoutLayeredVerticalBottomToTopCommand;\r\n\n\n/***/ }),\n/* 299 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.AutoLayoutLayeredHorizontalRightToLeftCommand = void 0;\r\nvar LayoutSettings_1 = __webpack_require__(20);\r\nvar AutoLayoutLayeredHorizontalCommand_1 = __webpack_require__(143);\r\nvar AutoLayoutLayeredHorizontalRightToLeftCommand = /** @class */ (function (_super) {\r\n __extends(AutoLayoutLayeredHorizontalRightToLeftCommand, _super);\r\n function AutoLayoutLayeredHorizontalRightToLeftCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n AutoLayoutLayeredHorizontalRightToLeftCommand.prototype.createLayoutSettings = function () {\r\n var settings = _super.prototype.createLayoutSettings.call(this);\r\n settings.direction = LayoutSettings_1.LogicalDirectionKind.Backward;\r\n return settings;\r\n };\r\n return AutoLayoutLayeredHorizontalRightToLeftCommand;\r\n}(AutoLayoutLayeredHorizontalCommand_1.AutoLayoutLayeredHorizontalCommand));\r\nexports.AutoLayoutLayeredHorizontalRightToLeftCommand = AutoLayoutLayeredHorizontalRightToLeftCommand;\r\n\n\n/***/ }),\n/* 300 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeConnectorRoutingModeCommand = void 0;\r\nvar SimpleCommandBase_1 = __webpack_require__(10);\r\nvar Settings_1 = __webpack_require__(28);\r\nvar ChangeConnectorRoutingModeCommand = /** @class */ (function (_super) {\r\n __extends(ChangeConnectorRoutingModeCommand, _super);\r\n function ChangeConnectorRoutingModeCommand() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ChangeConnectorRoutingModeCommand.prototype.getValue = function () {\r\n return this.control.settings.connectorRoutingMode;\r\n };\r\n ChangeConnectorRoutingModeCommand.prototype.executeCore = function (state, parameter) {\r\n var mode = parameter !== undefined ? parameter : Settings_1.ConnectorRoutingMode.None;\r\n this.control.settings.connectorRoutingMode = mode;\r\n return true;\r\n };\r\n return ChangeConnectorRoutingModeCommand;\r\n}(SimpleCommandBase_1.SimpleCommandBase));\r\nexports.ChangeConnectorRoutingModeCommand = ChangeConnectorRoutingModeCommand;\r\n\n\n/***/ }),\n/* 301 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DiagramControl = void 0;\r\nvar point_1 = __webpack_require__(1);\r\nvar browser_1 = __webpack_require__(19);\r\nvar ModelManipulator_1 = __webpack_require__(302);\r\nvar CommandManager_1 = __webpack_require__(81);\r\nvar EventManager_1 = __webpack_require__(303);\r\nvar Model_1 = __webpack_require__(61);\r\nvar Selection_1 = __webpack_require__(332);\r\nvar History_1 = __webpack_require__(335);\r\nvar BarManager_1 = __webpack_require__(336);\r\nvar RenderManager_1 = __webpack_require__(337);\r\nvar ShapeDescriptionManager_1 = __webpack_require__(91);\r\nvar DocumentDataSource_1 = __webpack_require__(345);\r\nvar Settings_1 = __webpack_require__(28);\r\nvar ModelOperationSettings_1 = __webpack_require__(16);\r\nvar ViewController_1 = __webpack_require__(350);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar ToolboxManager_1 = __webpack_require__(351);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar ApiController_1 = __webpack_require__(354);\r\nvar ImageCache_1 = __webpack_require__(47);\r\nvar PermissionsProvider_1 = __webpack_require__(355);\r\nvar ConnectorRoutingModel_1 = __webpack_require__(369);\r\nvar TextMeasurer_1 = __webpack_require__(78);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar DataLayoutParameters_1 = __webpack_require__(103);\r\nvar ReloadContentParameters_1 = __webpack_require__(380);\r\nvar Utils_2 = __webpack_require__(17);\r\nvar ToolboxTouchDragEventsHandler_1 = __webpack_require__(381);\r\nvar ToolboxPointerDragEventsHandler_1 = __webpack_require__(382);\r\nvar ToolboxMouseDragEventsHandler_1 = __webpack_require__(383);\r\nvar RenderManagerTouchDragEventsHandler_1 = __webpack_require__(384);\r\nvar RenderManagerPointerDragEventsHandler_1 = __webpack_require__(385);\r\nvar RenderManagerMouseDragEventsHandler_1 = __webpack_require__(386);\r\nvar DiagramControl = /** @class */ (function () {\r\n function DiagramControl() {\r\n this.updateLockCount = 0;\r\n this.shouldUpdateItemsByModel = false;\r\n this.reloadContentNeeded = false;\r\n this.reloadContentParameters = new ReloadContentParameters_1.ReloadContentParameters();\r\n this.reloadContentByExternalChangesParameters = new ReloadContentParameters_1.ReloadContentParameters();\r\n this.settings = new Settings_1.DiagramSettings();\r\n this.shapeDescriptionManager = new ShapeDescriptionManager_1.ShapeDescriptionManager();\r\n this.shapeDescriptionManager.onShapeDecriptionChanged.add(this);\r\n this.model = new Model_1.DiagramModel();\r\n this.selection = new Selection_1.Selection(this.model);\r\n this.onNativeAction = new Utils_1.EventDispatcher();\r\n this.apiController = new ApiController_1.ApiController(this.onNativeAction, this.selection, this.model);\r\n this.selection.onChanged.add(this.apiController);\r\n this.permissionsProvider = new PermissionsProvider_1.PermissionsProvider(this.apiController);\r\n this.permissionsProvider.onRequestOperation.add(this);\r\n this.selection.onChanged.add(this.permissionsProvider);\r\n this.routingModel = new ConnectorRoutingModel_1.ConnectorRoutingModel();\r\n this.settings.onConnectorRoutingModeChanged.add(this.routingModel);\r\n this.modelManipulator = new ModelManipulator_1.ModelManipulator(this.model, this.routingModel, this.permissionsProvider);\r\n this.modelManipulator.onModelChanged.add(this.permissionsProvider);\r\n this.history = new History_1.History(this.modelManipulator);\r\n this.history.onChanged.add(this);\r\n this.barManager = new BarManager_1.BarManager(this);\r\n this.selection.onChanged.add(this.barManager);\r\n this.view = new ViewController_1.ViewController(this.settings, this.barManager);\r\n this.commandManager = new CommandManager_1.CommandManager(this);\r\n this.eventManager = new EventManager_1.EventManager(this);\r\n this.isTouchUIEnabled = this.hasTouchDragEvents || this.hasMaxTouchPoints;\r\n this.eventManager.initialize(this.model, this.selection, this.isTouchUIEnabled);\r\n this.modelManipulator.commitItemsCreateChanges();\r\n this.toolboxManager = new ToolboxManager_1.ToolboxManager(this.shapeDescriptionManager);\r\n ImageCache_1.ImageCache.instance.onReadyStateChanged.add(this);\r\n }\r\n Object.defineProperty(DiagramControl.prototype, \"operationSettings\", {\r\n get: function () {\r\n return this.permissionsProvider.operationSettings;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramControl.prototype, \"hasMaxTouchPoints\", {\r\n get: function () {\r\n return typeof navigator !== \"undefined\" && navigator[\"maxTouchPoints\"] > 0;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DiagramControl.prototype, \"hasTouchDragEvents\", {\r\n get: function () {\r\n return browser_1.Browser.TouchUI;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n DiagramControl.prototype.cleanMarkup = function (removeElement) {\r\n removeElement = removeElement || (function (element) { Utils_2.RenderUtils.removeElement(element); });\r\n this.toolboxManager.clean(removeElement);\r\n this.barManager.clean();\r\n if (this.render) {\r\n this.settings.onZoomChanged.remove(this.render.view);\r\n this.settings.onViewChanged.remove(this.render.page);\r\n this.settings.onViewChanged.remove(this.render.view);\r\n this.settings.onReadOnlyChanged.remove(this.render);\r\n this.settings.onReadOnlyChanged.remove(this.render.selection);\r\n this.eventManager.onTextInputOperation.remove(this.render.input);\r\n this.eventManager.onTextInputOperation.remove(this.render.items);\r\n this.eventManager.onTextInputOperation.remove(this.render.selection);\r\n this.eventManager.onMouseOperation.remove(this.render.items);\r\n this.eventManager.onMouseOperation.remove(this.render.selection);\r\n this.eventManager.onMouseOperation.remove(this.render.view);\r\n this.eventManager.onMouseOperation.remove(this.render);\r\n this.eventManager.onVisualizersUpdate.remove(this.render.selection);\r\n this.modelManipulator.onModelSizeChanged.remove(this.render.view);\r\n this.modelManipulator.onModelSizeChanged.remove(this.render.page);\r\n this.modelManipulator.onModelChanged.remove(this.render.items);\r\n this.modelManipulator.onModelChanged.remove(this.render.page);\r\n this.modelManipulator.onModelChanged.remove(this.render.selection);\r\n this.selection.onChanged.remove(this.render.selection);\r\n this.selection.onChanged.remove(this.render.items);\r\n this.render.clean(removeElement);\r\n this.render = undefined;\r\n }\r\n };\r\n DiagramControl.prototype.createDocument = function (parent, scrollView, focusElementsParent) {\r\n if (!this.measurer)\r\n this.initMeasurer(parent);\r\n if (this.render)\r\n this.render.replaceParent(parent, scrollView);\r\n else {\r\n this.render = new RenderManager_1.RenderManager(parent, this.eventManager, this.measurer, {\r\n pageColor: this.model.pageColor,\r\n modelSize: this.model.size,\r\n pageLandscape: this.model.pageLandscape,\r\n pageSize: this.model.pageSize,\r\n simpleView: this.settings.simpleView,\r\n readOnly: this.settings.readOnly,\r\n contextMenuEnabled: this.settings.contextMenuEnabled,\r\n gridSize: this.settings.gridSize,\r\n gridVisible: this.settings.showGrid,\r\n zoomLevel: this.settings.zoomLevel,\r\n autoZoom: this.settings.autoZoom,\r\n rectangle: this.model.getRectangle(true),\r\n isTouchUIEnabled: this.isTouchUIEnabled\r\n }, scrollView, focusElementsParent);\r\n this.createRenderManagerDragEventsHandler().attach(this.render);\r\n this.settings.onZoomChanged.add(this.render.view);\r\n this.settings.onViewChanged.add(this.render.page);\r\n this.settings.onViewChanged.add(this.render.view);\r\n this.settings.onReadOnlyChanged.add(this.render);\r\n this.settings.onReadOnlyChanged.add(this.render.selection);\r\n this.eventManager.onTextInputOperation.add(this.render.input);\r\n this.eventManager.onTextInputOperation.add(this.render.items);\r\n this.eventManager.onTextInputOperation.add(this.render.selection);\r\n this.eventManager.onTextInputOperation.add(this);\r\n this.eventManager.onMouseOperation.add(this.render.items);\r\n this.eventManager.onMouseOperation.add(this.render.selection);\r\n this.eventManager.onMouseOperation.add(this.render.view);\r\n this.eventManager.onMouseOperation.add(this.render);\r\n this.eventManager.onVisualizersUpdate.add(this.render.selection);\r\n this.modelManipulator.onModelSizeChanged.add(this.render.view);\r\n this.modelManipulator.onModelSizeChanged.add(this.render.page);\r\n this.modelManipulator.onModelChanged.add(this.render.items);\r\n this.modelManipulator.onModelChanged.add(this.render.page);\r\n this.modelManipulator.onModelChanged.add(this.render.selection);\r\n this.selection.onChanged.add(this.render.selection);\r\n this.selection.onChanged.add(this.render.items);\r\n this.render.update(false);\r\n this.render.onNewModel(this.model.items);\r\n this.modelManipulator.commitItemsCreateChanges();\r\n this.view.initialize(this.render.view);\r\n if (this.settings.zoomLevelWasChanged)\r\n this.raiseCanvasViewActualZoomChanged();\r\n this.selection.raiseSelectionChanged();\r\n }\r\n };\r\n DiagramControl.prototype.createToolbox = function (parent, renderAsText, shapes, options) {\r\n var toolbox = this.createToolboxCore(parent, true, renderAsText, shapes, options);\r\n this.settings.onReadOnlyChanged.add(toolbox);\r\n toolbox.onDragOperation.add(this);\r\n toolbox.onDragOperation.add(this.apiController);\r\n this.eventManager.registerToolbox(toolbox);\r\n };\r\n DiagramControl.prototype.createContextToolbox = function (parent, renderAsText, shapes, options, onClick) {\r\n if (this.contextToolbox)\r\n this.cleanContextToolbox(parent);\r\n this.contextToolbox = this.createToolboxCore(parent, false, renderAsText, shapes, options);\r\n this.contextToolbox.onClickOperation.add(this);\r\n this.contextToolboxOnClick = onClick;\r\n };\r\n DiagramControl.prototype.createToolboxCore = function (parent, allowDragging, renderAsText, shapes, options) {\r\n var result = this.toolboxManager.create(parent, this.settings.readOnly, allowDragging, renderAsText, shapes, this.getToolboxAllowedShapeTypes.bind(this), this.isTouchUIEnabled, options);\r\n this.createToolboxDragEventsHandler().attach(result);\r\n return result;\r\n };\r\n DiagramControl.prototype.getToolboxAllowedShapeTypes = function (shapeTypes) {\r\n var _this = this;\r\n var allowedShapeTypes = [];\r\n this.permissionsProvider.beginUpdateUI();\r\n shapeTypes.forEach(function (shapeType) {\r\n if (_this.permissionsProvider.canAddShapeFromToolbox(shapeType))\r\n allowedShapeTypes.push(shapeType);\r\n });\r\n this.permissionsProvider.endUpdateUI();\r\n return allowedShapeTypes;\r\n };\r\n DiagramControl.prototype.cleanContextToolbox = function (parent) {\r\n if (this.contextToolbox) {\r\n this.toolboxManager.clean(undefined, this.contextToolbox);\r\n this.contextToolbox = undefined;\r\n }\r\n };\r\n DiagramControl.prototype.refreshToolbox = function (toolboxes) {\r\n this.permissionsProvider.clearCache(ModelOperationSettings_1.DiagramModelOperation.AddShapeFromToolbox);\r\n this.toolboxManager.refresh(toolboxes);\r\n };\r\n DiagramControl.prototype.applyToolboxFilter = function (shapeSubstring, toolboxes) {\r\n return this.toolboxManager.applyFilter(shapeSubstring, toolboxes);\r\n };\r\n DiagramControl.prototype.notifyToolboxClick = function (shapeType) {\r\n if (this.contextToolboxOnClick)\r\n this.contextToolboxOnClick(shapeType);\r\n };\r\n DiagramControl.prototype.initMeasurer = function (parent) {\r\n this.measurer = new TextMeasurer_1.TextMeasurer(parent);\r\n };\r\n DiagramControl.prototype.onDimensionChanged = function () {\r\n if (!browser_1.Browser.TouchUI)\r\n this.updateLayout(true);\r\n };\r\n DiagramControl.prototype.updateLayout = function (resetScroll) {\r\n if (resetScroll === void 0) { resetScroll = false; }\r\n this.render && this.render.update(!resetScroll);\r\n };\r\n DiagramControl.prototype.captureFocus = function () {\r\n this.render && this.render.input.captureFocus();\r\n };\r\n DiagramControl.prototype.isFocused = function () {\r\n return !this.render || this.render.input.isFocused();\r\n };\r\n DiagramControl.prototype.registerBar = function (bar) {\r\n this.barManager.registerBar(bar);\r\n };\r\n DiagramControl.prototype.updateBarItemsState = function (bar, queryCommands) {\r\n this.barManager.updateBarItemsState(bar, queryCommands);\r\n };\r\n DiagramControl.prototype.getCommand = function (key) {\r\n return this.commandManager.getCommand(key);\r\n };\r\n DiagramControl.prototype.getNativeItemByKey = function (key) {\r\n var item = this.model.findItem(key);\r\n return item && this.apiController.createNativeItem(item);\r\n };\r\n DiagramControl.prototype.getNativeItemByDataKey = function (dataKey) {\r\n var item = this.model.findItemByDataKey(dataKey);\r\n return item && this.apiController.createNativeItem(item);\r\n };\r\n DiagramControl.prototype.setInitialStyleProperties = function (style) {\r\n this.selection.inputPosition.setInitialStyleProperties(style);\r\n };\r\n DiagramControl.prototype.setInitialTextStyleProperties = function (style) {\r\n this.selection.inputPosition.setInitialTextStyleProperties(style);\r\n };\r\n DiagramControl.prototype.setInitialConnectorProperties = function (properties) {\r\n this.selection.inputPosition.setInitialConnectorProperties(properties);\r\n };\r\n DiagramControl.prototype.addCustomShapes = function (shapes) {\r\n var _this = this;\r\n shapes.forEach(function (shape) {\r\n shape.apiController = _this.apiController;\r\n if (shape.defaultWidth)\r\n shape.defaultWidth = ModelUtils_1.ModelUtils.getTwipsValue(_this.model.units, shape.defaultWidth);\r\n if (shape.defaultHeight)\r\n shape.defaultHeight = ModelUtils_1.ModelUtils.getTwipsValue(_this.model.units, shape.defaultHeight);\r\n if (shape.minWidth)\r\n shape.minWidth = ModelUtils_1.ModelUtils.getTwipsValue(_this.model.units, shape.minWidth);\r\n if (shape.minHeight)\r\n shape.minHeight = ModelUtils_1.ModelUtils.getTwipsValue(_this.model.units, shape.minHeight);\r\n if (shape.maxWidth)\r\n shape.maxWidth = ModelUtils_1.ModelUtils.getTwipsValue(_this.model.units, shape.maxWidth);\r\n if (shape.maxHeight)\r\n shape.maxHeight = ModelUtils_1.ModelUtils.getTwipsValue(_this.model.units, shape.maxHeight);\r\n _this.shapeDescriptionManager.registerCustomShape(shape);\r\n });\r\n };\r\n DiagramControl.prototype.removeCustomShapes = function (shapeTypes) {\r\n var _this = this;\r\n shapeTypes.forEach(function (shapeType) {\r\n _this.shapeDescriptionManager.unregisterCustomShape(shapeType);\r\n });\r\n };\r\n DiagramControl.prototype.removeAllCustomShapes = function () {\r\n this.shapeDescriptionManager.unregisterAllCustomShapes();\r\n };\r\n DiagramControl.prototype.importModel = function (model) {\r\n this.model = model;\r\n this.model.initializeKeyCounter();\r\n this.apiController.model = model;\r\n this.onImportData();\r\n };\r\n DiagramControl.prototype.importItemsData = function () {\r\n this.model.iterateItems(function (item) {\r\n if (item instanceof Connector_1.Connector)\r\n item.invalidateRenderPoints();\r\n });\r\n this.onImportData();\r\n };\r\n DiagramControl.prototype.onImportData = function () {\r\n if (this.render) {\r\n this.render.clear();\r\n this.render.onNewModel(this.model.items);\r\n }\r\n this.permissionsProvider.clearCache();\r\n this.selection.initialize(this.model);\r\n this.modelManipulator.initialize(this.model, this.routingModel);\r\n this.history.clear();\r\n this.eventManager.initialize(this.model, this.selection, this.isTouchUIEnabled);\r\n this.modelManipulator.commitPageChanges();\r\n this.modelManipulator.commitItemsCreateChanges();\r\n this.notifyViewChanged();\r\n this.notifyHistoryChanged();\r\n };\r\n DiagramControl.prototype.createDocumentDataSource = function (nodeDataSource, edgeDataSource, parameters, nodeDataImporter, edgeDataImporter) {\r\n this.documentDataSource = new DocumentDataSource_1.DocumentDataSource(this, nodeDataSource, edgeDataSource, parameters, nodeDataImporter, edgeDataImporter);\r\n this.apiController.setDataSource(this.documentDataSource);\r\n return this.documentDataSource;\r\n };\r\n DiagramControl.prototype.deleteDocumentDataSource = function () {\r\n this.apiController.setDataSource(null);\r\n delete this.documentDataSource;\r\n };\r\n DiagramControl.prototype.applyShapeSizeSettings = function (settings) {\r\n this.settings.applyShapeSizeSettings(settings, this.model.units);\r\n };\r\n DiagramControl.prototype.applyOperationSettings = function (settings) {\r\n this.permissionsProvider.operationSettings.applySettings(settings);\r\n };\r\n DiagramControl.prototype.beginUpdateCanvas = function () {\r\n if (this.render) {\r\n this.render.items.beginUpdate();\r\n this.render.selection.beginUpdate();\r\n }\r\n };\r\n DiagramControl.prototype.endUpdateCanvas = function () {\r\n if (this.render) {\r\n this.render.items.endUpdate();\r\n this.render.selection.endUpdate();\r\n }\r\n };\r\n DiagramControl.prototype.beginUpdate = function () {\r\n this.barManager.beginUpdate();\r\n this.apiController.beginUpdate();\r\n this.eventManager.beginUpdate();\r\n };\r\n DiagramControl.prototype.endUpdate = function () {\r\n this.barManager.endUpdate();\r\n this.apiController.endUpdate();\r\n this.eventManager.endUpdate();\r\n };\r\n // IDataChangesListener\r\n DiagramControl.prototype.notifyEdgeInserted = function (data, callback, errorCallback) {\r\n if (this.onEdgeInserted)\r\n this.onEdgeInserted(data, callback, errorCallback);\r\n else\r\n callback(data);\r\n };\r\n DiagramControl.prototype.notifyEdgeUpdated = function (key, data, callback, errorCallback) {\r\n if (this.onEdgeUpdated)\r\n this.onEdgeUpdated(key, data, callback, errorCallback);\r\n else\r\n callback(key, data);\r\n };\r\n DiagramControl.prototype.notifyEdgeRemoved = function (key, data, callback, errorCallback) {\r\n if (this.onEdgeUpdated)\r\n this.onEdgeRemoved(key, data, callback, errorCallback);\r\n else\r\n callback(key, data);\r\n };\r\n DiagramControl.prototype.notifyNodeInserted = function (data, callback, errorCallback) {\r\n if (this.onNodeInserted)\r\n this.onNodeInserted(data, callback, errorCallback);\r\n else\r\n callback(data);\r\n };\r\n DiagramControl.prototype.notifyNodeUpdated = function (key, data, callback, errorCallback) {\r\n if (this.onNodeUpdated)\r\n this.onNodeUpdated(key, data, callback, errorCallback);\r\n else\r\n callback(key, data);\r\n };\r\n DiagramControl.prototype.notifyNodeRemoved = function (key, data, callback, errorCallback) {\r\n if (this.onNodeRemoved)\r\n this.onNodeRemoved(key, data, callback, errorCallback);\r\n else\r\n callback(key, data);\r\n };\r\n DiagramControl.prototype.reloadInsertedItem = function (dataKey) {\r\n if (this.settings.reloadInsertedItemRequired)\r\n this.reloadContent(dataKey);\r\n };\r\n DiagramControl.prototype.reloadContent = function (dataKey, getData, layoutParameters, isExternalChanges) {\r\n if (!this.documentDataSource)\r\n return;\r\n if (this.isChangesLocked())\r\n this.reloadContentNeeded = true;\r\n var addNewHistoryItem = isExternalChanges === true || (isExternalChanges === undefined && !this.reloadContentNeeded);\r\n var reloadContentParameters = addNewHistoryItem ? this.reloadContentByExternalChangesParameters : this.reloadContentParameters;\r\n reloadContentParameters.add(dataKey, getData, layoutParameters);\r\n if (!this.isChangesLocked()) {\r\n this.reloadContentCore(reloadContentParameters, addNewHistoryItem);\r\n this.barManager.updateItemsState();\r\n }\r\n };\r\n DiagramControl.prototype.reloadContentCore = function (parameters, addNewHistoryItem) {\r\n var _this = this;\r\n var data = parameters.getData && parameters.getData();\r\n var changes = this.documentDataSource.refetchData(data && data.nodeDataSource, data && data.edgeDataSource);\r\n this.beginUpdateCanvas();\r\n this.permissionsProvider.lockPermissions();\r\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) {\r\n _this.modelManipulator.commitItemUpdateChanges(item);\r\n }, changes, this.settings.snapToGrid, this.settings.gridSize, this.measurer);\r\n this.permissionsProvider.unlockPermissions();\r\n this.endUpdateCanvas();\r\n parameters.clear();\r\n };\r\n DiagramControl.prototype.notifyHistoryChanged = function () {\r\n if (this.documentDataSource) {\r\n this.shouldUpdateItemsByModel = true;\r\n if (!this.settings.readOnly)\r\n this.notifyDataChanges();\r\n }\r\n else\r\n this.raiseOnChanged();\r\n };\r\n DiagramControl.prototype.notifyViewChanged = function () {\r\n this.settings.notifyViewChanged();\r\n };\r\n DiagramControl.prototype.notifyToolboxDragStart = function () {\r\n if (this.onToolboxDragStart)\r\n this.onToolboxDragStart();\r\n };\r\n DiagramControl.prototype.notifyToolboxDragEnd = function () {\r\n if (this.onToolboxDragEnd)\r\n this.onToolboxDragEnd();\r\n };\r\n DiagramControl.prototype.notifyTextInputStart = function (item, text, position, size) {\r\n if (this.onTextInputStart)\r\n this.onTextInputStart();\r\n };\r\n DiagramControl.prototype.notifyTextInputEnd = function (item) {\r\n if (this.onTextInputEnd)\r\n this.onTextInputEnd();\r\n };\r\n DiagramControl.prototype.notifyTextInputPermissionsCheck = function (item, allowed) { };\r\n DiagramControl.prototype.notifyToggleFullscreen = function (value) {\r\n if (this.onToggleFullscreen)\r\n this.onToggleFullscreen(value);\r\n };\r\n DiagramControl.prototype.notifyShowContextMenu = function (eventPoint, modelPoint, isTouchMode) {\r\n if (this.onShowContextMenu && this.render) {\r\n var selection = void 0;\r\n var selectedItems = this.selection.getSelectedItems(true);\r\n if (selectedItems.length > 0) {\r\n var rect = ModelUtils_1.ModelUtils.createRectangle(this.selection.getSelectedItems(true));\r\n var pos = this.render.getEventPointByModelPoint(rect.createPosition());\r\n var size = this.render.view.getAbsoluteSize(rect.createSize());\r\n selection = { x: pos.x, y: pos.y, width: size.width, height: size.height };\r\n }\r\n if (eventPoint) {\r\n this.contextMenuPosition = new point_1.Point(eventPoint.x, eventPoint.y);\r\n this.onShowContextMenu(eventPoint.x, eventPoint.y, isTouchMode, selection);\r\n }\r\n else if (modelPoint) {\r\n var point = this.render.getEventPointByModelPoint(modelPoint);\r\n this.contextMenuPosition = point.clone();\r\n this.onShowContextMenu(point.x, point.y, isTouchMode, selection);\r\n }\r\n }\r\n };\r\n DiagramControl.prototype.notifyHideContextMenu = function () {\r\n if (this.onHideContextMenu && this.render)\r\n this.onHideContextMenu();\r\n };\r\n DiagramControl.prototype.notifyShowContextToolbox = function (modelPoint, getPositionToInsertShapeTo, side, category, callback) {\r\n if (this.onShowContextToolbox && this.render) {\r\n var point = this.render.getEventPointByModelPoint(modelPoint);\r\n this.onShowContextToolbox(point.x, point.y, side, category, callback);\r\n this.render.view.notifyShowContextToolbox();\r\n }\r\n };\r\n DiagramControl.prototype.notifyHideContextToolbox = function () {\r\n if (this.onHideContextToolbox && this.render) {\r\n this.onHideContextToolbox();\r\n this.render.view.notifyHideContextToolbox();\r\n }\r\n };\r\n DiagramControl.prototype.notifyShapeDescriptionChanged = function (description) {\r\n this.modelManipulator.updateShapeDescription(description);\r\n };\r\n DiagramControl.prototype.notifyImageCacheReadyStateChanged = function (ready) {\r\n this.barManager.updateItemsState();\r\n };\r\n DiagramControl.prototype.raiseCanvasViewActualZoomChanged = function () {\r\n this.render.view.raiseActualZoomChanged();\r\n };\r\n DiagramControl.prototype.notifyRequestOperation = function (operation, args) {\r\n if (this.requestOperationByDataSource(operation, args))\r\n return;\r\n if (this.onRequestOperation)\r\n this.onRequestOperation(operation, args);\r\n };\r\n DiagramControl.prototype.requestOperationByDataSource = function (operation, args) {\r\n if (!(this.documentDataSource && (this.documentDataSource.IsNodeParentIdMode() || this.documentDataSource.IsNodeItemsMode())))\r\n return false;\r\n if (operation === ModelOperationSettings_1.DiagramModelOperation.ChangeConnection) {\r\n var e = args;\r\n var shape = e.shape && this.model.findItem(e.shape.id);\r\n var connector = e.connector && this.model.findItem(e.connector.id);\r\n if (!(shape && connector))\r\n return;\r\n // shape can have only one incoming connection\r\n if (e.position === Connector_1.ConnectorPosition.End)\r\n for (var i = 0; i < shape.attachedConnectors.length; i++) {\r\n var attachedConnector = shape.attachedConnectors[i];\r\n if (attachedConnector !== connector && attachedConnector.endItem && attachedConnector.endItem === shape) {\r\n e.allowed = false;\r\n break;\r\n }\r\n }\r\n // circular reference is not allowed\r\n if (e.allowed && connector.beginItem && connector.endItem && this.isShapeParent(connector.endItem, connector.beginItem))\r\n e.allowed = false;\r\n }\r\n return !args.allowed;\r\n };\r\n DiagramControl.prototype.isShapeParent = function (parentShape, shape) {\r\n if (parentShape === shape)\r\n return true;\r\n for (var i = 0; i < parentShape.attachedConnectors.length; i++) {\r\n var attachedConnector = parentShape.attachedConnectors[i];\r\n if (attachedConnector.beginItem === parentShape && attachedConnector.endItem) {\r\n var childShape = attachedConnector.endItem;\r\n if (childShape === shape || this.isShapeParent(childShape, shape))\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n DiagramControl.prototype.isChangesLocked = function () {\r\n return this.updateLockCount > 0;\r\n };\r\n DiagramControl.prototype.beginChangesNotification = function () {\r\n if (!this.isChangesLocked())\r\n if (this.changesLockChanged)\r\n this.changesLockChanged(true);\r\n this.updateLockCount++;\r\n };\r\n DiagramControl.prototype.endChangesNotification = function (preventNotifyReloadContent) {\r\n var _this = this;\r\n this.updateLockCount--;\r\n if (!this.isChangesLocked()) {\r\n this.changesLockChanged(false);\r\n if (!preventNotifyReloadContent)\r\n setTimeout(function () {\r\n _this.notifyReloadContent();\r\n _this.notifyDataChanges();\r\n }, 0);\r\n }\r\n };\r\n DiagramControl.prototype.changesLockChanged = function (locked) {\r\n if (locked)\r\n this.lockedReadOnly = this.settings.readOnly;\r\n else\r\n locked = this.lockedReadOnly;\r\n this.commandManager.getCommand(CommandManager_1.DiagramCommand.ToggleReadOnly).execute(locked);\r\n };\r\n DiagramControl.prototype.notifyDataChanges = function () {\r\n if (this.isChangesLocked())\r\n return;\r\n if (this.shouldUpdateItemsByModel) {\r\n this.documentDataSource.updateItemsByModel(this.model);\r\n this.shouldUpdateItemsByModel = false;\r\n }\r\n this.raiseOnChanged();\r\n };\r\n DiagramControl.prototype.notifyReloadContent = function () {\r\n if (this.reloadContentNeeded) {\r\n if (!this.reloadContentParameters.empty)\r\n this.reloadContentCore(this.reloadContentParameters, false);\r\n if (!this.reloadContentByExternalChangesParameters.empty)\r\n this.reloadContentCore(this.reloadContentByExternalChangesParameters, true);\r\n this.reloadContentNeeded = false;\r\n }\r\n };\r\n DiagramControl.prototype.raiseOnChanged = function () {\r\n if (this.onChanged)\r\n this.onChanged();\r\n };\r\n DiagramControl.prototype.createRenderManagerDragEventsHandler = function () {\r\n if (window.PointerEvent)\r\n return new RenderManagerPointerDragEventsHandler_1.RenderManagerPointerDragEventsHandler();\r\n else if (this.hasTouchDragEvents)\r\n return new RenderManagerTouchDragEventsHandler_1.RenderManagerTouchDragEventsHandler();\r\n return new RenderManagerMouseDragEventsHandler_1.RenderManagerMouseDragEventsHandler();\r\n };\r\n DiagramControl.prototype.createToolboxDragEventsHandler = function () {\r\n if (window.PointerEvent)\r\n return new ToolboxPointerDragEventsHandler_1.ToolboxPointerDragEventsHandler(this.isTouchUIEnabled);\r\n else if (this.hasTouchDragEvents)\r\n return new ToolboxTouchDragEventsHandler_1.ToolboxTouchDragEventsHandler(this.isTouchUIEnabled);\r\n return new ToolboxMouseDragEventsHandler_1.ToolboxMouseDragEventsHandler(this.isTouchUIEnabled);\r\n };\r\n return DiagramControl;\r\n}());\r\nexports.DiagramControl = DiagramControl;\r\n\n\n/***/ }),\n/* 302 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ModelManipulator = void 0;\r\nvar offsets_1 = __webpack_require__(87);\r\nvar size_1 = __webpack_require__(2);\r\nvar Diagnostics_1 = __webpack_require__(59);\r\nvar ImageCache_1 = __webpack_require__(47);\r\nvar ImageLoader_1 = __webpack_require__(131);\r\nvar ModelOperationSettings_1 = __webpack_require__(16);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar ModelChange_1 = __webpack_require__(99);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar ModelManipulator = /** @class */ (function () {\r\n function ModelManipulator(model, routingModel, permissionsProvider) {\r\n this.onModelChanged = new Utils_1.EventDispatcher();\r\n this.onModelSizeChanged = new Utils_1.EventDispatcher();\r\n this.initializeCore(model, routingModel);\r\n this.permissionsProvider = permissionsProvider;\r\n this.imageLoader = new ImageLoader_1.ImageLoader(this.updateShapeImage.bind(this));\r\n }\r\n ModelManipulator.prototype.initialize = function (model, routingModel) {\r\n this.initializeCore(model, routingModel);\r\n this.model.loadAllImages(this.imageLoader);\r\n this.updateModelSize();\r\n };\r\n ModelManipulator.prototype.initializeCore = function (model, routingModel) {\r\n this.model = model;\r\n this.routingModel = routingModel;\r\n if (this.routingModel)\r\n this.routingModel.initialize(model);\r\n };\r\n ModelManipulator.prototype.commitPageChanges = function () {\r\n this.raisePageSizeChanged(this.model.pageSize.clone(), this.model.pageLandscape);\r\n this.raiseModelSizeChanged(this.model.size.clone());\r\n this.raisePageColorChanged(this.model.pageColor);\r\n this.raiseModelRectangleChanged(ModelUtils_1.ModelUtils.createRectangle(this.model.items));\r\n };\r\n ModelManipulator.prototype.commitItemsCreateChanges = function () {\r\n Diagnostics_1.Diagnostics.timer(\"new model: model changes\");\r\n this.commitItemsChangesCore(ModelChange_1.ItemChangeType.Create, this.model.items);\r\n Diagnostics_1.Diagnostics.endTimer();\r\n };\r\n ModelManipulator.prototype.commitItemUpdateChanges = function (item) {\r\n this.commitItemsChangesCore(ModelChange_1.ItemChangeType.UpdateStructure, [item]);\r\n };\r\n ModelManipulator.prototype.commitItemsChangesCore = function (changeType, items) {\r\n var changes = [];\r\n items.forEach(function (item) {\r\n changes.push(new ModelChange_1.ItemChange(item, changeType));\r\n });\r\n if (changes.length)\r\n this.raiseModelChanged(changes);\r\n };\r\n // Items\r\n ModelManipulator.prototype.insertToContainer = function (item, container) {\r\n if (item.container && container && item.container.key !== container.key)\r\n throw Error(\"To insert an item to a container it's necessary to remove it from the current container.\");\r\n if (container) {\r\n if (container.children.indexOf(item) === -1)\r\n container.children.push(item);\r\n item.container = container;\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(item, ModelChange_1.ItemChangeType.Update)]);\r\n }\r\n };\r\n ModelManipulator.prototype.removeFromContainer = function (item) {\r\n if (item.container) {\r\n var index = item.container.children.indexOf(item);\r\n item.container.children.splice(index, 1);\r\n item.container = undefined;\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(item, ModelChange_1.ItemChangeType.Update)]);\r\n }\r\n };\r\n ModelManipulator.prototype.changeStyle = function (item, styleProperty, styleValue) {\r\n this.changeStyleCore(item, item.style, styleProperty, styleValue);\r\n };\r\n ModelManipulator.prototype.changeStyleText = function (item, styleProperty, styleValue) {\r\n this.changeStyleCore(item, item.styleText, styleProperty, styleValue);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\n ModelManipulator.prototype.changeStyleCore = function (item, styleObj, styleProperty, styleValue) {\r\n if (styleValue !== undefined)\r\n styleObj[styleProperty] = styleValue;\r\n else\r\n delete styleObj[styleProperty];\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(item, ModelChange_1.ItemChangeType.UpdateProperties)]);\r\n };\r\n ModelManipulator.prototype.changeZIndex = function (item, zIndex) {\r\n item.zIndex = zIndex;\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(item, ModelChange_1.ItemChangeType.Update)]);\r\n };\r\n ModelManipulator.prototype.changeLocked = function (item, locked) {\r\n item.locked = locked;\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(item, ModelChange_1.ItemChangeType.UpdateClassName)]);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\n ModelManipulator.prototype.changeCustomData = function (item, data) {\r\n item.customData = Utils_1.ObjectUtils.cloneObject(data);\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(item, ModelChange_1.ItemChangeType.UpdateStructure)]);\r\n };\r\n ModelManipulator.prototype.addShape = function (shape, key) {\r\n if (shape.attachedConnectors.length)\r\n throw Error(\"A creating shape should not contain existing connectors.\");\r\n shape.key = key !== undefined ? key : this.model.getNextKey();\r\n return this.insertShape(shape);\r\n };\r\n ModelManipulator.prototype.insertShape = function (shape) {\r\n this.model.pushItem(shape);\r\n var allowed = this.permissionsProvider.canAddItems([shape]);\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(shape, ModelChange_1.ItemChangeType.Create, allowed)]);\r\n this.model.loadAllImages(this.imageLoader);\r\n return shape;\r\n };\r\n ModelManipulator.prototype.resizeShape = function (shape, position, size) {\r\n shape.position = position;\r\n shape.size = size;\r\n var allowed = this.permissionsProvider.isStoredPermissionsGranted();\r\n var resizeInteractingItem = this.getInteractingItem(shape, ModelOperationSettings_1.DiagramModelOperation.ResizeShape);\r\n if (resizeInteractingItem) {\r\n var oldSize = resizeInteractingItem.size.clone();\r\n var size_2 = shape.size.clone();\r\n if (!size_2.equals(oldSize))\r\n allowed = this.permissionsProvider.canResizeShapes([{ shape: shape, size: size_2, oldSize: oldSize }]);\r\n }\r\n var moveInteractingItem = this.getInteractingItem(shape, ModelOperationSettings_1.DiagramModelOperation.MoveShape);\r\n if (moveInteractingItem) {\r\n var oldPosition = moveInteractingItem.position.clone();\r\n var position_1 = shape.position.clone();\r\n if (!position_1.equals(oldPosition))\r\n allowed = this.permissionsProvider.canMoveShapes([{ shape: shape, position: position_1, oldPosition: oldPosition }]);\r\n }\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(shape, ModelChange_1.ItemChangeType.UpdateProperties, allowed)]);\r\n };\r\n ModelManipulator.prototype.moveShape = function (shape, position) {\r\n shape.position = position;\r\n var allowed = this.permissionsProvider.isStoredPermissionsGranted();\r\n var addInteractingItem = this.getInteractingItem(shape, ModelOperationSettings_1.DiagramModelOperation.AddShape);\r\n if (addInteractingItem)\r\n allowed = this.permissionsProvider.canAddItems([shape]);\r\n var moveInteractingItem = this.getInteractingItem(shape, ModelOperationSettings_1.DiagramModelOperation.MoveShape);\r\n if (moveInteractingItem) {\r\n var oldPosition = moveInteractingItem.position.clone();\r\n var position_2 = shape.position.clone();\r\n if (!position_2.equals(oldPosition))\r\n allowed = this.permissionsProvider.canMoveShapes([{ shape: shape, position: position_2, oldPosition: oldPosition }]);\r\n }\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(shape, ModelChange_1.ItemChangeType.UpdateProperties, allowed)]);\r\n };\r\n ModelManipulator.prototype.changeShapeParameters = function (shape, parameters) {\r\n shape.parameters.forEach(function (p) {\r\n var parameter = parameters.get(p.key);\r\n if (parameter)\r\n p.value = parameter.value;\r\n });\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(shape, ModelChange_1.ItemChangeType.UpdateProperties)]);\r\n };\r\n ModelManipulator.prototype.changeShapeText = function (shape, text) {\r\n shape.text = text;\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(shape, ModelChange_1.ItemChangeType.UpdateStructure)]);\r\n };\r\n ModelManipulator.prototype.changeShapeImage = function (shape, image) {\r\n shape.image = image;\r\n var cachedImage = ImageCache_1.ImageCache.instance.createUnloadedInfoByShapeImageInfo(image);\r\n this.imageLoader.load(cachedImage);\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(shape, ModelChange_1.ItemChangeType.UpdateStructure)]);\r\n };\r\n ModelManipulator.prototype.changeShapeExpanded = function (shape, expanded) {\r\n shape.expanded = expanded;\r\n shape.toggleExpandedSize();\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(shape, ModelChange_1.ItemChangeType.UpdateStructure)]);\r\n };\r\n ModelManipulator.prototype.deleteShape = function (shape, allowed) {\r\n if (shape.attachedConnectors.length)\r\n throw Error(\"A removing shape should not contain existing connectors.\");\r\n this.removeShape(shape, allowed);\r\n };\r\n ModelManipulator.prototype.removeShape = function (shape, allowed) {\r\n this.model.removeItem(shape);\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(shape, ModelChange_1.ItemChangeType.Remove, allowed)]);\r\n };\r\n ModelManipulator.prototype.updateShapeImage = function (cacheImageInfo) {\r\n if (!cacheImageInfo.imageUrl)\r\n return;\r\n var shapes = this.model.findShapesByImageUrl(cacheImageInfo.imageUrl);\r\n shapes.forEach(function (shape) {\r\n if (cacheImageInfo.base64)\r\n shape.image.loadBase64Content(cacheImageInfo.base64);\r\n else\r\n shape.image.setUnableToLoadFlag();\r\n });\r\n this.commitItemsChangesCore(ModelChange_1.ItemChangeType.UpdateStructure, shapes);\r\n };\r\n ModelManipulator.prototype.updateShapeDescription = function (description) {\r\n var shapes = this.model.findShapesByDescription(description);\r\n this.commitItemsChangesCore(ModelChange_1.ItemChangeType.UpdateProperties, shapes);\r\n };\r\n // Connectors\r\n ModelManipulator.prototype.addConnector = function (connector, key) {\r\n if (connector.beginItem || connector.endItem)\r\n throw Error(\"Creating connector should not contain begin/end items\");\r\n connector.key = key !== undefined ? key : this.model.getNextKey();\r\n return this.insertConnector(connector);\r\n };\r\n ModelManipulator.prototype.insertConnector = function (connector) {\r\n this.model.pushItem(connector);\r\n var routingStrategy = this.routingModel.createStrategy(connector.properties.lineOption);\r\n if (routingStrategy)\r\n connector.changeRoutingStrategy(routingStrategy);\r\n else\r\n connector.clearRoutingStrategy();\r\n var allowed = this.permissionsProvider.canAddItems([connector]);\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(connector, ModelChange_1.ItemChangeType.Create, allowed)]);\r\n return connector;\r\n };\r\n ModelManipulator.prototype.deleteConnector = function (connector) {\r\n if (connector.beginItem || connector.endItem)\r\n throw Error(\"Creating connector should not contain begin/end items\");\r\n this.removeConnector(connector);\r\n };\r\n ModelManipulator.prototype.removeConnector = function (connector) {\r\n this.model.removeItem(connector);\r\n var allowed = this.permissionsProvider.canDeleteItems([connector]);\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(connector, ModelChange_1.ItemChangeType.Remove, allowed)]);\r\n };\r\n ModelManipulator.prototype.addDeleteConnectorPoint = function (connector, callBack) {\r\n var oldConnectorPoints = this.getConnectorInteractingPoints(connector);\r\n callBack(connector);\r\n this.addDeleteConnectorPointCore(connector, oldConnectorPoints);\r\n };\r\n ModelManipulator.prototype.moveConnectorPoint = function (connector, pointIndex, callBack) {\r\n callBack(connector);\r\n this.moveConnectorPointCore(connector, pointIndex);\r\n };\r\n ModelManipulator.prototype.changeConnectorPoints = function (connector, callBack) {\r\n var _this = this;\r\n callBack(connector);\r\n connector.points.forEach(function (_, i) { return _this.moveConnectorPointCore(connector, i); });\r\n };\r\n ModelManipulator.prototype.moveConnectorPointCore = function (connector, pointIndex) {\r\n var interactingItem = this.getInteractingItem(connector);\r\n var allowed = this.permissionsProvider.isStoredPermissionsGranted();\r\n if (interactingItem) {\r\n var changeConnectionPoints = (0 < pointIndex && pointIndex < connector.points.length - 1);\r\n changeConnectionPoints = changeConnectionPoints || (pointIndex === 0 && !connector.beginItem);\r\n changeConnectionPoints = changeConnectionPoints || (pointIndex === connector.points.length - 1 && !connector.endItem);\r\n if (changeConnectionPoints) {\r\n var oldConnectorPoints = interactingItem.points.map(function (p) { return p.clone(); });\r\n var newConnectorPoints = connector.points.map(function (p) { return p.clone(); });\r\n if (!Utils_1.GeometryUtils.arePointsEqual(oldConnectorPoints, newConnectorPoints))\r\n allowed = this.permissionsProvider.canChangeConnectorPoints(connector, oldConnectorPoints, newConnectorPoints);\r\n }\r\n }\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(connector, ModelChange_1.ItemChangeType.UpdateProperties, allowed)]);\r\n };\r\n ModelManipulator.prototype.getConnectorInteractingPoints = function (connector) {\r\n var interactingItem = this.getInteractingItem(connector);\r\n return interactingItem ? interactingItem.points.map(function (p) { return p.clone(); }) : connector.points.map(function (p) { return p.clone(); });\r\n };\r\n ModelManipulator.prototype.addDeleteConnectorPointCore = function (connector, oldConnectorPoints) {\r\n var allowed = this.permissionsProvider.isStoredPermissionsGranted();\r\n var newConnectorPoints = connector.points.map(function (p) { return p.clone(); });\r\n if (!Utils_1.GeometryUtils.arePointsEqual(oldConnectorPoints, newConnectorPoints))\r\n allowed = this.permissionsProvider.canChangeConnectorPoints(connector, oldConnectorPoints, newConnectorPoints);\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(connector, ModelChange_1.ItemChangeType.UpdateProperties, allowed)]);\r\n };\r\n ModelManipulator.prototype.addConnection = function (connector, item, connectionPointIndex, position) {\r\n var existingItem = connector.getExtremeItem(position);\r\n var existingConnectionPointIndex = connector.getExtremeConnectionPointIndex(position);\r\n if (existingItem === item && existingConnectionPointIndex === connectionPointIndex)\r\n return;\r\n else if (existingItem)\r\n throw Error(\"Connector is already connected\");\r\n item.attachedConnectors.push(connector);\r\n if (position === Connector_1.ConnectorPosition.Begin) {\r\n connector.beginItem = item;\r\n connector.beginConnectionPointIndex = connectionPointIndex;\r\n }\r\n else {\r\n connector.endItem = item;\r\n connector.endConnectionPointIndex = connectionPointIndex;\r\n }\r\n connector.invalidateRenderPoints();\r\n var allowed = this.permissionsProvider.canChangeConnection(connector, item, undefined, position, connectionPointIndex);\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(connector, ModelChange_1.ItemChangeType.UpdateProperties, allowed)]);\r\n };\r\n ModelManipulator.prototype.setConnectionPointIndex = function (connector, connectionPointIndex, position) {\r\n if (!connector.getExtremeItem(position))\r\n throw Error(\"Connection should be connected\");\r\n if (position === Connector_1.ConnectorPosition.Begin)\r\n connector.beginConnectionPointIndex = connectionPointIndex;\r\n else\r\n connector.endConnectionPointIndex = connectionPointIndex;\r\n connector.invalidateRenderPoints();\r\n var item = connector.getExtremeItem(position);\r\n var allowed = this.permissionsProvider.canChangeConnection(connector, item, item, position, connectionPointIndex);\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(connector, ModelChange_1.ItemChangeType.UpdateProperties, allowed)]);\r\n };\r\n ModelManipulator.prototype.deleteConnection = function (connector, position) {\r\n var item = connector.getExtremeItem(position);\r\n if (!item)\r\n return;\r\n item.attachedConnectors.splice(item.attachedConnectors.indexOf(connector), 1);\r\n if (position === Connector_1.ConnectorPosition.Begin) {\r\n connector.beginItem = null;\r\n connector.beginConnectionPointIndex = -1;\r\n }\r\n else {\r\n connector.endItem = null;\r\n connector.endConnectionPointIndex = -1;\r\n }\r\n connector.invalidateRenderPoints();\r\n var allowed = this.permissionsProvider.canChangeConnection(connector, undefined, item, position, -1);\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(connector, ModelChange_1.ItemChangeType.UpdateProperties, allowed)]);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\n ModelManipulator.prototype.changeConnectorProperty = function (connector, propertyName, value) {\r\n connector.properties[propertyName] = value;\r\n if (propertyName === \"lineOption\") {\r\n var routingStrategy = this.routingModel ? this.routingModel.createStrategy(connector.properties.lineOption) : undefined;\r\n if (routingStrategy)\r\n connector.changeRoutingStrategy(routingStrategy);\r\n else\r\n connector.clearRoutingStrategy();\r\n }\r\n else\r\n connector.invalidateRenderPoints();\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(connector, ModelChange_1.ItemChangeType.UpdateProperties)]);\r\n };\r\n ModelManipulator.prototype.changeConnectorText = function (connector, text, position) {\r\n connector.setText(text, position);\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(connector, ModelChange_1.ItemChangeType.UpdateStructure)]);\r\n };\r\n ModelManipulator.prototype.changeConnectorTextPosition = function (connector, position, newPosition) {\r\n var text = connector.getText(position);\r\n connector.setText(null, position);\r\n connector.setText(text, newPosition);\r\n this.raiseModelChanged([new ModelChange_1.ItemChange(connector, ModelChange_1.ItemChangeType.UpdateProperties)]);\r\n };\r\n // Model\r\n ModelManipulator.prototype.changeModelSize = function (size, offset) {\r\n this.model.size.width = size.width;\r\n this.model.size.height = size.height;\r\n this.raiseModelSizeChanged(this.model.size.clone(), offset);\r\n if (offset.left || offset.top) {\r\n this.model.snapStartPoint = this.model.snapStartPoint.clone().offset(offset.left, offset.top);\r\n this.raiseSnapPointChange(this.model.snapStartPoint);\r\n }\r\n };\r\n ModelManipulator.prototype.changePageSize = function (value) {\r\n if (!this.model.pageSize.equals(value)) {\r\n this.model.pageSize = value;\r\n this.model.size = new size_1.Size(this.model.pageWidth, this.model.pageHeight);\r\n this.raiseModelSizeChanged(this.model.size.clone());\r\n this.raisePageSizeChanged(this.model.pageSize, this.model.pageLandscape);\r\n }\r\n };\r\n ModelManipulator.prototype.changePageLandscape = function (value) {\r\n if (this.model.pageLandscape !== value) {\r\n this.model.pageLandscape = value;\r\n if (this.model.pageSize.width !== this.model.pageSize.height) {\r\n this.model.size = new size_1.Size(this.model.pageWidth, this.model.pageHeight);\r\n this.raiseModelSizeChanged(this.model.size.clone());\r\n this.raisePageSizeChanged(this.model.pageSize, this.model.pageLandscape);\r\n }\r\n }\r\n };\r\n ModelManipulator.prototype.changePageColor = function (value) {\r\n if (this.model.pageColor !== value) {\r\n this.model.pageColor = value;\r\n this.raisePageColorChanged(value);\r\n }\r\n };\r\n ModelManipulator.prototype.updateModelSize = function () {\r\n var offset = this.getModelSizeUpdateOffset();\r\n if (!offset.isEmpty()) {\r\n var newWidth = Math.max(this.model.size.width + offset.left + offset.right, this.model.pageWidth);\r\n var newHeight = Math.max(this.model.size.height + offset.top + offset.bottom, this.model.pageHeight);\r\n this.model.size = new size_1.Size(newWidth, newHeight);\r\n }\r\n };\r\n ModelManipulator.prototype.getModelSizeUpdateOffset = function () {\r\n var oldRectangle = this.model.getRectangle(false);\r\n var newRectangle = this.model.getRectangle(true);\r\n if (!newRectangle.equals(oldRectangle))\r\n this.raiseModelRectangleChanged(newRectangle);\r\n return this.createModelRectangleOffset(newRectangle);\r\n };\r\n ModelManipulator.prototype.createModelRectangleOffset = function (rectangle) {\r\n var pageWidth = this.model.pageWidth;\r\n var pageHeight = this.model.pageHeight;\r\n var size = this.model.size;\r\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);\r\n };\r\n ModelManipulator.prototype.raiseModelChanged = function (changes) {\r\n this.onModelChanged.raise1(function (l) { return l.notifyModelChanged(changes); });\r\n };\r\n ModelManipulator.prototype.raisePageColorChanged = function (color) {\r\n this.onModelChanged.raise1(function (l) { return l.notifyPageColorChanged(color); });\r\n };\r\n ModelManipulator.prototype.raisePageSizeChanged = function (pageSize, pageLandscape) {\r\n this.onModelChanged.raise1(function (l) { return l.notifyPageSizeChanged(pageSize, pageLandscape); });\r\n };\r\n ModelManipulator.prototype.raiseModelSizeChanged = function (size, offset) {\r\n this.onModelSizeChanged.raise1(function (l) { return l.notifyModelSizeChanged(size, offset); });\r\n };\r\n ModelManipulator.prototype.raiseModelRectangleChanged = function (rectangle) {\r\n this.onModelSizeChanged.raise1(function (l) { return l.notifyModelRectangleChanged(rectangle); });\r\n };\r\n ModelManipulator.prototype.raiseSnapPointChange = function (point) {\r\n this.onModelSizeChanged.raise1(function (l) { return l.notifySnapPointPositionChanged(point); });\r\n };\r\n ModelManipulator.prototype.getInteractingItem = function (item, operation) {\r\n return this.permissionsProvider.getInteractingItem(item, operation);\r\n };\r\n return ModelManipulator;\r\n}());\r\nexports.ModelManipulator = ModelManipulator;\r\n\n\n/***/ }),\n/* 303 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.EventManager = void 0;\r\nvar MouseHandler_1 = __webpack_require__(304);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar TextInputHandler_1 = __webpack_require__(323);\r\nvar ContextMenuHandler_1 = __webpack_require__(324);\r\nvar VisualizersManager_1 = __webpack_require__(325);\r\nvar ContextToolboxHandler_1 = __webpack_require__(331);\r\nvar key_1 = __webpack_require__(26);\r\nvar EventManager = /** @class */ (function () {\r\n function EventManager(control) {\r\n this.control = control;\r\n this.onMouseOperation = new Utils_1.EventDispatcher();\r\n this.onTextInputOperation = new Utils_1.EventDispatcher();\r\n this.toolboxes = [];\r\n var settings = control.settings;\r\n this.visualizersManager = new VisualizersManager_1.VisualizerManager(settings);\r\n this.onMouseOperation.add(this.visualizersManager);\r\n this.contextMenuHandler = new ContextMenuHandler_1.ContextMenuHandler();\r\n this.contextMenuHandler.onVisibilityChanged.add(control);\r\n this.onMouseOperation.add(this.contextMenuHandler);\r\n this.onTextInputOperation.add(this.contextMenuHandler);\r\n this.contextToolboxHandler = new ContextToolboxHandler_1.ContextToolboxHandler();\r\n this.contextToolboxHandler.onVisibilityChanged.add(control);\r\n this.contextToolboxHandler.onVisibilityChanged.add(this.contextMenuHandler);\r\n this.mouseHandler = new MouseHandler_1.MouseHandler(control.history, control.view, this.visualizersManager, this.contextToolboxHandler, control.shapeDescriptionManager, settings, control.permissionsProvider);\r\n this.textInputHandler = new TextInputHandler_1.TextInputHandler(control);\r\n this.visualizersManager.onVisualizersUpdate.add(this.mouseHandler);\r\n }\r\n Object.defineProperty(EventManager.prototype, \"onVisualizersUpdate\", {\r\n get: function () {\r\n return this.visualizersManager.onVisualizersUpdate;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n EventManager.prototype.registerToolbox = function (toolbox) {\r\n this.toolboxes.push(toolbox);\r\n };\r\n EventManager.prototype.initialize = function (model, selection, isTouchUIEnabled) {\r\n this.visualizersManager.initialize(model, this, selection, isTouchUIEnabled);\r\n this.mouseHandler.initialize(model, selection, isTouchUIEnabled);\r\n this.contextMenuHandler.initialize(selection, isTouchUIEnabled);\r\n this.contextToolboxHandler.initialize(isTouchUIEnabled);\r\n };\r\n EventManager.prototype.beginUpdate = function (lockUpdateCanvas) {\r\n this.contextMenuHandler.beginUpdate();\r\n this.visualizersManager.beginUpdate();\r\n };\r\n EventManager.prototype.endUpdate = function () {\r\n this.contextMenuHandler.endUpdate();\r\n this.visualizersManager.endUpdate();\r\n };\r\n EventManager.prototype.onMouseDown = function (evt) {\r\n this.mouseHandler.onMouseDown(evt);\r\n this.contextMenuHandler.onMouseDown(evt);\r\n this.visualizersManager.onMouseDown(evt);\r\n this.contextToolboxHandler.onMouseDown(evt);\r\n };\r\n EventManager.prototype.onMouseMove = function (evt) {\r\n this.processDragging(evt);\r\n this.mouseHandler.onMouseMove(evt);\r\n };\r\n EventManager.prototype.onMouseUp = function (evt) {\r\n this.contextToolboxHandler.onMouseUp(evt);\r\n this.mouseHandler.onMouseUp(evt);\r\n this.contextMenuHandler.onMouseUp(evt);\r\n this.visualizersManager.onMouseUp(evt);\r\n this.processDragging(evt);\r\n };\r\n EventManager.prototype.onMouseEnter = function (evt) {\r\n this.visualizersManager.onMouseEnter(evt);\r\n };\r\n EventManager.prototype.onMouseLeave = function (evt) {\r\n this.visualizersManager.onMouseLeave(evt);\r\n };\r\n EventManager.prototype.onDblClick = function (evt) {\r\n this.mouseHandler.onMouseDblClick(evt);\r\n this.textInputHandler.onDblClick(evt);\r\n this.control.apiController.notifyDblClick(evt);\r\n };\r\n EventManager.prototype.onClick = function (evt) {\r\n this.mouseHandler.onMouseClick(evt);\r\n this.control.apiController.notifyClick(evt);\r\n };\r\n EventManager.prototype.onContextMenu = function (evt) {\r\n this.contextMenuHandler.onContextMenu(evt);\r\n };\r\n EventManager.prototype.onLongTouch = function (evt) {\r\n this.mouseHandler.onLongTouch(evt);\r\n this.contextMenuHandler.onLongTouch(evt);\r\n };\r\n EventManager.prototype.onBlur = function (evt) {\r\n this.contextMenuHandler.onBlur(evt);\r\n this.contextToolboxHandler.onBlur(evt);\r\n this.visualizersManager.onBlur(evt);\r\n };\r\n EventManager.prototype.onFocus = function (evt) {\r\n this.contextMenuHandler.onFocus(evt);\r\n this.contextToolboxHandler.onFocus(evt);\r\n this.visualizersManager.onFocus(evt);\r\n };\r\n EventManager.prototype.onKeyDown = function (evt) {\r\n var scCode = evt.getShortcutCode();\r\n if (this.onShortcut(scCode)) {\r\n this.visualizersManager.updateConnectionPoints();\r\n this.contextMenuHandler.onShortcut(evt);\r\n this.contextToolboxHandler.onShortcut(evt);\r\n evt.preventDefault = true;\r\n }\r\n else if (this.isShortcutForFocusInput(scCode))\r\n evt.preventDefault = true;\r\n this.contextMenuHandler.onKeyDown(evt);\r\n this.contextToolboxHandler.onKeyDown(evt);\r\n this.mouseHandler.onKeyDown(evt);\r\n };\r\n EventManager.prototype.onKeyUp = function (evt) {\r\n this.mouseHandler.onKeyUp(evt);\r\n };\r\n EventManager.prototype.onTextInputBlur = function (evt) {\r\n this.textInputHandler.onBlur(evt);\r\n this.contextMenuHandler.onTextInputBlur(evt);\r\n };\r\n EventManager.prototype.onTextInputFocus = function (evt) {\r\n this.textInputHandler.onFocus(evt);\r\n this.contextMenuHandler.onTextInputFocus(evt);\r\n };\r\n EventManager.prototype.onTextInputKeyDown = function (evt) {\r\n this.textInputHandler.onKeyDown(evt);\r\n };\r\n EventManager.prototype.onShortcut = function (code) {\r\n return this.control.commandManager.processShortcut(code) ||\r\n (this.mouseHandler.onShortcut(code));\r\n };\r\n EventManager.prototype.isShortcutForFocusInput = function (code) {\r\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) ||\r\n (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) ||\r\n code === key_1.KeyCode.Home || code === key_1.KeyCode.End ||\r\n code === key_1.KeyCode.Up || code === (key_1.KeyCode.Up | key_1.ModifierKey.Ctrl) || code === (key_1.KeyCode.Up | key_1.ModifierKey.Meta) ||\r\n code === key_1.KeyCode.Down || code === (key_1.KeyCode.Down | key_1.ModifierKey.Ctrl) || code === (key_1.KeyCode.Down | key_1.ModifierKey.Meta) ||\r\n code === key_1.KeyCode.Left || code === (key_1.KeyCode.Left | key_1.ModifierKey.Ctrl) || code === (key_1.KeyCode.Left | key_1.ModifierKey.Meta) ||\r\n code === key_1.KeyCode.Right || code === (key_1.KeyCode.Right | key_1.ModifierKey.Ctrl) || code === (key_1.KeyCode.Right | key_1.ModifierKey.Meta);\r\n };\r\n EventManager.prototype.onPaste = function (evt) {\r\n if (!this.textInputHandler.isTextInputActive() && this.control.commandManager.processPaste(evt.clipboardData)) {\r\n this.visualizersManager.updateConnectionPoints();\r\n evt.preventDefault = true;\r\n }\r\n };\r\n EventManager.prototype.onMouseWheel = function (evt) {\r\n if (this.mouseHandler.onWheel(evt))\r\n evt.preventDefault = true;\r\n };\r\n EventManager.prototype.isFocused = function () {\r\n return this.control.isFocused();\r\n };\r\n EventManager.prototype.processDragging = function (evt) {\r\n var draggingEvt = this.toolboxes.filter(function (t) { return t.draggingObject; }).map(function (t) { return t.draggingObject.evt; })[0];\r\n if (draggingEvt && !this.draggingEvent) {\r\n this.draggingEvent = draggingEvt;\r\n this.mouseHandler.onDragStart(this.draggingEvent);\r\n this.control.captureFocus();\r\n }\r\n else if (!draggingEvt && this.draggingEvent) {\r\n delete this.draggingEvent;\r\n this.mouseHandler.onDragEnd(evt);\r\n }\r\n };\r\n EventManager.prototype.onDocumentDragStart = function (itemKeys) {\r\n this.control.beginUpdate();\r\n this.control.captureFocus();\r\n this.onMouseOperation.raise(\"notifyDragStart\", itemKeys);\r\n };\r\n EventManager.prototype.onDocumentDragEnd = function (itemKeys) {\r\n this.onMouseOperation.raise(\"notifyDragEnd\", itemKeys);\r\n this.control.endUpdate();\r\n this.control.barManager.updateItemsState();\r\n };\r\n EventManager.prototype.onDocumentDragScrollStart = function () {\r\n this.onMouseOperation.raise1(function (l) { return l.notifyDragScrollStart(); });\r\n };\r\n EventManager.prototype.onDocumentDragScrollEnd = function () {\r\n this.onMouseOperation.raise1(function (l) { return l.notifyDragScrollEnd(); });\r\n };\r\n EventManager.prototype.onDocumentClick = function (itemKeys) {\r\n this.control.beginUpdate();\r\n this.control.endUpdate();\r\n this.control.barManager.updateItemsState();\r\n };\r\n EventManager.prototype.raiseTextInputStart = function (item, text, position, size) {\r\n this.onTextInputOperation.raise(\"notifyTextInputStart\", item, text, position, size);\r\n };\r\n EventManager.prototype.raiseTextInputEnd = function (item) {\r\n this.onTextInputOperation.raise(\"notifyTextInputEnd\", item);\r\n };\r\n EventManager.prototype.raiseTextInputPermissionsCheck = function (item, allowed) {\r\n this.onTextInputOperation.raise(\"notifyTextInputPermissionsCheck\", item, allowed);\r\n };\r\n EventManager.prototype.canFinishTextEditing = function () {\r\n return this.textInputHandler.canFinishTextEditing();\r\n };\r\n return EventManager;\r\n}());\r\nexports.EventManager = EventManager;\r\n\n\n/***/ }),\n/* 304 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandler = void 0;\r\nvar MouseHandlerDefaultState_1 = __webpack_require__(148);\r\nvar Event_1 = __webpack_require__(14);\r\nvar point_1 = __webpack_require__(1);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar MouseHandlerDefaultReadOnlyTouchState_1 = __webpack_require__(320);\r\nvar MouseHandlerDefaultReadOnlyState_1 = __webpack_require__(153);\r\nvar MouseHandlerDefaultTouchState_1 = __webpack_require__(321);\r\nvar key_1 = __webpack_require__(26);\r\nvar common_1 = __webpack_require__(34);\r\nvar MouseHandler = /** @class */ (function () {\r\n function MouseHandler(history, view, visualizerManager, contextToolboxHandler, shapeDescriptionManager, settings, permissionsProvider) {\r\n this.history = history;\r\n this.view = view;\r\n this.visualizerManager = visualizerManager;\r\n this.contextToolboxHandler = contextToolboxHandler;\r\n this.shapeDescriptionManager = shapeDescriptionManager;\r\n this.settings = settings;\r\n this.permissionsProvider = permissionsProvider;\r\n this.finishStateLock = 0;\r\n this.isTouchUIEnabled = false;\r\n this.readOnly = this.settings.readOnly;\r\n this.settings.onReadOnlyChanged.add(this);\r\n }\r\n MouseHandler.prototype.initialize = function (model, selection, isTouchUIEnabled) {\r\n this.model = model;\r\n this.selection = selection;\r\n this.isTouchUIEnabled = isTouchUIEnabled;\r\n this.allowMultipleSelection = true;\r\n this.allowCopyDiagramItems = true;\r\n this.allowSnapToCellOnDragDiagramItem = true;\r\n this.allowSnapToCellOnDragPoint = true;\r\n this.allowSnapToCellOnResizeShape = true;\r\n this.allowFixedDrag = true;\r\n this.allowZoomOnWheel = true;\r\n this.allowScrollPage = true;\r\n this.shouldScrollPage = false;\r\n this.copyDiagramItemsByCtrlAndShift = false;\r\n this.startScrollingPageByCtrl = false;\r\n this.initializeDefaultState();\r\n };\r\n MouseHandler.prototype.initializeDefaultState = function () {\r\n this.defaultState = this.readOnly ?\r\n (this.isTouchUIEnabled ?\r\n new MouseHandlerDefaultReadOnlyTouchState_1.MouseHandlerDefaultReadOnlyTouchState(this, this.history, this.selection, this.model, this.view, this.visualizerManager, this.shapeDescriptionManager, this.settings) :\r\n new MouseHandlerDefaultReadOnlyState_1.MouseHandlerDefaultReadOnlyState(this, this.history, this.selection, this.model, this.view, this.visualizerManager, this.shapeDescriptionManager, this.settings)) :\r\n (this.isTouchUIEnabled ?\r\n new MouseHandlerDefaultTouchState_1.MouseHandlerDefaultTouchState(this, this.history, this.selection, this.model, this.view, this.visualizerManager, this.shapeDescriptionManager, this.settings) :\r\n new MouseHandlerDefaultState_1.MouseHandlerDefaultState(this, this.history, this.selection, this.model, this.view, this.visualizerManager, this.shapeDescriptionManager, this.settings));\r\n this.switchToDefaultState();\r\n };\r\n MouseHandler.prototype.onMouseDown = function (evt) {\r\n this.mouseDownEvent = evt;\r\n this.state.onMouseDown(evt);\r\n };\r\n MouseHandler.prototype.onMouseMove = function (evt) {\r\n this.state.onMouseMove(evt);\r\n };\r\n MouseHandler.prototype.onMouseUp = function (evt) {\r\n this.state.onMouseUp(evt);\r\n };\r\n MouseHandler.prototype.onMouseDblClick = function (evt) {\r\n this.state.onMouseDblClick(evt);\r\n };\r\n MouseHandler.prototype.onMouseClick = function (evt) {\r\n this.state.onMouseClick(evt);\r\n };\r\n MouseHandler.prototype.onLongTouch = function (evt) {\r\n if (!evt.touches || evt.touches.length > 1)\r\n return;\r\n var key = evt.source.key;\r\n if (key === undefined)\r\n this.selection.clear();\r\n else if (this.selection.hasKey(key))\r\n this.selection.remove(key);\r\n else\r\n this.selection.add(key);\r\n };\r\n MouseHandler.prototype.onShortcut = function (code) {\r\n return this.state.onShortcut(code);\r\n };\r\n MouseHandler.prototype.onWheel = function (evt) {\r\n return this.state.onMouseWheel(evt);\r\n };\r\n MouseHandler.prototype.onDragStart = function (evt) {\r\n this.state.onDragStart(evt);\r\n };\r\n MouseHandler.prototype.onDragEnd = function (evt) {\r\n this.state.onDragEnd(evt);\r\n };\r\n MouseHandler.prototype.onKeyDown = function (evt) {\r\n this.state.onKeyDown(evt);\r\n };\r\n MouseHandler.prototype.onKeyUp = function (evt) {\r\n this.state.onKeyUp(evt);\r\n };\r\n MouseHandler.prototype.showContextToolbox = function (modelPoint, getPositionToInsertShapeTo, side, category, applyCallback, cancelCallback) {\r\n this.contextToolboxHandler.showContextToolbox(modelPoint, getPositionToInsertShapeTo, side, category, applyCallback, cancelCallback);\r\n };\r\n MouseHandler.prototype.hideContextToolbox = function (applyed) {\r\n this.contextToolboxHandler.hideContextToolbox(applyed);\r\n };\r\n MouseHandler.prototype.canScrollPage = function (evt) {\r\n if (this.startScrollingPageByCtrl) {\r\n if (!this.hasCtrlModifier(evt.modifiers))\r\n return false;\r\n if (!this.copyDiagramItemsByCtrlAndShift)\r\n return true;\r\n return evt.source.type !== Event_1.MouseEventElementType.Shape && evt.source.type !== Event_1.MouseEventElementType.Connector;\r\n }\r\n return this.allowScrollPage && this.shouldScrollPage;\r\n };\r\n MouseHandler.prototype.canMultipleSelection = function (evt) {\r\n return this.allowMultipleSelection && this.hasCtrlOrShiftModifier(evt.modifiers);\r\n };\r\n MouseHandler.prototype.canCopySelectedItems = function (evt) {\r\n if (!this.allowCopyDiagramItems)\r\n return false;\r\n return this.copyDiagramItemsByCtrlAndShift ? this.hasCtrlAndShiftModifier(evt.modifiers) : this.hasAltModifier(evt.modifiers);\r\n };\r\n MouseHandler.prototype.canCalculateFixedPosition = function (evt) {\r\n if (!this.allowFixedDrag || !this.hasShiftModifier(evt.modifiers))\r\n return false;\r\n if (this.copyDiagramItemsByCtrlAndShift && this.hasCtrlModifier(evt.modifiers))\r\n return false;\r\n return true;\r\n };\r\n MouseHandler.prototype.canStartZoomOnWheel = function (evt) {\r\n return this.allowZoomOnWheel && this.hasCtrlModifier(evt.modifiers);\r\n };\r\n MouseHandler.prototype.canFinishZoomOnWheel = function (evt) {\r\n return this.allowZoomOnWheel && !this.hasCtrlModifier(evt.modifiers);\r\n };\r\n MouseHandler.prototype.onStartScrollPageByKeyboard = function (evt) {\r\n if (this.canStartScrollingPageByKeyboard(evt)) {\r\n this.visualizerManager.onDocumentDragScrollStart();\r\n this.shouldScrollPage = true;\r\n }\r\n };\r\n MouseHandler.prototype.onFinishScrollPageByKeyboard = function (evt) {\r\n if (this.canEndScrollingPageByKeyboard(evt))\r\n this.finishScrollingPage();\r\n };\r\n MouseHandler.prototype.onFinishScrollPageByMouse = function (evt) {\r\n if (this.canEndScrollingPage(evt))\r\n this.finishScrollingPage();\r\n };\r\n MouseHandler.prototype.onDocumentDragStart = function (keys) {\r\n this.visualizerManager.onDocumentDragStart(keys);\r\n };\r\n MouseHandler.prototype.onDocumentDragEnd = function (keys) {\r\n this.visualizerManager.onDocumentDragEnd(keys);\r\n };\r\n MouseHandler.prototype.onDocumentDragScrollStart = function () {\r\n this.visualizerManager.onDocumentDragScrollStart();\r\n };\r\n MouseHandler.prototype.onDocumentDragScrollEnd = function () {\r\n this.visualizerManager.onDocumentDragScrollEnd();\r\n };\r\n MouseHandler.prototype.onDocumentClick = function (keys) {\r\n this.visualizerManager.onDocumentClick(keys);\r\n };\r\n MouseHandler.prototype.finishScrollingPage = function () {\r\n this.shouldScrollPage = false;\r\n this.visualizerManager.onDocumentDragScrollEnd();\r\n this.switchToDefaultState();\r\n };\r\n // utils\r\n MouseHandler.prototype.hasCtrlOrShiftModifier = function (key) {\r\n return this.hasCtrlModifier(key) || this.hasShiftModifier(key);\r\n };\r\n MouseHandler.prototype.hasCtrlAndShiftModifier = function (key) {\r\n return this.hasCtrlModifier(key) && this.hasShiftModifier(key);\r\n };\r\n MouseHandler.prototype.hasCtrlModifier = function (key) {\r\n return (key & key_1.ModifierKey.Ctrl) > 0;\r\n };\r\n MouseHandler.prototype.hasAltModifier = function (key) {\r\n return (key & key_1.ModifierKey.Alt) > 0;\r\n };\r\n MouseHandler.prototype.hasShiftModifier = function (key) {\r\n return (key & key_1.ModifierKey.Shift) > 0;\r\n };\r\n MouseHandler.prototype.canStartScrollingPageByKeyboard = function (evt) {\r\n return !this.startScrollingPageByCtrl && !this.shouldScrollPage && evt.keyCode === key_1.KeyCode.Space;\r\n };\r\n MouseHandler.prototype.canEndScrollingPageByKeyboard = function (evt) {\r\n return !this.startScrollingPageByCtrl && evt.keyCode === key_1.KeyCode.Space;\r\n };\r\n MouseHandler.prototype.canEndScrollingPage = function (evt) {\r\n return this.startScrollingPageByCtrl ? this.hasCtrlModifier(evt.modifiers) : true;\r\n };\r\n MouseHandler.prototype.getSnappedPointOnDragDiagramItem = function (evt, basePoint, fixedX, fixedY, startPoint) {\r\n var snapToCell = this.getSnapToCellOnDragDiagramItem(evt);\r\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));\r\n };\r\n MouseHandler.prototype.getSnappedPointOnDragPoint = function (evt, point, additionalSnappedPoint) {\r\n var snapToCell = this.getSnapToCellOnDragPoint(evt);\r\n var newPoint = new point_1.Point(this.getSnappedPos(point.x, true, snapToCell), this.getSnappedPos(point.y, false, snapToCell));\r\n if (additionalSnappedPoint === undefined || this.getSquareEuclideanDistance(point, newPoint) < this.getSquareEuclideanDistance(point, additionalSnappedPoint))\r\n return newPoint;\r\n else\r\n return additionalSnappedPoint;\r\n };\r\n MouseHandler.prototype.getSquareEuclideanDistance = function (left, right) {\r\n var diffX = left.x - right.x;\r\n var diffY = left.y - right.y;\r\n return diffX * diffX + diffY * diffY;\r\n };\r\n MouseHandler.prototype.getSnappedOffsetOnDragPoint = function (evt, startPoint) {\r\n var snapToCell = this.getSnapToCellOnDragPoint(evt);\r\n return new point_1.Point(this.getSnappedPos(evt.modelPoint.x - startPoint.x, true, snapToCell), this.getSnappedPos(evt.modelPoint.y - startPoint.y, false, snapToCell));\r\n };\r\n MouseHandler.prototype.lockAspectRatioOnShapeResize = function (evt) {\r\n return this.hasShiftModifier(evt.modifiers);\r\n };\r\n MouseHandler.prototype.getSnappedPositionOnResizeShape = function (evt, pos, isHorizontal) {\r\n if (!this.getSnapToCellOnResizeShape(evt))\r\n return pos;\r\n return ModelUtils_1.ModelUtils.getSnappedPos(this.model, this.settings.gridSize, pos, isHorizontal);\r\n };\r\n MouseHandler.prototype.getSnappedPos = function (pos, isHorizontal, snapToCell) {\r\n return snapToCell ? ModelUtils_1.ModelUtils.getSnappedPos(this.model, this.settings.gridSize, pos, isHorizontal) : pos;\r\n };\r\n MouseHandler.prototype.getFixedXPosition = function (evt, basePoint, fixedX, startPoint) {\r\n return fixedX ? basePoint.x : basePoint.x + evt.modelPoint.x - startPoint.x;\r\n };\r\n MouseHandler.prototype.getFixedYPosition = function (evt, basePoint, fixedY, startPoint) {\r\n return fixedY ? basePoint.y : basePoint.y + evt.modelPoint.y - startPoint.y;\r\n };\r\n MouseHandler.prototype.getSnapToCellOnDragDiagramItem = function (evt) {\r\n return this.allowSnapToCellOnDragDiagramItem &&\r\n this.settings.snapToGrid &&\r\n !this.hasCtrlModifier(evt.modifiers);\r\n };\r\n MouseHandler.prototype.getSnapToCellOnDragPoint = function (evt) {\r\n return this.allowSnapToCellOnDragPoint &&\r\n this.settings.snapToGrid &&\r\n !this.hasCtrlModifier(evt.modifiers);\r\n };\r\n MouseHandler.prototype.getSnapToCellOnResizeShape = function (evt) {\r\n return this.allowSnapToCellOnResizeShape &&\r\n this.settings.snapToGrid &&\r\n !this.hasCtrlModifier(evt.modifiers);\r\n };\r\n MouseHandler.prototype.tryUpdateModelSize = function (processPoints) {\r\n this.lockPermissions();\r\n ModelUtils_1.ModelUtils.tryUpdateModelRectangle(this.history, processPoints);\r\n this.unlockPermissions();\r\n };\r\n MouseHandler.prototype.canAddDiagramItemToSelection = function (evt) {\r\n return evt.source.key && (evt.button === Event_1.MouseButton.Left || evt.button === Event_1.MouseButton.Right);\r\n };\r\n MouseHandler.prototype.addDiagramItemToSelection = function (evt) {\r\n this.pressedDiagramItemKey = evt.source.key;\r\n this.pressedDiagramItemInSelection = this.selection.hasKey(this.pressedDiagramItemKey);\r\n if (this.canMultipleSelection(evt))\r\n this.selection.add(evt.source.key);\r\n else\r\n this.changeSingleSelection(evt.source.key);\r\n };\r\n MouseHandler.prototype.canRemoveDiagramItemToSelection = function (evt) {\r\n return this.pressedDiagramItemKey &&\r\n evt.source.key &&\r\n this.pressedDiagramItemKey === evt.source.key &&\r\n (evt.button === Event_1.MouseButton.Left || evt.button === Event_1.MouseButton.Right);\r\n };\r\n MouseHandler.prototype.removeDiagramItemFromSelection = function (button, sourceKey) {\r\n if (common_1.isDefined(sourceKey) && button === Event_1.MouseButton.Left && this.pressedDiagramItemInSelection && this.selection.getKeys().length > 1)\r\n this.selection.remove(sourceKey);\r\n };\r\n MouseHandler.prototype.changeSingleSelection = function (key) {\r\n if (!this.selection.hasKey(key))\r\n this.selection.set([key]);\r\n };\r\n MouseHandler.prototype.beginStorePermissions = function () {\r\n this.permissionsProvider.beginStorePermissions();\r\n };\r\n MouseHandler.prototype.endStorePermissions = function () {\r\n this.permissionsProvider.endStorePermissions();\r\n };\r\n MouseHandler.prototype.isStoredPermissionsGranted = function () {\r\n return this.permissionsProvider.isStoredPermissionsGranted();\r\n };\r\n MouseHandler.prototype.lockPermissions = function () {\r\n this.permissionsProvider.lockPermissions();\r\n };\r\n MouseHandler.prototype.unlockPermissions = function () {\r\n this.permissionsProvider.unlockPermissions();\r\n };\r\n MouseHandler.prototype.canPerformChangeConnection = function (connector, operationParams) {\r\n var allowed = true;\r\n if (connector)\r\n allowed = this.permissionsProvider.canChangeConnection(connector, operationParams.item, operationParams.oldItem, operationParams.position, operationParams.connectionPointIndex);\r\n else if (operationParams.item)\r\n allowed = this.permissionsProvider.canChangeConnection(undefined, operationParams.item, operationParams.oldItem, operationParams.position, operationParams.connectionPointIndex);\r\n return allowed;\r\n };\r\n MouseHandler.prototype.canPerformChangeConnectionOnUpdateUI = function (connector, operationParams) {\r\n this.permissionsProvider.beginUpdateUI();\r\n var allowed = this.canPerformChangeConnection(connector, operationParams);\r\n this.permissionsProvider.endUpdateUI();\r\n return allowed;\r\n };\r\n MouseHandler.prototype.canFinishTextEditing = function () {\r\n return this.visualizerManager.canFinishTextEditing();\r\n };\r\n MouseHandler.prototype.restartState = function () {\r\n if (this.state && !this.finishStateLock) {\r\n this.finishStateLock++;\r\n this.state.finish();\r\n this.finishStateLock--;\r\n }\r\n this.state.start();\r\n };\r\n // switch state\r\n MouseHandler.prototype.switchToDefaultState = function () {\r\n this.switchState(this.defaultState);\r\n };\r\n MouseHandler.prototype.switchState = function (state) {\r\n this.newState = state;\r\n if (this.state && !this.finishStateLock) {\r\n this.finishStateLock++;\r\n this.state.finish();\r\n this.finishStateLock--;\r\n }\r\n if (this.newState) {\r\n this.state = this.newState;\r\n this.state.start();\r\n this.newState = undefined;\r\n }\r\n };\r\n MouseHandler.prototype.addInteractingItem = function (item, operation) {\r\n this.permissionsProvider.addInteractingItem(item, operation);\r\n };\r\n MouseHandler.prototype.clearInteractingItems = function () {\r\n this.permissionsProvider.clearInteractingItems();\r\n };\r\n MouseHandler.prototype.notifyReadOnlyChanged = function (readOnly) {\r\n this.readOnly = readOnly;\r\n this.initializeDefaultState();\r\n };\r\n MouseHandler.prototype.notifySelectionRectShow = function (rect) { };\r\n MouseHandler.prototype.notifySelectionRectHide = function () { };\r\n MouseHandler.prototype.notifyResizeInfoShow = function (point, text) { };\r\n MouseHandler.prototype.notifyResizeInfoHide = function () { };\r\n MouseHandler.prototype.notifyConnectionPointsShow = function (key, points, activePointIndex, outsideRectangle) {\r\n this.state.onConnectionPointsShow(key, points);\r\n };\r\n MouseHandler.prototype.notifyConnectionPointsHide = function () { };\r\n MouseHandler.prototype.notifyConnectionTargetShow = function (key, info) {\r\n this.state.onConnectionTargetShow(key, info);\r\n };\r\n MouseHandler.prototype.notifyConnectionTargetHide = function () { };\r\n MouseHandler.prototype.notifyContainerTargetShow = function (key, info) { };\r\n MouseHandler.prototype.notifyContainerTargetHide = function () { };\r\n MouseHandler.prototype.notifyExtensionLinesShow = function (lines) { };\r\n MouseHandler.prototype.notifyExtensionLinesHide = function () { };\r\n return MouseHandler;\r\n}());\r\nexports.MouseHandler = MouseHandler;\r\n\n\n/***/ }),\n/* 305 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerMoveConnectorPointState = void 0;\r\nvar point_1 = __webpack_require__(1);\r\nvar MouseHandlerMoveConnectorPointStateBase_1 = __webpack_require__(149);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar ConnectorProperties_1 = __webpack_require__(30);\r\nvar MouseHandlerMoveConnectorPointState = /** @class */ (function (_super) {\r\n __extends(MouseHandlerMoveConnectorPointState, _super);\r\n function MouseHandlerMoveConnectorPointState() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MouseHandlerMoveConnectorPointState.prototype.onMouseDown = function (evt) {\r\n this.connector = this.model.findConnector(evt.source.key);\r\n this.pointIndex = parseInt(evt.source.value);\r\n if (this.pointIndex === 0)\r\n this.pointPosition = Connector_1.ConnectorPosition.Begin;\r\n else if (this.pointIndex === this.connector.points.length - 1)\r\n this.pointPosition = Connector_1.ConnectorPosition.End;\r\n this.handler.addInteractingItem(this.connector);\r\n _super.prototype.onMouseDown.call(this, evt);\r\n };\r\n MouseHandlerMoveConnectorPointState.prototype.onApplyChanges = function (evt) {\r\n if (this.connector.properties.lineOption === ConnectorProperties_1.ConnectorLineOption.Straight ||\r\n this.pointIndex === 0 || this.pointIndex === this.connector.points.length - 1)\r\n _super.prototype.onApplyChanges.call(this, evt);\r\n };\r\n MouseHandlerMoveConnectorPointState.prototype.onFinishWithChanges = function () {\r\n _super.prototype.onFinishWithChanges.call(this);\r\n ModelUtils_1.ModelUtils.deleteConnectorUnnecessaryPoints(this.history, this.connector);\r\n this.handler.tryUpdateModelSize();\r\n };\r\n MouseHandlerMoveConnectorPointState.prototype.getSnappedPoint = function (evt, point) {\r\n var points = this.connector.points;\r\n var index = this.pointIndex;\r\n if (0 < index && index < points.length - 1) {\r\n var tg = (points[index + 1].y - points[index - 1].y) / (points[index + 1].x - points[index - 1].x);\r\n var x = point.x;\r\n var y = points[index + 1].y - (points[index + 1].x - x) * tg;\r\n return this.handler.getSnappedPointOnDragPoint(evt, point, new point_1.Point(x, y));\r\n }\r\n return this.handler.getSnappedPointOnDragPoint(evt, point);\r\n };\r\n return MouseHandlerMoveConnectorPointState;\r\n}(MouseHandlerMoveConnectorPointStateBase_1.MouseHandlerMoveConnectorPointStateBase));\r\nexports.MouseHandlerMoveConnectorPointState = MouseHandlerMoveConnectorPointState;\r\n\n\n/***/ }),\n/* 306 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerResizeShapeState = void 0;\r\nvar size_1 = __webpack_require__(2);\r\nvar point_1 = __webpack_require__(1);\r\nvar Event_1 = __webpack_require__(14);\r\nvar MouseHandlerDraggingState_1 = __webpack_require__(35);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar ShapeDescription_1 = __webpack_require__(7);\r\nvar ModelOperationSettings_1 = __webpack_require__(16);\r\nvar MouseHandlerResizeShapeState = /** @class */ (function (_super) {\r\n __extends(MouseHandlerResizeShapeState, _super);\r\n function MouseHandlerResizeShapeState(handler, history, model, selection, visualizerManager, settings) {\r\n var _this = _super.call(this, handler, history) || this;\r\n _this.model = model;\r\n _this.selection = selection;\r\n _this.visualizerManager = visualizerManager;\r\n _this.settings = settings;\r\n _this.startScrollLeft = 0;\r\n _this.startScrollTop = 0;\r\n _this.rotation = 0;\r\n return _this;\r\n }\r\n MouseHandlerResizeShapeState.prototype.finish = function () {\r\n this.visualizerManager.resetResizeInfo();\r\n this.visualizerManager.resetExtensionLines();\r\n _super.prototype.finish.call(this);\r\n };\r\n MouseHandlerResizeShapeState.prototype.onMouseDown = function (evt) {\r\n var _this = this;\r\n var source = parseInt(evt.source.value);\r\n this.resizeEventSource = source;\r\n this.startPoint = evt.modelPoint;\r\n this.lockH = source === Event_1.ResizeEventSource.ResizeBox_S || source === Event_1.ResizeEventSource.ResizeBox_N;\r\n this.lockV = source === Event_1.ResizeEventSource.ResizeBox_E || source === Event_1.ResizeEventSource.ResizeBox_W;\r\n this.sideH = source === Event_1.ResizeEventSource.ResizeBox_E || source === Event_1.ResizeEventSource.ResizeBox_NE || source === Event_1.ResizeEventSource.ResizeBox_SE;\r\n this.sideV = source === Event_1.ResizeEventSource.ResizeBox_SE || source === Event_1.ResizeEventSource.ResizeBox_S || source === Event_1.ResizeEventSource.ResizeBox_SW;\r\n this.shapes = this.selection.getSelectedShapes();\r\n if (this.shapes.length === 0) {\r\n this.handler.switchToDefaultState();\r\n return;\r\n }\r\n this.shapes.forEach(function (shape) {\r\n _this.handler.addInteractingItem(shape, ModelOperationSettings_1.DiagramModelOperation.ResizeShape);\r\n _this.handler.addInteractingItem(shape, ModelOperationSettings_1.DiagramModelOperation.MoveShape);\r\n });\r\n this.connectors = this.selection.getSelectedConnectors();\r\n this.startRectangle = ModelUtils_1.ModelUtils.createRectangle(this.shapes);\r\n this.startShapeSizes = this.shapes.map(function (shape) { return shape.size.clone(); });\r\n this.startShapePositions = this.shapes.map(function (shape) { return shape.position.clone(); });\r\n this.startConnectorPoints = this.connectors.map(function (c) { return c.points.map(function (p) { return p.clone(); }); });\r\n _super.prototype.onMouseDown.call(this, evt);\r\n };\r\n MouseHandlerResizeShapeState.prototype.onMouseMove = function (evt) {\r\n _super.prototype.onMouseMove.call(this, evt);\r\n var shapes = this.selection.getSelectedShapes();\r\n this.visualizerManager.setExtensionLines(shapes);\r\n };\r\n MouseHandlerResizeShapeState.prototype.onApplyChanges = function (evt) {\r\n var _this = this;\r\n var rectangle = ModelUtils_1.ModelUtils.createRectangle(this.shapes);\r\n var minWidth = this.shapes.length === 1 ? this.shapes[0].getMinWidth(this.settings.shapeMinWidth) : ShapeDescription_1.ShapeMinDimension;\r\n var minHeight = this.shapes.length === 1 ? this.shapes[0].getMinHeight(this.settings.shapeMinHeight) : ShapeDescription_1.ShapeMinDimension;\r\n var maxWidth = this.shapes.length === 1 ? this.shapes[0].getMaxWidth(this.settings.shapeMaxWidth) : undefined;\r\n var maxHeight = this.shapes.length === 1 ? this.shapes[0].getMaxHeight(this.settings.shapeMaxHeight) : undefined;\r\n var size = this.getSize(evt, rectangle.createPosition(), this.startRectangle.createSize(), minWidth, minHeight, maxWidth, maxHeight, this.handler.lockAspectRatioOnShapeResize(evt));\r\n var pos = this.getPosition(evt, size, this.startRectangle.createSize(), this.startRectangle.createPosition());\r\n var ratioX = size.width / this.startRectangle.width;\r\n var ratioY = size.height / this.startRectangle.height;\r\n this.shapes.forEach(function (shape, index) {\r\n var shapeWidth = _this.startShapeSizes[index].width * (shape.allowResizeHorizontally ? ratioX : 1);\r\n shapeWidth = _this.getNormalizedSize(shapeWidth, shape.getMinWidth(_this.settings.shapeMinWidth), shape.getMaxWidth(_this.settings.shapeMaxWidth));\r\n var shapeHeight = _this.startShapeSizes[index].height * (shape.allowResizeVertically ? ratioY : 1);\r\n shapeHeight = _this.getNormalizedSize(shapeHeight, shape.getMinHeight(_this.settings.shapeMinHeight), shape.getMaxHeight(_this.settings.shapeMaxHeight));\r\n var shapeLeft = shape.allowResizeHorizontally ? (pos.x + (_this.startShapePositions[index].x - _this.startRectangle.x) * ratioX) : _this.startShapePositions[index].x;\r\n var shapeTop = shape.allowResizeVertically ? (pos.y + (_this.startShapePositions[index].y - _this.startRectangle.y) * ratioY) : _this.startShapePositions[index].y;\r\n ModelUtils_1.ModelUtils.setShapeSize(_this.history, _this.model, shape, new point_1.Point(shapeLeft, shapeTop), new size_1.Size(shapeWidth, shapeHeight));\r\n });\r\n this.connectors.forEach(function (connector, index) {\r\n var startPtIndex = connector.beginItem ? 1 : 0;\r\n var endPtIndex = connector.endItem ? (connector.points.length - 2) : (connector.points.length - 1);\r\n for (var i = startPtIndex; i <= endPtIndex; i++) {\r\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);\r\n ModelUtils_1.ModelUtils.moveConnectorPoint(_this.history, connector, i, connectorPtPos);\r\n }\r\n });\r\n var shapes = this.selection.getSelectedShapes(false, true);\r\n shapes.forEach(function (shape) {\r\n ModelUtils_1.ModelUtils.updateShapeAttachedConnectors(_this.history, _this.model, shape);\r\n });\r\n this.tryUpdateModelSize();\r\n this.visualizerManager.setResizeInfo(this.shapes);\r\n };\r\n MouseHandlerResizeShapeState.prototype.tryUpdateModelSize = function () {\r\n var _this = this;\r\n this.handler.tryUpdateModelSize(function (offsetLeft, offsetTop) {\r\n _this.startShapePositions.forEach(function (pt) {\r\n pt.x += offsetLeft;\r\n pt.y += offsetTop;\r\n });\r\n _this.startConnectorPoints.forEach(function (connector) {\r\n connector.forEach(function (pt) {\r\n pt.x += offsetLeft;\r\n pt.y += offsetTop;\r\n });\r\n });\r\n _this.startRectangle.x += offsetLeft;\r\n _this.startRectangle.y += offsetTop;\r\n _this.startPoint.x += offsetLeft;\r\n _this.startPoint.y += offsetTop;\r\n });\r\n };\r\n MouseHandlerResizeShapeState.prototype.getDraggingElementKeys = function () {\r\n return this.shapes.map(function (shape) { return shape.key; });\r\n };\r\n MouseHandlerResizeShapeState.prototype.getNormalizedSize = function (value, minValue, maxValue) {\r\n if (minValue !== undefined)\r\n value = Math.max(value, minValue);\r\n if (maxValue !== undefined)\r\n value = Math.min(value, maxValue);\r\n return value;\r\n };\r\n MouseHandlerResizeShapeState.prototype.getSize = function (evt, position, startSize, minWidth, minHeight, maxWidth, maxHeight, lockAspectRatio) {\r\n var absDeltaX = evt.modelPoint.x - (this.startScrollLeft - evt.scrollX) - this.startPoint.x;\r\n var absDeltaY = evt.modelPoint.y - (this.startScrollTop - evt.scrollY) - this.startPoint.y;\r\n var deltaX = absDeltaX * Math.cos(this.rotation) - (-absDeltaY) * Math.sin(this.rotation);\r\n var deltaY = -(absDeltaX * Math.sin(this.rotation) + (-absDeltaY) * Math.cos(this.rotation));\r\n var newWidth;\r\n var newHeight;\r\n deltaY = !this.sideV && deltaY > 0 ? Math.min(startSize.height + 1, deltaY) : deltaY;\r\n deltaX = !this.sideH && deltaX > 0 ? Math.min(startSize.width + 1, deltaX) : deltaX;\r\n if (!this.lockH && !this.lockV && lockAspectRatio)\r\n if (Math.abs(deltaX) > Math.abs(deltaY)) {\r\n newWidth = this.getNormalizedSize(this.sideH ? (startSize.width + deltaX) : (startSize.width - deltaX), minWidth, maxWidth);\r\n newHeight = startSize.height * (newWidth / startSize.width);\r\n }\r\n else {\r\n newHeight = this.getNormalizedSize(this.sideV ? (startSize.height + deltaY) : (startSize.height - deltaY), minHeight, maxHeight);\r\n newWidth = startSize.width * (newHeight / startSize.height);\r\n }\r\n else {\r\n deltaX = this.lockH ? 0 : deltaX;\r\n deltaY = this.lockV ? 0 : deltaY;\r\n newWidth = this.getNormalizedSize(this.sideH ? (startSize.width + deltaX) : (startSize.width - deltaX), minWidth, maxWidth);\r\n newHeight = this.getNormalizedSize(this.sideV ? (startSize.height + deltaY) : (startSize.height - deltaY), minHeight, maxHeight);\r\n }\r\n if (!this.lockH)\r\n newWidth = this.getSnappedPosition(evt, position.x + newWidth, true) - position.x;\r\n if (!this.lockV)\r\n newHeight = this.getSnappedPosition(evt, position.y + newHeight, false) - position.y;\r\n return new size_1.Size(newWidth, newHeight);\r\n };\r\n MouseHandlerResizeShapeState.prototype.getPosition = function (evt, size, startSize, startPosition) {\r\n var x = startPosition.x;\r\n var y = startPosition.y;\r\n if (this.resizeEventSource === Event_1.ResizeEventSource.ResizeBox_N ||\r\n this.resizeEventSource === Event_1.ResizeEventSource.ResizeBox_NE ||\r\n this.resizeEventSource === Event_1.ResizeEventSource.ResizeBox_NW) {\r\n y += startSize.height - size.height;\r\n var snappedY = this.getSnappedPosition(evt, y, false);\r\n size.height += y - snappedY;\r\n y = snappedY;\r\n }\r\n if (this.resizeEventSource === Event_1.ResizeEventSource.ResizeBox_W ||\r\n this.resizeEventSource === Event_1.ResizeEventSource.ResizeBox_NW ||\r\n this.resizeEventSource === Event_1.ResizeEventSource.ResizeBox_SW) {\r\n x += startSize.width - size.width;\r\n var snappedX = this.getSnappedPosition(evt, x, true);\r\n size.width += x - snappedX;\r\n x = snappedX;\r\n }\r\n return new point_1.Point(x, y);\r\n };\r\n MouseHandlerResizeShapeState.prototype.getSnappedPosition = function (evt, pos, isHorizontal) {\r\n return this.handler.getSnappedPositionOnResizeShape(evt, pos, isHorizontal);\r\n };\r\n return MouseHandlerResizeShapeState;\r\n}(MouseHandlerDraggingState_1.MouseHandlerDraggingState));\r\nexports.MouseHandlerResizeShapeState = MouseHandlerResizeShapeState;\r\n\n\n/***/ }),\n/* 307 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerMoveConnectorSideState = void 0;\r\nvar MouseHandlerDraggingState_1 = __webpack_require__(35);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar MouseHandlerMoveConnectorSideState = /** @class */ (function (_super) {\r\n __extends(MouseHandlerMoveConnectorSideState, _super);\r\n function MouseHandlerMoveConnectorSideState(handler, history, model) {\r\n var _this = _super.call(this, handler, history) || this;\r\n _this.model = model;\r\n return _this;\r\n }\r\n MouseHandlerMoveConnectorSideState.prototype.onMouseDown = function (evt) {\r\n this.startPoint = evt.modelPoint;\r\n this.connectorKey = evt.source.key;\r\n this.pointIndex = parseInt(evt.source.value) + 1;\r\n _super.prototype.onMouseDown.call(this, evt);\r\n };\r\n MouseHandlerMoveConnectorSideState.prototype.onApplyChanges = function (evt) {\r\n var point = this.getSnappedPoint(evt, evt.modelPoint);\r\n var connector = this.model.findConnector(this.connectorKey);\r\n if (!this.pointCreated) {\r\n this.handler.addInteractingItem(connector);\r\n ModelUtils_1.ModelUtils.addConnectorPoint(this.history, this.connectorKey, this.pointIndex, point.clone());\r\n this.pointCreated = true;\r\n }\r\n else\r\n ModelUtils_1.ModelUtils.moveConnectorPoint(this.history, connector, this.pointIndex, point);\r\n this.handler.tryUpdateModelSize();\r\n };\r\n MouseHandlerMoveConnectorSideState.prototype.onFinishWithChanges = function () {\r\n ModelUtils_1.ModelUtils.deleteConnectorUnnecessaryPoints(this.history, this.model.findConnector(this.connectorKey));\r\n this.handler.tryUpdateModelSize();\r\n };\r\n MouseHandlerMoveConnectorSideState.prototype.getDraggingElementKeys = function () {\r\n return [this.connectorKey];\r\n };\r\n return MouseHandlerMoveConnectorSideState;\r\n}(MouseHandlerDraggingState_1.MouseHandlerDraggingState));\r\nexports.MouseHandlerMoveConnectorSideState = MouseHandlerMoveConnectorSideState;\r\n\n\n/***/ }),\n/* 308 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerDragParameterPointState = void 0;\r\nvar MouseHandlerDraggingState_1 = __webpack_require__(35);\r\nvar ChangeShapeParametersHistoryItem_1 = __webpack_require__(114);\r\nvar MouseHandlerDragParameterPointState = /** @class */ (function (_super) {\r\n __extends(MouseHandlerDragParameterPointState, _super);\r\n function MouseHandlerDragParameterPointState(handler, history, model) {\r\n var _this = _super.call(this, handler, history) || this;\r\n _this.model = model;\r\n _this.startScrollLeft = 0;\r\n _this.startScrollTop = 0;\r\n return _this;\r\n }\r\n MouseHandlerDragParameterPointState.prototype.onMouseDown = function (evt) {\r\n this.startPoint = evt.modelPoint;\r\n this.shape = this.model.findShape(evt.source.key);\r\n this.parameterPointKey = evt.source.value;\r\n this.startParameters = this.shape.parameters.clone();\r\n _super.prototype.onMouseDown.call(this, evt);\r\n };\r\n MouseHandlerDragParameterPointState.prototype.onApplyChanges = function (evt) {\r\n var offset = this.handler.getSnappedOffsetOnDragPoint(evt, this.startPoint);\r\n var parameters = this.startParameters.clone();\r\n this.shape.description.modifyParameters(this.shape, parameters, offset.x, offset.y);\r\n this.history.addAndRedo(new ChangeShapeParametersHistoryItem_1.ChangeShapeParametersHistoryItem(this.shape.key, parameters));\r\n };\r\n MouseHandlerDragParameterPointState.prototype.getDraggingElementKeys = function () {\r\n return [this.shape.key];\r\n };\r\n return MouseHandlerDragParameterPointState;\r\n}(MouseHandlerDraggingState_1.MouseHandlerDraggingState));\r\nexports.MouseHandlerDragParameterPointState = MouseHandlerDragParameterPointState;\r\n\n\n/***/ }),\n/* 309 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerCreateConnectorState = void 0;\r\nvar Connector_1 = __webpack_require__(6);\r\nvar AddConnectionHistoryItem_1 = __webpack_require__(49);\r\nvar AddConnectorHistoryItem_1 = __webpack_require__(64);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar MouseHandlerMoveConnectorPointStateBase_1 = __webpack_require__(149);\r\nvar SetSelectionHistoryItem_1 = __webpack_require__(66);\r\nvar AddShapeHistoryItem_1 = __webpack_require__(53);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar DeleteConnectionHistoryItem_1 = __webpack_require__(65);\r\nvar DeleteConnectorHistoryItem_1 = __webpack_require__(115);\r\nvar MouseHandlerCreateConnectorState = /** @class */ (function (_super) {\r\n __extends(MouseHandlerCreateConnectorState, _super);\r\n function MouseHandlerCreateConnectorState(handler, history, model, visualizerManager, shapeDescriptionManager, selection, connectionPointIndex) {\r\n var _this = _super.call(this, handler, history, model, visualizerManager) || this;\r\n _this.shapeDescriptionManager = shapeDescriptionManager;\r\n _this.selection = selection;\r\n _this.connectionPointIndex = connectionPointIndex;\r\n return _this;\r\n }\r\n MouseHandlerCreateConnectorState.prototype.onMouseDown = function (evt) {\r\n if (this.connectionPointIndex === undefined)\r\n this.connectionPointIndex = parseInt(evt.source.value);\r\n this.connectedItem = this.model.findItem(evt.source.key);\r\n this.pointIndex = 1;\r\n this.pointPosition = Connector_1.ConnectorPosition.End;\r\n _super.prototype.onMouseDown.call(this, evt);\r\n };\r\n MouseHandlerCreateConnectorState.prototype.onMouseUp = function (evt) {\r\n if (this.connector && !this.connector.endItem)\r\n this.createNewShapeAtConnectorEnd(evt);\r\n _super.prototype.onMouseUp.call(this, evt);\r\n };\r\n MouseHandlerCreateConnectorState.prototype.onApplyChanges = function (evt) {\r\n var point = this.getSnappedPoint(evt, evt.modelPoint);\r\n if (!this.connector) {\r\n var historyItem = new AddConnectorHistoryItem_1.AddConnectorHistoryItem([this.connectedItem.getConnectionPointPosition(this.connectionPointIndex, point), point]);\r\n this.history.addAndRedo(historyItem);\r\n this.connector = this.model.findConnector(historyItem.connectorKey);\r\n this.handler.addInteractingItem(this.connector);\r\n this.history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(this.connector, this.connectedItem, this.connectionPointIndex, Connector_1.ConnectorPosition.Begin));\r\n ModelUtils_1.ModelUtils.updateNewConnectorProperties(this.history, this.selection, this.connector.key);\r\n }\r\n else\r\n _super.prototype.onApplyChanges.call(this, evt);\r\n };\r\n MouseHandlerCreateConnectorState.prototype.checkStoredPermissionsOnFinish = function () {\r\n if (this.connector && this.connector.endItem)\r\n _super.prototype.checkStoredPermissionsOnFinish.call(this);\r\n };\r\n MouseHandlerCreateConnectorState.prototype.onFinishWithChanges = function () {\r\n _super.prototype.onFinishWithChanges.call(this);\r\n this.history.addAndRedo(new SetSelectionHistoryItem_1.SetSelectionHistoryItem(this.selection, [this.connector.key]));\r\n };\r\n MouseHandlerCreateConnectorState.prototype.createNewShapeAtConnectorEnd = function (evt) {\r\n var _this = this;\r\n var beginShape = this.connector && this.connector.beginItem;\r\n if (!beginShape)\r\n return;\r\n var side = this.getNewShapeSide(this.connector);\r\n var point = this.getSnappedPoint(evt, evt.modelPoint);\r\n var category = this.shapeDescriptionManager.getCategoryByDescription(beginShape.description);\r\n var getPositionToInsertShapeTo = function (shape) {\r\n var clonedShape = shape.clone();\r\n clonedShape.position = point.clone();\r\n var position = _this.getNewShapePosition(clonedShape, side);\r\n return _this.handler.getSnappedPointOnDragPoint(evt, position);\r\n };\r\n this.handler.showContextToolbox(point, getPositionToInsertShapeTo, side, category, function (shapeType) {\r\n if (!shapeType)\r\n return;\r\n _this.handler.beginStorePermissions();\r\n _this.history.beginTransaction();\r\n var historyItem = new AddShapeHistoryItem_1.AddShapeHistoryItem(_this.shapeDescriptionManager.get(shapeType), point);\r\n _this.history.addAndRedo(historyItem);\r\n var shape = _this.model.findShape(historyItem.shapeKey);\r\n var container = _this.targetItem && _this.model.findNearestContainer(_this.targetItem.key);\r\n if (container)\r\n ModelUtils_1.ModelUtils.insertToContainer(_this.history, _this.model, shape, container);\r\n var newPosition = _this.getNewShapePosition(shape, side);\r\n ModelUtils_1.ModelUtils.setShapePosition(_this.history, _this.model, shape, _this.getSnappedPoint(evt, newPosition));\r\n ModelUtils_1.ModelUtils.updateNewShapeProperties(_this.history, _this.selection, shape.key);\r\n _this.history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(_this.connector, shape, shape.getConnectionPointIndexForSide(side), Connector_1.ConnectorPosition.End));\r\n if (container)\r\n ModelUtils_1.ModelUtils.updateConnectorContainer(_this.history, _this.model, _this.connector);\r\n ModelUtils_1.ModelUtils.updateShapeAttachedConnectors(_this.history, _this.model, shape);\r\n if (!_this.handler.isStoredPermissionsGranted()) {\r\n _this.handler.lockPermissions();\r\n _this.history.undoTransaction();\r\n _this.handler.unlockPermissions();\r\n _this.checkNewConnectorPermissions();\r\n }\r\n else {\r\n _this.handler.tryUpdateModelSize();\r\n _this.history.addAndRedo(new SetSelectionHistoryItem_1.SetSelectionHistoryItem(_this.selection, [shape.key]));\r\n }\r\n _this.history.endTransaction();\r\n _this.handler.endStorePermissions();\r\n _this.handler.hideContextToolbox(true);\r\n }, function () {\r\n _this.checkNewConnectorPermissions();\r\n });\r\n };\r\n MouseHandlerCreateConnectorState.prototype.checkNewConnectorPermissions = function () {\r\n if (this.connector && !this.handler.canPerformChangeConnection(this.connector, { position: Connector_1.ConnectorPosition.End, connectionPointIndex: -1 })) {\r\n this.handler.lockPermissions();\r\n this.history.beginTransaction();\r\n this.history.addAndRedo(new SetSelectionHistoryItem_1.SetSelectionHistoryItem(this.selection, []));\r\n if (this.connector.beginItem)\r\n this.history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(this.connector, Connector_1.ConnectorPosition.Begin));\r\n if (this.connector.endItem)\r\n this.history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(this.connector, Connector_1.ConnectorPosition.End));\r\n this.history.addAndRedo(new DeleteConnectorHistoryItem_1.DeleteConnectorHistoryItem(this.connector.key));\r\n this.history.endTransaction();\r\n this.handler.unlockPermissions();\r\n }\r\n };\r\n MouseHandlerCreateConnectorState.prototype.getNewShapePosition = function (shape, side) {\r\n switch (side) {\r\n case DiagramItem_1.ConnectionPointSide.North:\r\n return shape.position.clone().offset(-shape.size.width / 2, 0);\r\n case DiagramItem_1.ConnectionPointSide.South:\r\n return shape.position.clone().offset(-shape.size.width / 2, -shape.size.height);\r\n case DiagramItem_1.ConnectionPointSide.East:\r\n return shape.position.clone().offset(-shape.size.width, -shape.size.height / 2);\r\n case DiagramItem_1.ConnectionPointSide.West:\r\n return shape.position.clone().offset(0, -shape.size.height / 2);\r\n }\r\n };\r\n MouseHandlerCreateConnectorState.prototype.getNewShapeSide = function (connector) {\r\n var renderPoints = connector.getRenderPoints();\r\n return MouseHandlerCreateConnectorState.getNewShapeSideByConnectorPoints(renderPoints[renderPoints.length - 1], renderPoints[renderPoints.length - 2]);\r\n };\r\n MouseHandlerCreateConnectorState.prototype.getSourceItem = function () {\r\n return this.connectedItem;\r\n };\r\n MouseHandlerCreateConnectorState.getNewShapeSideByConnectorPoints = function (point, directionPoint) {\r\n if (point.x === directionPoint.x)\r\n if (point.y > directionPoint.y)\r\n return DiagramItem_1.ConnectionPointSide.North;\r\n else\r\n return DiagramItem_1.ConnectionPointSide.South;\r\n else if (point.x > directionPoint.x)\r\n if (point.y === directionPoint.y)\r\n return DiagramItem_1.ConnectionPointSide.West;\r\n else if (point.y > directionPoint.y)\r\n if (Math.abs(point.x - directionPoint.x) > Math.abs(point.y - directionPoint.y))\r\n return DiagramItem_1.ConnectionPointSide.West;\r\n else\r\n return DiagramItem_1.ConnectionPointSide.North;\r\n else if (Math.abs(point.x - directionPoint.x) > Math.abs(point.y - directionPoint.y))\r\n return DiagramItem_1.ConnectionPointSide.West;\r\n else\r\n return DiagramItem_1.ConnectionPointSide.South;\r\n else if (point.y === directionPoint.y)\r\n return DiagramItem_1.ConnectionPointSide.East;\r\n else if (point.y > directionPoint.y)\r\n if (Math.abs(point.x - directionPoint.x) > Math.abs(point.y - directionPoint.y))\r\n return DiagramItem_1.ConnectionPointSide.East;\r\n else\r\n return DiagramItem_1.ConnectionPointSide.North;\r\n else if (Math.abs(point.x - directionPoint.x) > Math.abs(point.y - directionPoint.y))\r\n return DiagramItem_1.ConnectionPointSide.East;\r\n else\r\n return DiagramItem_1.ConnectionPointSide.South;\r\n };\r\n return MouseHandlerCreateConnectorState;\r\n}(MouseHandlerMoveConnectorPointStateBase_1.MouseHandlerMoveConnectorPointStateBase));\r\nexports.MouseHandlerCreateConnectorState = MouseHandlerCreateConnectorState;\r\n\n\n/***/ }),\n/* 310 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerMoveConnectorOrthogonalSideState = void 0;\r\nvar point_1 = __webpack_require__(1);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar MouseHandlerDraggingState_1 = __webpack_require__(35);\r\nvar MouseHandlerMoveConnectorOrthogonalSideState = /** @class */ (function (_super) {\r\n __extends(MouseHandlerMoveConnectorOrthogonalSideState, _super);\r\n function MouseHandlerMoveConnectorOrthogonalSideState(handler, history, model) {\r\n var _this = _super.call(this, handler, history) || this;\r\n _this.model = model;\r\n return _this;\r\n }\r\n MouseHandlerMoveConnectorOrthogonalSideState.prototype.onMouseDown = function (evt) {\r\n this.startPoint = evt.modelPoint;\r\n this.connector = this.model.findConnector(evt.source.key);\r\n this.handler.addInteractingItem(this.connector);\r\n var renderPointIndexes = evt.source.value.split(\"_\");\r\n var renderPointIndex1 = parseInt(renderPointIndexes[0]);\r\n var renderPointIndex2 = parseInt(renderPointIndexes[1]);\r\n var points = this.connector.getRenderPoints(true);\r\n this.renderPoint1 = points[renderPointIndex1].clone();\r\n this.renderPoint2 = points[renderPointIndex2].clone();\r\n this.isVerticalOrientation = this.renderPoint1.x === this.renderPoint2.x;\r\n if (this.renderPoint1.pointIndex !== -1) {\r\n this.pointIndex1 = this.renderPoint1.pointIndex;\r\n if (this.pointIndex1 === 0) {\r\n this.pointIndex1++;\r\n this.correctEdgePoint(this.renderPoint1, this.renderPoint2, this.connector.beginItem, this.connector.beginConnectionPointIndex);\r\n }\r\n else\r\n this.point1 = this.connector.points[this.pointIndex1].clone();\r\n }\r\n else\r\n this.pointIndex1 = this.findPointIndex(points, renderPointIndex1, false) + 1;\r\n if (this.renderPoint2.pointIndex !== -1) {\r\n this.pointIndex2 = this.renderPoint2.pointIndex;\r\n if (this.pointIndex2 === this.connector.points.length - 1)\r\n this.correctEdgePoint(this.renderPoint2, this.renderPoint1, this.connector.endItem, this.connector.endConnectionPointIndex);\r\n else\r\n this.point2 = this.connector.points[this.pointIndex2].clone();\r\n }\r\n else\r\n this.pointIndex2 = this.findPointIndex(points, renderPointIndex2, true);\r\n _super.prototype.onMouseDown.call(this, evt);\r\n };\r\n MouseHandlerMoveConnectorOrthogonalSideState.prototype.onApplyChanges = function (evt) {\r\n var _this = this;\r\n if (!this.pointCreated) {\r\n var createdPoint1 = void 0;\r\n var createdPoint2 = void 0;\r\n if (this.point1 === undefined) {\r\n this.point1 = new point_1.Point(this.renderPoint1.x, this.renderPoint1.y);\r\n ModelUtils_1.ModelUtils.addConnectorPoint(this.history, this.connector.key, this.pointIndex1, this.point1.clone());\r\n createdPoint1 = this.point1.clone();\r\n this.pointIndex2++;\r\n }\r\n if (this.point2 === undefined) {\r\n this.point2 = new point_1.Point(this.renderPoint2.x, this.renderPoint2.y);\r\n ModelUtils_1.ModelUtils.addConnectorPoint(this.history, this.connector.key, this.pointIndex2, this.point2.clone());\r\n createdPoint2 = this.point2.clone();\r\n }\r\n var excludePoints = [];\r\n if (createdPoint1)\r\n excludePoints.push(createdPoint1);\r\n if (createdPoint2)\r\n excludePoints.push(createdPoint2);\r\n var unnecessaryPoints = this.createUnnecessaryPoints(this.connector, excludePoints);\r\n Object.keys(unnecessaryPoints).forEach(function (key) {\r\n var pointIndex = parseInt(key);\r\n if (pointIndex < _this.pointIndex1)\r\n _this.pointIndex1--;\r\n if (pointIndex < _this.pointIndex2)\r\n _this.pointIndex2--;\r\n });\r\n this.pointCreated = true;\r\n }\r\n var point = this.getSnappedPoint(evt, evt.modelPoint);\r\n if (this.isVerticalOrientation) {\r\n this.point1.x = point.x;\r\n this.point2.x = point.x;\r\n }\r\n else {\r\n this.point1.y = point.y;\r\n this.point2.y = point.y;\r\n }\r\n ModelUtils_1.ModelUtils.moveConnectorRightAnglePoints(this.history, this.connector, this.point1.clone(), this.pointIndex1, this.point2.clone(), this.pointIndex2);\r\n this.handler.tryUpdateModelSize();\r\n };\r\n MouseHandlerMoveConnectorOrthogonalSideState.prototype.createUnnecessaryPoints = function (connector, excludePoints) {\r\n var oldRenderPoints = connector.getRenderPoints(true).map(function (p) { return p.clone(); });\r\n var unnecessaryRenderPoints = ModelUtils_1.ModelUtils.createUnnecessaryRenderPoints(oldRenderPoints.filter(function (p) { return !p.skipped; }).map(function (p) { return p.clone(); }), connector.skippedRenderPoints, function (removedPoint) { return ModelUtils_1.ModelUtils.findFirstPointIndex(oldRenderPoints, function (p) { return p.equals(removedPoint); }); }, function (p) { return !excludePoints.some(function (ep) { return ep.equals(p); }); });\r\n var result = {};\r\n if (Object.keys(unnecessaryRenderPoints).length) {\r\n var points = connector.points.map(function (p) { return p.clone(); });\r\n var lastPointIndex_1 = points.length - 1;\r\n points.forEach(function (p, index) {\r\n if (index !== 0 && index !== lastPointIndex_1 && !ModelUtils_1.ModelUtils.isNecessaryPoint(p, index, unnecessaryRenderPoints))\r\n result[index] = p;\r\n });\r\n }\r\n return result;\r\n };\r\n MouseHandlerMoveConnectorOrthogonalSideState.prototype.onFinishWithChanges = function () {\r\n ModelUtils_1.ModelUtils.deleteConnectorUnnecessaryPoints(this.history, this.connector);\r\n this.handler.tryUpdateModelSize();\r\n };\r\n MouseHandlerMoveConnectorOrthogonalSideState.prototype.findPointIndex = function (points, index, direction) {\r\n var point;\r\n while (point = points[index]) {\r\n if (point.pointIndex !== -1)\r\n return point.pointIndex;\r\n index += direction ? 1 : -1;\r\n }\r\n };\r\n MouseHandlerMoveConnectorOrthogonalSideState.prototype.correctEdgePoint = function (point, directionPoint, item, connectionPointIndex) {\r\n var offset = 0;\r\n if (item) {\r\n var side = item.getConnectionPointSideByIndex(connectionPointIndex);\r\n var rect = item.rectangle;\r\n offset = Connector_1.Connector.minOffset;\r\n switch (side) {\r\n case DiagramItem_1.ConnectionPointSide.South:\r\n offset += rect.bottom - point.y;\r\n break;\r\n case DiagramItem_1.ConnectionPointSide.North:\r\n offset += point.y - rect.y;\r\n break;\r\n case DiagramItem_1.ConnectionPointSide.East:\r\n offset += rect.right - point.x;\r\n break;\r\n case DiagramItem_1.ConnectionPointSide.West:\r\n offset += point.x - rect.x;\r\n break;\r\n }\r\n }\r\n if (this.isVerticalOrientation)\r\n if (point.y > directionPoint.y)\r\n point.y -= Math.min(offset, point.y - directionPoint.y);\r\n else\r\n point.y += Math.min(offset, directionPoint.y - point.y);\r\n else if (point.x > directionPoint.x)\r\n point.x -= Math.min(offset, point.x - directionPoint.x);\r\n else\r\n point.x += Math.min(offset, directionPoint.x - point.x);\r\n };\r\n MouseHandlerMoveConnectorOrthogonalSideState.prototype.getDraggingElementKeys = function () {\r\n return [this.connector.key];\r\n };\r\n return MouseHandlerMoveConnectorOrthogonalSideState;\r\n}(MouseHandlerDraggingState_1.MouseHandlerDraggingState));\r\nexports.MouseHandlerMoveConnectorOrthogonalSideState = MouseHandlerMoveConnectorOrthogonalSideState;\r\n\n\n/***/ }),\n/* 311 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerToolboxDraggingState = exports.MouseHandlerBeforeToolboxDraggingState = void 0;\r\nvar Event_1 = __webpack_require__(14);\r\nvar point_1 = __webpack_require__(1);\r\nvar AddShapeHistoryItem_1 = __webpack_require__(53);\r\nvar SetSelectionHistoryItem_1 = __webpack_require__(66);\r\nvar MouseHandlerDraggingState_1 = __webpack_require__(35);\r\nvar DeleteShapeHistoryItem_1 = __webpack_require__(116);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar MouseHandlerStateBase_1 = __webpack_require__(41);\r\nvar ModelOperationSettings_1 = __webpack_require__(16);\r\nvar NON_DOCUMENT_TIMER = 500;\r\nvar LOCK_UPDATEPAGESIZE_TIMER = 300;\r\nvar MouseHandlerBeforeToolboxDraggingState = /** @class */ (function (_super) {\r\n __extends(MouseHandlerBeforeToolboxDraggingState, _super);\r\n function MouseHandlerBeforeToolboxDraggingState(handler, history, model, selection, visualizerManager, shapeDescriptionManager) {\r\n var _this = _super.call(this, handler) || this;\r\n _this.history = history;\r\n _this.model = model;\r\n _this.selection = selection;\r\n _this.visualizerManager = visualizerManager;\r\n _this.shapeDescriptionManager = shapeDescriptionManager;\r\n _this.isModelEmpty = model.items.length === 0;\r\n return _this;\r\n }\r\n MouseHandlerBeforeToolboxDraggingState.prototype.cancelChanges = function () {\r\n this.tryRemoveTimer();\r\n };\r\n MouseHandlerBeforeToolboxDraggingState.prototype.onDragStart = function (evt) {\r\n this.dragging = evt;\r\n };\r\n MouseHandlerBeforeToolboxDraggingState.prototype.onDragEnd = function (evt) {\r\n this.cancelChanges();\r\n this.handler.switchToDefaultState();\r\n };\r\n MouseHandlerBeforeToolboxDraggingState.prototype.onMouseMove = function (evt) {\r\n var _this = this;\r\n if (evt.source.type > Event_1.MouseEventElementType.Background) {\r\n this.tryRemoveTimer();\r\n this.switchToDraggingState(evt, false);\r\n }\r\n else if (evt.source.type === Event_1.MouseEventElementType.Background && !this.isModelEmpty) {\r\n this.savedEvt = evt;\r\n if (this.nonPageAreaTimer === undefined)\r\n this.nonPageAreaTimer = setTimeout(function () { return _this.switchToDraggingState(_this.savedEvt, true); }, NON_DOCUMENT_TIMER);\r\n }\r\n else if (this.nonPageAreaTimer !== undefined)\r\n this.tryRemoveTimer();\r\n };\r\n MouseHandlerBeforeToolboxDraggingState.prototype.switchToDraggingState = function (evt, skipLockUpdatePageSize) {\r\n this.handler.switchState(new MouseHandlerToolboxDraggingState(this.handler, this.history, this.model, this.selection, this.visualizerManager, this.shapeDescriptionManager, skipLockUpdatePageSize));\r\n this.handler.state.onDragStart(this.dragging);\r\n this.handler.state.onMouseMove(evt);\r\n };\r\n MouseHandlerBeforeToolboxDraggingState.prototype.tryRemoveTimer = function () {\r\n if (this.nonPageAreaTimer !== undefined) {\r\n clearTimeout(this.nonPageAreaTimer);\r\n delete this.nonPageAreaTimer;\r\n }\r\n };\r\n MouseHandlerBeforeToolboxDraggingState.prototype.finish = function () {\r\n this.tryRemoveTimer();\r\n };\r\n return MouseHandlerBeforeToolboxDraggingState;\r\n}(MouseHandlerStateBase_1.MouseHandlerCancellableState));\r\nexports.MouseHandlerBeforeToolboxDraggingState = MouseHandlerBeforeToolboxDraggingState;\r\nvar MouseHandlerToolboxDraggingState = /** @class */ (function (_super) {\r\n __extends(MouseHandlerToolboxDraggingState, _super);\r\n function MouseHandlerToolboxDraggingState(handler, history, model, selection, visualizerManager, shapeDescriptionManager, skipLockUpdatePageSize) {\r\n var _this = _super.call(this, handler, history) || this;\r\n _this.model = model;\r\n _this.selection = selection;\r\n _this.visualizerManager = visualizerManager;\r\n _this.shapeDescriptionManager = shapeDescriptionManager;\r\n if (!skipLockUpdatePageSize)\r\n _this.updatePageSizeTimer = setTimeout(function () {\r\n _this.processAndRemoveUpdatePageSizeTimer();\r\n }, LOCK_UPDATEPAGESIZE_TIMER);\r\n return _this;\r\n }\r\n MouseHandlerToolboxDraggingState.prototype.cancelChanges = function () {\r\n this.tryRemoveUpdatePageSizeTimer();\r\n _super.prototype.cancelChanges.call(this);\r\n };\r\n MouseHandlerToolboxDraggingState.prototype.tryRemoveUpdatePageSizeTimer = function () {\r\n if (this.updatePageSizeTimer !== undefined) {\r\n clearTimeout(this.updatePageSizeTimer);\r\n delete this.updatePageSizeTimer;\r\n }\r\n };\r\n MouseHandlerToolboxDraggingState.prototype.processAndRemoveUpdatePageSizeTimer = function () {\r\n if (this.updatePageSizeTimer !== undefined) {\r\n this.handler.tryUpdateModelSize();\r\n delete this.updatePageSizeTimer;\r\n }\r\n };\r\n MouseHandlerToolboxDraggingState.prototype.onMouseMove = function (evt) {\r\n _super.prototype.onMouseMove.call(this, evt);\r\n var shape = this.model.findShape(this.shapeKey);\r\n if (shape) {\r\n this.visualizerManager.setExtensionLines([shape]);\r\n var container = ModelUtils_1.ModelUtils.findContainerByEventKey(this.model, this.selection, evt.source.key);\r\n if (container && this.allowInsertToContainer(evt, shape, container))\r\n this.visualizerManager.setContainerTarget(container, evt.source.type);\r\n else\r\n this.visualizerManager.resetContainerTarget();\r\n }\r\n };\r\n MouseHandlerToolboxDraggingState.prototype.getDraggingElementKeys = function () {\r\n return this.shapeKey === undefined ? [] : [this.shapeKey];\r\n };\r\n MouseHandlerToolboxDraggingState.prototype.onApplyChanges = function (evt) {\r\n var _this = this;\r\n if (evt.source.type === Event_1.MouseEventElementType.Undefined) {\r\n this.dragging.onCaptured(false);\r\n if (this.shapeKey !== undefined && !this.deleteHistoryItem) {\r\n var shape = this.model.findShape(this.shapeKey);\r\n ModelUtils_1.ModelUtils.detachConnectors(this.history, shape);\r\n ModelUtils_1.ModelUtils.removeFromContainer(this.history, this.model, shape);\r\n this.deleteHistoryItem = new DeleteShapeHistoryItem_1.DeleteShapeHistoryItem(this.shapeKey, true);\r\n this.history.addAndRedo(this.deleteHistoryItem);\r\n }\r\n }\r\n else {\r\n this.dragging.onCaptured(true);\r\n if (this.shapeKey === undefined) {\r\n this.startPoint = evt.modelPoint;\r\n this.shapeKey = this.insertToolboxItem(evt);\r\n var shape_1 = this.model.findShape(this.shapeKey);\r\n if (shape_1)\r\n this.handler.addInteractingItem(shape_1, ModelOperationSettings_1.DiagramModelOperation.AddShape);\r\n }\r\n if (this.deleteHistoryItem) {\r\n this.history.undoTransactionTo(this.deleteHistoryItem);\r\n delete this.deleteHistoryItem;\r\n }\r\n var pos = this.getPosition(evt, this.startShapePosition);\r\n var shape = this.model.findShape(this.shapeKey);\r\n ModelUtils_1.ModelUtils.setShapePosition(this.history, this.model, shape, pos);\r\n ModelUtils_1.ModelUtils.updateMovingShapeConnections(this.history, shape, this.connectorsWithoutBeginItemInfo, this.connectorsWithoutEndItemInfo, function () {\r\n _this.visualizerManager.resetConnectionTarget();\r\n _this.visualizerManager.resetConnectionPoints();\r\n }, function (shape, connectionPointIndex) {\r\n _this.visualizerManager.setConnectionTarget(shape, Event_1.MouseEventElementType.Shape);\r\n _this.visualizerManager.setConnectionPoints(shape, Event_1.MouseEventElementType.Shape, connectionPointIndex, true);\r\n }, function (connector) { return _this.handler.addInteractingItem(connector); });\r\n ModelUtils_1.ModelUtils.updateShapeAttachedConnectors(this.history, this.model, shape);\r\n var container = ModelUtils_1.ModelUtils.findContainerByEventKey(this.model, this.selection, evt.source.key);\r\n if (shape && container && this.allowInsertToContainer(evt, shape, container))\r\n ModelUtils_1.ModelUtils.insertToContainer(this.history, this.model, shape, container);\r\n else\r\n ModelUtils_1.ModelUtils.removeFromContainer(this.history, this.model, shape);\r\n if (this.updatePageSizeTimer === undefined)\r\n this.handler.tryUpdateModelSize(function (offsetLeft, offsetTop) {\r\n _this.connectorsWithoutBeginItemInfo.forEach(function (pi) {\r\n pi.point.x += offsetLeft;\r\n pi.point.y += offsetTop;\r\n });\r\n _this.connectorsWithoutEndItemInfo.forEach(function (pi) {\r\n pi.point.x += offsetLeft;\r\n pi.point.y += offsetTop;\r\n });\r\n });\r\n }\r\n };\r\n MouseHandlerToolboxDraggingState.prototype.onFinishWithChanges = function () {\r\n if (!this.deleteHistoryItem)\r\n this.history.addAndRedo(new SetSelectionHistoryItem_1.SetSelectionHistoryItem(this.selection, [this.shapeKey]));\r\n };\r\n MouseHandlerToolboxDraggingState.prototype.onDragStart = function (evt) {\r\n this.dragging = evt;\r\n this.connectorsWithoutBeginItemInfo = ModelUtils_1.ModelUtils.getConnectorsWithoutBeginItemInfo(this.model);\r\n this.connectorsWithoutEndItemInfo = ModelUtils_1.ModelUtils.getConnectorsWithoutEndItemInfo(this.model);\r\n };\r\n MouseHandlerToolboxDraggingState.prototype.onDragEnd = function (evt) {\r\n if (this.shapeKey !== undefined && evt.source.type === Event_1.MouseEventElementType.Undefined)\r\n this.cancelChanges();\r\n this.handler.switchToDefaultState();\r\n };\r\n MouseHandlerToolboxDraggingState.prototype.finish = function () {\r\n this.visualizerManager.resetExtensionLines();\r\n this.visualizerManager.resetContainerTarget();\r\n this.visualizerManager.resetConnectionTarget();\r\n this.visualizerManager.resetConnectionPoints();\r\n this.processAndRemoveUpdatePageSizeTimer();\r\n this.dragging.onFinishDragging();\r\n _super.prototype.finish.call(this);\r\n };\r\n MouseHandlerToolboxDraggingState.prototype.insertToolboxItem = function (evt) {\r\n var description = this.shapeDescriptionManager.get(this.dragging.data);\r\n this.startShapePosition = this.getSnappedPoint(evt, new point_1.Point(evt.modelPoint.x - description.defaultSize.width / 2, evt.modelPoint.y - description.defaultSize.height / 2));\r\n var historyItem = new AddShapeHistoryItem_1.AddShapeHistoryItem(description, this.startShapePosition);\r\n this.history.addAndRedo(historyItem);\r\n ModelUtils_1.ModelUtils.updateNewShapeProperties(this.history, this.selection, historyItem.shapeKey);\r\n return historyItem.shapeKey;\r\n };\r\n MouseHandlerToolboxDraggingState.prototype.allowInsertToContainer = function (evt, item, container) {\r\n if (this.handler.canMultipleSelection(evt))\r\n return false;\r\n return container && container.expanded && ModelUtils_1.ModelUtils.canInsertToContainer(this.model, item, container);\r\n };\r\n MouseHandlerToolboxDraggingState.prototype.getPosition = function (evt, basePoint) {\r\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));\r\n };\r\n return MouseHandlerToolboxDraggingState;\r\n}(MouseHandlerDraggingState_1.MouseHandlerDraggingState));\r\nexports.MouseHandlerToolboxDraggingState = MouseHandlerToolboxDraggingState;\r\n\n\n/***/ }),\n/* 312 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerMoveConnectorTextState = void 0;\r\nvar MouseHandlerDraggingState_1 = __webpack_require__(35);\r\nvar ChangeConnectorTextPositionHistoryItem_1 = __webpack_require__(313);\r\nvar ChangeConnectorTextHistoryItem_1 = __webpack_require__(67);\r\nvar MouseHandlerMoveConnectorTextState = /** @class */ (function (_super) {\r\n __extends(MouseHandlerMoveConnectorTextState, _super);\r\n function MouseHandlerMoveConnectorTextState(handler, history, model) {\r\n var _this = _super.call(this, handler, history) || this;\r\n _this.model = model;\r\n return _this;\r\n }\r\n MouseHandlerMoveConnectorTextState.prototype.onMouseDown = function (evt) {\r\n this.connector = this.model.findConnector(evt.source.key);\r\n this.position = parseFloat(evt.source.value);\r\n this.text = this.connector.getText(this.position);\r\n this.savedText = \"\";\r\n _super.prototype.onMouseDown.call(this, evt);\r\n };\r\n MouseHandlerMoveConnectorTextState.prototype.onApplyChanges = function (evt) {\r\n var newPosition = this.connector.getTextPositionByPoint(evt.modelPoint);\r\n if (newPosition !== this.position) {\r\n var text = this.connector.getText(newPosition);\r\n if (text !== \"\" && text !== this.text) {\r\n this.history.addAndRedo(new ChangeConnectorTextHistoryItem_1.ChangeConnectorTextHistoryItem(this.connector, newPosition, \"\"));\r\n this.savedText = text;\r\n }\r\n this.history.addAndRedo(new ChangeConnectorTextPositionHistoryItem_1.ChangeConnectorTextPositionHistoryItem(this.connector, this.position, newPosition));\r\n if (this.savedText !== \"\" && this.savedText !== text) {\r\n this.history.addAndRedo(new ChangeConnectorTextHistoryItem_1.ChangeConnectorTextHistoryItem(this.connector, this.position, this.savedText));\r\n this.savedText = \"\";\r\n }\r\n this.position = newPosition;\r\n }\r\n };\r\n MouseHandlerMoveConnectorTextState.prototype.getDraggingElementKeys = function () {\r\n return [this.connector.key];\r\n };\r\n return MouseHandlerMoveConnectorTextState;\r\n}(MouseHandlerDraggingState_1.MouseHandlerDraggingState));\r\nexports.MouseHandlerMoveConnectorTextState = MouseHandlerMoveConnectorTextState;\r\n\n\n/***/ }),\n/* 313 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeConnectorTextPositionHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar ChangeConnectorTextPositionHistoryItem = /** @class */ (function (_super) {\r\n __extends(ChangeConnectorTextPositionHistoryItem, _super);\r\n function ChangeConnectorTextPositionHistoryItem(connector, position, newPosition) {\r\n var _this = _super.call(this) || this;\r\n _this.connectorKey = connector.key;\r\n _this.position = position;\r\n _this.newPosition = newPosition;\r\n return _this;\r\n }\r\n ChangeConnectorTextPositionHistoryItem.prototype.redo = function (manipulator) {\r\n var connector = manipulator.model.findConnector(this.connectorKey);\r\n manipulator.changeConnectorTextPosition(connector, this.position, this.newPosition);\r\n };\r\n ChangeConnectorTextPositionHistoryItem.prototype.undo = function (manipulator) {\r\n var connector = manipulator.model.findConnector(this.connectorKey);\r\n manipulator.changeConnectorTextPosition(connector, this.newPosition, this.position);\r\n };\r\n return ChangeConnectorTextPositionHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.ChangeConnectorTextPositionHistoryItem = ChangeConnectorTextPositionHistoryItem;\r\n\n\n/***/ }),\n/* 314 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerToggleShapeExpandedState = void 0;\r\nvar MouseHandlerStateBase_1 = __webpack_require__(41);\r\nvar ToggleShapeExpandedHistoryItem_1 = __webpack_require__(315);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar MouseHandlerToggleShapeExpandedState = /** @class */ (function (_super) {\r\n __extends(MouseHandlerToggleShapeExpandedState, _super);\r\n function MouseHandlerToggleShapeExpandedState(handler, history, model, selection) {\r\n var _this = _super.call(this, handler) || this;\r\n _this.history = history;\r\n _this.model = model;\r\n _this.selection = selection;\r\n return _this;\r\n }\r\n MouseHandlerToggleShapeExpandedState.prototype.onMouseUp = function (evt) {\r\n var shape = this.model.findShape(evt.source.key);\r\n if (shape && !shape.isLocked) {\r\n this.history.beginTransaction();\r\n this.history.addAndRedo(new ToggleShapeExpandedHistoryItem_1.ToggleShapeExpandedHistoryItem(shape));\r\n ModelUtils_1.ModelUtils.updateShapeAttachedConnectors(this.history, this.model, shape);\r\n ModelUtils_1.ModelUtils.updateContainerConnectorsAttachedPoints(this.history, this.model, shape);\r\n ModelUtils_1.ModelUtils.updateSelection(this.history, this.selection);\r\n this.handler.tryUpdateModelSize();\r\n this.history.endTransaction();\r\n this.handler.onDocumentClick([shape.key]);\r\n }\r\n this.handler.switchToDefaultState();\r\n };\r\n return MouseHandlerToggleShapeExpandedState;\r\n}(MouseHandlerStateBase_1.MouseHandlerStateBase));\r\nexports.MouseHandlerToggleShapeExpandedState = MouseHandlerToggleShapeExpandedState;\r\n\n\n/***/ }),\n/* 315 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ToggleShapeExpandedHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar ToggleShapeExpandedHistoryItem = /** @class */ (function (_super) {\r\n __extends(ToggleShapeExpandedHistoryItem, _super);\r\n function ToggleShapeExpandedHistoryItem(shape) {\r\n var _this = _super.call(this) || this;\r\n _this.shapeKey = shape.key;\r\n _this.expanded = shape.expanded;\r\n return _this;\r\n }\r\n ToggleShapeExpandedHistoryItem.prototype.redo = function (manipulator) {\r\n var shape = manipulator.model.findShape(this.shapeKey);\r\n manipulator.changeShapeExpanded(shape, !this.expanded);\r\n };\r\n ToggleShapeExpandedHistoryItem.prototype.undo = function (manipulator) {\r\n var shape = manipulator.model.findShape(this.shapeKey);\r\n manipulator.changeShapeExpanded(shape, this.expanded);\r\n };\r\n return ToggleShapeExpandedHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.ToggleShapeExpandedHistoryItem = ToggleShapeExpandedHistoryItem;\r\n\n\n/***/ }),\n/* 316 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerSelectionState = void 0;\r\nvar Event_1 = __webpack_require__(14);\r\nvar rectangle_1 = __webpack_require__(12);\r\nvar MouseHandlerStateBase_1 = __webpack_require__(41);\r\nvar MouseHandlerSelectionState = /** @class */ (function (_super) {\r\n __extends(MouseHandlerSelectionState, _super);\r\n function MouseHandlerSelectionState(handler, selection, visualizerManager) {\r\n var _this = _super.call(this, handler) || this;\r\n _this.selection = selection;\r\n _this.visualizerManager = visualizerManager;\r\n return _this;\r\n }\r\n MouseHandlerSelectionState.prototype.finish = function () {\r\n this.handler.onDocumentDragEnd([]);\r\n this.visualizerManager.resetSelectionRectangle();\r\n _super.prototype.finish.call(this);\r\n };\r\n MouseHandlerSelectionState.prototype.cancelChanges = function () {\r\n };\r\n MouseHandlerSelectionState.prototype.onMouseDown = function (evt) {\r\n this.startPoint = evt.modelPoint;\r\n this.handler.onDocumentDragStart([]);\r\n };\r\n MouseHandlerSelectionState.prototype.onMouseMove = function (evt) {\r\n if (evt.button !== Event_1.MouseButton.Left)\r\n this.handler.switchToDefaultState();\r\n else {\r\n this.rectangle = rectangle_1.Rectangle.fromPoints(this.startPoint, evt.modelPoint);\r\n this.visualizerManager.setSelectionRectangle(this.rectangle);\r\n }\r\n };\r\n MouseHandlerSelectionState.prototype.onMouseUp = function (evt) {\r\n if (this.rectangle !== undefined)\r\n this.selection.selectRect(this.rectangle);\r\n else\r\n this.selection.set([]);\r\n this.rectangle = undefined;\r\n this.handler.switchToDefaultState();\r\n };\r\n return MouseHandlerSelectionState;\r\n}(MouseHandlerStateBase_1.MouseHandlerCancellableState));\r\nexports.MouseHandlerSelectionState = MouseHandlerSelectionState;\r\n\n\n/***/ }),\n/* 317 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerZoomOnWheelState = void 0;\r\nvar MouseHandlerStateBase_1 = __webpack_require__(41);\r\nvar Event_1 = __webpack_require__(14);\r\nvar Settings_1 = __webpack_require__(28);\r\nvar MouseHandlerZoomOnWheelState = /** @class */ (function (_super) {\r\n __extends(MouseHandlerZoomOnWheelState, _super);\r\n function MouseHandlerZoomOnWheelState(handler, settings, view) {\r\n var _this = _super.call(this, handler) || this;\r\n _this.settings = settings;\r\n _this.view = view;\r\n return _this;\r\n }\r\n MouseHandlerZoomOnWheelState.prototype.onMouseWheel = function (evt) {\r\n if (!this.trySwitchToDefault(evt)) {\r\n this.settings.zoomLevel = this.view.getNextStepZoom(evt.deltaY < 0);\r\n if (evt.source.type === Event_1.MouseEventElementType.Background)\r\n this.view.resetScroll();\r\n else {\r\n this.view.scrollTo(evt.modelPoint, evt.offsetPoint);\r\n this.view.normalize();\r\n }\r\n evt.preventDefault = true;\r\n return true;\r\n }\r\n else\r\n return this.handler.state.onMouseWheel(evt);\r\n };\r\n MouseHandlerZoomOnWheelState.prototype.onMouseUp = function (evt) {\r\n this.handler.switchToDefaultState();\r\n this.handler.state.onMouseUp(evt);\r\n };\r\n MouseHandlerZoomOnWheelState.prototype.onMouseDown = function (evt) {\r\n this.handler.switchToDefaultState();\r\n this.handler.state.onMouseDown(evt);\r\n };\r\n MouseHandlerZoomOnWheelState.prototype.onMouseMove = function (evt) {\r\n this.trySwitchToDefault(evt) && this.handler.state.onMouseMove(evt);\r\n };\r\n MouseHandlerZoomOnWheelState.prototype.trySwitchToDefault = function (evt) {\r\n if (this.handler.canFinishZoomOnWheel(evt)) {\r\n this.handler.switchToDefaultState();\r\n return true;\r\n }\r\n return false;\r\n };\r\n MouseHandlerZoomOnWheelState.prototype.start = function () {\r\n _super.prototype.start.call(this);\r\n this.settings.zoomLevel = this.view.getZoom();\r\n this.settings.autoZoom = Settings_1.AutoZoomMode.Disabled;\r\n };\r\n return MouseHandlerZoomOnWheelState;\r\n}(MouseHandlerStateBase_1.MouseHandlerStateBase));\r\nexports.MouseHandlerZoomOnWheelState = MouseHandlerZoomOnWheelState;\r\n\n\n/***/ }),\n/* 318 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerMoveShapeState = void 0;\r\nvar MouseHandlerDragDiagramItemStateBase_1 = __webpack_require__(152);\r\nvar MouseHandlerMoveShapeState = /** @class */ (function (_super) {\r\n __extends(MouseHandlerMoveShapeState, _super);\r\n function MouseHandlerMoveShapeState(handler, history, model, selection, visualizerManager) {\r\n var _this = _super.call(this, handler, history, model, selection, visualizerManager) || this;\r\n _this.model = model;\r\n _this.selection = selection;\r\n _this.visualizerManager = visualizerManager;\r\n return _this;\r\n }\r\n Object.defineProperty(MouseHandlerMoveShapeState.prototype, \"areValidDraggingShapes\", {\r\n get: function () {\r\n return this.shouldClone || this.draggingShapes.length > 0;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(MouseHandlerMoveShapeState.prototype, \"areValidDraggingConnectors\", {\r\n get: function () {\r\n return true;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return MouseHandlerMoveShapeState;\r\n}(MouseHandlerDragDiagramItemStateBase_1.MouseHandlerDragDiagramItemStateBase));\r\nexports.MouseHandlerMoveShapeState = MouseHandlerMoveShapeState;\r\n\n\n/***/ }),\n/* 319 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerMoveConnectorState = void 0;\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar MouseHandlerDragDiagramItemStateBase_1 = __webpack_require__(152);\r\nvar MouseHandlerMoveConnectorState = /** @class */ (function (_super) {\r\n __extends(MouseHandlerMoveConnectorState, _super);\r\n function MouseHandlerMoveConnectorState(handler, history, model, selection, visualizerManager) {\r\n var _this = _super.call(this, handler, history, model, selection, visualizerManager) || this;\r\n _this.model = model;\r\n _this.selection = selection;\r\n _this.visualizerManager = visualizerManager;\r\n return _this;\r\n }\r\n Object.defineProperty(MouseHandlerMoveConnectorState.prototype, \"areValidDraggingShapes\", {\r\n get: function () {\r\n return true;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(MouseHandlerMoveConnectorState.prototype, \"areValidDraggingConnectors\", {\r\n get: function () {\r\n var _this = this;\r\n if (this.shouldClone)\r\n return this.draggingShapes.length > 0 || this.draggingConnectors.length > 0;\r\n if (!this.draggingConnectors.length)\r\n return false;\r\n if (!this.draggingShapes.length)\r\n return !this.draggingConnectors.some(function (x) { return !ModelUtils_1.ModelUtils.canMoveConnector(_this.selectedItems, x.connector); });\r\n return ModelUtils_1.ModelUtils.canMoveConnector(this.selectedItems, this.draggingConnectors[this.draggingConnectorsIndexByKey[this.handler.mouseDownEvent.source.key]].connector);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return MouseHandlerMoveConnectorState;\r\n}(MouseHandlerDragDiagramItemStateBase_1.MouseHandlerDragDiagramItemStateBase));\r\nexports.MouseHandlerMoveConnectorState = MouseHandlerMoveConnectorState;\r\n\n\n/***/ }),\n/* 320 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerDefaultReadOnlyTouchState = void 0;\r\nvar MouseHandlerDefaultReadOnlyState_1 = __webpack_require__(153);\r\nvar MouseHandlerDefaultReadOnlyTouchState = /** @class */ (function (_super) {\r\n __extends(MouseHandlerDefaultReadOnlyTouchState, _super);\r\n function MouseHandlerDefaultReadOnlyTouchState() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MouseHandlerDefaultReadOnlyTouchState.prototype.canDragObjectOnMouseDown = function (key) {\r\n return false;\r\n };\r\n MouseHandlerDefaultReadOnlyTouchState.prototype.canExpandContainerOnMouseDown = function (key) {\r\n return false;\r\n };\r\n MouseHandlerDefaultReadOnlyTouchState.prototype.canClearSelectionOnMouseDown = function () {\r\n return true;\r\n };\r\n MouseHandlerDefaultReadOnlyTouchState.prototype.processOnMouseMoveAfterLimit = function (evt) {\r\n this.startScrolling(evt);\r\n };\r\n MouseHandlerDefaultReadOnlyTouchState.prototype.canSelectOnMouseUp = function (key) {\r\n return !this.inSelection(key);\r\n };\r\n MouseHandlerDefaultReadOnlyTouchState.prototype.canClearSelectionOnMouseUp = function () {\r\n return false;\r\n };\r\n return MouseHandlerDefaultReadOnlyTouchState;\r\n}(MouseHandlerDefaultReadOnlyState_1.MouseHandlerDefaultReadOnlyState));\r\nexports.MouseHandlerDefaultReadOnlyTouchState = MouseHandlerDefaultReadOnlyTouchState;\r\n\n\n/***/ }),\n/* 321 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerDefaultTouchState = void 0;\r\nvar MouseHandlerDefaultState_1 = __webpack_require__(148);\r\nvar MouseHandlerZoomOnPinchState_1 = __webpack_require__(322);\r\nvar MouseHandlerDefaultTouchState = /** @class */ (function (_super) {\r\n __extends(MouseHandlerDefaultTouchState, _super);\r\n function MouseHandlerDefaultTouchState() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MouseHandlerDefaultTouchState.prototype.updateConnectionsOnMouseMove = function (evt) {\r\n };\r\n MouseHandlerDefaultTouchState.prototype.canDragObjectOnMouseDown = function (key) {\r\n return this.inSelection(key);\r\n };\r\n MouseHandlerDefaultTouchState.prototype.canExpandContainerOnMouseDown = function (key) {\r\n return true;\r\n };\r\n MouseHandlerDefaultTouchState.prototype.canClearSelectionOnMouseDown = function () {\r\n return true;\r\n };\r\n MouseHandlerDefaultTouchState.prototype.processOnMouseMoveAfterLimit = function (evt) {\r\n if (evt.touches.length > 1)\r\n this.startZooming(evt);\r\n else\r\n this.startScrolling(evt);\r\n };\r\n MouseHandlerDefaultTouchState.prototype.startZooming = function (evt) {\r\n this.handler.switchState(new MouseHandlerZoomOnPinchState_1.MouseHandlerZoomOnPinchState(this.handler, this.selection, this.settings, this.view));\r\n };\r\n MouseHandlerDefaultTouchState.prototype.canSelectOnMouseUp = function (key) {\r\n return !this.inSelection(key);\r\n };\r\n MouseHandlerDefaultTouchState.prototype.canClearSelectionOnMouseUp = function () {\r\n return false;\r\n };\r\n MouseHandlerDefaultTouchState.prototype.canRemoveDiagramItemToSelection = function (evt) {\r\n return false;\r\n };\r\n return MouseHandlerDefaultTouchState;\r\n}(MouseHandlerDefaultState_1.MouseHandlerDefaultState));\r\nexports.MouseHandlerDefaultTouchState = MouseHandlerDefaultTouchState;\r\n\n\n/***/ }),\n/* 322 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MouseHandlerZoomOnPinchState = void 0;\r\nvar Settings_1 = __webpack_require__(28);\r\nvar point_1 = __webpack_require__(1);\r\nvar MouseHandlerScrollingState_1 = __webpack_require__(151);\r\nvar metrics_1 = __webpack_require__(36);\r\nvar PINCH_CHANGE_DISTANCE = 1;\r\nvar MouseHandlerZoomOnPinchState = /** @class */ (function (_super) {\r\n __extends(MouseHandlerZoomOnPinchState, _super);\r\n function MouseHandlerZoomOnPinchState(handler, selection, settings, view) {\r\n var _this = _super.call(this, handler, view, selection) || this;\r\n _this.selection = selection;\r\n _this.settings = settings;\r\n _this.view = view;\r\n return _this;\r\n }\r\n MouseHandlerZoomOnPinchState.prototype.onMouseDown = function (evt) {\r\n _super.prototype.onMouseDown.call(this, evt);\r\n if (evt.touches.length > 1) {\r\n this.startDistance = this.getTouchDistance(evt);\r\n this.startZoomLevel = this.settings.zoomLevel;\r\n this.prevDistance = this.startDistance;\r\n }\r\n };\r\n MouseHandlerZoomOnPinchState.prototype.onMouseMove = function (evt) {\r\n if (evt.touches.length > 1) {\r\n var distance = this.getTouchDistance(evt);\r\n if (Math.abs(this.prevDistance - distance) > PINCH_CHANGE_DISTANCE) {\r\n this.settings.zoomLevel = this.startZoomLevel * (distance / this.startDistance);\r\n this.view.scrollTo(this.getMiddleLayoutPoint(evt), this.getMiddleAbsPoint(evt));\r\n this.view.normalize();\r\n this.prevDistance = distance;\r\n }\r\n }\r\n _super.prototype.onMouseMove.call(this, evt);\r\n };\r\n MouseHandlerZoomOnPinchState.prototype.onMouseUp = function (evt) {\r\n if (evt.touches.length === 0)\r\n setTimeout(function () {\r\n this.handler.switchToDefaultState();\r\n }.bind(this), 1);\r\n };\r\n MouseHandlerZoomOnPinchState.prototype.start = function () {\r\n _super.prototype.start.call(this);\r\n this.settings.zoomLevel = this.view.getZoom();\r\n this.settings.autoZoom = Settings_1.AutoZoomMode.Disabled;\r\n };\r\n MouseHandlerZoomOnPinchState.prototype.getTouchDistance = function (evt) {\r\n var pt0 = new point_1.Point(evt.touches[0].offsetPoint.x, evt.touches[0].offsetPoint.y);\r\n var pt1 = new point_1.Point(evt.touches[1].offsetPoint.x, evt.touches[1].offsetPoint.y);\r\n return metrics_1.Metrics.euclideanDistance(pt0, pt1);\r\n };\r\n MouseHandlerZoomOnPinchState.prototype.getPointByEvent = function (evt) {\r\n return this.getMiddleAbsPoint(evt);\r\n };\r\n MouseHandlerZoomOnPinchState.prototype.getMiddleAbsPoint = function (evt) {\r\n if (evt.touches.length > 1)\r\n return MouseHandlerZoomOnPinchState.getMiddlePointByEvent(evt, function (touch) { return touch.offsetPoint; });\r\n return evt.offsetPoint;\r\n };\r\n MouseHandlerZoomOnPinchState.prototype.getMiddleLayoutPoint = function (evt) {\r\n if (evt.touches.length > 1)\r\n return MouseHandlerZoomOnPinchState.getMiddlePointByEvent(evt, function (touch) { return touch.modelPoint; });\r\n return evt.modelPoint;\r\n };\r\n MouseHandlerZoomOnPinchState.getMiddlePointByEvent = function (evt, getPoint) {\r\n if (evt.touches.length > 1)\r\n 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);\r\n };\r\n return MouseHandlerZoomOnPinchState;\r\n}(MouseHandlerScrollingState_1.MouseHandlerScrollingState));\r\nexports.MouseHandlerZoomOnPinchState = MouseHandlerZoomOnPinchState;\r\n\n\n/***/ }),\n/* 323 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.TextInputHandler = void 0;\r\nvar ChangeShapeTextHistoryItem_1 = __webpack_require__(154);\r\nvar Event_1 = __webpack_require__(14);\r\nvar key_1 = __webpack_require__(26);\r\nvar Shape_1 = __webpack_require__(13);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar ChangeConnectorTextHistoryItem_1 = __webpack_require__(67);\r\nvar TextInputHandler = /** @class */ (function () {\r\n function TextInputHandler(control) {\r\n this.control = control;\r\n }\r\n TextInputHandler.prototype.startTextInput = function (item, position) {\r\n if (item.isLocked || !item.enableText || !item.allowEditText || this.control.settings.readOnly || !this.canFinishTextEditing())\r\n return;\r\n this.control.beginUpdate();\r\n this.textInputItem = item;\r\n var allowed = true;\r\n if (this.textInputItem instanceof Shape_1.Shape) {\r\n var textRect = this.textInputItem.textEditRectangle;\r\n allowed = this.control.permissionsProvider.canChangeShapeText(this.textInputItem);\r\n if (allowed)\r\n this.control.eventManager.raiseTextInputStart(this.textInputItem, this.textInputItem.text, textRect.createPosition(), textRect.createSize());\r\n }\r\n else if (this.textInputItem instanceof Connector_1.Connector) {\r\n this.textInputPosition = position;\r\n allowed = this.control.permissionsProvider.canChangeConnectorText(this.textInputItem, this.textInputPosition);\r\n if (allowed)\r\n this.control.eventManager.raiseTextInputStart(this.textInputItem, this.textInputItem.getText(this.textInputPosition), this.textInputItem.getTextPoint(this.textInputPosition));\r\n }\r\n if (!allowed) {\r\n delete this.textInputItem;\r\n this.control.endUpdate();\r\n }\r\n };\r\n TextInputHandler.prototype.endTextInput = function () {\r\n var textInputItem = this.textInputItem;\r\n delete this.textInputItem;\r\n this.control.eventManager.raiseTextInputEnd(textInputItem);\r\n this.control.endUpdate();\r\n this.control.barManager.updateItemsState();\r\n };\r\n TextInputHandler.prototype.raiseTextInputPermissionsCheck = function (allowed) {\r\n this.control.eventManager.raiseTextInputPermissionsCheck(this.textInputItem, allowed);\r\n };\r\n TextInputHandler.prototype.applyTextInput = function (text) {\r\n if (!this.canFinishTextEditing(text))\r\n return;\r\n var textInputItem = this.textInputItem;\r\n var textInputPosition = this.textInputPosition;\r\n // call this first to be able measure text on changes\r\n this.endTextInput();\r\n if (textInputItem instanceof Shape_1.Shape) {\r\n if (textInputItem.text !== text)\r\n this.control.history.addAndRedo(new ChangeShapeTextHistoryItem_1.ChangeShapeTextHistoryItem(textInputItem, text));\r\n }\r\n else if (textInputItem instanceof Connector_1.Connector)\r\n if (textInputItem.getText(textInputPosition) !== text)\r\n this.control.history.addAndRedo(new ChangeConnectorTextHistoryItem_1.ChangeConnectorTextHistoryItem(textInputItem, textInputPosition, text));\r\n };\r\n TextInputHandler.prototype.canFinishTextEditing = function (text) {\r\n var allowed = true;\r\n if (this.isTextInputActive()) {\r\n var newText = text || this.getTextInputElementValue();\r\n if (this.textInputItem instanceof Shape_1.Shape)\r\n allowed = this.control.permissionsProvider.canApplyShapeTextChange(this.textInputItem, newText);\r\n else if (this.textInputItem instanceof Connector_1.Connector)\r\n allowed = this.control.permissionsProvider.canApplyConnectorTextChange(this.textInputItem, this.textInputPosition, newText);\r\n this.raiseTextInputPermissionsCheck(allowed);\r\n }\r\n return allowed;\r\n };\r\n TextInputHandler.prototype.getTextInputElementValue = function () {\r\n if (this.control.render)\r\n return this.control.render.input.getTextInputElementValue();\r\n return \"\";\r\n };\r\n TextInputHandler.prototype.cancelTextInput = function () {\r\n this.raiseTextInputPermissionsCheck(true);\r\n this.endTextInput();\r\n };\r\n TextInputHandler.prototype.isTextInputActive = function () {\r\n return this.textInputItem !== undefined;\r\n };\r\n TextInputHandler.prototype.processDblClick = function (evt) {\r\n if (evt.source.type === Event_1.MouseEventElementType.Shape) {\r\n var shape = this.control.model.findShape(evt.source.key);\r\n this.startTextInput(shape);\r\n }\r\n else if (evt.source.type === Event_1.MouseEventElementType.Connector) {\r\n var connector = this.control.model.findConnector(evt.source.key);\r\n var position = connector.getTextPositionByPoint(evt.modelPoint);\r\n this.startTextInput(connector, position);\r\n }\r\n else if (evt.source.type === Event_1.MouseEventElementType.ConnectorText) {\r\n var connector = this.control.model.findConnector(evt.source.key);\r\n var position = parseFloat(evt.source.value);\r\n this.startTextInput(connector, position);\r\n }\r\n };\r\n TextInputHandler.prototype.onDblClick = function (evt) {\r\n this.processDblClick(evt);\r\n };\r\n TextInputHandler.prototype.onKeyDown = function (evt) {\r\n if (!this.isTextInputActive())\r\n return;\r\n if (evt.keyCode === 13 && this.hasCtrlModifier(evt.modifiers)) {\r\n evt.preventDefault = true;\r\n this.applyTextInput(evt.inputText);\r\n }\r\n if (evt.keyCode === 27)\r\n this.cancelTextInput();\r\n };\r\n TextInputHandler.prototype.onBlur = function (evt) {\r\n if (this.isTextInputActive())\r\n this.applyTextInput(evt.inputText);\r\n };\r\n TextInputHandler.prototype.onFocus = function (evt) {\r\n };\r\n TextInputHandler.prototype.hasCtrlModifier = function (key) {\r\n return (key & key_1.ModifierKey.Ctrl) > 0;\r\n };\r\n return TextInputHandler;\r\n}());\r\nexports.TextInputHandler = TextInputHandler;\r\n\n\n/***/ }),\n/* 324 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ContextMenuHandler = void 0;\r\nvar Utils_1 = __webpack_require__(3);\r\nvar Event_1 = __webpack_require__(14);\r\nvar key_1 = __webpack_require__(26);\r\nvar batch_updatable_1 = __webpack_require__(80);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar browser_1 = __webpack_require__(19);\r\nvar SELECTION_CHANGED_EVENT = 1;\r\nvar ContextMenuHandler = /** @class */ (function (_super) {\r\n __extends(ContextMenuHandler, _super);\r\n function ContextMenuHandler() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.contextMenuVisible = false;\r\n _this.textInputStarted = false;\r\n _this.canHideContextMenu = true;\r\n _this.onVisibilityChanged = new Utils_1.EventDispatcher();\r\n _this.contextToolboxVisible = false;\r\n _this.hasTouchDown = false;\r\n _this.isTouchUIEnabled = false;\r\n return _this;\r\n }\r\n Object.defineProperty(ContextMenuHandler.prototype, \"isTouchMode\", {\r\n get: function () { return this.isTouchUIEnabled || this.hasTouchDown; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ContextMenuHandler.prototype.initialize = function (selection, isTouchUIEnabled) {\r\n this.selection = selection;\r\n this.isTouchUIEnabled = isTouchUIEnabled;\r\n if (this.isTouchUIEnabled)\r\n this.selection.onChanged.add(this);\r\n };\r\n ContextMenuHandler.prototype.onMouseDown = function (evt) {\r\n this.hasTouchDown = evt.isTouchEvent;\r\n if (this.isTouchMode) {\r\n if (!this.isTouchUIEnabled)\r\n this.selection.onChanged.add(this);\r\n if (evt.source.key === undefined)\r\n this.hideContextMenu();\r\n return;\r\n }\r\n else if (!this.isTouchUIEnabled)\r\n this.selection.onChanged.remove(this);\r\n if (evt.button === Event_1.MouseButton.Left && evt.source.type !== Event_1.MouseEventElementType.Undefined)\r\n this.hideContextMenu();\r\n };\r\n ContextMenuHandler.prototype.onMouseUp = function (evt) {\r\n this.hasTouchDown = false;\r\n if (evt.isTouchEvent || this.isTouchUIEnabled)\r\n return;\r\n if (!browser_1.Browser.MacOSPlatform || browser_1.Browser.MacOSPlatform && this.canHideContextMenu)\r\n this.hideContextMenu();\r\n this.canHideContextMenu = true;\r\n };\r\n ContextMenuHandler.prototype.onFocus = function (evt) {\r\n var _this = this;\r\n if (this.isTouchMode)\r\n setTimeout(function () { _this.showContextMenuAtSelection(); }, 1);\r\n };\r\n ContextMenuHandler.prototype.onBlur = function (evt) {\r\n var _this = this;\r\n if (this.isTouchMode)\r\n setTimeout(function () { _this.hideContextMenu(); }, 1);\r\n };\r\n ContextMenuHandler.prototype.onTextInputFocus = function (evt) {\r\n var _this = this;\r\n if (this.isTouchMode)\r\n setTimeout(function () { _this.hideContextMenu(); }, 1);\r\n };\r\n ContextMenuHandler.prototype.onTextInputBlur = function (evt) {\r\n var _this = this;\r\n if (this.isTouchMode)\r\n setTimeout(function () { _this.showContextMenuAtSelection(); }, 1);\r\n };\r\n ContextMenuHandler.prototype.onLongTouch = function (evt) {\r\n if (this.isTouchMode && evt.source.type === Event_1.MouseEventElementType.Document)\r\n this.showContextMenuAtEmptySelection(evt.modelPoint);\r\n };\r\n ContextMenuHandler.prototype.onKeyDown = function (evt) {\r\n if (!this.isTouchMode && evt.keyCode === key_1.KeyCode.Esc)\r\n this.hideContextMenu();\r\n };\r\n ContextMenuHandler.prototype.onShortcut = function (evt) {\r\n if (!this.isTouchMode)\r\n this.hideContextMenu();\r\n };\r\n ContextMenuHandler.prototype.notifyDragStart = function (itemKeys) {\r\n if (this.isTouchMode)\r\n this.hideContextMenu();\r\n };\r\n ContextMenuHandler.prototype.notifyDragEnd = function (itemKeys) {\r\n if (this.isTouchMode)\r\n this.showContextMenuAtSelection();\r\n };\r\n ContextMenuHandler.prototype.notifyShowContextToolbox = function (modelPoint, getPositionToInsertShapeTo, side, category, callback) {\r\n if (this.isTouchMode) {\r\n this.contextToolboxVisible = true;\r\n this.hideContextMenu();\r\n }\r\n };\r\n ContextMenuHandler.prototype.notifyHideContextToolbox = function () {\r\n if (this.isTouchMode) {\r\n this.contextToolboxVisible = false;\r\n this.showContextMenuAtSelection();\r\n }\r\n };\r\n ContextMenuHandler.prototype.onUpdateUnlocked = function (occurredEvents) {\r\n if (this.isTouchMode)\r\n if (occurredEvents & SELECTION_CHANGED_EVENT)\r\n this.raiseSelectionChanged();\r\n };\r\n ContextMenuHandler.prototype.notifySelectionChanged = function (selection) {\r\n if (this.isUpdateLocked())\r\n this.registerOccurredEvent(SELECTION_CHANGED_EVENT);\r\n else\r\n this.raiseSelectionChanged();\r\n };\r\n ContextMenuHandler.prototype.onContextMenu = function (evt) {\r\n // on Mac OS event sequence is mousedown - contextmenu - mouseup\r\n // on Windows - mousedown - mouseup - contextmenu\r\n // Thats why context menu immediately closes on Mac OS after showing\r\n if (browser_1.Browser.MacOSPlatform)\r\n this.canHideContextMenu = false;\r\n this.showContextMenu(evt.eventPoint, evt.modelPoint);\r\n };\r\n ContextMenuHandler.prototype.notifyTextInputStart = function (item, text, position, size) {\r\n this.textInputStarted = true;\r\n };\r\n ContextMenuHandler.prototype.notifyTextInputEnd = function (item) {\r\n this.textInputStarted = false;\r\n };\r\n ContextMenuHandler.prototype.notifyTextInputPermissionsCheck = function (item, allowed) { };\r\n ContextMenuHandler.prototype.notifyDragScrollStart = function () { };\r\n ContextMenuHandler.prototype.notifyDragScrollEnd = function () { };\r\n ContextMenuHandler.prototype.showContextMenu = function (eventPoint, modelPoint) {\r\n var _this = this;\r\n if (!this.textInputStarted) {\r\n this.onVisibilityChanged.raise1(function (l) { return l.notifyShowContextMenu(eventPoint, modelPoint, _this.isTouchMode); });\r\n this.contextMenuVisible = true;\r\n }\r\n };\r\n ContextMenuHandler.prototype.hideContextMenu = function () {\r\n if (this.contextMenuVisible) {\r\n this.onVisibilityChanged.raise1(function (l) { return l.notifyHideContextMenu(); });\r\n this.contextMenuVisible = false;\r\n }\r\n };\r\n ContextMenuHandler.prototype.getSelectedItems = function () {\r\n return this.selection.getSelectedItems(true);\r\n };\r\n ContextMenuHandler.prototype.showContextMenuAtSelection = function () {\r\n if (this.contextToolboxVisible)\r\n return;\r\n var items = this.getSelectedItems();\r\n if (items.length)\r\n this.showContextMenu(undefined, ModelUtils_1.ModelUtils.createRectangle(items).createPosition());\r\n };\r\n ContextMenuHandler.prototype.showContextMenuAtEmptySelection = function (point) {\r\n if (this.contextToolboxVisible)\r\n return;\r\n var items = this.getSelectedItems();\r\n if (!items.length)\r\n this.showContextMenu(undefined, point);\r\n };\r\n ContextMenuHandler.prototype.raiseSelectionChanged = function () {\r\n var items = this.getSelectedItems();\r\n if (items.length)\r\n this.showContextMenuAtSelection();\r\n else\r\n this.hideContextMenu();\r\n };\r\n return ContextMenuHandler;\r\n}(batch_updatable_1.BatchUpdatableObject));\r\nexports.ContextMenuHandler = ContextMenuHandler;\r\n\n\n/***/ }),\n/* 325 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.VisualizerManager = void 0;\r\nvar ConnectionTargetVisualizer_1 = __webpack_require__(326);\r\nvar ContainerTargetVisualizer_1 = __webpack_require__(327);\r\nvar ExtensionLinesVisualizer_1 = __webpack_require__(156);\r\nvar Event_1 = __webpack_require__(14);\r\nvar ConnectionPointsVisualizer_1 = __webpack_require__(328);\r\nvar Shape_1 = __webpack_require__(13);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar segment_1 = __webpack_require__(33);\r\nvar point_1 = __webpack_require__(1);\r\nvar CanvasSelectionManager_1 = __webpack_require__(157);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar ResizeInfoVisualizer_1 = __webpack_require__(329);\r\nvar SelectionRectVisualizer_1 = __webpack_require__(330);\r\nvar batch_updatable_1 = __webpack_require__(80);\r\nvar LocalizationService_1 = __webpack_require__(37);\r\nvar SELECTION_CHANGED_EVENT = 1;\r\nvar VisualizerManager = /** @class */ (function (_super) {\r\n __extends(VisualizerManager, _super);\r\n function VisualizerManager(settings, readOnly) {\r\n if (readOnly === void 0) { readOnly = settings.readOnly; }\r\n var _this = _super.call(this) || this;\r\n _this.settings = settings;\r\n _this.readOnly = readOnly;\r\n _this.hasTouchDown = false;\r\n _this.isTouchUIEnabled = false;\r\n _this.onVisualizersUpdate = new Utils_1.EventDispatcher();\r\n _this.connectionPointsVisualizer = new ConnectionPointsVisualizer_1.ConnectionPointsVisualizer(_this.onVisualizersUpdate);\r\n _this.connectionPointsVisualizer = new ConnectionPointsVisualizer_1.ConnectionPointsVisualizer(_this.onVisualizersUpdate);\r\n _this.connectionTargetVisualizer = new ConnectionTargetVisualizer_1.ConnectionTargetVisualizer(_this.onVisualizersUpdate);\r\n _this.containerTargetVisualizer = new ContainerTargetVisualizer_1.ContainerTargetVisualizer(_this.onVisualizersUpdate);\r\n _this.extensionLinesVisualizer = new ExtensionLinesVisualizer_1.ExtensionLinesVisualizer(_this.onVisualizersUpdate);\r\n _this.resizeInfoVisualizer = new ResizeInfoVisualizer_1.ResizeInfoVisualizer(_this.onVisualizersUpdate);\r\n _this.selectionRectangleVisualizer = new SelectionRectVisualizer_1.SelectionRectVisualizer(_this.onVisualizersUpdate);\r\n _this.settings.onReadOnlyChanged.add(_this);\r\n return _this;\r\n }\r\n Object.defineProperty(VisualizerManager.prototype, \"isTouchMode\", {\r\n get: function () { return this.isTouchUIEnabled || this.hasTouchDown; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n VisualizerManager.prototype.initialize = function (model, eventManager, selection, isTouchUIEnabled) {\r\n this.model = model;\r\n this.eventManager = eventManager;\r\n this.selection = selection;\r\n this.isTouchUIEnabled = isTouchUIEnabled;\r\n if (this.isTouchUIEnabled)\r\n this.selection.onChanged.add(this);\r\n };\r\n VisualizerManager.prototype.onMouseDown = function (evt) {\r\n this.hasTouchDown = evt.isTouchEvent;\r\n if (!this.isTouchUIEnabled)\r\n if (this.isTouchMode)\r\n this.selection.onChanged.add(this);\r\n else\r\n this.selection.onChanged.remove(this);\r\n };\r\n VisualizerManager.prototype.onMouseUp = function (evt) {\r\n };\r\n VisualizerManager.prototype.onMouseEnter = function (evt) {\r\n };\r\n VisualizerManager.prototype.onMouseLeave = function (evt) {\r\n if (!evt.isTouchEvent && !this.isTouchUIEnabled)\r\n this.resetConnectionPoints();\r\n else\r\n this.hasTouchDown = false;\r\n this.resetConnectionTarget();\r\n this.resetExtensionLines();\r\n this.resetContainerTarget();\r\n this.resetResizeInfo();\r\n this.resetSelectionRectangle();\r\n };\r\n VisualizerManager.prototype.onDocumentDragStart = function (keys) {\r\n this.eventManager.onDocumentDragStart(keys);\r\n };\r\n VisualizerManager.prototype.onDocumentDragEnd = function (keys) {\r\n this.eventManager.onDocumentDragEnd(keys);\r\n };\r\n VisualizerManager.prototype.onDocumentDragScrollStart = function () {\r\n this.eventManager.onDocumentDragScrollStart();\r\n };\r\n VisualizerManager.prototype.onDocumentDragScrollEnd = function () {\r\n this.eventManager.onDocumentDragScrollEnd();\r\n };\r\n VisualizerManager.prototype.onDocumentClick = function (keys) {\r\n this.eventManager.onDocumentClick(keys);\r\n };\r\n VisualizerManager.prototype.canFinishTextEditing = function () {\r\n return this.eventManager.canFinishTextEditing();\r\n };\r\n VisualizerManager.prototype.onBlur = function (evt) {\r\n var _this = this;\r\n if (this.isTouchMode)\r\n setTimeout(function () { _this.hideConnections(); }, 1);\r\n };\r\n VisualizerManager.prototype.onFocus = function (evt) {\r\n var _this = this;\r\n if (this.isTouchMode)\r\n setTimeout(function () { _this.showConnections(); }, 1);\r\n };\r\n VisualizerManager.prototype.updateConnections = function (item, type, value) {\r\n var pointIndex = -1;\r\n if (value && type === Event_1.MouseEventElementType.ShapeConnectionPoint)\r\n pointIndex = parseInt(value);\r\n var preventShowOutside = item && ((!item.allowResizeHorizontally && !item.allowResizeVertically) || item.isLocked);\r\n this.setConnectionPoints(item, type, pointIndex, preventShowOutside);\r\n };\r\n VisualizerManager.prototype.setConnectionPoints = function (item, type, pointIndex, preventShowOutside) {\r\n if (!this.eventManager.isFocused())\r\n return;\r\n if (item && (type === Event_1.MouseEventElementType.Shape || type === Event_1.MouseEventElementType.ShapeResizeBox ||\r\n type === Event_1.MouseEventElementType.ShapeConnectionPoint) && item !== undefined) {\r\n var key = item.key;\r\n var isSelected = this.selection.hasKey(key);\r\n var points = item.getConnectionPoints();\r\n this.connectionPointsVisualizer.setPoints(key, points.map(function (pt) { return new ConnectionPointsVisualizer_1.ConnectionPointInfo(pt, item.getConnectionPointSide(pt)); }), pointIndex, isSelected && !preventShowOutside && item.rectangle);\r\n }\r\n else\r\n this.connectionPointsVisualizer.reset();\r\n };\r\n VisualizerManager.prototype.setConnectionPointIndex = function (index) {\r\n this.connectionPointsVisualizer.setPointIndex(index);\r\n };\r\n VisualizerManager.prototype.updateConnectionPoints = function () {\r\n var item = this.model.findItem(this.connectionPointsVisualizer.getKey());\r\n if (item !== undefined)\r\n this.connectionPointsVisualizer.update();\r\n else\r\n this.connectionPointsVisualizer.reset();\r\n };\r\n VisualizerManager.prototype.resetConnectionPoints = function () {\r\n this.connectionPointsVisualizer.reset();\r\n };\r\n VisualizerManager.prototype.setConnectionTarget = function (item, type) {\r\n if (item && (type === Event_1.MouseEventElementType.Shape ||\r\n type === Event_1.MouseEventElementType.ShapeConnectionPoint))\r\n this.connectionTargetVisualizer.setTargetRect(item.key, item.rectangle, item.strokeWidth);\r\n else\r\n this.connectionTargetVisualizer.reset();\r\n };\r\n VisualizerManager.prototype.resetConnectionTarget = function () {\r\n this.connectionTargetVisualizer.reset();\r\n };\r\n VisualizerManager.prototype.setContainerTarget = function (item, type) {\r\n if (item && !item.isLocked && (type === Event_1.MouseEventElementType.Shape) && item.enableChildren)\r\n this.containerTargetVisualizer.setTargetRect(item.key, item.rectangle, item.strokeWidth);\r\n else\r\n this.containerTargetVisualizer.reset();\r\n };\r\n VisualizerManager.prototype.resetContainerTarget = function () {\r\n this.containerTargetVisualizer.reset();\r\n };\r\n VisualizerManager.prototype.setExtensionLines = function (items) {\r\n var _this = this;\r\n if (!this.eventManager.isFocused())\r\n return;\r\n this.extensionLinesVisualizer.reset();\r\n var rect = ModelUtils_1.ModelUtils.createRectangle(items.filter(function (item) { return item; }));\r\n this.addPageExtensionLines(rect);\r\n this.model.items.forEach(function (item) {\r\n if (items.indexOf(item) > -1)\r\n return;\r\n if (item instanceof Shape_1.Shape)\r\n _this.addShapeExtensionLines(item, rect);\r\n });\r\n };\r\n VisualizerManager.prototype.addPageExtensionLines = function (rect) {\r\n var horPages = Math.round(this.model.size.width / this.model.pageWidth);\r\n var verPages = Math.round(this.model.size.height / this.model.pageHeight);\r\n for (var i = 0; i < horPages; i++)\r\n for (var j = 0; j < verPages; j++) {\r\n var center = new point_1.Point(i * this.model.pageWidth + this.model.pageWidth / 2, j * this.model.pageHeight + this.model.pageHeight / 2);\r\n if (Math.abs(rect.center.x - center.x) < this.settings.gridSize / 2) {\r\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));\r\n this.extensionLinesVisualizer.addSegment(ExtensionLinesVisualizer_1.ExtensionLineType.HorizontalCenterToPageCenter, segment, \"\");\r\n }\r\n if (Math.abs(rect.center.y - center.y) < this.settings.gridSize / 2) {\r\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));\r\n this.extensionLinesVisualizer.addSegment(ExtensionLinesVisualizer_1.ExtensionLineType.VerticalCenterToPageCenter, segment, \"\");\r\n }\r\n if (Math.abs(rect.x - center.x) < this.settings.gridSize / 2) {\r\n var segment = new segment_1.Segment(new point_1.Point(rect.x, 0), new point_1.Point(rect.x, this.model.size.height));\r\n this.extensionLinesVisualizer.addSegment(ExtensionLinesVisualizer_1.ExtensionLineType.LeftToPageCenter, segment, \"\");\r\n }\r\n if (Math.abs(rect.y - center.y) < this.settings.gridSize / 2) {\r\n var segment = new segment_1.Segment(new point_1.Point(0, rect.y), new point_1.Point(this.model.size.width, rect.y));\r\n this.extensionLinesVisualizer.addSegment(ExtensionLinesVisualizer_1.ExtensionLineType.TopToPageCenter, segment, \"\");\r\n }\r\n if (Math.abs(rect.right - center.x) < this.settings.gridSize / 2) {\r\n var segment = new segment_1.Segment(new point_1.Point(rect.right, 0), new point_1.Point(rect.right, this.model.size.height));\r\n this.extensionLinesVisualizer.addSegment(ExtensionLinesVisualizer_1.ExtensionLineType.RightToPageCenter, segment, \"\");\r\n }\r\n if (Math.abs(rect.bottom - center.y) < this.settings.gridSize / 2) {\r\n var segment = new segment_1.Segment(new point_1.Point(0, rect.bottom), new point_1.Point(this.model.size.width, rect.bottom));\r\n this.extensionLinesVisualizer.addSegment(ExtensionLinesVisualizer_1.ExtensionLineType.BottomToPageCenter, segment, \"\");\r\n }\r\n }\r\n };\r\n VisualizerManager.prototype.addShapeExtensionLines = function (shape, rect) {\r\n var sRect = shape.rectangle;\r\n var lwCor = shape.strokeWidth - CanvasSelectionManager_1.CanvasSelectionManager.extensionLineWidth;\r\n var showDistance = true;\r\n var x1nc;\r\n var y1nc;\r\n var x2nc;\r\n var y2nc;\r\n var x1;\r\n var y1;\r\n var x2;\r\n var y2;\r\n if (rect.right < sRect.x) {\r\n x1nc = rect.right;\r\n x2nc = sRect.x;\r\n x1 = x1nc + lwCor + CanvasSelectionManager_1.CanvasSelectionManager.extensionLineOffset;\r\n x2 = x2nc - CanvasSelectionManager_1.CanvasSelectionManager.extensionLineOffset;\r\n }\r\n else if (rect.x > sRect.right) {\r\n x1nc = rect.x;\r\n x2nc = sRect.right;\r\n x1 = x1nc - CanvasSelectionManager_1.CanvasSelectionManager.extensionLineOffset;\r\n x2 = x2nc + lwCor + CanvasSelectionManager_1.CanvasSelectionManager.extensionLineOffset;\r\n }\r\n if (rect.bottom < sRect.y) {\r\n y1nc = rect.bottom;\r\n y2nc = sRect.y;\r\n y1 = y1nc + lwCor + CanvasSelectionManager_1.CanvasSelectionManager.extensionLineOffset;\r\n y2 = y2nc - CanvasSelectionManager_1.CanvasSelectionManager.extensionLineOffset;\r\n }\r\n else if (rect.y > sRect.bottom) {\r\n y1nc = rect.y;\r\n y2nc = sRect.bottom;\r\n y1 = y1nc - CanvasSelectionManager_1.CanvasSelectionManager.extensionLineOffset;\r\n y2 = y2nc + lwCor + CanvasSelectionManager_1.CanvasSelectionManager.extensionLineOffset;\r\n }\r\n if (x1 !== undefined && x2 !== undefined) {\r\n var distanceText = this.getViewUnitText(Math.abs(x1nc - x2nc));\r\n if (rect.center.y === sRect.center.y) {\r\n var segment = new segment_1.Segment(new point_1.Point(x1, rect.center.y), new point_1.Point(x2, sRect.center.y));\r\n this.extensionLinesVisualizer.addSegment(x1 > x2 ? ExtensionLinesVisualizer_1.ExtensionLineType.VerticalCenterAfter : ExtensionLinesVisualizer_1.ExtensionLineType.VerticalCenterBefore, segment, showDistance ? distanceText : \"\");\r\n showDistance = false;\r\n }\r\n if (rect.y === sRect.y) {\r\n var segment = new segment_1.Segment(new point_1.Point(x1, rect.y), new point_1.Point(x2, sRect.y));\r\n this.extensionLinesVisualizer.addSegment(x1 > x2 ? ExtensionLinesVisualizer_1.ExtensionLineType.TopToTopAfter : ExtensionLinesVisualizer_1.ExtensionLineType.TopToTopBefore, segment, showDistance ? distanceText : \"\");\r\n }\r\n if (rect.bottom === sRect.bottom) {\r\n var segment = new segment_1.Segment(new point_1.Point(x1, rect.bottom + lwCor), new point_1.Point(x2, sRect.bottom + lwCor));\r\n this.extensionLinesVisualizer.addSegment(x1 > x2 ? ExtensionLinesVisualizer_1.ExtensionLineType.BottomToBottomAfter : ExtensionLinesVisualizer_1.ExtensionLineType.BottomToBottomBefore, segment, showDistance ? distanceText : \"\");\r\n }\r\n if (rect.y === sRect.bottom) {\r\n var segment = new segment_1.Segment(new point_1.Point(x1, rect.y), new point_1.Point(x2, sRect.bottom + lwCor));\r\n this.extensionLinesVisualizer.addSegment(x1 > x2 ? ExtensionLinesVisualizer_1.ExtensionLineType.TopToBottomAfter : ExtensionLinesVisualizer_1.ExtensionLineType.TopToBottomBefore, segment, showDistance ? distanceText : \"\");\r\n }\r\n if (rect.bottom === sRect.y) {\r\n var segment = new segment_1.Segment(new point_1.Point(x1, rect.bottom + lwCor), new point_1.Point(x2, sRect.y));\r\n this.extensionLinesVisualizer.addSegment(x1 > x2 ? ExtensionLinesVisualizer_1.ExtensionLineType.BottomToTopAfter : ExtensionLinesVisualizer_1.ExtensionLineType.BottomToTopBefore, segment, showDistance ? distanceText : \"\");\r\n }\r\n }\r\n if (y1 !== undefined && y2 !== undefined) {\r\n var distanceText = this.getViewUnitText(Math.abs(y1nc - y2nc));\r\n if (rect.center.x === sRect.center.x) {\r\n var segment = new segment_1.Segment(new point_1.Point(rect.center.x, y1), new point_1.Point(sRect.center.x, y2));\r\n this.extensionLinesVisualizer.addSegment(y1 > y2 ? ExtensionLinesVisualizer_1.ExtensionLineType.HorizontalCenterBelow : ExtensionLinesVisualizer_1.ExtensionLineType.HorizontalCenterAbove, segment, showDistance ? distanceText : \"\");\r\n showDistance = false;\r\n }\r\n if (rect.x === sRect.x) {\r\n var segment = new segment_1.Segment(new point_1.Point(rect.x, y1), new point_1.Point(sRect.x, y2));\r\n this.extensionLinesVisualizer.addSegment(y1 > y2 ? ExtensionLinesVisualizer_1.ExtensionLineType.LeftToLeftBelow : ExtensionLinesVisualizer_1.ExtensionLineType.LeftToLeftAbove, segment, showDistance ? distanceText : \"\");\r\n }\r\n if (rect.right === sRect.right) {\r\n var segment = new segment_1.Segment(new point_1.Point(rect.right + lwCor, y1), new point_1.Point(sRect.right + lwCor, y2));\r\n this.extensionLinesVisualizer.addSegment(y1 > y2 ? ExtensionLinesVisualizer_1.ExtensionLineType.RightToRightBelow : ExtensionLinesVisualizer_1.ExtensionLineType.RightToRightAbove, segment, showDistance ? distanceText : \"\");\r\n }\r\n if (rect.x === sRect.right) {\r\n var segment = new segment_1.Segment(new point_1.Point(rect.x, y1), new point_1.Point(sRect.right + lwCor, y2));\r\n this.extensionLinesVisualizer.addSegment(y1 > y2 ? ExtensionLinesVisualizer_1.ExtensionLineType.LeftToRightBelow : ExtensionLinesVisualizer_1.ExtensionLineType.LeftToRightAbove, segment, showDistance ? distanceText : \"\");\r\n }\r\n if (rect.right === sRect.x) {\r\n var segment = new segment_1.Segment(new point_1.Point(rect.right + lwCor, y1), new point_1.Point(sRect.x, y2));\r\n this.extensionLinesVisualizer.addSegment(y1 > y2 ? ExtensionLinesVisualizer_1.ExtensionLineType.RightToLeftBelow : ExtensionLinesVisualizer_1.ExtensionLineType.RightToLeftAbove, segment, showDistance ? distanceText : \"\");\r\n }\r\n }\r\n };\r\n VisualizerManager.prototype.resetExtensionLines = function () {\r\n this.extensionLinesVisualizer.reset();\r\n };\r\n VisualizerManager.prototype.setResizeInfo = function (items) {\r\n var rect = ModelUtils_1.ModelUtils.createRectangle(items);\r\n var point = new point_1.Point(rect.center.x, rect.bottom + CanvasSelectionManager_1.CanvasSelectionManager.resizeInfoOffset);\r\n var text = this.getViewUnitText(rect.width) + \" x \" + this.getViewUnitText(rect.height);\r\n this.resizeInfoVisualizer.set(point, text);\r\n };\r\n VisualizerManager.prototype.resetResizeInfo = function () {\r\n this.resizeInfoVisualizer.reset();\r\n };\r\n VisualizerManager.prototype.setSelectionRectangle = function (rect) {\r\n this.selectionRectangleVisualizer.setRectangle(rect);\r\n };\r\n VisualizerManager.prototype.resetSelectionRectangle = function () {\r\n this.selectionRectangleVisualizer.reset();\r\n };\r\n // utils\r\n VisualizerManager.prototype.getViewUnitText = function (value) {\r\n return ModelUtils_1.ModelUtils.getUnitText(this.settings.viewUnits, LocalizationService_1.DiagramLocalizationService.unitItems, LocalizationService_1.DiagramLocalizationService.formatUnit, value);\r\n };\r\n VisualizerManager.prototype.notifyReadOnlyChanged = function (readOnly) {\r\n this.readOnly = readOnly;\r\n if (this.readOnly) {\r\n this.resetConnectionPoints();\r\n this.resetConnectionTarget();\r\n this.resetExtensionLines();\r\n this.resetContainerTarget();\r\n this.resetResizeInfo();\r\n this.resetSelectionRectangle();\r\n }\r\n };\r\n VisualizerManager.prototype.notifyDragStart = function (itemKeys) {\r\n if (this.isTouchMode)\r\n this.hideConnections();\r\n };\r\n VisualizerManager.prototype.notifyDragEnd = function (itemKeys) {\r\n if (this.isTouchMode)\r\n this.showConnections();\r\n };\r\n VisualizerManager.prototype.onUpdateUnlocked = function (occurredEvents) {\r\n if (this.isTouchMode)\r\n if (occurredEvents & SELECTION_CHANGED_EVENT)\r\n this.raiseSelectionChanged();\r\n };\r\n VisualizerManager.prototype.notifyDragScrollStart = function () { };\r\n VisualizerManager.prototype.notifyDragScrollEnd = function () { };\r\n VisualizerManager.prototype.notifySelectionChanged = function (selection) {\r\n if (this.isUpdateLocked())\r\n this.registerOccurredEvent(SELECTION_CHANGED_EVENT);\r\n else\r\n this.raiseSelectionChanged();\r\n };\r\n VisualizerManager.prototype.hideConnections = function () {\r\n if (this.readOnly)\r\n return;\r\n this.resetConnectionPoints();\r\n };\r\n VisualizerManager.prototype.showConnections = function () {\r\n if (this.readOnly)\r\n return;\r\n if (this.needShowConnections()) {\r\n var shapes = this.selection.getSelectedShapes();\r\n if (shapes.length === 1)\r\n this.setConnectionPoints(shapes[0], Event_1.MouseEventElementType.ShapeConnectionPoint, -1, (!shapes[0].allowResizeHorizontally && !shapes[0].allowResizeVertically) || shapes[0].isLocked);\r\n }\r\n };\r\n VisualizerManager.prototype.raiseSelectionChanged = function () {\r\n if (this.needShowConnections())\r\n this.showConnections();\r\n else\r\n this.hideConnections();\r\n };\r\n VisualizerManager.prototype.needShowConnections = function () {\r\n var items = this.selection.getSelectedItems();\r\n var shapes = this.selection.getSelectedShapes();\r\n return (items.length === 1 && shapes.length === 1);\r\n };\r\n return VisualizerManager;\r\n}(batch_updatable_1.BatchUpdatableObject));\r\nexports.VisualizerManager = VisualizerManager;\r\n\n\n/***/ }),\n/* 326 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ConnectionTargetVisualizer = exports.ConnectionTargetInfo = void 0;\r\nvar TargetVisualizerBase_1 = __webpack_require__(155);\r\nvar ConnectionTargetInfo = /** @class */ (function () {\r\n function ConnectionTargetInfo(rect, strokeWidth) {\r\n this.rect = rect;\r\n this.strokeWidth = strokeWidth;\r\n this.allowed = true;\r\n }\r\n return ConnectionTargetInfo;\r\n}());\r\nexports.ConnectionTargetInfo = ConnectionTargetInfo;\r\nvar ConnectionTargetVisualizer = /** @class */ (function (_super) {\r\n __extends(ConnectionTargetVisualizer, _super);\r\n function ConnectionTargetVisualizer(dispatcher) {\r\n return _super.call(this, dispatcher) || this;\r\n }\r\n ConnectionTargetVisualizer.prototype.raiseShow = function () {\r\n var _this = this;\r\n var info = new ConnectionTargetInfo(this.targetRect, this.targetStrokeWidth);\r\n this.dispatcher.raise1(function (l) { return l.notifyConnectionTargetShow(_this.key, info); });\r\n };\r\n ConnectionTargetVisualizer.prototype.raiseHide = function () {\r\n this.dispatcher.raise1(function (l) { return l.notifyConnectionTargetHide(); });\r\n };\r\n return ConnectionTargetVisualizer;\r\n}(TargetVisualizerBase_1.TargetVisualizerBase));\r\nexports.ConnectionTargetVisualizer = ConnectionTargetVisualizer;\r\n\n\n/***/ }),\n/* 327 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ContainerTargetVisualizer = exports.ContainerTargetInfo = void 0;\r\nvar TargetVisualizerBase_1 = __webpack_require__(155);\r\nvar ContainerTargetInfo = /** @class */ (function () {\r\n function ContainerTargetInfo(rect, strokeWidth) {\r\n this.rect = rect;\r\n this.strokeWidth = strokeWidth;\r\n }\r\n return ContainerTargetInfo;\r\n}());\r\nexports.ContainerTargetInfo = ContainerTargetInfo;\r\nvar ContainerTargetVisualizer = /** @class */ (function (_super) {\r\n __extends(ContainerTargetVisualizer, _super);\r\n function ContainerTargetVisualizer(dispatcher) {\r\n return _super.call(this, dispatcher) || this;\r\n }\r\n ContainerTargetVisualizer.prototype.raiseShow = function () {\r\n var _this = this;\r\n var info = new ContainerTargetInfo(this.targetRect, this.targetStrokeWidth);\r\n this.dispatcher.raise1(function (l) { return l.notifyContainerTargetShow(_this.key, info); });\r\n };\r\n ContainerTargetVisualizer.prototype.raiseHide = function () {\r\n this.dispatcher.raise1(function (l) { return l.notifyContainerTargetHide(); });\r\n };\r\n return ContainerTargetVisualizer;\r\n}(TargetVisualizerBase_1.TargetVisualizerBase));\r\nexports.ContainerTargetVisualizer = ContainerTargetVisualizer;\r\n\n\n/***/ }),\n/* 328 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ConnectionPointsVisualizer = exports.ConnectionPointInfo = void 0;\r\nvar ConnectionPointInfo = /** @class */ (function () {\r\n function ConnectionPointInfo(point, side) {\r\n this.point = point;\r\n this.side = side;\r\n this.allowed = true;\r\n }\r\n return ConnectionPointInfo;\r\n}());\r\nexports.ConnectionPointInfo = ConnectionPointInfo;\r\nvar ConnectionPointsVisualizer = /** @class */ (function () {\r\n function ConnectionPointsVisualizer(dispatcher) {\r\n this.dispatcher = dispatcher;\r\n }\r\n ConnectionPointsVisualizer.prototype.getKey = function () {\r\n return this.key;\r\n };\r\n ConnectionPointsVisualizer.prototype.setPoints = function (key, points, pointIndex, outsideRectangle) {\r\n if (this.key !== key || this.pointIndex !== pointIndex) {\r\n this.key = key;\r\n this.points = points;\r\n this.pointIndex = pointIndex;\r\n this.outsideRectangle = outsideRectangle;\r\n this.raiseShow();\r\n }\r\n };\r\n ConnectionPointsVisualizer.prototype.setPointIndex = function (pointIndex) {\r\n if (0 <= pointIndex && pointIndex < this.points.length && this.pointIndex !== pointIndex) {\r\n this.pointIndex = pointIndex;\r\n this.raiseShow();\r\n }\r\n };\r\n ConnectionPointsVisualizer.prototype.update = function () {\r\n this.raiseShow();\r\n };\r\n ConnectionPointsVisualizer.prototype.reset = function () {\r\n if (this.key !== \"-1\") {\r\n this.key = \"-1\";\r\n this.points = [];\r\n this.pointIndex = -1;\r\n this.outsideRectangle = undefined;\r\n this.raiseHide();\r\n }\r\n };\r\n ConnectionPointsVisualizer.prototype.raiseShow = function () {\r\n var _this = this;\r\n this.dispatcher.raise1(function (l) { return l.notifyConnectionPointsShow(_this.key, _this.points, _this.pointIndex, _this.outsideRectangle); });\r\n };\r\n ConnectionPointsVisualizer.prototype.raiseHide = function () {\r\n this.dispatcher.raise1(function (l) { return l.notifyConnectionPointsHide(); });\r\n };\r\n return ConnectionPointsVisualizer;\r\n}());\r\nexports.ConnectionPointsVisualizer = ConnectionPointsVisualizer;\r\n\n\n/***/ }),\n/* 329 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ResizeInfoVisualizer = void 0;\r\nvar ResizeInfoVisualizer = /** @class */ (function () {\r\n function ResizeInfoVisualizer(dispatcher) {\r\n this.dispatcher = dispatcher;\r\n }\r\n ResizeInfoVisualizer.prototype.set = function (point, text) {\r\n this.point = point;\r\n this.text = text;\r\n this.raiseShow();\r\n };\r\n ResizeInfoVisualizer.prototype.reset = function () {\r\n if (this.point !== undefined) {\r\n this.point = undefined;\r\n this.text = undefined;\r\n this.raiseHide();\r\n }\r\n };\r\n ResizeInfoVisualizer.prototype.raiseShow = function () {\r\n var _this = this;\r\n this.dispatcher.raise1(function (l) { return l.notifyResizeInfoShow(_this.point, _this.text); });\r\n };\r\n ResizeInfoVisualizer.prototype.raiseHide = function () {\r\n this.dispatcher.raise1(function (l) { return l.notifyResizeInfoHide(); });\r\n };\r\n return ResizeInfoVisualizer;\r\n}());\r\nexports.ResizeInfoVisualizer = ResizeInfoVisualizer;\r\n\n\n/***/ }),\n/* 330 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SelectionRectVisualizer = void 0;\r\nvar SelectionRectVisualizer = /** @class */ (function () {\r\n function SelectionRectVisualizer(dispatcher) {\r\n this.dispatcher = dispatcher;\r\n }\r\n SelectionRectVisualizer.prototype.setRectangle = function (rect) {\r\n this.rect = rect;\r\n this.raiseShow();\r\n };\r\n SelectionRectVisualizer.prototype.reset = function () {\r\n this.rect = undefined;\r\n this.raiseHide();\r\n };\r\n SelectionRectVisualizer.prototype.raiseShow = function () {\r\n var _this = this;\r\n this.dispatcher.raise1(function (l) { return l.notifySelectionRectShow(_this.rect); });\r\n };\r\n SelectionRectVisualizer.prototype.raiseHide = function () {\r\n this.dispatcher.raise1(function (l) { return l.notifySelectionRectHide(); });\r\n };\r\n return SelectionRectVisualizer;\r\n}());\r\nexports.SelectionRectVisualizer = SelectionRectVisualizer;\r\n\n\n/***/ }),\n/* 331 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ContextToolboxHandler = void 0;\r\nvar Event_1 = __webpack_require__(14);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar key_1 = __webpack_require__(26);\r\nvar ContextToolboxHandler = /** @class */ (function () {\r\n function ContextToolboxHandler() {\r\n this.isTouchUIEnabled = false;\r\n this.contextToolboxVisible = false;\r\n this.onVisibilityChanged = new Utils_1.EventDispatcher();\r\n }\r\n ContextToolboxHandler.prototype.initialize = function (isTouchUIEnabled) {\r\n this.isTouchUIEnabled = isTouchUIEnabled;\r\n };\r\n ContextToolboxHandler.prototype.onMouseDown = function (evt) {\r\n if (evt.source.type !== Event_1.MouseEventElementType.Undefined)\r\n this.hideContextToolbox();\r\n };\r\n ContextToolboxHandler.prototype.onMouseUp = function (evt) {\r\n if (evt.source.type !== Event_1.MouseEventElementType.Undefined && !this.isTouchUIEnabled)\r\n this.hideContextToolbox();\r\n };\r\n ContextToolboxHandler.prototype.onFocus = function (evt) { };\r\n ContextToolboxHandler.prototype.onBlur = function (evt) { };\r\n ContextToolboxHandler.prototype.onKeyDown = function (evt) {\r\n if (evt.keyCode === key_1.KeyCode.Esc)\r\n this.hideContextToolbox();\r\n };\r\n ContextToolboxHandler.prototype.onShortcut = function (evt) {\r\n this.hideContextToolbox();\r\n };\r\n ContextToolboxHandler.prototype.showContextToolbox = function (modelPoint, getPositionToInsertShapeTo, side, category, applyCallback, cancelCallback) {\r\n this.onVisibilityChanged.raise1(function (l) { return l.notifyShowContextToolbox(modelPoint, getPositionToInsertShapeTo, side, category, applyCallback); });\r\n this.contextToolboxVisible = true;\r\n this.contextToolboxCancelCallback = cancelCallback;\r\n };\r\n ContextToolboxHandler.prototype.hideContextToolbox = function (applyed) {\r\n if (this.contextToolboxVisible) {\r\n this.onVisibilityChanged.raise1(function (l) { return l.notifyHideContextToolbox(); });\r\n if (this.contextToolboxCancelCallback) {\r\n if (!applyed)\r\n this.contextToolboxCancelCallback();\r\n this.contextToolboxCancelCallback = undefined;\r\n }\r\n this.contextToolboxVisible = false;\r\n }\r\n };\r\n return ContextToolboxHandler;\r\n}());\r\nexports.ContextToolboxHandler = ContextToolboxHandler;\r\n\n\n/***/ }),\n/* 332 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Selection = void 0;\r\nvar Utils_1 = __webpack_require__(3);\r\nvar InputPosition_1 = __webpack_require__(333);\r\nvar Shape_1 = __webpack_require__(13);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar Data_1 = __webpack_require__(45);\r\nvar Selection = /** @class */ (function () {\r\n function Selection(model) {\r\n this.onChanged = new Utils_1.EventDispatcher();\r\n this.inputPosition = new InputPosition_1.InputPosition(this);\r\n this.onChanged.add(this.inputPosition);\r\n this.initialize(model);\r\n }\r\n Selection.prototype.initialize = function (model) {\r\n this.model = model;\r\n this.keys = [];\r\n this.inputPosition.initialize();\r\n };\r\n Selection.prototype.add = function (key) {\r\n if (this.keys.indexOf(key) < 0) { // binarySearch\r\n this.keys.push(key);\r\n this.raiseSelectionChanged();\r\n }\r\n };\r\n Selection.prototype.remove = function (key) {\r\n if (this.keys.indexOf(key) >= 0) { // binarySearch\r\n this.keys.splice(this.keys.indexOf(key), 1);\r\n this.raiseSelectionChanged();\r\n }\r\n };\r\n Selection.prototype.clear = function () {\r\n if (this.keys.length > 0) {\r\n this.keys = [];\r\n this.raiseSelectionChanged();\r\n }\r\n };\r\n Selection.prototype.set = function (keys, forceChange) {\r\n if (forceChange || !Data_1.Data.ArrayEqual(keys, this.keys)) {\r\n this.keys = keys;\r\n this.raiseSelectionChanged();\r\n }\r\n };\r\n Selection.prototype.getKeys = function () {\r\n return this.keys;\r\n };\r\n Selection.prototype.getKey = function (index) {\r\n return this.keys[index];\r\n };\r\n Selection.prototype.getSelectedItemsInsideContainers = function (items) {\r\n var _this = this;\r\n var result = items.slice();\r\n items.forEach(function (item) {\r\n if (item instanceof Shape_1.Shape) {\r\n var children = _this.getSelectedItemsInsideContainers(_this.model.getChildren(item));\r\n children.forEach(function (child) {\r\n if (result.indexOf(child) === -1 && !_this.hasKey(child.key))\r\n result.push(child);\r\n });\r\n }\r\n });\r\n return result;\r\n };\r\n Selection.prototype.getSelectedItemsCore = function (includeLocked) {\r\n var _this = this;\r\n return this.keys.map(function (key) { return _this.model.findItem(key); })\r\n .filter(function (conn) { return conn && (includeLocked || !conn.isLocked); });\r\n };\r\n Selection.prototype.getSelectedItems = function (includeLocked, includeInsideContainers) {\r\n if (includeInsideContainers)\r\n return this.getSelectedItemsInsideContainers(this.getSelectedItemsCore(includeLocked));\r\n return this.getSelectedItemsCore(includeLocked);\r\n };\r\n Selection.prototype.getSelectedShapes = function (includeLocked, includeInsideContainers) {\r\n var _this = this;\r\n if (includeInsideContainers) {\r\n var items = this.getSelectedItemsCore(includeLocked);\r\n return this.getSelectedItemsInsideContainers(items)\r\n .map(function (item) { return item instanceof Shape_1.Shape ? item : undefined; })\r\n .filter(function (shape) { return shape; });\r\n }\r\n else\r\n return this.keys.map(function (key) { return _this.model.findShape(key); })\r\n .filter(function (conn) { return conn && (includeLocked || !conn.isLocked); });\r\n };\r\n Selection.prototype.getSelectedConnectors = function (includeLocked, includeInsideContainers) {\r\n var _this = this;\r\n if (includeInsideContainers) {\r\n var items = this.keys.map(function (key) { return _this.model.findItem(key); });\r\n return this.getSelectedItemsInsideContainers(items)\r\n .map(function (item) { return item instanceof Connector_1.Connector ? item : undefined; })\r\n .filter(function (connector) { return connector && (includeLocked || !connector.isLocked); });\r\n }\r\n else\r\n return this.keys.map(function (key) { return _this.model.findConnector(key); })\r\n .filter(function (conn) { return conn && (includeLocked || !conn.isLocked); });\r\n };\r\n Selection.prototype.hasKey = function (key) {\r\n return this.keys.indexOf(key) >= 0;\r\n };\r\n Selection.prototype.isEmpty = function (includeLocked) {\r\n return !this.getSelectedItems(includeLocked).length;\r\n };\r\n Selection.prototype.selectRect = function (rect) {\r\n var keys = [];\r\n this.model.iterateItems(function (item) {\r\n if (item.intersectedByRect(rect))\r\n keys.push(item.key);\r\n });\r\n this.set(keys);\r\n };\r\n Selection.prototype.raiseSelectionChanged = function () {\r\n this.onChanged.raise(\"notifySelectionChanged\", this);\r\n };\r\n return Selection;\r\n}());\r\nexports.Selection = Selection;\r\n\n\n/***/ }),\n/* 333 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.InputPosition = void 0;\r\nvar InputPositionProperties_1 = __webpack_require__(334);\r\nvar Data_1 = __webpack_require__(45);\r\nvar InputPosition = /** @class */ (function () {\r\n function InputPosition(selection) {\r\n this.selection = selection;\r\n this.initialProperties = new InputPositionProperties_1.InputPositionProperties(this.selection);\r\n this.defaultProperties = new InputPositionProperties_1.InputPositionProperties(this.selection, this.initialProperties);\r\n this.currentProperties = new InputPositionProperties_1.InputPositionProperties(this.selection, this.defaultProperties);\r\n }\r\n InputPosition.prototype.initialize = function () {\r\n this.reset();\r\n this.defaultProperties.reset();\r\n };\r\n InputPosition.prototype.reset = function () {\r\n this.currentProperties.reset();\r\n };\r\n // Connectors\r\n InputPosition.prototype.getDefaultConnectorProperties = function () {\r\n return this.defaultProperties.getConnectorProperties();\r\n };\r\n InputPosition.prototype.getDefaultConnectorPropertyValue = function (propertyName) {\r\n return this.defaultProperties.getConnectorPropertyValue(propertyName);\r\n };\r\n InputPosition.prototype.getCurrentConnectorPropertyValue = function (propertyName) {\r\n return this.currentProperties.getConnectorPropertyValue(propertyName);\r\n };\r\n InputPosition.prototype.setConnectorPropertyValue = function (propertyName, value) {\r\n this.currentProperties.setConnectorPropertyValue(propertyName, value);\r\n if (this.selection.isEmpty(true))\r\n this.defaultProperties.setConnectorPropertyValue(propertyName, value);\r\n };\r\n InputPosition.prototype.setInitialConnectorProperties = function (properties) {\r\n this.defaultProperties.reset();\r\n this.currentProperties.reset();\r\n for (var propertyName in properties)\r\n if (Object.prototype.hasOwnProperty.call(properties, propertyName))\r\n this.initialProperties.setConnectorPropertyValue(propertyName, properties[propertyName]);\r\n };\r\n // Style\r\n InputPosition.prototype.getDefaultStyle = function () {\r\n return this.defaultProperties.getStyle();\r\n };\r\n InputPosition.prototype.getDefaultStylePropertyValue = function (propertyName) {\r\n return this.defaultProperties.getStylePropertyValue(propertyName);\r\n };\r\n InputPosition.prototype.getDefaultTextStyle = function () {\r\n return this.defaultProperties.getTextStyle();\r\n };\r\n InputPosition.prototype.getDefaultTextStylePropertyValue = function (propertyName) {\r\n return this.defaultProperties.getTextStylePropertyValue(propertyName);\r\n };\r\n InputPosition.prototype.getCurrentStylePropertyValue = function (propertyName) {\r\n return this.currentProperties.getStylePropertyValue(propertyName);\r\n };\r\n InputPosition.prototype.getCurrentTextStylePropertyValue = function (propertyName) {\r\n return this.currentProperties.getTextStylePropertyValue(propertyName);\r\n };\r\n InputPosition.prototype.setStylePropertyValue = function (propertyName, value) {\r\n this.currentProperties.setStylePropertyValue(propertyName, value);\r\n if (this.selection.isEmpty(true))\r\n this.defaultProperties.setStylePropertyValue(propertyName, value);\r\n };\r\n InputPosition.prototype.setTextStylePropertyValue = function (propertyName, value) {\r\n this.currentProperties.setTextStylePropertyValue(propertyName, value);\r\n if (this.selection.isEmpty(true))\r\n this.defaultProperties.setTextStylePropertyValue(propertyName, value);\r\n };\r\n InputPosition.prototype.setInitialStyleProperties = function (style) {\r\n this.defaultProperties.reset();\r\n this.currentProperties.reset();\r\n var styleObj = typeof style === \"string\" ? Data_1.Data.cssTextToObject(style) : style;\r\n for (var propertyName in styleObj)\r\n if (Object.prototype.hasOwnProperty.call(styleObj, propertyName))\r\n this.initialProperties.setStylePropertyValue(propertyName, styleObj[propertyName]);\r\n };\r\n InputPosition.prototype.setInitialTextStyleProperties = function (style) {\r\n this.defaultProperties.reset();\r\n this.currentProperties.reset();\r\n var styleObj = typeof style === \"string\" ? Data_1.Data.cssTextToObject(style) : style;\r\n for (var propertyName in styleObj)\r\n if (Object.prototype.hasOwnProperty.call(styleObj, propertyName))\r\n this.initialProperties.setTextStylePropertyValue(propertyName, styleObj[propertyName]);\r\n };\r\n InputPosition.prototype.notifySelectionChanged = function (selection) {\r\n this.reset();\r\n };\r\n return InputPosition;\r\n}());\r\nexports.InputPosition = InputPosition;\r\n\n\n/***/ }),\n/* 334 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.InputPositionProperties = void 0;\r\nvar ConnectorProperties_1 = __webpack_require__(30);\r\nvar Style_1 = __webpack_require__(27);\r\nvar InputPositionProperties = /** @class */ (function () {\r\n function InputPositionProperties(selection, baseProperties) {\r\n this.selection = selection;\r\n this.baseProperties = baseProperties;\r\n this.selection = selection;\r\n }\r\n InputPositionProperties.prototype.reset = function () {\r\n this.connectorProperties = null;\r\n this.style = null;\r\n this.textStyle = null;\r\n };\r\n InputPositionProperties.prototype.getConnectorProperties = function () {\r\n if (!this.connectorProperties) {\r\n this.connectorProperties = this.baseProperties ? this.baseProperties.getConnectorProperties().clone() : new ConnectorProperties_1.ConnectorProperties();\r\n this.updateConnectorProperties(this.connectorProperties);\r\n }\r\n return this.connectorProperties;\r\n };\r\n InputPositionProperties.prototype.getConnectorPropertyValue = function (propertyName) {\r\n return this.getConnectorProperties()[propertyName];\r\n };\r\n InputPositionProperties.prototype.setConnectorPropertyValue = function (propertyName, value) {\r\n this.getConnectorProperties()[propertyName] = value;\r\n };\r\n InputPositionProperties.prototype.getStyle = function () {\r\n if (!this.style) {\r\n this.style = this.baseProperties ? this.baseProperties.getStyle().clone() : new Style_1.Style();\r\n this.updateStyle(this.style, \"style\");\r\n }\r\n return this.style;\r\n };\r\n InputPositionProperties.prototype.getStylePropertyValue = function (propertyName) {\r\n return this.getStyle()[propertyName];\r\n };\r\n InputPositionProperties.prototype.setStylePropertyValue = function (propertyName, value) {\r\n this.getStyle()[propertyName] = value;\r\n };\r\n InputPositionProperties.prototype.getTextStyle = function () {\r\n if (!this.textStyle) {\r\n this.textStyle = this.baseProperties ? this.baseProperties.getTextStyle().clone() : new Style_1.TextStyle();\r\n this.updateStyle(this.textStyle, \"styleText\");\r\n }\r\n return this.textStyle;\r\n };\r\n InputPositionProperties.prototype.getTextStylePropertyValue = function (propertyName) {\r\n return this.getTextStyle()[propertyName];\r\n };\r\n InputPositionProperties.prototype.setTextStylePropertyValue = function (propertyName, value) {\r\n this.getTextStyle()[propertyName] = value;\r\n };\r\n InputPositionProperties.prototype.updateConnectorProperties = function (properties) {\r\n var _this = this;\r\n var connectors = this.selection.getSelectedConnectors(true);\r\n properties.forEach(function (propertyName) {\r\n _this.updatePropertyValue(properties, connectors, function (item) { return item[\"properties\"]; }, propertyName);\r\n });\r\n };\r\n InputPositionProperties.prototype.updateStyle = function (style, stylePropertyName) {\r\n var _this = this;\r\n var items = this.selection.getSelectedItems(true);\r\n style.forEach(function (propertyName) {\r\n _this.updatePropertyValue(style, items, function (item) { return item[stylePropertyName]; }, propertyName);\r\n });\r\n };\r\n InputPositionProperties.prototype.updatePropertyValue = function (destObj, items, getSrcObj, propertyName) {\r\n var value;\r\n var valueAssigned = false;\r\n items.forEach(function (item) {\r\n var obj = getSrcObj(item);\r\n var propertyValue = obj[propertyName];\r\n if (value === undefined && propertyValue !== undefined) {\r\n value = propertyValue;\r\n valueAssigned = true;\r\n }\r\n else if (valueAssigned && value !== propertyValue) {\r\n value = undefined;\r\n return;\r\n }\r\n });\r\n if (valueAssigned)\r\n destObj[propertyName] = value;\r\n };\r\n return InputPositionProperties;\r\n}());\r\nexports.InputPositionProperties = InputPositionProperties;\r\n\n\n/***/ }),\n/* 335 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.History = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar History = /** @class */ (function () {\r\n function History(modelManipulator) {\r\n this.historyItems = [];\r\n this.currentIndex = -1;\r\n this.incrementalId = -1;\r\n this.transactionLevel = -1;\r\n this.unmodifiedIndex = -1;\r\n // need for async actions\r\n this.currTransactionId = 0;\r\n this.onChanged = new Utils_1.EventDispatcher();\r\n this.modelManipulator = modelManipulator;\r\n }\r\n History.prototype.isModified = function () {\r\n if (this.unmodifiedIndex === this.currentIndex)\r\n return false;\r\n var startIndex = Math.min(this.unmodifiedIndex, this.currentIndex);\r\n var endIndex = Math.max(this.unmodifiedIndex, this.currentIndex);\r\n for (var i = startIndex + 1; i <= endIndex; i++)\r\n if (this.historyItems[i].changeModified())\r\n return true;\r\n return false;\r\n };\r\n History.prototype.undo = function () {\r\n if (!this.canUndo())\r\n return;\r\n this.historyItems[this.currentIndex].undo(this.modelManipulator);\r\n this.currentIndex--;\r\n this.raiseChanged();\r\n };\r\n History.prototype.redo = function () {\r\n if (!this.canRedo())\r\n return;\r\n if (this.startDataSyncItem) {\r\n this.startDataSyncItem.undo(this.modelManipulator);\r\n this.startDataSyncItem = undefined;\r\n }\r\n this.currentIndex++;\r\n this.historyItems[this.currentIndex].redo(this.modelManipulator);\r\n this.raiseChanged();\r\n };\r\n History.prototype.canUndo = function () {\r\n return this.currentIndex >= 0;\r\n };\r\n History.prototype.canRedo = function () {\r\n return this.currentIndex < this.historyItems.length - 1;\r\n };\r\n History.prototype.beginTransaction = function () {\r\n this.transactionLevel++;\r\n if (this.transactionLevel === 0)\r\n this.transaction = new HistoryItem_1.CompositionHistoryItem();\r\n var id = this.currTransactionId++;\r\n return id;\r\n };\r\n History.prototype.endTransaction = function (isDataSyncTransaction) {\r\n if (--this.transactionLevel >= 0)\r\n return;\r\n var transactionLength = this.transaction.historyItems.length;\r\n if (transactionLength > 0) {\r\n var historyItem = transactionLength > 1 ? this.transaction : this.transaction.historyItems.pop();\r\n if (isDataSyncTransaction)\r\n this.addDataSyncItem(historyItem);\r\n else\r\n this.addInternal(historyItem);\r\n }\r\n if (transactionLength > 0 && !isDataSyncTransaction)\r\n this.raiseChanged();\r\n delete this.transaction;\r\n };\r\n History.prototype.addAndRedo = function (historyItem) {\r\n this.add(historyItem);\r\n historyItem.redo(this.modelManipulator);\r\n this.raiseChanged();\r\n };\r\n History.prototype.add = function (historyItem) {\r\n if (this.transactionLevel >= 0)\r\n this.transaction.add(historyItem);\r\n else\r\n this.addInternal(historyItem);\r\n };\r\n History.prototype.addInternal = function (historyItem) {\r\n if (this.currentIndex < this.historyItems.length - 1) {\r\n this.historyItems.splice(this.currentIndex + 1);\r\n this.unmodifiedIndex = Math.min(this.unmodifiedIndex, this.currentIndex);\r\n }\r\n this.historyItems.push(historyItem);\r\n this.currentIndex++;\r\n this.deleteOldItems();\r\n };\r\n History.prototype.addDataSyncItem = function (historyItem) {\r\n var toHistoryItem = this.historyItems[this.currentIndex];\r\n if (toHistoryItem) {\r\n var compositionHistoryItem = void 0;\r\n if (toHistoryItem instanceof HistoryItem_1.CompositionHistoryItem)\r\n compositionHistoryItem = toHistoryItem;\r\n else {\r\n this.historyItems.splice(this.currentIndex, 1);\r\n compositionHistoryItem = new HistoryItem_1.CompositionHistoryItem();\r\n this.historyItems.push(compositionHistoryItem);\r\n compositionHistoryItem.historyItems.push(toHistoryItem);\r\n }\r\n compositionHistoryItem.dataSyncItems.push(historyItem);\r\n }\r\n else if (this.historyItems.length)\r\n this.startDataSyncItem = historyItem;\r\n };\r\n History.prototype.deleteOldItems = function () {\r\n var exceedItemsCount = this.historyItems.length - History.MAX_HISTORY_ITEM_COUNT;\r\n if (exceedItemsCount > 0 && this.currentIndex > exceedItemsCount) {\r\n this.historyItems.splice(0, exceedItemsCount);\r\n this.currentIndex -= exceedItemsCount;\r\n }\r\n };\r\n History.prototype.getNextId = function () {\r\n this.incrementalId++;\r\n return this.incrementalId;\r\n };\r\n History.prototype.clear = function () {\r\n this.currentIndex = -1;\r\n this.unmodifiedIndex = -1;\r\n this.incrementalId = -1;\r\n this.historyItems = [];\r\n delete this.transaction;\r\n this.transactionLevel = -1;\r\n };\r\n History.prototype.resetModified = function () {\r\n this.unmodifiedIndex = this.currentIndex;\r\n };\r\n History.prototype.getCurrentItemId = function () {\r\n if (this.currentIndex === -1)\r\n return -1;\r\n var currentItem = this.historyItems[this.currentIndex];\r\n if (currentItem.uniqueId === -1)\r\n currentItem.uniqueId = this.getNextId();\r\n return currentItem.uniqueId;\r\n };\r\n History.prototype.undoTransaction = function () {\r\n var items = this.transaction.historyItems;\r\n while (items.length)\r\n items.pop().undo(this.modelManipulator);\r\n };\r\n History.prototype.undoTransactionTo = function (item) {\r\n var items = this.transaction.historyItems;\r\n while (items.length) {\r\n var ti = items.pop();\r\n ti.undo(this.modelManipulator);\r\n if (ti === item)\r\n return;\r\n }\r\n };\r\n History.prototype.raiseChanged = function () {\r\n if (this.transactionLevel === -1)\r\n this.onChanged.raise(\"notifyHistoryChanged\");\r\n };\r\n History.MAX_HISTORY_ITEM_COUNT = 100;\r\n return History;\r\n}());\r\nexports.History = History;\r\n\n\n/***/ }),\n/* 336 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.BarManager = void 0;\r\nvar batch_updatable_1 = __webpack_require__(80);\r\nvar BarManager = /** @class */ (function (_super) {\r\n __extends(BarManager, _super);\r\n function BarManager(control) {\r\n var _this = _super.call(this) || this;\r\n _this.bars = [];\r\n _this.control = control;\r\n return _this;\r\n }\r\n BarManager.prototype.clean = function () {\r\n var _this = this;\r\n this.bars.forEach(function (bar) { return bar.onChanged.remove(_this); });\r\n this.bars = [];\r\n };\r\n BarManager.prototype.registerBar = function (bar) {\r\n this.bars.push(bar);\r\n bar.onChanged.add(this);\r\n this.updateBarItemsState(bar);\r\n };\r\n BarManager.prototype.updateItemsState = function (queryCommands) {\r\n if (this.isUpdateLocked())\r\n return;\r\n for (var i = 0, bar = void 0; bar = this.bars[i]; i++)\r\n this.updateBarItemsState(bar, queryCommands);\r\n };\r\n BarManager.prototype.updateBarItemsState = function (bar, queryCommands) {\r\n if (this.isUpdateLocked())\r\n return;\r\n this.control.permissionsProvider.beginUpdateUI();\r\n if (bar.isVisible()) {\r\n var commandKeys = void 0;\r\n if (queryCommands) {\r\n var knownCommandKeys_1 = bar.getCommandKeys().reduce(function (hash, cmd) {\r\n hash[cmd] = true;\r\n return hash;\r\n }, {});\r\n commandKeys = queryCommands.filter(function (cmd) { return knownCommandKeys_1[cmd]; });\r\n }\r\n else\r\n commandKeys = bar.getCommandKeys();\r\n var length_1 = commandKeys.length;\r\n for (var j = 0; j < length_1; j++)\r\n this.updateBarItem(bar, commandKeys[j]);\r\n }\r\n this.control.permissionsProvider.endUpdateUI();\r\n };\r\n BarManager.prototype.updateBarItem = function (bar, commandKey) {\r\n var command = this.control.commandManager.getCommand(commandKey);\r\n if (command) {\r\n var commandState = command.getState();\r\n bar.setItemVisible(commandKey, commandState.visible);\r\n if (commandState.visible) {\r\n bar.setItemEnabled(commandKey, commandState.enabled);\r\n if (!commandState.denyUpdateValue) {\r\n var itemValue = this.getItemValue(commandState.value);\r\n if (commandState.items)\r\n bar.setItemSubItems(commandKey, commandState.items);\r\n bar.setItemValue(commandKey, itemValue, this.getDefaultItemValue(commandState.defaultValue));\r\n }\r\n }\r\n }\r\n };\r\n BarManager.prototype.setEnabled = function (enabled) {\r\n for (var i = 0, bar = void 0; bar = this.bars[i]; i++)\r\n bar.setEnabled(enabled);\r\n };\r\n BarManager.prototype.notifyBarCommandExecuted = function (commandID, parameter) {\r\n var executeResult = this.control.commandManager.getCommand(commandID).execute(parameter);\r\n if (!executeResult)\r\n this.updateItemsState([commandID]);\r\n };\r\n BarManager.prototype.notifyBarUpdateRequested = function () {\r\n this.updateItemsState();\r\n };\r\n // ISelectionChangesListener\r\n BarManager.prototype.notifySelectionChanged = function (_selection) {\r\n this.updateItemsState();\r\n };\r\n BarManager.prototype.onUpdateUnlocked = function (occurredEvents) { };\r\n BarManager.prototype.getItemValue = function (value) {\r\n return value;\r\n };\r\n BarManager.prototype.getDefaultItemValue = function (value) {\r\n return value;\r\n };\r\n return BarManager;\r\n}(batch_updatable_1.BatchUpdatableObject));\r\nexports.BarManager = BarManager;\r\n\n\n/***/ }),\n/* 337 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RenderManager = exports.DBL_CLICK_TIMEOUT = exports.LONG_TOUCH_TIMEOUT = void 0;\r\nvar Event_1 = __webpack_require__(14);\r\nvar evt_1 = __webpack_require__(60);\r\nvar dom_1 = __webpack_require__(23);\r\nvar point_1 = __webpack_require__(1);\r\nvar Utils_1 = __webpack_require__(17);\r\nvar CanvasItemsManager_1 = __webpack_require__(77);\r\nvar ScrollView_1 = __webpack_require__(338);\r\nvar Settings_1 = __webpack_require__(28);\r\nvar InputManager_1 = __webpack_require__(339);\r\nvar CanvasPageManager_1 = __webpack_require__(340);\r\nvar CanvasViewManager_1 = __webpack_require__(342);\r\nvar CanvasSelectionManager_1 = __webpack_require__(157);\r\nvar AutoScrollController_1 = __webpack_require__(344);\r\nvar TextMeasurer_1 = __webpack_require__(78);\r\nvar RenderHelper_1 = __webpack_require__(15);\r\nvar DOMManipulator_1 = __webpack_require__(100);\r\nvar key_1 = __webpack_require__(26);\r\nvar common_1 = __webpack_require__(34);\r\nvar READONLY_CSSCLASS = \"dxdi-read-only\";\r\nexports.LONG_TOUCH_TIMEOUT = 500;\r\nexports.DBL_CLICK_TIMEOUT = 500;\r\nvar RenderManager = /** @class */ (function () {\r\n function RenderManager(parent, events, measurer, settings, scrollView, focusElementsParent) {\r\n this.touchPositionLimit = 4;\r\n var mainElement = RenderHelper_1.RenderHelper.createMainElement(parent);\r\n this.svgElement = RenderHelper_1.RenderHelper.createSvgElement(mainElement);\r\n this.scroll = scrollView || new ScrollView_1.NativeScrollView(parent);\r\n this.measurer = measurer;\r\n this.dom = new DOMManipulator_1.DOMManipulator(this.measurer);\r\n this.view = new CanvasViewManager_1.CanvasViewManager(this.scroll, this.svgElement, settings.modelSize, settings.zoomLevel, settings.autoZoom, settings.simpleView, settings.rectangle, this.dom);\r\n this.input = new InputManager_1.InputManager(mainElement, this.view, events, this.measurer, settings.zoomLevel, settings.isTouchUIEnabled, focusElementsParent);\r\n this.items = new CanvasItemsManager_1.CanvasItemsManager(this.view.canvasElement, settings.zoomLevel, this.dom);\r\n this.page = new CanvasPageManager_1.CanvasPageManager(this.view.pageElement, settings, this.dom);\r\n this.selection = new CanvasSelectionManager_1.CanvasSelectionManager(this.view.canvasElement, settings.zoomLevel, settings.readOnly, this.dom, settings.isTouchUIEnabled);\r\n this.contextMenuEnabled = settings.contextMenuEnabled;\r\n this.view.onViewChanged.add(this.page);\r\n this.view.onViewChanged.add(this.items);\r\n this.view.onViewChanged.add(this.selection);\r\n this.view.onViewChanged.add(this.input);\r\n this.mainElement = mainElement;\r\n this.events = events;\r\n this.autoScroll = new AutoScrollController_1.AutoScrollController(this.scroll, this.svgElement, this.view, this.dom);\r\n this.attachEvents();\r\n this.notifyReadOnlyChanged(settings.readOnly);\r\n }\r\n RenderManager.prototype.clean = function (removeElement) {\r\n this.lastDownMouseEvent = undefined;\r\n this.detachEvents();\r\n this.dom.cancelAnimation();\r\n if (removeElement)\r\n removeElement(this.mainElement);\r\n };\r\n RenderManager.prototype.replaceParent = function (parent, scroll) {\r\n if (this.mainElement && this.mainElement.parentNode !== parent)\r\n parent.appendChild(this.mainElement);\r\n if (scroll && scroll !== this.scroll) {\r\n this.scroll && this.scroll.detachEvents();\r\n this.scroll = scroll;\r\n }\r\n if (this.measurer instanceof TextMeasurer_1.TextMeasurer)\r\n this.measurer.replaceParent(parent);\r\n };\r\n RenderManager.prototype.update = function (saveScrollPosition) {\r\n this.view.adjust({ horizontal: !saveScrollPosition, vertical: !saveScrollPosition });\r\n this.page.redraw();\r\n };\r\n RenderManager.prototype.onNewModel = function (items) {\r\n this.measurer.onNewModel(items, this.dom);\r\n };\r\n RenderManager.prototype.clear = function () {\r\n this.items.clear();\r\n this.selection.clear();\r\n };\r\n RenderManager.prototype.attachEvents = function () {\r\n this.onMouseDblClickHandler = this.onMouseDblClick.bind(this);\r\n this.onMouseClickHandler = this.onMouseClick.bind(this);\r\n this.onMouseWheelHandler = this.onMouseWheel.bind(this);\r\n this.onContextMenuHandler = this.onContextMenu.bind(this);\r\n this.onWindowResizeHandler = this.onWindowResize.bind(this);\r\n this.onOrientationChangeHandler = this.onOrientationChange.bind(this);\r\n RenderHelper_1.RenderHelper.addEventListener(this.svgElement, \"click\", this.onMouseClickHandler);\r\n RenderHelper_1.RenderHelper.addEventListener(this.svgElement, \"wheel\", this.onMouseWheelHandler);\r\n RenderHelper_1.RenderHelper.addEventListener(this.svgElement, \"dblclick\", this.onMouseDblClickHandler);\r\n RenderHelper_1.RenderHelper.addEventListener(this.svgElement, \"contextmenu\", this.onContextMenuHandler);\r\n RenderHelper_1.RenderHelper.addEventListener(window, \"resize\", this.onWindowResizeHandler);\r\n RenderHelper_1.RenderHelper.addEventListener(window, \"orientationchange\", this.onOrientationChangeHandler);\r\n this.input.mouseWheelHandler = this.onMouseWheelHandler;\r\n };\r\n RenderManager.prototype.detachEvents = function () {\r\n if (this.dragEventsHandler) {\r\n this.dragEventsHandler.detach();\r\n this.dragEventsHandler = undefined;\r\n }\r\n RenderHelper_1.RenderHelper.removeEventListener(this.svgElement, \"click\", this.onMouseClickHandler);\r\n RenderHelper_1.RenderHelper.removeEventListener(this.svgElement, \"wheel\", this.onMouseWheelHandler);\r\n RenderHelper_1.RenderHelper.removeEventListener(this.svgElement, \"dblclick\", this.onMouseDblClickHandler);\r\n RenderHelper_1.RenderHelper.removeEventListener(this.svgElement, \"contextmenu\", this.onContextMenuHandler);\r\n RenderHelper_1.RenderHelper.removeEventListener(window, \"resize\", this.onWindowResizeHandler);\r\n RenderHelper_1.RenderHelper.removeEventListener(window, \"orientationchange\", this.onOrientationChangeHandler);\r\n this.scroll.detachEvents();\r\n this.input.detachEvents();\r\n };\r\n RenderManager.prototype.onMouseEnter = function (evt) {\r\n var _this = this;\r\n this.autoScroll.onMouseEnter(evt);\r\n var diagramEvent = this.createDiagramMouseEvent(evt);\r\n Utils_1.raiseEvent(evt, diagramEvent, function (e) { return _this.events.onMouseEnter(e); });\r\n };\r\n RenderManager.prototype.onMouseLeave = function (evt) {\r\n var _this = this;\r\n var diagramEvent = this.createDiagramMouseEvent(evt);\r\n Utils_1.raiseEvent(evt, diagramEvent, function (e) { return _this.events.onMouseLeave(e); });\r\n };\r\n RenderManager.prototype.onMouseDown = function (evt) {\r\n this.onMouseDownCore(evt);\r\n if (evt.preventDefault)\r\n evt.preventDefault();\r\n if (evt.stopPropagation)\r\n evt.stopPropagation();\r\n this.preventImageEventAndBubble(evt);\r\n };\r\n RenderManager.prototype.onTouchDown = function (evt) {\r\n var _this = this;\r\n this.onMouseDownCore(evt);\r\n var touches = evt[\"touches\"];\r\n if (touches && touches.length > 0)\r\n this.startTouchPoint = new point_1.Point(touches[0].clientX, touches[0].clientY);\r\n this.resetLongTouch();\r\n this.longTouchTimer = setTimeout(function () {\r\n _this.raiseLongTouch(evt);\r\n _this.resetLongTouch();\r\n _this.resetDblClick();\r\n }, exports.LONG_TOUCH_TIMEOUT);\r\n evt_1.EvtUtils.preventEventAndBubble(evt);\r\n };\r\n RenderManager.prototype.onMouseDownCore = function (evt) {\r\n var _this = this;\r\n this.input.lockFocus();\r\n this.autoScroll.onMouseDown(evt);\r\n this.lastDownMouseEvent = this.createDiagramMouseEvent(evt);\r\n Utils_1.raiseEvent(evt, this.lastDownMouseEvent, function (e) { return _this.events.onMouseDown(e); });\r\n if (this.events.canFinishTextEditing()) {\r\n this.input.unlockCaptureFocus();\r\n this.input.captureFocus();\r\n }\r\n };\r\n RenderManager.prototype.onMouseMove = function (evt) {\r\n this.onMoveCore(evt, false);\r\n };\r\n RenderManager.prototype.onTouchMove = function (evt) {\r\n this.onMoveCore(evt, true);\r\n var touches = evt[\"touches\"];\r\n if (!this.startTouchPoint && (!touches || touches.length === 0))\r\n return;\r\n var currentPoint = new point_1.Point(touches[0].clientX, touches[0].clientY);\r\n if ((Math.abs(this.startTouchPoint.x - currentPoint.x) > this.touchPositionLimit ||\r\n Math.abs(this.startTouchPoint.y - currentPoint.y) > this.touchPositionLimit)) {\r\n this.resetDblClick();\r\n this.resetLongTouch();\r\n }\r\n };\r\n RenderManager.prototype.onMoveCore = function (evt, isTouchEvent) {\r\n var _this = this;\r\n var diagramEvent = isTouchEvent ? this.createDiagramMouseEventByPosition(evt) : this.createDiagramMouseEvent(evt);\r\n this.autoScroll.onMouseMove(evt, function () { return _this.events.onMouseMove(diagramEvent); });\r\n Utils_1.raiseEvent(evt, diagramEvent, function (e) { return _this.events.onMouseMove(e); });\r\n };\r\n RenderManager.prototype.onMouseUp = function (evt) {\r\n this.onMouseUpCore(evt);\r\n this.preventImageEventAndBubble(evt);\r\n };\r\n RenderManager.prototype.onTouchUp = function (evt) {\r\n var _this = this;\r\n this.onMouseUpCore(evt);\r\n if (this.longTouchTimer !== undefined) {\r\n this.raiseMouseClick(evt);\r\n var element = evt_1.EvtUtils.getEventSource(evt);\r\n if (this.dblTouchTimer !== undefined && this.startTouchElement === element) {\r\n this.raiseMouseDblClick(evt);\r\n this.resetDblClick();\r\n }\r\n else {\r\n this.resetDblClick();\r\n this.dblTouchTimer = setTimeout(function () { return _this.dblTouchTimer = undefined; }, exports.DBL_CLICK_TIMEOUT);\r\n }\r\n this.startTouchElement = element;\r\n }\r\n this.resetLongTouch();\r\n this.startTouchPoint = undefined;\r\n this.preventImageEventAndBubble(evt);\r\n };\r\n RenderManager.prototype.onMouseUpCore = function (evt) {\r\n var _this = this;\r\n this.lastDownMouseEvent = undefined;\r\n var diagramEvent = this.createDiagramMouseEvent(evt);\r\n Utils_1.raiseEvent(evt, diagramEvent, function (e) { return _this.events.onMouseUp(e); });\r\n this.autoScroll.onMouseUp(evt);\r\n if (diagramEvent.source.type !== Event_1.MouseEventElementType.Undefined)\r\n this.input.captureFocus();\r\n };\r\n RenderManager.prototype.onMouseClick = function (evt) {\r\n var _this = this;\r\n var diagramEvent = common_1.isDefined(this.lastDownMouseEvent) ? this.lastDownMouseEvent.clone() : this.createDiagramMouseEvent(evt);\r\n Utils_1.raiseEvent(evt, diagramEvent, function (e) { return _this.events.onClick(e); });\r\n this.input.unlockCaptureFocus();\r\n };\r\n RenderManager.prototype.onMouseDblClick = function (evt) {\r\n var _this = this;\r\n var diagramEvent = common_1.isDefined(this.lastDownMouseEvent) ? this.lastDownMouseEvent.clone() : this.createDiagramMouseEvent(evt);\r\n Utils_1.raiseEvent(evt, diagramEvent, function (e) { return _this.events.onDblClick(e); });\r\n this.input.lockCaptureFocus();\r\n };\r\n RenderManager.prototype.preventImageEventAndBubble = function (evt) {\r\n var element = evt_1.EvtUtils.getEventSource(evt);\r\n var tagName = element && element.tagName;\r\n if (common_1.isDefined(tagName) && tagName.toLowerCase) {\r\n var tagNameLowerCase = tagName.toLowerCase();\r\n if (tagNameLowerCase === \"img\" || tagNameLowerCase === \"image\")\r\n evt_1.EvtUtils.preventEventAndBubble(evt);\r\n }\r\n };\r\n RenderManager.prototype.raiseLongTouch = function (evt) {\r\n var _this = this;\r\n var diagramEvent = common_1.isDefined(this.lastDownMouseEvent) ? this.lastDownMouseEvent.clone() : this.createDiagramMouseEvent(evt);\r\n Utils_1.raiseEvent(evt, diagramEvent, function (e) { return _this.events.onLongTouch(e); });\r\n };\r\n RenderManager.prototype.raiseMouseClick = function (evt) {\r\n var _this = this;\r\n var diagramEvent = this.createDiagramMouseEvent(evt);\r\n Utils_1.raiseEvent(evt, diagramEvent, function (e) { return _this.events.onClick(e); });\r\n };\r\n RenderManager.prototype.raiseMouseDblClick = function (evt) {\r\n var _this = this;\r\n var diagramEvent = this.createDiagramMouseEvent(evt);\r\n Utils_1.raiseEvent(evt, diagramEvent, function (e) { return _this.events.onDblClick(e); });\r\n };\r\n RenderManager.prototype.resetDblClick = function () {\r\n if (this.dblTouchTimer !== undefined)\r\n clearTimeout(this.dblTouchTimer);\r\n this.dblTouchTimer = undefined;\r\n };\r\n RenderManager.prototype.resetLongTouch = function () {\r\n if (this.longTouchTimer !== undefined)\r\n clearTimeout(this.longTouchTimer);\r\n this.longTouchTimer = undefined;\r\n };\r\n RenderManager.prototype.onContextMenu = function (evt) {\r\n var _this = this;\r\n if (!this.contextMenuEnabled)\r\n return;\r\n var diagramEvent = this.createDiagramContextMenuEvent(evt);\r\n Utils_1.raiseEvent(evt, diagramEvent, function (e) { return _this.events.onContextMenu(e); });\r\n this.input.captureFocus();\r\n evt_1.EvtUtils.preventEventAndBubble(evt);\r\n };\r\n RenderManager.prototype.onMouseWheel = function (evt) {\r\n var _this = this;\r\n var diagramEvent = this.createDiagramWheelEvent(evt);\r\n Utils_1.raiseEvent(evt, diagramEvent, function (e) { return _this.events.onMouseWheel(e); });\r\n };\r\n RenderManager.prototype.onOrientationChange = function () {\r\n var _this = this;\r\n setTimeout(function () { return _this.onWindowResize(); }, 100);\r\n };\r\n RenderManager.prototype.onWindowResize = function () {\r\n var resetTo = { horizontal: false, vertical: false };\r\n if (this.view.autoZoom !== Settings_1.AutoZoomMode.Disabled) {\r\n resetTo.horizontal = true;\r\n resetTo.vertical = true;\r\n }\r\n else {\r\n var oldFitInfo = this.view.checkFitToCanvas();\r\n var newFitInfo = this.view.checkFitToCanvas(this.scroll.getSize());\r\n resetTo = { horizontal: oldFitInfo.horizontal !== newFitInfo.horizontal || newFitInfo.horizontal, vertical: oldFitInfo.vertical !== newFitInfo.vertical || newFitInfo.vertical };\r\n }\r\n this.view.adjust(resetTo);\r\n };\r\n RenderManager.prototype.notifyModelSizeChanged = function (size, offset) {\r\n this.view.notifyModelSizeChanged(size, offset);\r\n };\r\n RenderManager.prototype.notifyModelRectangleChanged = function (rectangle) {\r\n this.view.notifyModelRectangleChanged(rectangle);\r\n };\r\n RenderManager.prototype.notifyReadOnlyChanged = function (readOnly) {\r\n dom_1.DomUtils.toggleClassName(this.mainElement, READONLY_CSSCLASS, readOnly);\r\n };\r\n RenderManager.prototype.notifyDragStart = function (itemKeys) { };\r\n RenderManager.prototype.notifyDragEnd = function (itemKeys) { };\r\n RenderManager.prototype.notifyDragScrollStart = function () {\r\n this.autoScroll.onDragScrollStart();\r\n };\r\n RenderManager.prototype.notifyDragScrollEnd = function () {\r\n this.autoScroll.onDragScrollEnd();\r\n };\r\n RenderManager.prototype.getModelPointByEventPoint = function (clientX, clientY) {\r\n return this.view.getModelPoint(this.getOffsetPointByEventPoint(clientX, clientY));\r\n };\r\n RenderManager.prototype.getEventPointByModelPoint = function (point) {\r\n var pos = this.view.getAbsolutePoint(point);\r\n var scrollContainer = this.getScrollContainer();\r\n return new point_1.Point(dom_1.DomUtils.getAbsolutePositionX(scrollContainer) + pos.x, dom_1.DomUtils.getAbsolutePositionY(scrollContainer) + pos.y);\r\n };\r\n RenderManager.prototype.getScrollContainer = function () {\r\n return this.scroll.getScrollContainer();\r\n };\r\n RenderManager.prototype.createDiagramMouseEventByPosition = function (evt) {\r\n return this.createDiagramMouseEventCore(evt, evt_1.EvtUtils.getEventSourceByPosition(evt));\r\n };\r\n RenderManager.prototype.createDiagramMouseEvent = function (evt) {\r\n return this.createDiagramMouseEventCore(evt, evt_1.EvtUtils.getEventSource(evt));\r\n };\r\n RenderManager.prototype.createDiagramMouseEventCore = function (evt, element) {\r\n var offsetPoint = this.getOffsetPointByEvent(evt);\r\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);\r\n };\r\n RenderManager.prototype.createDiagramContextMenuEvent = function (evt) {\r\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)));\r\n };\r\n RenderManager.prototype.createDiagramWheelEvent = function (evt) {\r\n var offsetPoint = this.getOffsetPointByEvent(evt);\r\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)));\r\n };\r\n RenderManager.prototype.getOffsetPointByEventPoint = function (clientX, clientY) {\r\n var scrollContainer = this.scroll.getScrollContainer();\r\n return new point_1.Point(clientX - dom_1.DomUtils.getAbsolutePositionX(scrollContainer), clientY - dom_1.DomUtils.getAbsolutePositionY(scrollContainer));\r\n };\r\n RenderManager.prototype.getOffsetPointByEvent = function (evt) {\r\n return this.getOffsetPointByEventPoint(evt_1.EvtUtils.getEventX(evt), evt_1.EvtUtils.getEventY(evt));\r\n };\r\n RenderManager.prototype.getEventSource = function (element) {\r\n var currentElement = element;\r\n if (this.isDiagramControl(element))\r\n while (currentElement && !this.isDocumentContainer(currentElement)) {\r\n var src = Utils_1.RenderUtils.getElementEventData(currentElement);\r\n if (src !== undefined)\r\n return src;\r\n if (this.input.isTextInputElement(currentElement))\r\n return new Event_1.MouseEventSource(Event_1.MouseEventElementType.Document);\r\n currentElement = currentElement.parentNode;\r\n }\r\n return new Event_1.MouseEventSource(currentElement && this.isDocumentContainer(currentElement) ? Event_1.MouseEventElementType.Background : Event_1.MouseEventElementType.Undefined);\r\n };\r\n RenderManager.prototype.isDiagramControl = function (element) {\r\n while (element) {\r\n if (this.isDocumentContainer(element))\r\n return true;\r\n element = element.parentNode;\r\n }\r\n return false;\r\n };\r\n RenderManager.prototype.isDocumentContainer = function (element) {\r\n return element === this.mainElement;\r\n };\r\n RenderManager.prototype.createDiagramMouseEventTouches = function (source) {\r\n if (!source)\r\n return [];\r\n var result = [];\r\n for (var i = 0; i < source.length; i++) {\r\n var sourceItem = source[i];\r\n var offsetPoint = this.getOffsetPointByEventPoint(sourceItem.clientX, sourceItem.clientY);\r\n result.push(new Event_1.DiagramMouseEventTouch(offsetPoint, this.view.getModelPoint(offsetPoint)));\r\n }\r\n return result;\r\n };\r\n return RenderManager;\r\n}());\r\nexports.RenderManager = RenderManager;\r\n\n\n/***/ }),\n/* 338 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.NativeScrollView = void 0;\r\nvar Utils_1 = __webpack_require__(3);\r\nvar size_1 = __webpack_require__(2);\r\nvar point_1 = __webpack_require__(1);\r\nvar dom_1 = __webpack_require__(23);\r\nvar RenderHelper_1 = __webpack_require__(15);\r\nvar NativeScrollView = /** @class */ (function () {\r\n function NativeScrollView(mainElement) {\r\n this.onScroll = new Utils_1.EventDispatcher();\r\n this.scrollBarWidth = dom_1.DomUtils.getVerticalScrollBarWidth();\r\n this.mainElement = mainElement;\r\n this.attachEvents();\r\n }\r\n NativeScrollView.prototype.attachEvents = function () {\r\n var _this = this;\r\n this.onScrollHandler = function () { return _this.onScroll.raise1(function (l) { return l.notifyScrollChanged(function () { return _this.getScroll(); }); }); };\r\n RenderHelper_1.RenderHelper.addEventListener(this.mainElement, \"scroll\", this.onScrollHandler);\r\n };\r\n NativeScrollView.prototype.detachEvents = function () {\r\n RenderHelper_1.RenderHelper.removeEventListener(this.mainElement, \"scroll\", this.onScrollHandler);\r\n };\r\n NativeScrollView.prototype.getScrollContainer = function () {\r\n return this.mainElement;\r\n };\r\n NativeScrollView.prototype.setScroll = function (left, top) {\r\n var _this = this;\r\n this.mainElement.style.overflow = \"scroll\";\r\n this.mainElement.scrollLeft = left;\r\n this.mainElement.scrollTop = top;\r\n this.mainElement.style.overflow = \"\";\r\n this.onScroll.raise1(function (l) { return l.notifyScrollChanged(function () { return _this.getScroll(); }); });\r\n };\r\n NativeScrollView.prototype.offsetScroll = function (left, top) {\r\n var _this = this;\r\n if (left)\r\n this.mainElement.scrollLeft += left;\r\n if (top)\r\n this.mainElement.scrollTop += top;\r\n this.onScroll.raise1(function (l) { return l.notifyScrollChanged(function () { return _this.getScroll(); }); });\r\n };\r\n NativeScrollView.prototype.getScroll = function () {\r\n return new point_1.Point(this.mainElement.scrollLeft, this.mainElement.scrollTop);\r\n };\r\n NativeScrollView.prototype.getSize = function () {\r\n var boundingRect = this.mainElement.getBoundingClientRect();\r\n return new size_1.Size(Math.floor(boundingRect.width), Math.floor(boundingRect.height));\r\n };\r\n NativeScrollView.prototype.getScrollBarWidth = function () {\r\n return this.scrollBarWidth;\r\n };\r\n return NativeScrollView;\r\n}());\r\nexports.NativeScrollView = NativeScrollView;\r\n\n\n/***/ }),\n/* 339 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.InputManager = void 0;\r\nvar key_1 = __webpack_require__(26);\r\nvar dom_1 = __webpack_require__(23);\r\nvar Utils_1 = __webpack_require__(17);\r\nvar Event_1 = __webpack_require__(14);\r\nvar Shape_1 = __webpack_require__(13);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar evt_1 = __webpack_require__(60);\r\nvar ITextMeasurer_1 = __webpack_require__(44);\r\nvar browser_1 = __webpack_require__(19);\r\nvar unit_converter_1 = __webpack_require__(11);\r\nvar RenderHelper_1 = __webpack_require__(15);\r\nvar TextUtils_1 = __webpack_require__(63);\r\nvar Utils_2 = __webpack_require__(3);\r\nvar TEXT_INPUT_CSSCLASS = \"dxdi-text-input\";\r\nvar InputManager = /** @class */ (function () {\r\n function InputManager(mainElement, layoutPointResolver, eventManager, textMeasurer, actualZoom, isTouchUIEnabled, focusElementsParent) {\r\n this.mainElement = mainElement;\r\n this.layoutPointResolver = layoutPointResolver;\r\n this.eventManager = eventManager;\r\n this.textMeasurer = textMeasurer;\r\n this.actualZoom = actualZoom;\r\n this.isTouchUIEnabled = isTouchUIEnabled;\r\n this.focusElementsParent = focusElementsParent;\r\n this.lockedCaptureFocus = false;\r\n this.focused = false;\r\n this.focusLocked = false;\r\n this.createInputElements(this.mainElement, this.focusElementsParent);\r\n }\r\n InputManager.prototype.detachEvents = function () {\r\n this.detachInputElementEvents();\r\n this.detachTextInputElementEvents();\r\n };\r\n InputManager.prototype.isFocused = function () {\r\n return this.focused;\r\n };\r\n InputManager.prototype.lockCaptureFocus = function () {\r\n this.lockedCaptureFocus = true;\r\n };\r\n InputManager.prototype.unlockCaptureFocus = function () {\r\n this.lockedCaptureFocus = false;\r\n };\r\n InputManager.prototype.captureFocus = function () {\r\n if (!this.lockedCaptureFocus)\r\n Utils_2.HtmlFocusUtils.focusWithPreventScroll(this.inputElement);\r\n };\r\n InputManager.prototype.setClipboardData = function (data) {\r\n this.clipboardInputElement.value = data;\r\n Utils_2.HtmlFocusUtils.focusWithPreventScroll(this.clipboardInputElement);\r\n this.clipboardInputElement.select();\r\n document.execCommand(\"copy\");\r\n this.captureFocus();\r\n };\r\n InputManager.prototype.getClipboardData = function (callback) {\r\n var _this = this;\r\n if (navigator && navigator[\"clipboard\"])\r\n navigator[\"clipboard\"].readText().then(function (clipText) {\r\n callback(clipText);\r\n _this.captureFocus();\r\n }).catch(function () {\r\n callback(\"\");\r\n _this.captureFocus();\r\n });\r\n else if (browser_1.Browser.IE) {\r\n this.clipboardInputElement.value = \"\";\r\n Utils_2.HtmlFocusUtils.focusWithPreventScroll(this.clipboardInputElement);\r\n this.clipboardInputElement.select();\r\n document.execCommand(\"Paste\");\r\n callback(this.clipboardInputElement.value);\r\n this.captureFocus();\r\n }\r\n };\r\n InputManager.prototype.isPasteSupportedByBrowser = function () {\r\n return browser_1.Browser.IE || (browser_1.Browser.WebKitFamily && navigator && navigator[\"clipboard\"] !== undefined);\r\n };\r\n InputManager.prototype.createInputElements = function (parent, focusElementsParent) {\r\n this.createFocusInputElement(focusElementsParent || parent);\r\n this.createTextInputElement(parent);\r\n this.createClipboardInputElement(focusElementsParent || parent);\r\n this.attachInputElementEvents();\r\n };\r\n InputManager.prototype.setInputElementFocusHandlerMode = function () {\r\n this.textInputElementContainer.setAttribute(\"class\", \"dxdi-text-input-container\");\r\n this.captureFocus();\r\n };\r\n InputManager.prototype.setInputElementTextInputMode = function (text, position, size, style, className, textAngle) {\r\n this.textInputElementContainer.setAttribute(\"class\", \"dxdi-text-input-container \" + className);\r\n this.textInputElement.value = text;\r\n this.setTextInputElementBounds(position, size, textAngle);\r\n this.setTextInputElementStyle(style);\r\n this.updateTextInputPadding();\r\n if (!this.lockedCaptureFocus) {\r\n var element = this.textInputElement || this.inputElement;\r\n Utils_2.HtmlFocusUtils.focusWithPreventScroll(element);\r\n if (element.select)\r\n element.select();\r\n }\r\n };\r\n InputManager.prototype.setTextInputElementBounds = function (position, size, textAngle) {\r\n this.savedTextInputPosition = position;\r\n this.savedTextInputSize = size;\r\n this.savedTextInputAngle = textAngle;\r\n var abs = this.layoutPointResolver.getAbsolutePoint(position, true);\r\n this.textInputElementContainer.style.left = abs.x + \"px\";\r\n this.textInputElementContainer.style.top = abs.y + \"px\";\r\n this.textInputElementContainer.style.width = size && size.width + \"px\" || \"0px\";\r\n this.textInputElementContainer.style.height = size && size.height + \"px\" || \"0px\";\r\n var transforms = [];\r\n this.textInputElementContainer.style.transform = \"\";\r\n if (this.actualZoom !== 1)\r\n transforms.push(\"scale(\" + this.actualZoom + \")\");\r\n if (textAngle)\r\n transforms.push(\"rotate(\" + textAngle + \"deg)\");\r\n this.textInputElementContainer.style.transform = transforms.join(\" \");\r\n this.textInputElement.style.width = size && size.width + \"px\" || \"\";\r\n this.textInputElement.style.height = size && size.height + \"px\" || \"auto\";\r\n };\r\n InputManager.prototype.setTextInputElementStyle = function (style) {\r\n this.savedTextInputStyle = style;\r\n Utils_1.RenderUtils.applyStyleToElement(style, this.textInputElement);\r\n };\r\n InputManager.prototype.createFocusInputElement = function (parent) {\r\n this.inputElement = document.createElement(\"textarea\");\r\n this.inputElement.readOnly = this.isTouchUIEnabled; // prevent show keyboard on mobile devices, but the \"paste\" event isn't raised for some desktop browsers(IE)\r\n this.inputElement.setAttribute(\"class\", \"dxdi-focus-input\");\r\n parent.appendChild(this.inputElement);\r\n };\r\n InputManager.prototype.attachInputElementEvents = function () {\r\n this.onInputBlurHandler = this.onInputBlur.bind(this);\r\n this.onInputFocusHandler = this.onInputFocus.bind(this);\r\n this.onInputKeyDownHandler = this.onInputKeyDown.bind(this);\r\n this.onInputKeyPressHandler = this.onInputKeyPress.bind(this);\r\n this.onInputKeyUpHandler = this.onInputKeyUp.bind(this);\r\n this.onPasteHandler = this.onPaste.bind(this);\r\n RenderHelper_1.RenderHelper.addEventListener(this.inputElement, \"blur\", this.onInputBlurHandler);\r\n RenderHelper_1.RenderHelper.addEventListener(this.inputElement, \"focus\", this.onInputFocusHandler);\r\n RenderHelper_1.RenderHelper.addEventListener(this.inputElement, \"keydown\", this.onInputKeyDownHandler);\r\n RenderHelper_1.RenderHelper.addEventListener(this.inputElement, \"keypress\", this.onInputKeyPressHandler);\r\n RenderHelper_1.RenderHelper.addEventListener(this.inputElement, \"keyup\", this.onInputKeyUpHandler);\r\n RenderHelper_1.RenderHelper.addEventListener(this.inputElement, \"paste\", this.onPasteHandler);\r\n };\r\n InputManager.prototype.detachInputElementEvents = function () {\r\n RenderHelper_1.RenderHelper.removeEventListener(this.inputElement, \"blur\", this.onInputBlurHandler);\r\n RenderHelper_1.RenderHelper.removeEventListener(this.inputElement, \"focus\", this.onInputFocusHandler);\r\n RenderHelper_1.RenderHelper.removeEventListener(this.inputElement, \"keydown\", this.onInputKeyDownHandler);\r\n RenderHelper_1.RenderHelper.removeEventListener(this.inputElement, \"keypress\", this.onInputKeyPressHandler);\r\n RenderHelper_1.RenderHelper.removeEventListener(this.inputElement, \"keyup\", this.onInputKeyUpHandler);\r\n RenderHelper_1.RenderHelper.removeEventListener(this.inputElement, \"paste\", this.onPasteHandler);\r\n };\r\n InputManager.prototype.createTextInputElement = function (parent) {\r\n this.textInputElementContainer = document.createElement(\"div\");\r\n this.textInputElementContainer.setAttribute(\"class\", \"dxdi-text-input-container\");\r\n parent.appendChild(this.textInputElementContainer);\r\n this.textInputElement = document.createElement(\"textarea\");\r\n this.textInputElement.setAttribute(\"class\", TEXT_INPUT_CSSCLASS);\r\n this.attachTextInputElementEvents();\r\n this.textInputElementContainer.appendChild(this.textInputElement);\r\n };\r\n InputManager.prototype.attachTextInputElementEvents = function () {\r\n this.onTextInputBlurHandler = this.onTextInputBlur.bind(this);\r\n this.onTextInputFocusHandler = this.onTextInputFocus.bind(this);\r\n this.onTextInputKeyDownHandler = this.onTextInputKeyDown.bind(this);\r\n this.onTextInputMouseWheelHandler = this.onTextInputMouseWheel.bind(this);\r\n this.onTextInputMouseUpHandler = this.onTextInputMouseUp.bind(this);\r\n this.onTextInputKeyUpHandler = this.onTextInputKeyUp.bind(this);\r\n this.onTextInputChangeHandler = this.onTextInputChange.bind(this);\r\n RenderHelper_1.RenderHelper.addEventListener(this.textInputElement, \"mousewheel\", this.onTextInputMouseWheelHandler);\r\n RenderHelper_1.RenderHelper.addEventListener(this.textInputElement, \"mouseup\", this.onTextInputMouseUpHandler);\r\n RenderHelper_1.RenderHelper.addEventListener(this.textInputElement, \"blur\", this.onTextInputBlurHandler);\r\n RenderHelper_1.RenderHelper.addEventListener(this.textInputElement, \"focus\", this.onTextInputFocusHandler);\r\n RenderHelper_1.RenderHelper.addEventListener(this.textInputElement, \"keydown\", this.onTextInputKeyDownHandler);\r\n RenderHelper_1.RenderHelper.addEventListener(this.textInputElement, \"keyup\", this.onTextInputKeyUpHandler);\r\n RenderHelper_1.RenderHelper.addEventListener(this.textInputElement, \"change\", this.onTextInputChangeHandler);\r\n };\r\n InputManager.prototype.detachTextInputElementEvents = function () {\r\n RenderHelper_1.RenderHelper.removeEventListener(this.textInputElement, \"mousewheel\", this.onTextInputMouseWheelHandler);\r\n RenderHelper_1.RenderHelper.removeEventListener(this.textInputElement, \"mouseup\", this.onTextInputMouseUpHandler);\r\n RenderHelper_1.RenderHelper.removeEventListener(this.textInputElement, \"blur\", this.onTextInputBlurHandler);\r\n RenderHelper_1.RenderHelper.removeEventListener(this.textInputElement, \"focus\", this.onTextInputFocusHandler);\r\n RenderHelper_1.RenderHelper.removeEventListener(this.textInputElement, \"keydown\", this.onTextInputKeyDownHandler);\r\n RenderHelper_1.RenderHelper.removeEventListener(this.textInputElement, \"keyup\", this.onTextInputKeyUpHandler);\r\n RenderHelper_1.RenderHelper.removeEventListener(this.textInputElement, \"change\", this.onTextInputChangeHandler);\r\n };\r\n InputManager.prototype.createClipboardInputElement = function (parent) {\r\n this.clipboardInputElement = document.createElement(\"textarea\");\r\n this.clipboardInputElement.setAttribute(\"class\", \"dxdi-clipboard-input\");\r\n parent.appendChild(this.clipboardInputElement);\r\n };\r\n InputManager.prototype.blurControl = function () {\r\n if (!this.focusLocked) {\r\n this.focused = false;\r\n dom_1.DomUtils.removeClassName(this.mainElement, \"focused\");\r\n }\r\n };\r\n InputManager.prototype.focusControl = function () {\r\n this.focused = true;\r\n this.focusLocked = false;\r\n dom_1.DomUtils.addClassName(this.mainElement, \"focused\");\r\n };\r\n InputManager.prototype.updateTextInputPadding = function () {\r\n var text = this.textInputElement.value;\r\n if (!this.savedTextInputSize) {\r\n var measureResults = this.textMeasurer.measureWords(\" \", this.savedTextInputStyle, ITextMeasurer_1.TextOwner.Connector);\r\n var textHeight = TextUtils_1.getLineHeight(measureResults) * ((TextUtils_1.textToParagraphs(text).length || 1) + 1);\r\n this.textInputElement.style.height = Math.ceil(textHeight) + \"px\";\r\n }\r\n else {\r\n var measureResults = this.textMeasurer.measureWords(text, this.savedTextInputStyle, ITextMeasurer_1.TextOwner.Shape);\r\n var textHeight = TextUtils_1.getTextHeight(text, this.savedTextInputSize.width, measureResults, true);\r\n var top_1 = Math.max(0, (this.savedTextInputSize.height - textHeight) * 0.5);\r\n this.textInputElement.style.paddingTop = Math.ceil(top_1) + \"px\";\r\n this.textInputElement.style.height = Math.floor(this.savedTextInputSize.height) + \"px\";\r\n }\r\n };\r\n InputManager.prototype.onInputBlur = function (evt) {\r\n var _this = this;\r\n this.blurControl();\r\n Utils_1.raiseEvent(evt, this.getDiagramFocusEvent(evt), function (e) { return _this.eventManager.onBlur(e); });\r\n };\r\n InputManager.prototype.onInputFocus = function (evt) {\r\n var _this = this;\r\n this.focusControl();\r\n Utils_1.raiseEvent(evt, this.getDiagramFocusEvent(evt), function (e) { return _this.eventManager.onFocus(e); });\r\n };\r\n InputManager.prototype.onInputKeyDown = function (evt) {\r\n var _this = this;\r\n Utils_1.raiseEvent(evt, this.getDiagramKeyboardEvent(evt), function (e) { return _this.eventManager.onKeyDown(e); });\r\n };\r\n InputManager.prototype.onInputKeyPress = function (evt) {\r\n if (evt.preventDefault && !(browser_1.Browser.Safari && evt.code === \"KeyV\"))\r\n evt.preventDefault(); // prevent page scroll because of hidden textarea\r\n };\r\n InputManager.prototype.onInputKeyUp = function (evt) {\r\n var _this = this;\r\n Utils_1.raiseEvent(evt, this.getDiagramKeyboardEvent(evt), function (e) { return _this.eventManager.onKeyUp(e); });\r\n };\r\n InputManager.prototype.onTextInputBlur = function (evt) {\r\n var _this = this;\r\n if (this.eventManager.canFinishTextEditing()) {\r\n this.blurControl();\r\n Utils_1.raiseEvent(evt, this.getDiagramFocusEvent(evt), function (e) { return _this.eventManager.onTextInputBlur(e); });\r\n }\r\n else {\r\n var srcElement = evt_1.EvtUtils.getEventSource(evt);\r\n if (document.activeElement !== srcElement) // It is always true in runtime. This condition is needed only for tests to run correctly in JSDOM\r\n srcElement.focus();\r\n }\r\n };\r\n InputManager.prototype.onTextInputFocus = function (evt) {\r\n var _this = this;\r\n this.focusControl();\r\n Utils_1.raiseEvent(evt, this.getDiagramFocusEvent(evt), function (e) { return _this.eventManager.onTextInputFocus(e); });\r\n };\r\n InputManager.prototype.onTextInputKeyDown = function (evt) {\r\n var _this = this;\r\n Utils_1.raiseEvent(evt, this.getDiagramKeyboardEvent(evt), function (e) { return _this.eventManager.onTextInputKeyDown(e); });\r\n };\r\n InputManager.prototype.onTextInputKeyUp = function (evt) {\r\n this.updateTextInputPadding();\r\n };\r\n InputManager.prototype.onTextInputChange = function (evt) {\r\n this.updateTextInputPadding();\r\n };\r\n InputManager.prototype.onPaste = function (evt) {\r\n var _this = this;\r\n Utils_1.raiseEvent(evt, this.getDiagramClipboardEvent(evt), function (e) { return _this.eventManager.onPaste(e); });\r\n };\r\n InputManager.prototype.onTextInputMouseWheel = function (evt) {\r\n this.mouseWheelHandler && this.mouseWheelHandler(evt);\r\n };\r\n InputManager.prototype.onTextInputMouseUp = function (evt) {\r\n if (evt.stopPropagation)\r\n evt.stopPropagation();\r\n evt_1.EvtUtils.cancelBubble(evt);\r\n };\r\n InputManager.prototype.getDiagramKeyboardEvent = function (evt) {\r\n return new Event_1.DiagramKeyboardEvent(key_1.KeyUtils.getKeyModifiers(evt), key_1.KeyUtils.getEventKeyCode(evt), this.textInputElement.value); // TODO: check it\r\n };\r\n InputManager.prototype.getTextInputElementValue = function () {\r\n return this.textInputElement.value;\r\n };\r\n InputManager.prototype.getDiagramFocusEvent = function (evt) {\r\n return new Event_1.DiagramFocusEvent(evt.target.value);\r\n };\r\n InputManager.prototype.getDiagramClipboardEvent = function (evt) {\r\n var clipboardData;\r\n var evtClipboardData = evt.clipboardData || (evt[\"originalEvent\"] && evt[\"originalEvent\"].clipboardData);\r\n if (evtClipboardData !== undefined)\r\n clipboardData = evtClipboardData.getData(\"text/plain\");\r\n else\r\n clipboardData = window[\"clipboardData\"].getData(\"Text\");\r\n return new Event_1.DiagramClipboardEvent(clipboardData);\r\n };\r\n InputManager.prototype.isTextInputElement = function (element) {\r\n return typeof element.className === \"string\" && element.className.indexOf(TEXT_INPUT_CSSCLASS) > -1;\r\n };\r\n InputManager.prototype.lockFocus = function () {\r\n var _this = this;\r\n this.focusLocked = true;\r\n setTimeout(function () { return _this.focusLocked = false; }, 10);\r\n };\r\n InputManager.prototype.notifyViewAdjusted = function (canvasOffset) { };\r\n InputManager.prototype.notifyActualZoomChanged = function (actualZoom) {\r\n this.actualZoom = actualZoom;\r\n if (this.savedTextInputPosition && this.savedTextInputSize)\r\n this.setTextInputElementBounds(this.savedTextInputPosition, this.savedTextInputSize, this.savedTextInputAngle);\r\n };\r\n InputManager.prototype.notifyTextInputStart = function (item, text, position, size) {\r\n var className = \"\";\r\n var textAngle;\r\n if (item instanceof Shape_1.Shape) {\r\n className = \"shape-text\";\r\n textAngle = item.textAngle;\r\n }\r\n else if (item instanceof Connector_1.Connector)\r\n className = \"connector-text\";\r\n size = size && size.clone().applyConverter(unit_converter_1.UnitConverter.twipsToPixels);\r\n this.setInputElementTextInputMode(text, position, size, item.styleText, className, textAngle);\r\n };\r\n InputManager.prototype.notifyTextInputEnd = function (item) {\r\n this.setInputElementFocusHandlerMode();\r\n };\r\n InputManager.prototype.notifyTextInputPermissionsCheck = function (item, allowed) { };\r\n return InputManager;\r\n}());\r\nexports.InputManager = InputManager;\r\n\n\n/***/ }),\n/* 340 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CanvasPageManager = void 0;\r\nvar Style_1 = __webpack_require__(27);\r\nvar RectaglePrimitive_1 = __webpack_require__(21);\r\nvar PathPrimitive_1 = __webpack_require__(5);\r\nvar PatternPrimitive_1 = __webpack_require__(341);\r\nvar ClipPathPrimitive_1 = __webpack_require__(55);\r\nvar CanvasManagerBase_1 = __webpack_require__(43);\r\nvar size_1 = __webpack_require__(2);\r\nvar point_1 = __webpack_require__(1);\r\nvar Utils_1 = __webpack_require__(17);\r\nvar color_1 = __webpack_require__(22);\r\nvar unit_converter_1 = __webpack_require__(11);\r\nvar GRID_PAGES_LINEWIDTH = 2;\r\nvar CanvasPageManager = /** @class */ (function (_super) {\r\n __extends(CanvasPageManager, _super);\r\n function CanvasPageManager(parent, settings, dom) {\r\n var _this = _super.call(this, settings.zoomLevel, dom) || this;\r\n _this.snapPoint = new point_1.Point(0, 0);\r\n _this.gridPatternId = Utils_1.RenderUtils.generateSvgElementId(\"gridPattern\");\r\n _this.pagesGridPatternId = Utils_1.RenderUtils.generateSvgElementId(\"pagesGridPattern\");\r\n _this.pagesGridClipId = Utils_1.RenderUtils.generateSvgElementId(\"pagesGridClip\");\r\n _this.pageColor = settings.pageColor;\r\n _this.modelSize = settings.modelSize;\r\n _this.simpleView = settings.simpleView;\r\n _this.gridSize = settings.gridSize;\r\n _this.gridVisible = settings.gridVisible;\r\n _this.pageSize = settings.pageLandscape ? new size_1.Size(settings.pageSize.height, settings.pageSize.width) : settings.pageSize;\r\n _this.canvasViewOffset = new point_1.Point(0, 0);\r\n _this.initContainers(parent);\r\n return _this;\r\n }\r\n CanvasPageManager.prototype.initContainers = function (parent) {\r\n this.backgroundContainer = parent;\r\n };\r\n CanvasPageManager.prototype.redraw = function () {\r\n this.redrawPage(this.pageColor);\r\n this.redrawGrid();\r\n };\r\n CanvasPageManager.prototype.redrawPage = function (color) {\r\n var style = new Style_1.Style();\r\n style[\"fill\"] = color_1.ColorUtils.colorToHash(color);\r\n this.getOrCreateElement(\"page-bg\", new RectaglePrimitive_1.RectanglePrimitive(0, 0, \"100%\", \"100%\", style, \"page\"), this.backgroundContainer);\r\n this.createTextFloodFilter(\"page-bg-textflood-filter\", this.backgroundContainer, color);\r\n };\r\n CanvasPageManager.prototype.redrawGrid = function () {\r\n this.updateGridElements();\r\n this.updatePagesGridElements();\r\n };\r\n CanvasPageManager.prototype.getGridRectElement = function (primitive) {\r\n if (this.gridRectElement === undefined)\r\n this.gridRectElement = this.createPrimitiveElement(primitive, this.backgroundContainer);\r\n return this.gridRectElement;\r\n };\r\n CanvasPageManager.prototype.getGridPatternElement = function (primitive) {\r\n if (this.gridPatternElement === undefined)\r\n this.gridPatternElement = this.createPrimitiveElement(primitive, this.backgroundContainer);\r\n return this.gridPatternElement;\r\n };\r\n CanvasPageManager.prototype.updateGridElements = function () {\r\n var _this = this;\r\n var gridRectPrimitive = new RectaglePrimitive_1.RectanglePrimitive(\"0\", \"0\", \"100%\", \"100%\", null, \"grid\", null, function (element) {\r\n element.style.setProperty(\"fill\", Utils_1.RenderUtils.getUrlPathById(_this.gridPatternId));\r\n });\r\n var rectEl = this.getGridRectElement(gridRectPrimitive);\r\n if (!this.gridVisible)\r\n rectEl.style.display = \"none\";\r\n else {\r\n rectEl.style.display = \"\";\r\n this.changePrimitiveElement(gridRectPrimitive, rectEl);\r\n var absGridSize_1 = unit_converter_1.UnitConverter.twipsToPixelsF(this.gridSize) * this.actualZoom;\r\n var sizes = [0, 1, 2, 3, 4].map(function (i) { return Math.round(absGridSize_1 * i); });\r\n var outerPathCommands = [\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand(sizes[4].toString(), \"0\"),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(sizes[4].toString(), sizes[4].toString()),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(\"0\", sizes[4].toString())\r\n ];\r\n var innerPathCommands = [];\r\n for (var i = 1; i <= 3; i++) {\r\n innerPathCommands.push(new PathPrimitive_1.PathPrimitiveMoveToCommand(sizes[i].toString(), \"0\"));\r\n innerPathCommands.push(new PathPrimitive_1.PathPrimitiveLineToCommand(sizes[i].toString(), sizes[4].toString()));\r\n }\r\n for (var i = 1; i <= 3; i++) {\r\n innerPathCommands.push(new PathPrimitive_1.PathPrimitiveMoveToCommand(\"0\", sizes[i].toString()));\r\n innerPathCommands.push(new PathPrimitive_1.PathPrimitiveLineToCommand(sizes[4].toString(), sizes[i].toString()));\r\n }\r\n var commonSize = absGridSize_1 * 4;\r\n var canvasViewOffset = this.simpleView ? this.canvasViewOffset : point_1.Point.zero();\r\n var gridPatternPrimitive = new PatternPrimitive_1.PatternPrimitive(this.gridPatternId, [\r\n this.createGridPathPrimitive(outerPathCommands, \"grid-outer-line\"),\r\n this.createGridPathPrimitive(innerPathCommands, \"grid-inner-line\")\r\n ], this.createGridPatternPrimitivePosition(canvasViewOffset.x, this.snapPoint.x, commonSize), this.createGridPatternPrimitivePosition(canvasViewOffset.y, this.snapPoint.y, commonSize), commonSize.toString(), commonSize.toString());\r\n this.changePrimitiveElement(gridPatternPrimitive, this.getGridPatternElement(gridPatternPrimitive));\r\n }\r\n };\r\n CanvasPageManager.prototype.createGridPatternPrimitivePosition = function (offset, coord, commonSize) {\r\n return (((offset + coord * this.actualZoom) % commonSize - commonSize) % commonSize).toString();\r\n };\r\n CanvasPageManager.prototype.createGridPathPrimitive = function (commands, className) {\r\n return new PathPrimitive_1.PathPrimitive(commands, Style_1.StrokeStyle.default1pxNegativeOffsetInstance, className);\r\n };\r\n CanvasPageManager.prototype.getPagesGridRectElement = function (primitive) {\r\n return this.getOrCreateElement(\"grid-pages-rect\", primitive, this.backgroundContainer);\r\n };\r\n CanvasPageManager.prototype.getPagesGridClipPathElement = function (primitive) {\r\n if (this.pagesGridClipPathElement === undefined)\r\n this.pagesGridClipPathElement = this.createPrimitiveElement(primitive, this.backgroundContainer);\r\n return this.pagesGridClipPathElement;\r\n };\r\n CanvasPageManager.prototype.getPagesGridPatternElement = function (primitive) {\r\n if (this.pagesGridPatternElement === undefined)\r\n this.pagesGridPatternElement = this.createPrimitiveElement(primitive, this.backgroundContainer);\r\n return this.pagesGridPatternElement;\r\n };\r\n CanvasPageManager.prototype.updatePagesGridElements = function () {\r\n var _this = this;\r\n var pageAbsSize = this.getAbsoluteSize(this.pageSize);\r\n var rectPrimitive = new RectaglePrimitive_1.RectanglePrimitive(\"0\", \"0\", \"100%\", \"100%\", null, \"grid-page\", this.pagesGridClipId, function (element) {\r\n element.style.setProperty(\"fill\", Utils_1.RenderUtils.getUrlPathById(_this.pagesGridPatternId));\r\n element.style.setProperty(\"display\", _this.simpleView ? \"none\" : \"\");\r\n });\r\n this.getPagesGridRectElement(rectPrimitive);\r\n if (!this.simpleView) {\r\n var modelSize = this.modelSize.clone().multiply(this.actualZoom, this.actualZoom);\r\n var pageGridPathCommands = [\r\n new PathPrimitive_1.PathPrimitiveMoveToCommand((pageAbsSize.width - GRID_PAGES_LINEWIDTH / 2).toString(), \"0\"),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand((pageAbsSize.width - GRID_PAGES_LINEWIDTH / 2).toString(), (pageAbsSize.height - GRID_PAGES_LINEWIDTH / 2).toString()),\r\n new PathPrimitive_1.PathPrimitiveLineToCommand(\"0\", (pageAbsSize.height - GRID_PAGES_LINEWIDTH / 2).toString())\r\n ];\r\n var pagesGridPatternPrimitive = new PatternPrimitive_1.PatternPrimitive(this.pagesGridPatternId, [\r\n new PathPrimitive_1.PathPrimitive(pageGridPathCommands, null, \"pages-grid-line\")\r\n ], 0, 0, pageAbsSize.width.toString(), pageAbsSize.height.toString());\r\n this.changePrimitiveElement(pagesGridPatternPrimitive, this.getPagesGridPatternElement(pagesGridPatternPrimitive));\r\n var pagesGridClipPathPrimitive = new ClipPathPrimitive_1.ClipPathPrimitive(this.pagesGridClipId, [\r\n 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())\r\n ]);\r\n this.changePrimitiveElement(pagesGridClipPathPrimitive, this.getPagesGridClipPathElement(pagesGridClipPathPrimitive));\r\n }\r\n };\r\n CanvasPageManager.prototype.notifyModelSizeChanged = function (size, offset) {\r\n this.modelSize = size.clone();\r\n this.redraw();\r\n };\r\n CanvasPageManager.prototype.notifyModelRectangleChanged = function (rectangle) { };\r\n CanvasPageManager.prototype.notifySnapPointPositionChanged = function (point) {\r\n this.snapPoint = point.clone().applyConverter(unit_converter_1.UnitConverter.twipsToPixelsF);\r\n this.redrawGrid();\r\n };\r\n CanvasPageManager.prototype.notifyPageColorChanged = function (color) {\r\n this.pageColor = color;\r\n this.redrawPage(this.pageColor);\r\n };\r\n CanvasPageManager.prototype.notifyModelChanged = function (changes) { };\r\n CanvasPageManager.prototype.notifyPageSizeChanged = function (pageSize, pageLandscape) {\r\n this.pageSize = pageLandscape ? new size_1.Size(pageSize.height, pageSize.width) : pageSize.clone();\r\n this.redraw();\r\n };\r\n CanvasPageManager.prototype.notifyActualZoomChanged = function (actualZoom) {\r\n this.actualZoom = actualZoom;\r\n this.redraw();\r\n };\r\n CanvasPageManager.prototype.notifyViewAdjusted = function (canvasViewOffset) {\r\n if (!this.canvasViewOffset.equals(canvasViewOffset)) {\r\n this.canvasViewOffset = canvasViewOffset;\r\n if (this.simpleView)\r\n this.redraw();\r\n }\r\n };\r\n CanvasPageManager.prototype.notifyViewChanged = function (simpleView) {\r\n this.simpleView = simpleView;\r\n this.redraw();\r\n };\r\n CanvasPageManager.prototype.notifyGridChanged = function (showGrid, gridSize) {\r\n this.gridVisible = showGrid;\r\n this.gridSize = gridSize;\r\n this.redraw();\r\n };\r\n return CanvasPageManager;\r\n}(CanvasManagerBase_1.CanvasManagerBase));\r\nexports.CanvasPageManager = CanvasPageManager;\r\n\n\n/***/ }),\n/* 341 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PatternPrimitive = void 0;\r\nvar RenderHelper_1 = __webpack_require__(15);\r\nvar Primitive_1 = __webpack_require__(25);\r\nvar PatternPrimitive = /** @class */ (function (_super) {\r\n __extends(PatternPrimitive, _super);\r\n function PatternPrimitive(id, children, x, y, width, height, style) {\r\n var _this = _super.call(this, style) || this;\r\n _this.id = id;\r\n _this.x = x;\r\n _this.y = y;\r\n _this.width = width;\r\n _this.height = height;\r\n _this.children = children;\r\n return _this;\r\n }\r\n PatternPrimitive.prototype.createMainElement = function () {\r\n var element = document.createElementNS(RenderHelper_1.svgNS, \"pattern\");\r\n element.setAttribute(\"patternUnits\", \"userSpaceOnUse\");\r\n element.setAttribute(\"id\", this.id);\r\n return element;\r\n };\r\n PatternPrimitive.prototype.applyElementProperties = function (element, measurer) {\r\n this.setUnitAttribute(element, \"x\", this.x);\r\n this.setUnitAttribute(element, \"y\", this.y);\r\n this.setUnitAttribute(element, \"width\", this.width);\r\n this.setUnitAttribute(element, \"height\", this.height);\r\n this.setPositionCorrectionAttribute(element);\r\n _super.prototype.applyElementProperties.call(this, element, measurer);\r\n };\r\n return PatternPrimitive;\r\n}(Primitive_1.SvgPrimitive));\r\nexports.PatternPrimitive = PatternPrimitive;\r\n\n\n/***/ }),\n/* 342 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CanvasViewManager = exports.CROP_OFFSET = exports.CANVAS_SCROLL_PADDING = exports.CANVAS_MIN_PADDING = void 0;\r\nvar CanvasManagerBase_1 = __webpack_require__(43);\r\nvar Settings_1 = __webpack_require__(28);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar offsets_1 = __webpack_require__(87);\r\nvar size_1 = __webpack_require__(2);\r\nvar point_1 = __webpack_require__(1);\r\nvar GroupPrimitive_1 = __webpack_require__(40);\r\nvar ClipPathPrimitive_1 = __webpack_require__(55);\r\nvar RectaglePrimitive_1 = __webpack_require__(21);\r\nvar Utils_2 = __webpack_require__(17);\r\nvar ShadowFilterPrimitive_1 = __webpack_require__(343);\r\nvar Style_1 = __webpack_require__(27);\r\nvar dom_1 = __webpack_require__(23);\r\nvar unit_converter_1 = __webpack_require__(11);\r\nexports.CANVAS_MIN_PADDING = 8;\r\nexports.CANVAS_SCROLL_PADDING = 18;\r\nexports.CROP_OFFSET = 40;\r\nvar DRAG_SCROLL_CSSCLASS = \"dxdi-drag-scroll\";\r\nvar DRAG_ITEM_CSSCLASS = \"dxdi-drag-item\";\r\nvar CanvasViewManager = /** @class */ (function (_super) {\r\n __extends(CanvasViewManager, _super);\r\n function CanvasViewManager(scrollView, svgElement, modelSize, fixedZoomLevel, autoZoom, simpleView, rectangle, dom) {\r\n var _this = _super.call(this, fixedZoomLevel, dom) || this;\r\n _this.svgElement = svgElement;\r\n _this.paddings = new offsets_1.Offsets(0, 0, 0, 0);\r\n _this.scroll = new point_1.Point(0, 0);\r\n _this.crop = offsets_1.Offsets.empty();\r\n _this.lockAutoZoom = false;\r\n _this.autoScrollLocker = 0;\r\n _this.pageClipPathId = Utils_2.RenderUtils.generateSvgElementId(\"page-clip\");\r\n _this.pageShadowId = Utils_2.RenderUtils.generateSvgElementId(\"page-shadow\");\r\n _this.onViewChanged = new Utils_1.EventDispatcher();\r\n scrollView.onScroll.add(_this);\r\n modelSize = modelSize.clone().applyConverter(unit_converter_1.UnitConverter.twipsToPixelsF);\r\n _this.scrollView = scrollView;\r\n _this.modelSize = modelSize;\r\n _this.simpleView = simpleView;\r\n _this.fixedZoomLevel = fixedZoomLevel;\r\n _this.autoZoom = autoZoom;\r\n _this.crop = _this.rectangleToCrop(rectangle, modelSize);\r\n _this.updateElements(modelSize.clone().multiply(fixedZoomLevel, fixedZoomLevel), point_1.Point.zero(), simpleView); // TODO: remove?\r\n _this.getOrCreateElement(\"shadow\", new ShadowFilterPrimitive_1.ShadowFilterPrimitive(_this.pageShadowId), _this.svgElement);\r\n _this.containerSize = scrollView.getSize();\r\n return _this;\r\n }\r\n CanvasViewManager.prototype.adjust = function (resetPaddings, saveVerticalScroll) {\r\n var offset;\r\n if (!resetPaddings) {\r\n resetPaddings = { vertical: false, horizontal: false };\r\n offset = offsets_1.Offsets.empty();\r\n }\r\n this.containerSize = this.scrollView.getSize();\r\n this.adjustCore(this.modelSize, this.fixedZoomLevel, this.autoZoom, this.simpleView, this.crop, resetPaddings, this.containerSize, offset, saveVerticalScroll);\r\n this.tryNormalizePaddings();\r\n };\r\n CanvasViewManager.prototype.notifyModelSizeChanged = function (size, offset) {\r\n size = size.clone().applyConverter(unit_converter_1.UnitConverter.twipsToPixelsF);\r\n var resetPaddings = { horizontal: !offset, vertical: !offset };\r\n this.adjustCore(size, this.fixedZoomLevel, this.autoZoom, this.simpleView, this.crop, resetPaddings, this.containerSize, offset && offset.clone().applyConverter(unit_converter_1.UnitConverter.twipsToPixelsF));\r\n this.modelSize = size;\r\n };\r\n CanvasViewManager.prototype.notifyModelRectangleChanged = function (rectangle) {\r\n var crop = this.rectangleToCrop(rectangle, this.modelSize);\r\n if (!this.crop || !this.crop.equals(crop)) {\r\n if (this.simpleView)\r\n this.adjustCore(this.modelSize, this.fixedZoomLevel, this.autoZoom, this.simpleView, crop, { horizontal: false, vertical: false }, this.containerSize, offsets_1.Offsets.empty());\r\n this.crop = crop;\r\n }\r\n };\r\n CanvasViewManager.prototype.notifySnapPointPositionChanged = function (point) { };\r\n CanvasViewManager.prototype.notifyZoomChanged = function (fixedZoomLevel, autoZoom) {\r\n this.adjustCore(this.modelSize, fixedZoomLevel, autoZoom, this.simpleView, this.crop, {\r\n horizontal: false,\r\n vertical: false\r\n }, this.containerSize);\r\n this.fixedZoomLevel = fixedZoomLevel;\r\n this.autoZoom = autoZoom;\r\n };\r\n CanvasViewManager.prototype.notifyViewChanged = function (simpleView) {\r\n this.adjustCore(this.modelSize, this.fixedZoomLevel, this.autoZoom, simpleView, this.crop, { vertical: true, horizontal: true }, this.containerSize);\r\n this.simpleView = simpleView;\r\n };\r\n CanvasViewManager.prototype.notifyGridChanged = function (showGrid, gridSize) { };\r\n CanvasViewManager.prototype.notifyDragStart = function (itemKeys) {\r\n this.lockAutoZoom = true;\r\n dom_1.DomUtils.addClassName(this.svgElement, DRAG_ITEM_CSSCLASS);\r\n };\r\n CanvasViewManager.prototype.notifyDragEnd = function (itemKeys) {\r\n this.lockAutoZoom = false;\r\n dom_1.DomUtils.removeClassName(this.svgElement, DRAG_ITEM_CSSCLASS);\r\n this.adjustAfterDragEnd();\r\n };\r\n CanvasViewManager.prototype.adjustAfterDragEnd = function () {\r\n if (this.autoZoom && !this.autoZoomLocked)\r\n this.adjust({ horizontal: true, vertical: this.autoZoom === Settings_1.AutoZoomMode.FitContent }, this.autoZoom === Settings_1.AutoZoomMode.FitToWidth);\r\n };\r\n CanvasViewManager.prototype.notifyShowContextToolbox = function () {\r\n this.autoZoomLocked = true;\r\n };\r\n CanvasViewManager.prototype.notifyHideContextToolbox = function () {\r\n this.autoZoomLocked = false;\r\n this.adjustAfterDragEnd();\r\n };\r\n CanvasViewManager.prototype.notifyDragScrollStart = function () {\r\n dom_1.DomUtils.addClassName(this.svgElement, DRAG_SCROLL_CSSCLASS);\r\n };\r\n CanvasViewManager.prototype.notifyDragScrollEnd = function () {\r\n dom_1.DomUtils.removeClassName(this.svgElement, DRAG_SCROLL_CSSCLASS);\r\n };\r\n CanvasViewManager.prototype.notifyScrollChanged = function (getScroll) {\r\n this.scroll = getScroll();\r\n };\r\n CanvasViewManager.prototype.checkFitToCanvas = function (containerSize) {\r\n containerSize = containerSize || this.containerSize;\r\n var scrollSize = this.scrollView.getScrollBarWidth();\r\n containerSize = containerSize.clone().offset(-exports.CANVAS_MIN_PADDING * 2, -exports.CANVAS_MIN_PADDING * 2).nonNegativeSize();\r\n var modelAbsSize = this.getActualModelSizeWithoutZoom(this.modelSize, this.simpleView, this.crop).clone().multiply(this.actualZoom, this.actualZoom);\r\n var scrollbars = this.checkScrollBars(containerSize, scrollSize, modelAbsSize, offsets_1.Offsets.empty());\r\n containerSize = containerSize.clone().offset(scrollbars.vertical ? -scrollSize : 0, scrollbars.horizontal ? -scrollSize : 0).nonNegativeSize();\r\n return {\r\n vertical: containerSize.height >= modelAbsSize.height,\r\n horizontal: containerSize.width >= modelAbsSize.width\r\n };\r\n };\r\n CanvasViewManager.prototype.rectangleToCrop = function (rectangle, modelSize) {\r\n var absRectangle = rectangle.clone().applyConverter(unit_converter_1.UnitConverter.twipsToPixelsF);\r\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));\r\n };\r\n CanvasViewManager.prototype.correctCrop = function (newVal) {\r\n return exports.CROP_OFFSET * Math.floor(newVal / exports.CROP_OFFSET);\r\n };\r\n CanvasViewManager.prototype.setActualZoom = function (actualZoom) {\r\n if (this.actualZoom !== actualZoom) {\r\n this.actualZoom = actualZoom;\r\n this.raiseActualZoomChanged();\r\n }\r\n };\r\n CanvasViewManager.prototype.getActualAutoZoomLevel = function (autoZoom) {\r\n if (autoZoom === Settings_1.AutoZoomMode.Disabled)\r\n return this.actualZoom;\r\n var containerSize = this.containerSize;\r\n var scrollbarWidth = this.scrollView.getScrollBarWidth();\r\n var actualModelSizeWithoutZoom = this.getActualModelSizeWithoutZoom(this.modelSize, this.simpleView, this.crop);\r\n return this.getActualAutoZoom(containerSize, scrollbarWidth, actualModelSizeWithoutZoom, autoZoom);\r\n };\r\n CanvasViewManager.prototype.getActualZoom = function (containerSize, scrollbarWidth, actualModelSizeWithoutZoom, fixedZoom, autoZoom) {\r\n return this.lockAutoZoom ? this.actualZoom :\r\n autoZoom === Settings_1.AutoZoomMode.Disabled ? fixedZoom : this.getActualAutoZoom(containerSize, scrollbarWidth, actualModelSizeWithoutZoom, autoZoom);\r\n };\r\n CanvasViewManager.prototype.getActualAutoZoom = function (containerSize, scrollbarWidth, actualModelSizeWithoutZoom, autoZoom) {\r\n if (containerSize.width === 0 || containerSize.height === 0)\r\n return 1;\r\n if (autoZoom === Settings_1.AutoZoomMode.FitContent)\r\n return Math.min((containerSize.width - exports.CANVAS_MIN_PADDING * 2) / actualModelSizeWithoutZoom.width, (containerSize.height - exports.CANVAS_MIN_PADDING * 2) / actualModelSizeWithoutZoom.height, 1);\r\n return Math.min((containerSize.width - exports.CANVAS_MIN_PADDING * 2 - scrollbarWidth) / actualModelSizeWithoutZoom.width, 1);\r\n };\r\n CanvasViewManager.prototype.raiseActualZoomChanged = function () {\r\n var _this = this;\r\n this.onViewChanged.raise1(function (l) { return l.notifyActualZoomChanged(_this.actualZoom); });\r\n };\r\n CanvasViewManager.prototype.tryNormalizePaddings = function () {\r\n var scrollbarWidth = this.scrollView.getScrollBarWidth();\r\n var actualModelSize = this.getActualModelSizeWithoutZoom(this.modelSize, this.simpleView, this.crop).clone().multiply(this.actualZoom, this.actualZoom);\r\n var translate = new point_1.Point(this.paddings.left, this.paddings.top);\r\n var currentTail = new size_1.Size(this.paddings.right, this.paddings.bottom);\r\n var tail = this.getTailSpace(translate, this.scroll, actualModelSize, this.containerSize, scrollbarWidth);\r\n if (!tail.equals(currentTail))\r\n this.applyChanges(new offsets_1.Offsets(translate.x, tail.width, translate.y, tail.height), actualModelSize, this.simpleView, this.crop.clone().multiply(this.actualZoom));\r\n };\r\n CanvasViewManager.prototype.scrollBy = function (offset) {\r\n var _a, _b, _c;\r\n var scroll = this.scroll;\r\n var containerSize = this.containerSize;\r\n var scrollbarWidth = this.scrollView.getScrollBarWidth();\r\n var actualModelSize = this.getActualModelSizeWithoutZoom(this.modelSize, this.simpleView, this.crop).clone().multiply(this.actualZoom, this.actualZoom);\r\n var scrollbars = this.checkScrollBars(containerSize, scrollbarWidth, actualModelSize, this.paddings);\r\n var translate = new point_1.Point(this.paddings.left, this.paddings.top);\r\n var tail = new size_1.Size(this.paddings.right, this.paddings.bottom);\r\n (_a = this.changeScrollByOffset(translate, scroll, tail, actualModelSize, offset, containerSize, scrollbars), scroll = _a.scroll, offset = _a.offset);\r\n (_b = this.changeTranslateByOffset(translate, tail, offset, scrollbars), translate = _b.translate, offset = _b.offset);\r\n (_c = this.cropHiddenHead(translate, scroll), translate = _c.translate, scroll = _c.scroll);\r\n tail = this.getTailSpace(translate, scroll, actualModelSize, containerSize, scrollbarWidth);\r\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);\r\n return offset;\r\n };\r\n CanvasViewManager.prototype.changeScrollByOffset = function (curTranslate, curScroll, curTail, modelSize, curOffset, containerSize, scrollbars) {\r\n var scroll = curScroll.clone();\r\n var offset = curOffset.clone();\r\n if (curOffset.x && scrollbars.horizontal)\r\n scroll.x -= (offset.x = -this.getScrollDeltaByOffset(curOffset.x, curScroll.x, curTranslate.x + modelSize.width + curTail.width, containerSize.width, scrollbars.vertical));\r\n if (curOffset.y && scrollbars.vertical)\r\n scroll.y -= (offset.y = -this.getScrollDeltaByOffset(curOffset.y, curScroll.y, curTranslate.y + modelSize.height + curTail.height, containerSize.height, scrollbars.horizontal));\r\n return { scroll: scroll, offset: offset };\r\n };\r\n CanvasViewManager.prototype.changeTranslateByOffset = function (curTranslate, curTail, curOffset, scrollbars) {\r\n var translate = curTranslate.clone();\r\n var offset = curOffset.clone();\r\n if (curOffset.x && !scrollbars.horizontal)\r\n translate.x += (offset.x = this.getTranslateDeltaByOffset(curOffset.x, translate.x, curTail.width));\r\n if (curOffset.y && !scrollbars.vertical)\r\n translate.y += (offset.y = this.getTranslateDeltaByOffset(curOffset.y, translate.y, curTail.height));\r\n return { translate: translate, offset: offset };\r\n };\r\n CanvasViewManager.prototype.getScrollDeltaByOffset = function (offset, scroll, commonWidth, containerWidth, hasScrollbar) {\r\n if (offset > 0)\r\n return -Math.min(scroll, offset);\r\n var maxScroll = commonWidth - (containerWidth - (hasScrollbar ? this.scrollView.getScrollBarWidth() : 0));\r\n return Math.min(maxScroll - scroll, -offset);\r\n };\r\n CanvasViewManager.prototype.getTranslateDeltaByOffset = function (offset, headPadding, tailPadding) {\r\n if (!offset)\r\n return 0;\r\n return offset < 0 ?\r\n -Math.min(headPadding - exports.CANVAS_MIN_PADDING, -offset) :\r\n Math.min(tailPadding - exports.CANVAS_MIN_PADDING, offset);\r\n };\r\n CanvasViewManager.prototype.getActualModelSizeWithoutZoom = function (originModelSize, simpleView, crop) {\r\n return simpleView && crop ? originModelSize.clone().offset(-crop.horizontal, -crop.vertical).nonNegativeSize() : originModelSize;\r\n };\r\n CanvasViewManager.prototype.setScrollTo = function (modelPoint, offsetPoint) {\r\n var containerSize = this.containerSize;\r\n var shift = this.getVisibileAreaAbsShift();\r\n var absPoint = modelPoint\r\n .clone().applyConverter(unit_converter_1.UnitConverter.twipsToPixelsF)\r\n .clone().multiply(this.actualZoom, this.actualZoom)\r\n .clone().offset(shift.x, shift.y);\r\n var scroll = this.scroll;\r\n if (!offsetPoint) {\r\n if (absPoint.x < 0)\r\n scroll.x += absPoint.x - exports.CANVAS_MIN_PADDING;\r\n if (absPoint.y < 0)\r\n scroll.y += absPoint.y - exports.CANVAS_MIN_PADDING;\r\n if (absPoint.x > containerSize.width)\r\n scroll.x += (absPoint.x - containerSize.width + exports.CANVAS_MIN_PADDING);\r\n if (absPoint.y > containerSize.height)\r\n scroll.y += (absPoint.y - containerSize.height + exports.CANVAS_MIN_PADDING);\r\n }\r\n else {\r\n scroll.x += absPoint.x - offsetPoint.x;\r\n scroll.y += absPoint.y - offsetPoint.y;\r\n }\r\n this.setScroll(scroll);\r\n };\r\n CanvasViewManager.prototype.scrollIntoView = function (rectangle) {\r\n rectangle = rectangle\r\n .clone()\r\n .applyConverter(unit_converter_1.UnitConverter.twipsToPixelsF)\r\n .multiply(this.actualZoom, this.actualZoom)\r\n .moveRectangle(this.paddings.left, this.paddings.top);\r\n var scroll = this.scroll;\r\n var container = this.containerSize;\r\n if (rectangle.x >= scroll.x && rectangle.y >= scroll.y && rectangle.right <= scroll.x + container.width && rectangle.bottom <= scroll.y + container.height)\r\n return;\r\n var newScroll = scroll.clone();\r\n if (rectangle.x < scroll.x)\r\n newScroll.x = rectangle.x - exports.CANVAS_SCROLL_PADDING;\r\n else if (rectangle.right > scroll.x + container.width) // [..|..x|x.]\r\n newScroll.x = Math.min(rectangle.x - exports.CANVAS_SCROLL_PADDING, rectangle.right + exports.CANVAS_SCROLL_PADDING - container.width);\r\n if (rectangle.y < scroll.y)\r\n newScroll.y = rectangle.y - exports.CANVAS_SCROLL_PADDING;\r\n else\r\n newScroll.y = Math.min(rectangle.y - exports.CANVAS_SCROLL_PADDING, rectangle.bottom + exports.CANVAS_SCROLL_PADDING - container.height);\r\n this.setScroll(newScroll);\r\n };\r\n CanvasViewManager.prototype.setScroll = function (pt) {\r\n var _this = this;\r\n var modelAbsSize = this.modelSize.clone().multiply(this.actualZoom, this.actualZoom);\r\n pt.x = Math.max(0, Math.min(pt.x, modelAbsSize.width + this.paddings.horizontal - this.containerSize.width));\r\n pt.y = Math.max(0, Math.min(pt.y, modelAbsSize.height + this.paddings.vertical - this.containerSize.height));\r\n this.dom.changeByFunc(null, function () {\r\n _this.scrollView.setScroll(pt.x, pt.y);\r\n });\r\n this.scroll = pt.clone();\r\n };\r\n CanvasViewManager.prototype.updateElements = function (modelAbsSize, translate, simpleView) {\r\n this.updatePageElement(modelAbsSize, translate, simpleView);\r\n this.updateCanvasElement(translate);\r\n };\r\n CanvasViewManager.prototype.updateCanvasElement = function (translate) {\r\n this.canvasElement = this.getOrCreateElement(\"dxdi-main\", new GroupPrimitive_1.GroupPrimitive([], \"dxdi-main\", null, null, function (el) {\r\n el.setAttribute(\"transform\", \"translate(\" + Math.round(translate.x) + \", \" + Math.round(translate.y) + \")\");\r\n }), this.svgElement);\r\n };\r\n CanvasViewManager.prototype.updatePageElement = function (modelAbsSize, translate, simpleView) {\r\n if (simpleView)\r\n this.updatePageElementCore(\"\", 0, 0, modelAbsSize.width, modelAbsSize.height);\r\n else {\r\n var x = translate.x;\r\n var y = translate.y;\r\n var modelAbsWidth = modelAbsSize.width;\r\n var modelAbsHeight = modelAbsSize.height;\r\n this.createPageShadow(x, y, modelAbsWidth, modelAbsHeight);\r\n this.updatePageElementCore(this.pageClipPathId, Math.round(x), Math.round(y), modelAbsWidth, modelAbsHeight);\r\n }\r\n };\r\n CanvasViewManager.prototype.createPageShadow = function (left, top, width, height) {\r\n this.getOrCreateElement(\"pageShadowRect\", new RectaglePrimitive_1.RectanglePrimitive(left.toString(), top.toString(), width.toString(), height.toString(), new Style_1.EmptyStyle({ \"filter\": Utils_2.RenderUtils.getUrlPathById(this.pageShadowId) }), \"dxdi-page-shadow\"), this.svgElement, this.svgElement.firstChild);\r\n };\r\n CanvasViewManager.prototype.updatePageElementCore = function (groupClipPathId, translateX, translateY, modelAbsWidth, modelAbsHeight) {\r\n this.pageElement = this.getOrCreateElement(\"page\", new GroupPrimitive_1.GroupPrimitive([], \"dxdi-page\", null, groupClipPathId, function (el) {\r\n el.setAttribute(\"transform\", \"translate(\" + translateX + \", \" + translateY + \")\");\r\n }), this.svgElement);\r\n this.getOrCreateElement(\"pageClip\", this.createPageClipPathPrimitive(modelAbsWidth, modelAbsHeight), this.svgElement);\r\n };\r\n CanvasViewManager.prototype.createPageClipPathPrimitive = function (modelAbsWidth, modelAbsHeight) {\r\n return new ClipPathPrimitive_1.ClipPathPrimitive(this.pageClipPathId, [new RectaglePrimitive_1.RectanglePrimitive(0, 0, modelAbsWidth.toString(), modelAbsHeight.toString())]);\r\n };\r\n CanvasViewManager.prototype.adjustCore = function (newModelSize, fixedZoomLevel, autoZoom, simpleView, crop, resetPaddings, containerSize, offset, saveVerticalScroll) {\r\n var actualModelSizeWithoutZoom = this.getActualModelSizeWithoutZoom(newModelSize, simpleView, crop);\r\n if (!this.lockAutoZoom && (autoZoom || !offset || !this.modelSize)) {\r\n var scrollbarWidth = this.scrollView.getScrollBarWidth();\r\n var actualZoom = this.getActualZoom(containerSize, scrollbarWidth, actualModelSizeWithoutZoom, fixedZoomLevel, autoZoom);\r\n if (autoZoom && actualZoom === this.actualZoom && (!resetPaddings.horizontal || (!resetPaddings.vertical && !saveVerticalScroll)))\r\n this.resizeView(actualModelSizeWithoutZoom, actualZoom, containerSize, simpleView, crop, offset || offsets_1.Offsets.empty());\r\n else {\r\n this.resetView(actualModelSizeWithoutZoom, actualZoom, containerSize, simpleView, crop, resetPaddings);\r\n this.setActualZoom(actualZoom);\r\n }\r\n }\r\n else\r\n this.resizeView(actualModelSizeWithoutZoom, this.actualZoom, containerSize, simpleView, crop, offset);\r\n };\r\n CanvasViewManager.prototype.resetView = function (actualModelSizeWithoutZoom, actualZoom, containerSize, simpleView, cropWithoutZoom, toReset) {\r\n var actualModelSize = actualModelSizeWithoutZoom.clone().multiply(actualZoom, actualZoom);\r\n var paddings = offsets_1.Offsets.fromNumber(exports.CANVAS_MIN_PADDING);\r\n toReset = toReset || { horizontal: true, vertical: true };\r\n if (!toReset.horizontal && this.paddings) {\r\n paddings.left = this.paddings.left;\r\n paddings.right = this.paddings.right;\r\n }\r\n if (!toReset.vertical && this.paddings) {\r\n paddings.top = this.paddings.top;\r\n paddings.bottom = this.paddings.bottom;\r\n }\r\n var scrollbars = this.checkScrollBars(containerSize, this.scrollView.getScrollBarWidth(), actualModelSize, paddings);\r\n var scrollBarWidth = this.scrollView.getScrollBarWidth();\r\n var scroll = (toReset.horizontal || toReset.vertical) ? this.scroll : undefined;\r\n if (toReset.horizontal) {\r\n var paddingsH = Math.max((containerSize.width - (scrollbars.vertical ? scrollBarWidth : 0) - actualModelSize.width) / 2, exports.CANVAS_MIN_PADDING);\r\n paddings.left = paddingsH;\r\n paddings.right = paddingsH;\r\n scroll.x = 0;\r\n }\r\n if (toReset.vertical) {\r\n var paddingsV = Math.max((containerSize.height - (scrollbars.horizontal ? scrollBarWidth : 0) - actualModelSize.height) / 2, exports.CANVAS_MIN_PADDING);\r\n paddings.top = paddingsV;\r\n paddings.bottom = paddingsV;\r\n scroll.y = 0;\r\n }\r\n this.applyChanges(paddings, actualModelSize, simpleView, cropWithoutZoom.clone().multiply(actualZoom), scroll);\r\n };\r\n CanvasViewManager.prototype.resizeView = function (actualModelSizeWithoutZoom, actualZoom, containerSize, simpleView, cropWithoutZoom, offset) {\r\n var _a, _b;\r\n var oldZoom = this.actualZoom;\r\n var oldCrop = this.simpleView && this.crop ? this.crop.clone().multiply(oldZoom) : offsets_1.Offsets.empty();\r\n var actualModelSize = actualModelSizeWithoutZoom.clone().multiply(actualZoom, actualZoom);\r\n offset = offset.clone().multiply(actualZoom);\r\n var newCrop = simpleView && cropWithoutZoom ? cropWithoutZoom.clone().multiply(actualZoom) : offsets_1.Offsets.empty();\r\n var translate = new point_1.Point(this.paddings.left, this.paddings.top);\r\n var scroll = this.scroll;\r\n (_a = this.applyOffset(translate, scroll, oldCrop, newCrop, offset), translate = _a.translate, scroll = _a.scroll);\r\n (_b = this.cropHiddenHead(translate, scroll), translate = _b.translate, scroll = _b.scroll);\r\n var tailSpace = this.getTailSpace(translate, scroll, actualModelSize, containerSize, this.scrollView.getScrollBarWidth());\r\n if (!simpleView) {\r\n var maxTailSpaceWidth = containerSize.width - exports.CANVAS_SCROLL_PADDING;\r\n var maxTailSpaceHeight = containerSize.height - exports.CANVAS_SCROLL_PADDING;\r\n if (offset.left < 0)\r\n if (translate.x > maxTailSpaceWidth) {\r\n translate.x = maxTailSpaceWidth;\r\n scroll.x = 0;\r\n }\r\n if (offset.right < 0)\r\n if (tailSpace.width > maxTailSpaceWidth) {\r\n tailSpace.width = maxTailSpaceWidth;\r\n if (scroll.x > actualModelSize.width)\r\n scroll.x = actualModelSize.width;\r\n }\r\n if (offset.top < 0)\r\n if (translate.y > maxTailSpaceHeight) {\r\n translate.y = maxTailSpaceHeight;\r\n scroll.y = 0;\r\n }\r\n if (offset.bottom < 0)\r\n if (tailSpace.height > maxTailSpaceHeight) {\r\n tailSpace.height = maxTailSpaceHeight;\r\n if (scroll.y > actualModelSize.height)\r\n scroll.y = actualModelSize.height;\r\n }\r\n }\r\n var newPaddings = new offsets_1.Offsets(translate.x, tailSpace.width, translate.y, tailSpace.height);\r\n this.applyChanges(newPaddings, actualModelSize, simpleView, newCrop, scroll);\r\n };\r\n CanvasViewManager.prototype.applyChanges = function (paddings, actualModelSize, simpleView, crop, scroll) {\r\n var _this = this;\r\n var translate = new point_1.Point(paddings.left, paddings.top);\r\n if (simpleView && crop)\r\n translate = translate.clone().offset(-crop.left, -crop.top);\r\n this.updateElements(actualModelSize, translate, simpleView);\r\n this.setSvgSize(actualModelSize.width + paddings.horizontal, actualModelSize.height + paddings.vertical);\r\n this.onViewChanged.raise1(function (l) { return l.notifyViewAdjusted(new point_1.Point(translate.x, translate.y)); });\r\n if (scroll) {\r\n this.lockAutoScroll();\r\n scroll && this.dom.changeByFunc(this.scrollView, function (s) {\r\n s.setScroll(scroll.x, scroll.y);\r\n _this.unlockAutoScroll();\r\n });\r\n this.scroll = scroll;\r\n }\r\n this.paddings = paddings;\r\n };\r\n CanvasViewManager.prototype.isAutoScrollLocked = function () {\r\n return this.autoScrollLocker !== 0;\r\n };\r\n CanvasViewManager.prototype.lockAutoScroll = function () {\r\n this.autoScrollLocker++;\r\n };\r\n CanvasViewManager.prototype.unlockAutoScroll = function () {\r\n this.autoScrollLocker--;\r\n };\r\n CanvasViewManager.prototype.applyOffset = function (curTranslate, curScroll, oldCrop, newCrop, modelOffset) {\r\n var translate = curTranslate.clone();\r\n var scroll = curScroll.clone();\r\n var offset = this.getActualOffset(oldCrop, newCrop, modelOffset);\r\n if (offset.left) {\r\n translate.x = Math.max(exports.CANVAS_MIN_PADDING, translate.x - offset.left);\r\n scroll.x += offset.left - (curTranslate.x - translate.x);\r\n }\r\n if (offset.top) {\r\n translate.y = Math.max(exports.CANVAS_MIN_PADDING, translate.y - offset.top);\r\n scroll.y += offset.top - (curTranslate.y - translate.y);\r\n }\r\n return { translate: translate, scroll: scroll };\r\n };\r\n CanvasViewManager.prototype.cropHiddenHead = function (curTranslate, curScroll) {\r\n var scroll = curScroll.clone();\r\n var translate = curTranslate.clone();\r\n if (scroll.x && translate.x > exports.CANVAS_MIN_PADDING) {\r\n var delta = translate.x - Math.max(exports.CANVAS_MIN_PADDING, translate.x - scroll.x);\r\n translate.x -= delta;\r\n scroll.x -= delta;\r\n }\r\n if (scroll.y && translate.y > exports.CANVAS_MIN_PADDING) {\r\n var delta = translate.y - Math.max(exports.CANVAS_MIN_PADDING, translate.y - scroll.y);\r\n translate.y -= delta;\r\n scroll.y -= delta;\r\n }\r\n return { translate: translate, scroll: scroll };\r\n };\r\n CanvasViewManager.prototype.getTailSpace = function (curTranslate, curScroll, newModelAbsSize, containerSize, scrollbarWidth) {\r\n var translate = curTranslate.clone();\r\n var scroll = curScroll.clone();\r\n var right = Math.max(containerSize.width + scroll.x - (translate.x + newModelAbsSize.width), exports.CANVAS_MIN_PADDING);\r\n var bottom = Math.max(containerSize.height + scroll.y - (translate.y + newModelAbsSize.height), exports.CANVAS_MIN_PADDING);\r\n var scrollbars = this.checkScrollBars(containerSize, scrollbarWidth, newModelAbsSize, new offsets_1.Offsets(translate.x, right, translate.y, bottom));\r\n if (scrollbars.vertical)\r\n right = Math.max(exports.CANVAS_MIN_PADDING, right - scrollbarWidth);\r\n if (scrollbars.horizontal)\r\n bottom = Math.max(exports.CANVAS_MIN_PADDING, bottom - scrollbarWidth);\r\n return new size_1.Size(right, bottom);\r\n };\r\n CanvasViewManager.prototype.getActualOffset = function (oldCrop, newCrop, docOffset) {\r\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);\r\n };\r\n CanvasViewManager.prototype.checkScrollBars = function (containerSize, scrollBarWidth, modelAbsSize, paddings) {\r\n var hasHorizontalScroll = containerSize.width < modelAbsSize.width + paddings.horizontal;\r\n var hasVerticalScroll = containerSize.height < modelAbsSize.height + paddings.vertical;\r\n if (hasHorizontalScroll && !hasVerticalScroll)\r\n hasVerticalScroll = containerSize.height - scrollBarWidth < modelAbsSize.height + paddings.vertical;\r\n if (hasVerticalScroll && !hasHorizontalScroll)\r\n hasHorizontalScroll = containerSize.width - scrollBarWidth < modelAbsSize.width + paddings.horizontal;\r\n return { horizontal: hasHorizontalScroll, vertical: hasVerticalScroll };\r\n };\r\n CanvasViewManager.prototype.setSvgSize = function (width, height) {\r\n if (width !== this.lastWidth || height !== this.lastHeight) {\r\n this.dom.changeByFunc(this.svgElement, function (e) { return Utils_2.RenderUtils.updateSvgElementSize(e, width, height); });\r\n this.lastWidth = width;\r\n this.lastHeight = height;\r\n }\r\n };\r\n CanvasViewManager.prototype.getVisibileAreaAbsShift = function (excludeScroll) {\r\n var scroll = this.scroll;\r\n var paddings = this.paddings.clone();\r\n var simpleView = this.simpleView;\r\n var cropLeft = simpleView && this.crop ? this.crop.left * this.actualZoom : 0;\r\n var cropTop = simpleView && this.crop ? this.crop.top * this.actualZoom : 0;\r\n return new point_1.Point(paddings.left - cropLeft - (excludeScroll ? 0 : scroll.x), paddings.top - cropTop - (excludeScroll ? 0 : scroll.y));\r\n };\r\n /* ILayoutPointResolver */\r\n CanvasViewManager.prototype.getModelPoint = function (absolutePoint, checkScrollArea) {\r\n var shift = this.getVisibileAreaAbsShift();\r\n var modelPoint = absolutePoint\r\n .clone().offset(-shift.x, -shift.y)\r\n .multiply(1 / this.actualZoom, 1 / this.actualZoom);\r\n if (checkScrollArea) {\r\n var scrollSize = this.containerSize;\r\n if (absolutePoint.x < 0 || absolutePoint.y < 0 || absolutePoint.x > scrollSize.width || absolutePoint.y > scrollSize.height)\r\n return null;\r\n if (modelPoint.x < 0 || modelPoint.y < 0)\r\n return null;\r\n if (modelPoint.x > this.modelSize.width || modelPoint.y > this.modelSize.height)\r\n return null;\r\n }\r\n return modelPoint.clone().applyConverter(unit_converter_1.UnitConverter.pixelsToTwips);\r\n };\r\n CanvasViewManager.prototype.getAbsolutePoint = function (modelPoint, excludeScroll, checkScrollArea) {\r\n var shift = this.getVisibileAreaAbsShift(excludeScroll);\r\n var absPoint = modelPoint\r\n .clone().multiply(this.actualZoom, this.actualZoom)\r\n .clone().applyConverter(unit_converter_1.UnitConverter.twipsToPixelsF)\r\n .clone().offset(shift.x, shift.y);\r\n if (checkScrollArea) {\r\n if (absPoint.x < 0 || absPoint.y < 0)\r\n return null;\r\n var scrollSize = this.containerSize;\r\n if (absPoint.x > scrollSize.width || absPoint.y > scrollSize.height)\r\n return null;\r\n }\r\n return absPoint;\r\n };\r\n return CanvasViewManager;\r\n}(CanvasManagerBase_1.CanvasManagerBase));\r\nexports.CanvasViewManager = CanvasViewManager;\r\n\n\n/***/ }),\n/* 343 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ShadowFilterPrimitive = void 0;\r\nvar FilterPrimitive_1 = __webpack_require__(110);\r\nvar RenderHelper_1 = __webpack_require__(15);\r\nvar ShadowFilterPrimitive = /** @class */ (function (_super) {\r\n __extends(ShadowFilterPrimitive, _super);\r\n function ShadowFilterPrimitive() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ShadowFilterPrimitive.prototype.createChildElements = function (parent) {\r\n var feGaussianBlur = document.createElementNS(RenderHelper_1.svgNS, \"feGaussianBlur\");\r\n feGaussianBlur.setAttribute(\"in\", \"SourceGraphic\");\r\n feGaussianBlur.setAttribute(\"stdDeviation\", \"4.6\");\r\n parent.appendChild(feGaussianBlur);\r\n var feOffset = document.createElementNS(RenderHelper_1.svgNS, \"feOffset\");\r\n feOffset.setAttribute(\"dx\", \"0\");\r\n feOffset.setAttribute(\"dy\", \"0\");\r\n parent.appendChild(feOffset);\r\n var feMerge = document.createElementNS(RenderHelper_1.svgNS, \"feMerge\");\r\n parent.appendChild(feMerge);\r\n var feMergeNode1 = document.createElementNS(RenderHelper_1.svgNS, \"feMergeNode\");\r\n feMerge.appendChild(feMergeNode1);\r\n var feMergeNode2 = document.createElementNS(RenderHelper_1.svgNS, \"feMergeNode\");\r\n feMergeNode2.setAttribute(\"in\", \"SourceGraphic\");\r\n feMerge.appendChild(feMergeNode2);\r\n };\r\n return ShadowFilterPrimitive;\r\n}(FilterPrimitive_1.FilterPrimitive));\r\nexports.ShadowFilterPrimitive = ShadowFilterPrimitive;\r\n\n\n/***/ }),\n/* 344 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.AutoScrollController = void 0;\r\nvar RenderHelper_1 = __webpack_require__(15);\r\nvar dom_1 = __webpack_require__(23);\r\nvar size_1 = __webpack_require__(2);\r\nvar Utils_1 = __webpack_require__(17);\r\nvar SCROLL_EDGE = 40;\r\nvar SCROLL_RATIO = 5;\r\nvar SCROLL_MAXOFFSET = 5;\r\nvar SCROLL_DELAY = 50;\r\nvar AutoScrollController = /** @class */ (function () {\r\n function AutoScrollController(scroll, svgElement, view, dom) {\r\n this.scroll = scroll;\r\n this.svgElement = svgElement;\r\n this.view = view;\r\n this.dom = dom;\r\n this.leftButtonPressed = false;\r\n this.scrollDragging = false;\r\n this.scrollTimer = -1;\r\n this.scrollBarWidth = dom_1.DomUtils.getVerticalScrollBarWidth();\r\n }\r\n AutoScrollController.prototype.onMouseMove = function (evt, raiseMouseMoveFunc) {\r\n +this.clearScrollTimer();\r\n this.leftButtonPressed = Utils_1.isLeftButtonPressed(evt);\r\n if (this.leftButtonPressed && !this.scrollDragging)\r\n this.changeScrollPosition(evt, raiseMouseMoveFunc, false);\r\n };\r\n AutoScrollController.prototype.onMouseDown = function (evt) {\r\n this.leftButtonPressed = Utils_1.isLeftButtonPressed(evt);\r\n };\r\n AutoScrollController.prototype.onMouseUp = function (evt) {\r\n this.clearScrollTimer();\r\n this.leftButtonPressed = false;\r\n };\r\n AutoScrollController.prototype.onMouseEnter = function (evt) {\r\n var _this = this;\r\n if (Utils_1.isLeftButtonPressed(evt))\r\n setTimeout(function () {\r\n _this.leftButtonPressed = true;\r\n }, 500);\r\n };\r\n AutoScrollController.prototype.onDragScrollStart = function () {\r\n this.scrollDragging = true;\r\n };\r\n AutoScrollController.prototype.onDragScrollEnd = function () {\r\n this.scrollDragging = false;\r\n };\r\n AutoScrollController.prototype.changeScrollPosition = function (evt, raiseMouseMoveFunc, raiseMouseMove) {\r\n var _this = this;\r\n var changed = false;\r\n if (!this.view.isAutoScrollLocked()) {\r\n var scrollContainer = this.scroll.getScrollContainer();\r\n var x_1 = evt.pageX - dom_1.DomUtils.getAbsolutePositionX(scrollContainer);\r\n var y_1 = evt.pageY - dom_1.DomUtils.getAbsolutePositionY(scrollContainer);\r\n var size = this.scroll.getSize();\r\n var scrollSize = new size_1.Size(parseFloat(this.svgElement.style.width), parseFloat(this.svgElement.style.height));\r\n var width_1 = size.width;\r\n if (size.width < scrollSize.width)\r\n width_1 -= this.scrollBarWidth;\r\n var height_1 = size.height;\r\n if (size.height < scrollSize.height)\r\n height_1 -= this.scrollBarWidth;\r\n if (x_1 <= SCROLL_EDGE) {\r\n this.dom.changeByFunc(null, function () {\r\n if (!_this.view.isAutoScrollLocked())\r\n _this.scroll.offsetScroll(-_this.getScrollingOffset(x_1), 0);\r\n });\r\n changed = true;\r\n }\r\n else if (width_1 - SCROLL_EDGE <= x_1) {\r\n this.dom.changeByFunc(null, function () {\r\n if (!_this.view.isAutoScrollLocked())\r\n _this.scroll.offsetScroll(_this.getScrollingOffset(width_1 - x_1), 0);\r\n });\r\n changed = true;\r\n }\r\n if (y_1 <= SCROLL_EDGE) {\r\n this.dom.changeByFunc(null, function () {\r\n if (!_this.view.isAutoScrollLocked())\r\n _this.scroll.offsetScroll(0, -_this.getScrollingOffset(y_1));\r\n });\r\n changed = true;\r\n }\r\n else if (height_1 - SCROLL_EDGE <= y_1) {\r\n this.dom.changeByFunc(null, function () {\r\n if (!_this.view.isAutoScrollLocked())\r\n _this.scroll.offsetScroll(0, _this.getScrollingOffset(height_1 - y_1));\r\n });\r\n changed = true;\r\n }\r\n }\r\n if (changed || this.view.isAutoScrollLocked())\r\n this.scrollTimer = window.setTimeout(function () { return _this.changeScrollPosition(evt, raiseMouseMoveFunc, changed); }, SCROLL_DELAY);\r\n if (raiseMouseMove)\r\n raiseMouseMoveFunc();\r\n };\r\n AutoScrollController.prototype.clearScrollTimer = function () {\r\n if (this.scrollTimer > -1) {\r\n window.clearTimeout(this.scrollTimer);\r\n this.scrollTimer = -1;\r\n }\r\n };\r\n AutoScrollController.prototype.getScrollingOffset = function (edgeOffset) {\r\n var offset = Math.pow((SCROLL_EDGE - edgeOffset) / SCROLL_RATIO, 2);\r\n return Math.round(Math.min(offset, SCROLL_MAXOFFSET));\r\n };\r\n AutoScrollController.createMainElement = function (parent) {\r\n var element = document.createElement(\"div\");\r\n element.setAttribute(\"class\", \"dxdi-control\");\r\n parent.appendChild(element);\r\n return element;\r\n };\r\n AutoScrollController.createSvgElement = function (parent, forExport) {\r\n if (forExport === void 0) { forExport = false; }\r\n var svgElement = document.createElementNS(RenderHelper_1.svgNS, \"svg\");\r\n svgElement.className.baseVal = \"dxdi-canvas\" + (forExport ? \" export\" : \"\");\r\n parent.appendChild(svgElement);\r\n return svgElement;\r\n };\r\n return AutoScrollController;\r\n}());\r\nexports.AutoScrollController = AutoScrollController;\r\n\n\n/***/ }),\n/* 345 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DocumentDataSource = exports.UpdateNodeKeyRelatedObjectsStackAction = exports.UpdateNodeKeyRelatedObjectsStackItem = void 0;\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar Shape_1 = __webpack_require__(13);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar DataSource_1 = __webpack_require__(346);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar Data_1 = __webpack_require__(45);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar list_1 = __webpack_require__(82);\r\nvar string_1 = __webpack_require__(50);\r\nvar math_1 = __webpack_require__(32);\r\nvar UpdateNodeKeyRelatedObjectsStackItem = /** @class */ (function () {\r\n function UpdateNodeKeyRelatedObjectsStackItem(shape, nodeObj) {\r\n this.shape = shape;\r\n this.nodeObj = nodeObj;\r\n }\r\n return UpdateNodeKeyRelatedObjectsStackItem;\r\n}());\r\nexports.UpdateNodeKeyRelatedObjectsStackItem = UpdateNodeKeyRelatedObjectsStackItem;\r\nvar UpdateNodeKeyRelatedObjectsStackAction = /** @class */ (function () {\r\n function UpdateNodeKeyRelatedObjectsStackAction(kind, nodeObj) {\r\n this.kind = kind;\r\n this.nodeObj = nodeObj;\r\n }\r\n return UpdateNodeKeyRelatedObjectsStackAction;\r\n}());\r\nexports.UpdateNodeKeyRelatedObjectsStackAction = UpdateNodeKeyRelatedObjectsStackAction;\r\nvar DocumentDataSource = /** @class */ (function (_super) {\r\n __extends(DocumentDataSource, _super);\r\n function DocumentDataSource(changesListener, nodeDataSource, edgeDataSource, parameters, nodeDataImporter, edgeDataImporter) {\r\n var _this = _super.call(this, \"Document\", nodeDataSource, edgeDataSource, parameters, nodeDataImporter, edgeDataImporter) || this;\r\n _this.changesListener = changesListener;\r\n _this.nodeInsertingLockCount = 0;\r\n _this.updateNodeKeyRelatedObjectsCount = 0;\r\n _this.updateNodeKeyRelatedObjectsStack = [];\r\n _this.updateNodeKeyRelatedObjectsStackActions = [];\r\n return _this;\r\n }\r\n DocumentDataSource.prototype.updateItemsByModel = function (model) {\r\n var _this = this;\r\n this.beginChangesNotification();\r\n this.deleteNodes(model);\r\n this.deleteEdges(model);\r\n model.items.forEach(function (item) {\r\n if (item instanceof Shape_1.Shape)\r\n _this.updateNode(model, item);\r\n if (item instanceof Connector_1.Connector)\r\n _this.updateEdge(model, item);\r\n });\r\n this.endChangesNotification(false);\r\n };\r\n DocumentDataSource.prototype.isItemObjectModified = function (item, itemObj, importer) {\r\n var modified = (importer.setLocked && itemObj.locked !== item.locked) ||\r\n (importer.setZIndex && itemObj.zIndex !== item.zIndex) ||\r\n (importer.setCustomData && !Utils_1.ObjectUtils.compareObjects(itemObj.customData, item.customData));\r\n if (!modified && importer.setStyle) {\r\n var defaultStyle_1 = item.style.getDefaultInstance();\r\n item.style.forEach(function (key) {\r\n if (item.style[key] !== defaultStyle_1[key] && item.style[key] !== (itemObj.style && itemObj.style[key]))\r\n modified = true;\r\n });\r\n }\r\n if (!modified && importer.setStyleText) {\r\n var defaultTextStyle_1 = item.styleText.getDefaultInstance();\r\n item.styleText.forEach(function (key) {\r\n if (item.styleText[key] !== defaultTextStyle_1[key] && item.styleText[key] !== (itemObj.styleText && itemObj.styleText[key]))\r\n modified = true;\r\n });\r\n }\r\n return modified;\r\n };\r\n DocumentDataSource.prototype.setDataObjectKeyRelatedProperty = function (method, dataObj, key, allowAutoGeneratedProperty) {\r\n if (allowAutoGeneratedProperty || this.autoGeneratedDataKeys[key] === undefined)\r\n method(dataObj, key);\r\n };\r\n DocumentDataSource.prototype.updateItemObjectProperties = function (itemObj, item, importer) {\r\n if (importer.setCustomData) {\r\n itemObj.customData = Utils_1.ObjectUtils.cloneObject(item.customData);\r\n if (itemObj.dataObj && itemObj.customData !== undefined)\r\n importer.setCustomData(itemObj.dataObj, item.customData);\r\n }\r\n if (importer.setLocked) {\r\n itemObj.locked = item.locked;\r\n if (itemObj.dataObj && itemObj.locked !== undefined)\r\n importer.setLocked(itemObj.dataObj, item.locked);\r\n }\r\n if (importer.setStyle) {\r\n var styleObj = item.style.toObject();\r\n itemObj.style = styleObj;\r\n if (itemObj.dataObj && itemObj.style !== undefined)\r\n importer.setStyle(itemObj.dataObj, Data_1.Data.objectToCssText(styleObj));\r\n }\r\n if (importer.setStyleText) {\r\n var styleTextObj = item.styleText.toObject();\r\n itemObj.styleText = styleTextObj;\r\n if (itemObj.dataObj && itemObj.styleText !== undefined)\r\n importer.setStyleText(itemObj.dataObj, Data_1.Data.objectToCssText(styleTextObj));\r\n }\r\n if (importer.setZIndex) {\r\n itemObj.zIndex = item.zIndex;\r\n if (itemObj.dataObj && itemObj.zIndex !== undefined)\r\n importer.setZIndex(itemObj.dataObj, item.zIndex);\r\n }\r\n };\r\n DocumentDataSource.prototype.deleteItems = function (dataSourceItems, findItem, getParentArray, callback) {\r\n var items = dataSourceItems.slice();\r\n items.forEach(function (item) {\r\n if (item.key !== undefined && item.key !== null && !findItem(item.key)) {\r\n var parentArray = getParentArray(item);\r\n var index = parentArray.indexOf(item.dataObj);\r\n parentArray.splice(index, 1);\r\n callback(item, index > -1);\r\n }\r\n });\r\n };\r\n // Nodes\r\n DocumentDataSource.prototype.updateNode = function (model, shape) {\r\n var _this = this;\r\n var nodeObj = this.findNode(shape.dataKey);\r\n if (!nodeObj) {\r\n var dataObj = {};\r\n if (shape.dataKey !== undefined && shape.dataKey !== null)\r\n this.nodeDataImporter.setKey(dataObj, shape.dataKey);\r\n nodeObj = this.addNodeInternal(dataObj, shape.description.key, shape.text);\r\n this.nodeDataSource.push(nodeObj.dataObj);\r\n this.setDataObjectKeyRelatedProperty(this.nodeDataImporter.setKey, dataObj, nodeObj.key, this.addInternalKeyOnInsert);\r\n this.updateNodeObjectProperties(shape, nodeObj, model.units);\r\n this.updateNodeObjectConnectedProperties(shape, nodeObj);\r\n this.updateNodeObjectKey(shape, nodeObj, nodeObj.dataObj);\r\n this.beginChangesNotification();\r\n this.beginNodeInserting();\r\n this.changesListener.notifyNodeInserted.call(this.changesListener, nodeObj.dataObj, function (data) {\r\n _this.updateNodeObjectKey(shape, nodeObj, data);\r\n _this.endNodeInserting();\r\n _this.endChangesNotification(false);\r\n }, function (error) {\r\n _this.endNodeInserting();\r\n _this.endChangesNotification(false);\r\n });\r\n }\r\n else if (this.isNodeObjectModified(shape, nodeObj, model.units)) {\r\n this.updateNodeObjectProperties(shape, nodeObj, model.units);\r\n this.updateNodeObjectConnectedProperties(shape, nodeObj);\r\n this.beginChangesNotification();\r\n this.changesListener.notifyNodeUpdated.call(this.changesListener, this.nodeDataImporter.getKey(nodeObj.dataObj || nodeObj.key), nodeObj.dataObj, function (key, data) {\r\n _this.endChangesNotification(false);\r\n }, function (error) {\r\n _this.endChangesNotification(false);\r\n });\r\n }\r\n else\r\n this.updateNodeObjectConnectedProperties(shape, nodeObj, this.changesListener);\r\n };\r\n DocumentDataSource.prototype.areImageUrlsEqual = function (url1, url2) {\r\n return (url1 === url2) ||\r\n (string_1.StringUtils.isNullOrEmpty(url1) && string_1.StringUtils.isNullOrEmpty(url2));\r\n };\r\n DocumentDataSource.prototype.isNodeObjectModified = function (shape, nodeObj, units) {\r\n return this.isItemObjectModified(shape, nodeObj, this.nodeDataImporter) ||\r\n (nodeObj.type !== shape.description.key && !(nodeObj.type === undefined && shape.description.key === ShapeTypes_1.ShapeTypes.Rectangle)) ||\r\n !this.compareStrings(nodeObj.text, shape.text) ||\r\n (this.nodeDataImporter.setImage && !this.areImageUrlsEqual(nodeObj.image, shape.image.actualUrl)) ||\r\n (this.nodeDataImporter.setLeft && !math_1.MathUtils.numberCloseTo(nodeObj.left, ModelUtils_1.ModelUtils.getlUnitValue(units, shape.position.x))) ||\r\n (this.nodeDataImporter.setTop && !math_1.MathUtils.numberCloseTo(nodeObj.top, ModelUtils_1.ModelUtils.getlUnitValue(units, shape.position.y))) ||\r\n (this.nodeDataImporter.setWidth && !math_1.MathUtils.numberCloseTo(nodeObj.width, ModelUtils_1.ModelUtils.getlUnitValue(units, shape.size.width))) ||\r\n (this.nodeDataImporter.setHeight && !math_1.MathUtils.numberCloseTo(nodeObj.height, ModelUtils_1.ModelUtils.getlUnitValue(units, shape.size.height)));\r\n };\r\n DocumentDataSource.prototype.updateNodeObjectProperties = function (shape, nodeObj, units) {\r\n this.updateItemObjectProperties(nodeObj, shape, this.nodeDataImporter);\r\n if (this.nodeDataImporter.setType) {\r\n nodeObj.type = shape.description.key;\r\n this.nodeDataImporter.setType(nodeObj.dataObj, shape.description.key);\r\n }\r\n if (this.nodeDataImporter.setText) {\r\n nodeObj.text = shape.text;\r\n this.nodeDataImporter.setText(nodeObj.dataObj, shape.text);\r\n }\r\n if (this.nodeDataImporter.setImage) {\r\n nodeObj.image = shape.image.actualUrl;\r\n this.nodeDataImporter.setImage(nodeObj.dataObj, shape.image.actualUrl === undefined ? null : shape.image.actualUrl);\r\n }\r\n if (this.nodeDataImporter.setLeft) {\r\n var left = ModelUtils_1.ModelUtils.getlUnitValue(units, shape.position.x);\r\n nodeObj.left = left;\r\n this.nodeDataImporter.setLeft(nodeObj.dataObj, left);\r\n }\r\n if (this.nodeDataImporter.setTop) {\r\n var top_1 = ModelUtils_1.ModelUtils.getlUnitValue(units, shape.position.y);\r\n nodeObj.top = top_1;\r\n this.nodeDataImporter.setTop(nodeObj.dataObj, top_1);\r\n }\r\n if (this.nodeDataImporter.setWidth) {\r\n var width = ModelUtils_1.ModelUtils.getlUnitValue(units, shape.size.width);\r\n nodeObj.width = width;\r\n this.nodeDataImporter.setWidth(nodeObj.dataObj, width);\r\n }\r\n if (this.nodeDataImporter.setHeight) {\r\n var height = ModelUtils_1.ModelUtils.getlUnitValue(units, shape.size.height);\r\n nodeObj.height = height;\r\n this.nodeDataImporter.setHeight(nodeObj.dataObj, height);\r\n }\r\n };\r\n DocumentDataSource.prototype.updateNodeObjectConnectedProperties = function (shape, nodeObj, changesListener) {\r\n if (this.useNodeParentId && this.nodeDataImporter.setParentKey !== undefined) {\r\n var parentKey = this.getParentItemKey(shape);\r\n var parentItem = this.findNode(parentKey);\r\n this.updateNodeObjectParentKey(nodeObj, parentItem, changesListener);\r\n }\r\n if (this.useNodeContainerId && this.nodeDataImporter.setContainerKey !== undefined) {\r\n var containerKey = this.getContainerShapeKey(shape);\r\n var containerItem = this.findNode(containerKey);\r\n this.updateNodeObjectContainerKey(nodeObj, containerItem, changesListener);\r\n }\r\n if (this.useNodeItems && this.nodeDataImporter.setItems !== undefined) {\r\n var parentKey = this.getParentItemKey(shape);\r\n var parentItem = this.findNode(parentKey);\r\n this.updateNodeObjectItems(nodeObj, parentItem, changesListener);\r\n }\r\n if (this.useNodeChildren && this.nodeDataImporter.setChildren !== undefined) {\r\n var containerKey = this.getContainerShapeKey(shape);\r\n var containerItem = this.findNode(containerKey);\r\n this.updateNodeObjectChildren(nodeObj, containerItem, changesListener);\r\n }\r\n };\r\n DocumentDataSource.prototype.IsNodeParentIdMode = function () {\r\n return (this.useNodeParentId && this.nodeDataImporter.setParentKey !== undefined);\r\n };\r\n DocumentDataSource.prototype.IsNodeItemsMode = function () {\r\n return (this.useNodeItems && this.nodeDataImporter.setItems !== undefined);\r\n };\r\n DocumentDataSource.prototype.updateNodeObjectParentKey = function (nodeObj, parentNodeObj, changesListener) {\r\n var parentKey = this.nodeDataImporter.getParentKey(nodeObj.dataObj);\r\n var newParentKey = parentNodeObj ? this.nodeDataImporter.getKey(parentNodeObj.dataObj) : undefined;\r\n if (parentKey !== newParentKey && !(this.isRootParentKey(parentKey) && this.isRootParentKey(newParentKey))) {\r\n this.setDataObjectKeyRelatedProperty(this.nodeDataImporter.setParentKey, nodeObj.dataObj, newParentKey, false);\r\n if (changesListener)\r\n if (this.isInUpdateNodeKeyRelatedObjects())\r\n this.addToUpdateNodeKeyRelatedObjectsStackAction(\"shape\", nodeObj);\r\n else\r\n this.updateNodeObjectContainerOrParentKeyInternal(nodeObj, changesListener);\r\n }\r\n };\r\n DocumentDataSource.prototype.updateNodeObjectParentKeyInternal = function (nodeObj, changesListener) {\r\n var _this = this;\r\n this.beginChangesNotification();\r\n changesListener.notifyNodeUpdated.call(changesListener, this.nodeDataImporter.getKey(nodeObj.dataObj) || nodeObj.key, nodeObj.dataObj, function (key, data) {\r\n _this.endChangesNotification(false);\r\n }, function (error) {\r\n _this.endChangesNotification(false);\r\n });\r\n };\r\n DocumentDataSource.prototype.updateNodeObjectContainerKey = function (nodeObj, containerNodeObj, changesListener) {\r\n var containerKey = this.nodeDataImporter.getContainerKey(nodeObj.dataObj);\r\n var newContainerKey = containerNodeObj ? this.nodeDataImporter.getKey(containerNodeObj.dataObj) : undefined;\r\n if (containerKey !== newContainerKey && !(this.isRootParentKey(containerKey) && this.isRootParentKey(newContainerKey))) {\r\n this.setDataObjectKeyRelatedProperty(this.nodeDataImporter.setContainerKey, nodeObj.dataObj, newContainerKey, false);\r\n if (changesListener)\r\n if (this.isInUpdateNodeKeyRelatedObjects())\r\n this.addToUpdateNodeKeyRelatedObjectsStackAction(\"shape\", nodeObj);\r\n else\r\n this.updateNodeObjectContainerOrParentKeyInternal(nodeObj, changesListener);\r\n }\r\n };\r\n DocumentDataSource.prototype.updateNodeObjectContainerOrParentKeyInternal = function (nodeObj, changesListener) {\r\n var _this = this;\r\n this.beginChangesNotification();\r\n changesListener.notifyNodeUpdated.call(changesListener, this.nodeDataImporter.getKey(nodeObj.dataObj) || nodeObj.key, nodeObj.dataObj, function (key, data) {\r\n _this.endChangesNotification(false);\r\n }, function (error) {\r\n _this.endChangesNotification(false);\r\n });\r\n };\r\n DocumentDataSource.prototype.isRootParentKey = function (key) {\r\n return key === undefined || key === null || !this.findNode(key);\r\n };\r\n DocumentDataSource.prototype.updateNodeObjectItems = function (nodeObj, parentNodeObj, changesListener) {\r\n var _this = this;\r\n if (parentNodeObj && nodeObj.parentDataObj !== parentNodeObj.dataObj ||\r\n !parentNodeObj && nodeObj.parentDataObj)\r\n if (!parentNodeObj || !this.checkNodeCyrcleItems(nodeObj.dataObj, parentNodeObj.dataObj)) {\r\n var oldItemsArray = nodeObj.parentDataObj ? this.nodeDataImporter.getItems(nodeObj.parentDataObj) : this.nodeDataSource;\r\n var index = oldItemsArray.indexOf(nodeObj.dataObj);\r\n oldItemsArray.splice(index, 1);\r\n var itemsArray = parentNodeObj ? this.nodeDataImporter.getItems(parentNodeObj.dataObj) : this.nodeDataSource;\r\n if (!itemsArray)\r\n this.nodeDataImporter.setItems(parentNodeObj.dataObj, [nodeObj.dataObj]);\r\n else\r\n itemsArray.push(nodeObj.dataObj);\r\n nodeObj.parentDataObj = parentNodeObj && parentNodeObj.dataObj;\r\n if (changesListener) {\r\n this.beginChangesNotification();\r\n changesListener.notifyNodeUpdated.call(changesListener, this.nodeDataImporter.getKey(nodeObj.dataObj) || nodeObj.key, nodeObj.dataObj, function (key, data) {\r\n _this.endChangesNotification(false);\r\n }, function (error) {\r\n _this.endChangesNotification(false);\r\n });\r\n }\r\n }\r\n };\r\n DocumentDataSource.prototype.updateNodeObjectChildren = function (nodeObj, containerNodeObj, changesListener) {\r\n var _this = this;\r\n if (containerNodeObj && nodeObj.containerDataObj !== containerNodeObj.dataObj ||\r\n !containerNodeObj && nodeObj.containerDataObj) {\r\n var oldChildrenArray = nodeObj.containerDataObj ? this.nodeDataImporter.getChildren(nodeObj.containerDataObj) : this.nodeDataSource;\r\n var index = oldChildrenArray.indexOf(nodeObj.dataObj);\r\n oldChildrenArray.splice(index, 1);\r\n var childrenArray = containerNodeObj ? this.nodeDataImporter.getChildren(containerNodeObj.dataObj) : this.nodeDataSource;\r\n if (!childrenArray)\r\n this.nodeDataImporter.setChildren(containerNodeObj.dataObj, [nodeObj.dataObj]);\r\n else\r\n childrenArray.push(nodeObj.dataObj);\r\n nodeObj.containerDataObj = containerNodeObj && containerNodeObj.dataObj;\r\n if (changesListener) {\r\n this.beginChangesNotification();\r\n changesListener.notifyNodeUpdated.call(changesListener, this.nodeDataImporter.getKey(nodeObj.dataObj) || nodeObj.key, nodeObj.dataObj, function (key, data) {\r\n _this.endChangesNotification(false);\r\n }, function (error) {\r\n _this.endChangesNotification(false);\r\n });\r\n }\r\n }\r\n };\r\n DocumentDataSource.prototype.checkNodeCyrcleItems = function (nodeDataObj, parentDataObjCandidate) {\r\n var _this = this;\r\n var result = false;\r\n var items = this.nodeDataImporter.getItems(nodeDataObj);\r\n if (items)\r\n items.forEach(function (childDataObj) {\r\n result = result || childDataObj === parentDataObjCandidate ||\r\n _this.checkNodeCyrcleItems(childDataObj, parentDataObjCandidate);\r\n });\r\n return result;\r\n };\r\n DocumentDataSource.prototype.updateNodeObjectKey = function (shape, nodeObj, dataObj) {\r\n var key = this.nodeDataImporter.getKey(dataObj);\r\n var dataKeyChanged = false;\r\n if (key !== undefined && key !== null && key !== nodeObj.key) {\r\n delete this.autoGeneratedDataKeys[nodeObj.key];\r\n nodeObj.key = key;\r\n dataKeyChanged = true;\r\n }\r\n shape.dataKey = nodeObj.key;\r\n if (nodeObj.dataObj !== dataObj) {\r\n var parentArray = this.getNodeArray(nodeObj);\r\n var index = parentArray.indexOf(nodeObj.dataObj);\r\n parentArray.splice(index, 1, dataObj);\r\n nodeObj.dataObj = dataObj;\r\n }\r\n if (dataKeyChanged)\r\n this.updateNodeKeyRelatedObjects(shape, nodeObj);\r\n };\r\n DocumentDataSource.prototype.updateNodeKeyRelatedObjects = function (shape, nodeObj) {\r\n var _this = this;\r\n if (this.isInNodeInserting()) {\r\n this.addToUpdateNodeKeyRelatedObjectsStack(shape, nodeObj);\r\n return;\r\n }\r\n if (this.useNodeParentId && this.nodeDataImporter.setParentKey !== undefined) {\r\n var childItems = this.getChildItems(shape);\r\n childItems.forEach(function (item) {\r\n var childNodeObj = _this.findNode(item.dataKey);\r\n if (childNodeObj)\r\n _this.updateNodeObjectParentKey(childNodeObj, nodeObj, _this.changesListener);\r\n });\r\n }\r\n if (this.useNodeContainerId && this.nodeDataImporter.setContainerKey !== undefined)\r\n shape.children.forEach(function (item) {\r\n var childNodeObj = item instanceof Shape_1.Shape ? _this.findNode(item.dataKey) : undefined;\r\n if (childNodeObj)\r\n _this.updateNodeObjectContainerKey(childNodeObj, nodeObj, _this.changesListener);\r\n });\r\n if (this.useEdgesArray())\r\n shape.attachedConnectors.forEach(function (connector) {\r\n var edgeObj = _this.findEdge(connector.dataKey);\r\n if (edgeObj) {\r\n if (shape === connector.beginItem)\r\n _this.updateEdgeObjectFromProperty(nodeObj, edgeObj, _this.changesListener);\r\n if (shape === connector.endItem)\r\n _this.updateEdgeObjectToProperty(nodeObj, edgeObj, _this.changesListener);\r\n }\r\n });\r\n };\r\n DocumentDataSource.prototype.deleteNodes = function (model) {\r\n var _this = this;\r\n this.deleteItems(this.nodes, function (key) { return model.findShapeByDataKey(key); }, function (item) { return _this.getNodeArray(item); }, function (item, dataModified) {\r\n var key = (item.dataObj && _this.nodeDataImporter.getKey(item.dataObj)) || item.key;\r\n var nodeObj = _this.findNode(key);\r\n if (nodeObj)\r\n _this.nodes.splice(_this.nodes.indexOf(nodeObj), 1);\r\n if (dataModified) {\r\n _this.beginChangesNotification();\r\n _this.changesListener.notifyNodeRemoved.call(_this.changesListener, key, item.dataObj, function (key, data) {\r\n _this.endChangesNotification(false);\r\n }, function (error) {\r\n _this.endChangesNotification(false);\r\n });\r\n }\r\n });\r\n };\r\n DocumentDataSource.prototype.getParentItem = function (shape) {\r\n for (var i = 0; i < shape.attachedConnectors.length; i++)\r\n if (shape.attachedConnectors[i].endItem === shape)\r\n return shape.attachedConnectors[i].beginItem;\r\n };\r\n DocumentDataSource.prototype.getParentItemKey = function (shape) {\r\n var parent = this.getParentItem(shape);\r\n return parent && parent.dataKey;\r\n };\r\n DocumentDataSource.prototype.getNodeArray = function (item) {\r\n var items;\r\n if (this.useNodeItems && item.parentDataObj)\r\n items = this.nodeDataImporter.getItems(item.parentDataObj);\r\n else if (item.containerDataObj)\r\n items = this.nodeDataImporter.getChildren(item.containerDataObj);\r\n return items || this.nodeDataSource;\r\n };\r\n DocumentDataSource.prototype.getContainerShapeKey = function (shape) {\r\n return shape.container && shape.container.dataKey;\r\n };\r\n DocumentDataSource.prototype.getChildItems = function (shape) {\r\n var items = [];\r\n for (var i = 0; i < shape.attachedConnectors.length; i++)\r\n if (shape.attachedConnectors[i].beginItem === shape)\r\n if (shape.attachedConnectors[i].endItem)\r\n items.push(shape.attachedConnectors[i].endItem);\r\n return items;\r\n };\r\n // Edges\r\n DocumentDataSource.prototype.updateEdge = function (model, connector) {\r\n var _this = this;\r\n var beginDataKey = connector.beginItem ? connector.beginItem.dataKey : undefined;\r\n var endDataKey = connector.endItem ? connector.endItem.dataKey : undefined;\r\n var edgeObj = this.findEdge(connector.dataKey);\r\n if (!edgeObj) {\r\n var dataObj = this.useEdgesArray() && this.canUpdateEdgeDataSource ? {} : undefined;\r\n if (dataObj && connector.dataKey !== undefined && connector.dataKey !== null)\r\n this.edgeDataImporter.setKey(dataObj, connector.dataKey);\r\n edgeObj = this.addEdgeInternal(dataObj, beginDataKey, endDataKey);\r\n if (dataObj) {\r\n this.setDataObjectKeyRelatedProperty(this.edgeDataImporter.setKey, dataObj, edgeObj.key, this.addInternalKeyOnInsert);\r\n this.edgeDataSource.push(edgeObj.dataObj);\r\n }\r\n this.updateEdgeObjectProperties(connector, edgeObj, model.units);\r\n this.updateEdgeObjectKey(connector, edgeObj, edgeObj.dataObj);\r\n if (dataObj) {\r\n this.beginChangesNotification();\r\n this.beginNodeInserting();\r\n this.changesListener.notifyEdgeInserted.call(this.changesListener, edgeObj.dataObj, function (data) {\r\n _this.updateEdgeObjectKey(connector, edgeObj, data);\r\n _this.endNodeInserting();\r\n _this.endChangesNotification(false);\r\n }, function (error) {\r\n _this.endNodeInserting();\r\n _this.endChangesNotification(false);\r\n });\r\n }\r\n }\r\n else if (this.isEdgeObjectModified(connector, edgeObj, model.units)) {\r\n this.updateEdgeObjectProperties(connector, edgeObj, model.units);\r\n if (edgeObj.dataObj) {\r\n this.beginChangesNotification();\r\n this.changesListener.notifyEdgeUpdated.call(this.changesListener, this.edgeDataImporter.getKey(edgeObj.dataObj) || edgeObj.key, edgeObj.dataObj, function (key, data) {\r\n _this.endChangesNotification(false);\r\n }, function (error) {\r\n _this.endChangesNotification(false);\r\n });\r\n }\r\n }\r\n };\r\n DocumentDataSource.prototype.isEdgeObjectModified = function (connector, edgeObj, units) {\r\n return this.isItemObjectModified(connector, edgeObj, this.edgeDataImporter) ||\r\n (edgeObj.from !== null ? edgeObj.from : undefined) !== (connector.beginItem ? connector.beginItem.dataKey : undefined) ||\r\n (edgeObj.to === null ? undefined : edgeObj.to) !== (connector.endItem ? connector.endItem.dataKey : undefined) ||\r\n (this.edgeDataImporter.setFromPointIndex && edgeObj.fromPointIndex !== connector.beginConnectionPointIndex) ||\r\n (this.edgeDataImporter.setToPointIndex && edgeObj.toPointIndex !== connector.endConnectionPointIndex) ||\r\n (this.edgeDataImporter.setPoints && (!edgeObj.points ||\r\n !list_1.ListUtils.equalsByReference(edgeObj.points.map(function (ptObj) { return ptObj.x; }), connector.points.map(function (pt) { return ModelUtils_1.ModelUtils.getlUnitValue(units, pt.x); })) ||\r\n !list_1.ListUtils.equalsByReference(edgeObj.points.map(function (ptObj) { return ptObj.y; }), connector.points.map(function (pt) { return ModelUtils_1.ModelUtils.getlUnitValue(units, pt.y); })))) ||\r\n (this.edgeDataImporter.setText && !this.compareTexts(edgeObj, connector)) ||\r\n (this.edgeDataImporter.setLineOption && edgeObj.lineOption !== connector.properties.lineOption) ||\r\n (this.edgeDataImporter.setStartLineEnding && edgeObj.startLineEnding !== connector.properties.startLineEnding) ||\r\n (this.edgeDataImporter.setEndLineEnding && edgeObj.endLineEnding !== connector.properties.endLineEnding);\r\n };\r\n DocumentDataSource.prototype.updateEdgeObjectFromProperty = function (fromObj, edgeObj, changesListener) {\r\n edgeObj.from = fromObj && fromObj.key;\r\n if (edgeObj.dataObj) {\r\n var fromKey = fromObj && fromObj.dataObj && this.nodeDataImporter.getKey(fromObj.dataObj);\r\n this.setDataObjectKeyRelatedProperty(this.edgeDataImporter.setFrom, edgeObj.dataObj, fromKey, false);\r\n if (changesListener)\r\n if (this.isInUpdateNodeKeyRelatedObjects())\r\n this.addToUpdateNodeKeyRelatedObjectsStackAction(\"edge\", edgeObj);\r\n else\r\n this.updateEdgeObjectFromOrToPropertyInternal(edgeObj, changesListener);\r\n }\r\n };\r\n DocumentDataSource.prototype.updateEdgeObjectFromOrToPropertyInternal = function (edgeObj, changesListener) {\r\n var _this = this;\r\n this.beginChangesNotification();\r\n changesListener.notifyEdgeUpdated.call(changesListener, this.nodeDataImporter.getKey(edgeObj.dataObj) || edgeObj.key, edgeObj.dataObj, function (key, data) {\r\n _this.endChangesNotification(false);\r\n }, function (error) {\r\n _this.endChangesNotification(false);\r\n });\r\n };\r\n DocumentDataSource.prototype.updateEdgeObjectToProperty = function (toObj, edgeObj, changesListener) {\r\n edgeObj.to = toObj && toObj.key;\r\n if (edgeObj.dataObj) {\r\n var toKey = toObj && toObj.dataObj && this.nodeDataImporter.getKey(toObj.dataObj);\r\n this.setDataObjectKeyRelatedProperty(this.edgeDataImporter.setTo, edgeObj.dataObj, toKey, false);\r\n if (changesListener)\r\n if (this.isInUpdateNodeKeyRelatedObjects())\r\n this.addToUpdateNodeKeyRelatedObjectsStackAction(\"edge\", edgeObj);\r\n else\r\n this.updateEdgeObjectFromOrToPropertyInternal(edgeObj, changesListener);\r\n }\r\n };\r\n DocumentDataSource.prototype.updateEdgeObjectProperties = function (connector, edgeObj, units) {\r\n this.updateItemObjectProperties(edgeObj, connector, this.edgeDataImporter);\r\n if (this.edgeDataImporter.setFrom) {\r\n var fromObj = this.findNode(connector.beginItem && connector.beginItem.dataKey);\r\n this.updateEdgeObjectFromProperty(fromObj, edgeObj);\r\n }\r\n if (this.edgeDataImporter.setTo) {\r\n var toObj = this.findNode(connector.endItem && connector.endItem.dataKey);\r\n this.updateEdgeObjectToProperty(toObj, edgeObj);\r\n }\r\n if (this.edgeDataImporter.setFromPointIndex) {\r\n edgeObj.fromPointIndex = connector.beginConnectionPointIndex;\r\n if (edgeObj.dataObj)\r\n this.edgeDataImporter.setFromPointIndex(edgeObj.dataObj, connector.beginConnectionPointIndex);\r\n }\r\n if (this.edgeDataImporter.setToPointIndex) {\r\n edgeObj.toPointIndex = connector.endConnectionPointIndex;\r\n if (edgeObj.dataObj)\r\n this.edgeDataImporter.setToPointIndex(edgeObj.dataObj, connector.endConnectionPointIndex);\r\n }\r\n if (this.edgeDataImporter.setPoints) {\r\n var points = connector.points.map(function (pt) {\r\n return {\r\n x: ModelUtils_1.ModelUtils.getlUnitValue(units, pt.x),\r\n y: ModelUtils_1.ModelUtils.getlUnitValue(units, pt.y)\r\n };\r\n });\r\n edgeObj.points = points;\r\n if (edgeObj.dataObj)\r\n this.edgeDataImporter.setPoints(edgeObj.dataObj, points);\r\n }\r\n if (this.edgeDataImporter.setText) {\r\n var text = void 0;\r\n if (connector.getTextCount() === 1 && connector.getText())\r\n text = connector.getText();\r\n var texts_1 = {};\r\n connector.texts.forEach(function (text) {\r\n texts_1[text.position] = text.value;\r\n });\r\n edgeObj.texts = texts_1;\r\n if (edgeObj.dataObj) {\r\n var textVal = \"\";\r\n if (text)\r\n textVal = text;\r\n else if (texts_1 && Object.keys(texts_1).length)\r\n textVal = texts_1;\r\n this.edgeDataImporter.setText(edgeObj.dataObj, textVal);\r\n }\r\n }\r\n if (this.edgeDataImporter.setLineOption) {\r\n edgeObj.lineOption = connector.properties.lineOption;\r\n if (edgeObj.dataObj)\r\n this.edgeDataImporter.setLineOption(edgeObj.dataObj, connector.properties.lineOption);\r\n }\r\n if (this.edgeDataImporter.setStartLineEnding) {\r\n edgeObj.startLineEnding = connector.properties.startLineEnding;\r\n if (edgeObj.dataObj)\r\n this.edgeDataImporter.setStartLineEnding(edgeObj.dataObj, connector.properties.startLineEnding);\r\n }\r\n if (this.edgeDataImporter.setEndLineEnding) {\r\n edgeObj.endLineEnding = connector.properties.endLineEnding;\r\n if (edgeObj.dataObj)\r\n this.edgeDataImporter.setEndLineEnding(edgeObj.dataObj, connector.properties.endLineEnding);\r\n }\r\n };\r\n DocumentDataSource.prototype.updateEdgeObjectKey = function (connector, edgeObj, dataObj) {\r\n var key = dataObj && this.edgeDataImporter.getKey(dataObj);\r\n if (key !== undefined && key !== null && key !== edgeObj.key) {\r\n delete this.autoGeneratedDataKeys[edgeObj.key];\r\n edgeObj.key = key;\r\n }\r\n connector.dataKey = edgeObj.key;\r\n if (edgeObj.dataObj !== dataObj) {\r\n var parentArray = this.edgeDataSource;\r\n var index = parentArray.indexOf(edgeObj.dataObj);\r\n parentArray.splice(index, 1, dataObj);\r\n edgeObj.dataObj = dataObj;\r\n }\r\n };\r\n DocumentDataSource.prototype.deleteEdges = function (model) {\r\n var _this = this;\r\n this.deleteItems(this.edges, function (key) { return model.findConnectorByDataKey(key); }, function (item) { return _this.edgeDataSource; }, function (item, dataModified) {\r\n var key = (item.dataObj && _this.edgeDataImporter.getKey(item.dataObj)) || item.key;\r\n var edgeObj = _this.findEdge(key);\r\n if (edgeObj)\r\n _this.edges.splice(_this.edges.indexOf(edgeObj), 1);\r\n if (dataModified) {\r\n _this.beginChangesNotification();\r\n _this.changesListener.notifyEdgeRemoved.call(_this.changesListener, key, item.dataObj, function (key, data) {\r\n _this.endChangesNotification(false);\r\n }, function (error) {\r\n _this.endChangesNotification(false);\r\n });\r\n }\r\n });\r\n };\r\n DocumentDataSource.prototype.beginNodeInserting = function () {\r\n this.nodeInsertingLockCount++;\r\n };\r\n DocumentDataSource.prototype.endNodeInserting = function () {\r\n this.nodeInsertingLockCount--;\r\n if (this.nodeInsertingLockCount === 0)\r\n this.raiseNodeInsertingStack();\r\n };\r\n DocumentDataSource.prototype.isInNodeInserting = function () {\r\n return this.nodeInsertingLockCount > 0;\r\n };\r\n DocumentDataSource.prototype.addToUpdateNodeKeyRelatedObjectsStack = function (shape, nodeObj) {\r\n var item = new UpdateNodeKeyRelatedObjectsStackItem(shape, nodeObj);\r\n this.updateNodeKeyRelatedObjectsStack.push(item);\r\n };\r\n DocumentDataSource.prototype.raiseNodeInsertingStack = function () {\r\n this.beginUpdateNodeKeyRelatedObjects();\r\n while (this.updateNodeKeyRelatedObjectsStack.length > 0) {\r\n var item = this.updateNodeKeyRelatedObjectsStack[0];\r\n this.updateNodeKeyRelatedObjects(item.shape, item.nodeObj);\r\n this.updateNodeKeyRelatedObjectsStack.splice(0, 1);\r\n if (item.shape.description.hasTemplate && item.nodeObj)\r\n this.changesListener.reloadInsertedItem(item.nodeObj.key);\r\n }\r\n this.endUpdateNodeKeyRelatedObjects();\r\n };\r\n DocumentDataSource.prototype.beginUpdateNodeKeyRelatedObjects = function () {\r\n this.updateNodeKeyRelatedObjectsCount++;\r\n };\r\n DocumentDataSource.prototype.endUpdateNodeKeyRelatedObjects = function () {\r\n this.updateNodeKeyRelatedObjectsCount--;\r\n if (this.updateNodeKeyRelatedObjectsCount === 0)\r\n this.raiseUpdateNodeKeyRelatedObjectsStack();\r\n };\r\n DocumentDataSource.prototype.isInUpdateNodeKeyRelatedObjects = function () {\r\n return this.updateNodeKeyRelatedObjectsCount > 0;\r\n };\r\n DocumentDataSource.prototype.addToUpdateNodeKeyRelatedObjectsStackAction = function (kind, nodeObj) {\r\n var item = new UpdateNodeKeyRelatedObjectsStackAction(kind, nodeObj);\r\n for (var i = 0; i < this.updateNodeKeyRelatedObjectsStackActions.length; i++)\r\n if ((this.updateNodeKeyRelatedObjectsStackActions[i].kind === kind) && (this.updateNodeKeyRelatedObjectsStackActions[i].nodeObj === nodeObj))\r\n return;\r\n this.updateNodeKeyRelatedObjectsStackActions.push(item);\r\n };\r\n DocumentDataSource.prototype.raiseUpdateNodeKeyRelatedObjectsStack = function () {\r\n while (this.updateNodeKeyRelatedObjectsStackActions.length > 0) {\r\n var item = this.updateNodeKeyRelatedObjectsStackActions[0];\r\n switch (item.kind) {\r\n case \"shape\":\r\n this.updateNodeObjectContainerOrParentKeyInternal(item.nodeObj, this.changesListener);\r\n break;\r\n case \"edge\":\r\n this.updateEdgeObjectFromOrToPropertyInternal(item.nodeObj, this.changesListener);\r\n break;\r\n }\r\n this.updateNodeKeyRelatedObjectsStackActions.splice(0, 1);\r\n }\r\n };\r\n DocumentDataSource.prototype.beginChangesNotification = function () {\r\n this.changesListener.beginChangesNotification();\r\n };\r\n DocumentDataSource.prototype.endChangesNotification = function (preventNotifyChanges) {\r\n this.changesListener.endChangesNotification(preventNotifyChanges);\r\n };\r\n return DocumentDataSource;\r\n}(DataSource_1.DataSource));\r\nexports.DocumentDataSource = DocumentDataSource;\r\n\n\n/***/ }),\n/* 346 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DataSource = void 0;\r\nvar unit_converter_1 = __webpack_require__(11);\r\nvar point_1 = __webpack_require__(1);\r\nvar size_1 = __webpack_require__(2);\r\nvar AddConnectionHistoryItem_1 = __webpack_require__(49);\r\nvar AddConnectorHistoryItem_1 = __webpack_require__(64);\r\nvar AddShapeHistoryItem_1 = __webpack_require__(53);\r\nvar DeleteConnectionHistoryItem_1 = __webpack_require__(65);\r\nvar ResizeShapeHistoryItem_1 = __webpack_require__(117);\r\nvar ChangeConnectorPropertyHistoryItem_1 = __webpack_require__(88);\r\nvar ChangeConnectorTextHistoryItem_1 = __webpack_require__(67);\r\nvar ChangeCustomDataHistoryItem_1 = __webpack_require__(347);\r\nvar ChangeLockedHistoryItem_1 = __webpack_require__(118);\r\nvar ChangeShapeImageHistoryItem_1 = __webpack_require__(147);\r\nvar ChangeShapeTextHistoryItem_1 = __webpack_require__(154);\r\nvar ChangeZindexHistoryItem_1 = __webpack_require__(102);\r\nvar ChangeStyleHistoryItem_1 = __webpack_require__(89);\r\nvar ChangeStyleTextHistoryItem_1 = __webpack_require__(68);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar ShapeTypes_1 = __webpack_require__(0);\r\nvar ITextMeasurer_1 = __webpack_require__(44);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar color_1 = __webpack_require__(22);\r\nvar Data_1 = __webpack_require__(45);\r\nvar Svg_1 = __webpack_require__(112);\r\nvar TextUtils_1 = __webpack_require__(63);\r\nvar DataImporter_1 = __webpack_require__(348);\r\nvar DataSourceItems_1 = __webpack_require__(349);\r\nvar ChangeConnectorPointsHistoryItem_1 = __webpack_require__(86);\r\nvar DataSource = /** @class */ (function () {\r\n function DataSource(key, nodeDataSource, edgeDataSource, parameters, nodeDataImporter, edgeDataImporter) {\r\n this.key = key;\r\n this.nodes = [];\r\n this.edges = [];\r\n this.autoGeneratedDataKeys = {};\r\n this.addInternalKeyOnInsert = false;\r\n this.useNodeParentId = false;\r\n this.useNodeContainerId = false;\r\n this.useNodeChildren = false;\r\n this.useNodeItems = false;\r\n this.canUseAutoSize = false;\r\n this.canUpdateEdgeDataSource = false;\r\n this.containers = null;\r\n if (key === undefined || key === null)\r\n throw new Error(\"DataSource key must be specified\");\r\n this.key = key.toString();\r\n this.loadParameters(parameters || {});\r\n this.nodeDataImporter = this.createNodeDataImporter(nodeDataImporter);\r\n this.edgeDataImporter = this.createEdgeDataImporter(edgeDataImporter);\r\n this.nodeDataSource = nodeDataSource || [];\r\n this.edgeDataSource = edgeDataSource || [];\r\n this.canUpdateEdgeDataSource = !!edgeDataSource;\r\n this.fetchData();\r\n }\r\n DataSource.prototype.loadParameters = function (parameters) {\r\n this.addInternalKeyOnInsert = !!parameters.addInternalKeyOnInsert;\r\n };\r\n DataSource.prototype.isAutoGeneratedKey = function (dataKey) {\r\n return dataKey && !!this.autoGeneratedDataKeys[dataKey];\r\n };\r\n DataSource.prototype.createNodeDataImporter = function (source) {\r\n var result = new DataImporter_1.DataSourceNodeDataImporter();\r\n if (source)\r\n this.assignNodeDataImporterProperties(source, result);\r\n return result;\r\n };\r\n DataSource.prototype.createEdgeDataImporter = function (source) {\r\n var result = new DataImporter_1.DataSourceEdgeDataImporter();\r\n if (source)\r\n this.assignEdgeDataImporterProperties(source, result);\r\n return result;\r\n };\r\n DataSource.prototype.assignItemDataImporterProperties = function (source, importer) {\r\n if (source.getKey)\r\n importer.getKey = source.getKey;\r\n if (source.setKey)\r\n importer.setKey = source.setKey;\r\n if (source.getCustomData)\r\n importer.getCustomData = source.getCustomData;\r\n if (source.setCustomData)\r\n importer.setCustomData = source.setCustomData;\r\n if (source.getLocked)\r\n importer.getLocked = source.getLocked;\r\n if (source.setLocked)\r\n importer.setLocked = source.setLocked;\r\n if (source.getStyle)\r\n importer.getStyle = source.getStyle;\r\n if (source.setStyle)\r\n importer.setStyle = source.setStyle;\r\n if (source.getStyleText)\r\n importer.getStyleText = source.getStyleText;\r\n if (source.setStyleText)\r\n importer.setStyleText = source.setStyleText;\r\n if (source.getZIndex)\r\n importer.getZIndex = source.getZIndex;\r\n if (source.setZIndex)\r\n importer.setZIndex = source.setZIndex;\r\n };\r\n DataSource.prototype.assignNodeDataImporterProperties = function (source, importer) {\r\n this.assignItemDataImporterProperties(source, importer);\r\n if (source.getType)\r\n importer.getType = source.getType;\r\n if (source.setType)\r\n importer.setType = source.setType;\r\n if (source.getImage)\r\n importer.getImage = source.getImage;\r\n if (source.setImage)\r\n importer.setImage = source.setImage;\r\n if (source.getText)\r\n importer.getText = source.getText;\r\n if (source.setText)\r\n importer.setText = source.setText;\r\n if (source.getLeft)\r\n importer.getLeft = source.getLeft;\r\n if (source.setLeft)\r\n importer.setLeft = source.setLeft;\r\n if (source.getTop)\r\n importer.getTop = source.getTop;\r\n if (source.setTop)\r\n importer.setTop = source.setTop;\r\n if (source.getWidth)\r\n importer.getWidth = source.getWidth;\r\n if (source.setWidth)\r\n importer.setWidth = source.setWidth;\r\n if (source.getHeight)\r\n importer.getHeight = source.getHeight;\r\n if (source.setHeight)\r\n importer.setHeight = source.setHeight;\r\n if (source.getChildren)\r\n importer.getChildren = source.getChildren;\r\n if (source.setChildren)\r\n importer.setChildren = source.setChildren;\r\n if (source.getParentKey)\r\n importer.getParentKey = source.getParentKey;\r\n if (source.setParentKey)\r\n importer.setParentKey = source.setParentKey;\r\n if (source.getItems)\r\n importer.getItems = source.getItems;\r\n if (source.setItems)\r\n importer.setItems = source.setItems;\r\n if (source.getContainerKey)\r\n importer.getContainerKey = source.getContainerKey;\r\n if (source.setContainerKey)\r\n importer.setContainerKey = source.setContainerKey;\r\n };\r\n DataSource.prototype.assignEdgeDataImporterProperties = function (source, importer) {\r\n this.assignItemDataImporterProperties(source, importer);\r\n if (source.getFrom)\r\n importer.getFrom = source.getFrom;\r\n if (source.setFrom)\r\n importer.setFrom = source.setFrom;\r\n if (source.getFromPointIndex)\r\n importer.getFromPointIndex = source.getFromPointIndex;\r\n if (source.setFromPointIndex)\r\n importer.setFromPointIndex = source.setFromPointIndex;\r\n if (source.getTo)\r\n importer.getTo = source.getTo;\r\n if (source.setTo)\r\n importer.setTo = source.setTo;\r\n if (source.getToPointIndex)\r\n importer.getToPointIndex = source.getToPointIndex;\r\n if (source.setToPointIndex)\r\n importer.setToPointIndex = source.setToPointIndex;\r\n if (source.getPoints)\r\n importer.getPoints = source.getPoints;\r\n if (source.setPoints)\r\n importer.setPoints = source.setPoints;\r\n if (source.getText)\r\n importer.getText = source.getText;\r\n if (source.setText)\r\n importer.setText = source.setText;\r\n if (source.getLineOption)\r\n importer.getLineOption = source.getLineOption;\r\n if (source.setLineOption)\r\n importer.setLineOption = source.setLineOption;\r\n if (source.getStartLineEnding)\r\n importer.getStartLineEnding = source.getStartLineEnding;\r\n if (source.setStartLineEnding)\r\n importer.setStartLineEnding = source.setStartLineEnding;\r\n if (source.getEndLineEnding)\r\n importer.getEndLineEnding = source.getEndLineEnding;\r\n if (source.setEndLineEnding)\r\n importer.setEndLineEnding = source.setEndLineEnding;\r\n };\r\n DataSource.prototype.fetchData = function () {\r\n var _this = this;\r\n this.nodes = [];\r\n this.edges = [];\r\n this.autoGeneratedDataKeys = {};\r\n this.useNodeParentId = this.nodeDataImporter.getParentKey !== undefined;\r\n this.useNodeContainerId = this.nodeDataImporter.getContainerKey !== undefined;\r\n this.useNodeItems = this.nodeDataImporter.getItems !== undefined;\r\n this.useNodeChildren = this.nodeDataImporter.getChildren !== undefined;\r\n this.canUseAutoSize = this.nodeDataImporter.getWidth === undefined && this.nodeDataImporter.getText !== undefined;\r\n if (this.useEdgesArray() && this.useNodeParentId)\r\n throw new Error(\"You cannot use edges array and parentKey simultaneously.\");\r\n if (this.useEdgesArray() && this.useNodeItems)\r\n throw new Error(\"You cannot use edges array and items array simultaneously.\");\r\n if (this.useNodeParentId && this.useNodeItems)\r\n throw new Error(\"You cannot use parentKey and items array simultaneously.\");\r\n if (this.useNodeContainerId && this.useNodeChildren)\r\n throw new Error(\"You cannot use containerKey and children array simultaneously.\");\r\n this.nodeDataSource.forEach(function (nodeDataObj) {\r\n _this.addNode(nodeDataObj);\r\n });\r\n if (this.useEdgesArray())\r\n this.edgeDataSource.forEach(function (edgeDataObj) {\r\n _this.addEdge(edgeDataObj);\r\n });\r\n else\r\n this.nodes.forEach(function (node) {\r\n _this.addNodeEdgesByParentId(node);\r\n });\r\n };\r\n DataSource.prototype.isContainer = function (itemKey) {\r\n var _this = this;\r\n if (!this.containers && this.useNodeContainerId)\r\n this.containers = this.nodeDataSource\r\n .map(function (i) { return _this.nodeDataImporter.getContainerKey(i); })\r\n .filter(function (i) { return i !== undefined && i !== null; })\r\n .reduce(function (map, i) {\r\n map[i] = true;\r\n return map;\r\n }, {});\r\n return this.containers && this.containers[itemKey];\r\n };\r\n DataSource.prototype.refetchData = function (nodeDataSource, edgeDataSource) {\r\n var _this = this;\r\n this.nodeDataSource = nodeDataSource || this.nodeDataSource;\r\n this.edgeDataSource = edgeDataSource || this.edgeDataSource;\r\n var oldNodes = this.nodes.slice();\r\n var oldEdges = this.edges.slice();\r\n this.fetchData();\r\n var changedNodes = this.getItemChanges(oldNodes, this.nodes, function (item1, item2) {\r\n return (item1.key === item2.key) || (item1.dataObj === item2.dataObj);\r\n });\r\n var changedEdges = this.getItemChanges(oldEdges, this.edges, function (item1, item2) {\r\n if (_this.useNodeParentId || _this.useNodeItems)\r\n return (item1.key === item2.key) || (item1.from === item2.from && item1.to === item2.to);\r\n return (item1.key === item2.key) || (item1.dataObj === item2.dataObj);\r\n });\r\n return { nodes: changedNodes, edges: changedEdges };\r\n };\r\n DataSource.prototype.getItemChanges = function (oldItems, newItems, areEqual) {\r\n var _this = this;\r\n var remainedItems = oldItems.filter(function (item) { return _this.containsItem(newItems, item, areEqual); });\r\n var remainedNewItems = newItems.filter(function (item) { return _this.containsItem(oldItems, item, areEqual); });\r\n var removedItems = oldItems.filter(function (item) { return !_this.containsItem(newItems, item, areEqual); });\r\n var addedItems = newItems.filter(function (item) { return !_this.containsItem(oldItems, item, areEqual); });\r\n return {\r\n remained: remainedItems.map(function (item) { return item.key; }),\r\n remainedNew: remainedNewItems.map(function (item) { return item.key; }),\r\n removed: removedItems.map(function (item) { return item.key; }),\r\n added: addedItems.map(function (item) { return item.key; })\r\n };\r\n };\r\n DataSource.prototype.containsItem = function (items, item, areEqual) {\r\n var result = false;\r\n items.forEach(function (i) {\r\n if (!result && areEqual(i, item))\r\n result = true;\r\n });\r\n return result;\r\n };\r\n DataSource.prototype.useEdgesArray = function () {\r\n return Array.isArray(this.edgeDataSource) && (this.edgeDataSource.length || !(this.useNodeParentId || this.useNodeItems));\r\n };\r\n DataSource.prototype.addNode = function (nodeDataObj, parentNodeDataObj, containerKey, containerNodeDataObj) {\r\n var _this = this;\r\n var childNodeDataObjs = this.nodeDataImporter.getChildren && this.nodeDataImporter.getChildren(nodeDataObj);\r\n var hasChildren = childNodeDataObjs && Array.isArray(childNodeDataObjs) && childNodeDataObjs.length;\r\n var isContainer = hasChildren || this.isContainer(this.nodeDataImporter.getKey(nodeDataObj));\r\n var type = this.nodeDataImporter.getType && this.nodeDataImporter.getType(nodeDataObj) || (isContainer && ShapeTypes_1.ShapeTypes.VerticalContainer) || ShapeTypes_1.ShapeTypes.Rectangle;\r\n var text = this.nodeDataImporter.getText && (this.nodeDataImporter.getText(nodeDataObj) || \"\");\r\n var node = this.addNodeInternal(nodeDataObj, type, text, parentNodeDataObj, containerKey, containerNodeDataObj);\r\n this.assignNodeProperties(node, nodeDataObj);\r\n if (hasChildren)\r\n childNodeDataObjs.forEach(function (childNodeDataObj) {\r\n _this.addNode(childNodeDataObj, undefined, node.key, nodeDataObj);\r\n });\r\n if (this.useNodeItems) {\r\n var itemDataObjs = this.nodeDataImporter.getItems(nodeDataObj);\r\n if (Array.isArray(itemDataObjs) && itemDataObjs.length)\r\n itemDataObjs.forEach(function (itemDataObj) {\r\n var itemNode = _this.addNode(itemDataObj, nodeDataObj, containerKey, containerNodeDataObj);\r\n _this.addEdgeInternal(undefined, node.key, itemNode.key);\r\n });\r\n }\r\n return node;\r\n };\r\n DataSource.prototype.addNodeEdgesByParentId = function (node) {\r\n if (this.useNodeParentId) {\r\n var parentKey = this.nodeDataImporter.getParentKey(node.dataObj);\r\n if (parentKey !== undefined && parentKey !== null) {\r\n var parentNode = this.findNode(parentKey);\r\n if (parentNode)\r\n this.addEdgeInternal(undefined, this.getNodeKey(node.dataObj, this.nodeDataImporter.getParentKey), this.getNodeKey(node.dataObj, this.nodeDataImporter.getKey));\r\n }\r\n }\r\n };\r\n DataSource.prototype.addNodeInternal = function (nodeDataObj, type, text, parentNodeDataObj, containerKey, containerNodeDataObj) {\r\n var externalKey = this.nodeDataImporter.getKey(nodeDataObj);\r\n var key = (externalKey !== undefined && externalKey !== null) ? externalKey : ModelUtils_1.ModelUtils.getGuidItemKey();\r\n var node = new DataSourceItems_1.DataSourceNodeItem(this.key, key, nodeDataObj, type, text, parentNodeDataObj, containerKey, containerNodeDataObj);\r\n this.nodes.push(node);\r\n if (externalKey === undefined || externalKey === null) {\r\n externalKey = key;\r\n this.autoGeneratedDataKeys[key] = true;\r\n }\r\n return node;\r\n };\r\n DataSource.prototype.addEdge = function (edgeDataObj) {\r\n var edge = this.addEdgeInternal(edgeDataObj, this.getNodeKey(edgeDataObj, this.edgeDataImporter.getFrom), this.getNodeKey(edgeDataObj, this.edgeDataImporter.getTo));\r\n this.assignEdgeProperties(edge, edgeDataObj);\r\n return edge;\r\n };\r\n DataSource.prototype.addEdgeInternal = function (edgeDataObj, from, to) {\r\n var externalKey = edgeDataObj && this.edgeDataImporter.getKey(edgeDataObj);\r\n var key = (externalKey !== undefined && externalKey !== null) ? externalKey : ModelUtils_1.ModelUtils.getGuidItemKey();\r\n var edge = new DataSourceItems_1.DataSourceEdgeItem(this.key, key, edgeDataObj, from, to);\r\n this.edges.push(edge);\r\n if (externalKey === undefined || externalKey === null) {\r\n externalKey = key;\r\n this.autoGeneratedDataKeys[key] = true;\r\n }\r\n return edge;\r\n };\r\n DataSource.prototype.assignItemProperties = function (item, dataObj, importer) {\r\n if (importer.getCustomData)\r\n item.customData = Utils_1.ObjectUtils.cloneObject(importer.getCustomData(dataObj));\r\n if (importer.getLocked)\r\n item.locked = importer.getLocked(dataObj);\r\n if (importer.getStyle) {\r\n var style = importer.getStyle(dataObj);\r\n item.style = typeof style === \"string\" ? Data_1.Data.cssTextToObject(style) : style;\r\n }\r\n if (importer.getStyleText) {\r\n var style = importer.getStyleText(dataObj);\r\n item.styleText = typeof style === \"string\" ? Data_1.Data.cssTextToObject(style) : style;\r\n }\r\n if (importer.getZIndex)\r\n item.zIndex = importer.getZIndex(dataObj);\r\n };\r\n DataSource.prototype.assignNodeProperties = function (item, dataObj) {\r\n this.assignItemProperties(item, dataObj, this.nodeDataImporter);\r\n if (this.nodeDataImporter.getImage)\r\n item.image = this.nodeDataImporter.getImage(dataObj);\r\n if (this.nodeDataImporter.getLeft)\r\n item.left = this.nodeDataImporter.getLeft(dataObj);\r\n if (this.nodeDataImporter.getTop)\r\n item.top = this.nodeDataImporter.getTop(dataObj);\r\n if (this.nodeDataImporter.getWidth)\r\n item.width = this.nodeDataImporter.getWidth(dataObj);\r\n if (this.nodeDataImporter.getHeight)\r\n item.height = this.nodeDataImporter.getHeight(dataObj);\r\n if (this.nodeDataImporter.getContainerKey)\r\n item.containerKey = this.nodeDataImporter.getContainerKey(dataObj);\r\n };\r\n DataSource.prototype.assignEdgeProperties = function (item, dataObj) {\r\n this.assignItemProperties(item, dataObj, this.edgeDataImporter);\r\n if (this.edgeDataImporter.getFromPointIndex)\r\n item.fromPointIndex = this.edgeDataImporter.getFromPointIndex(dataObj);\r\n if (this.edgeDataImporter.getToPointIndex)\r\n item.toPointIndex = this.edgeDataImporter.getToPointIndex(dataObj);\r\n if (this.edgeDataImporter.getPoints)\r\n item.points = this.edgeDataImporter.getPoints(dataObj);\r\n if (this.edgeDataImporter.getText) {\r\n var texts = this.edgeDataImporter.getText(dataObj);\r\n item.texts = {};\r\n if (typeof texts === \"object\")\r\n for (var key in texts) {\r\n if (!Object.prototype.hasOwnProperty.call(texts, key))\r\n continue;\r\n var position = parseFloat(key);\r\n var text = texts[key];\r\n if (!isNaN(position) && typeof text === \"string\" && text !== \"\") {\r\n position = Math.min(1, Math.max(0, position));\r\n item.texts[position] = text;\r\n }\r\n }\r\n else if (typeof texts === \"string\" && texts !== \"\")\r\n item.texts[Connector_1.CONNECTOR_DEFAULT_TEXT_POSITION] = texts;\r\n }\r\n if (this.edgeDataImporter.getLineOption)\r\n item.lineOption = this.edgeDataImporter.getLineOption(dataObj);\r\n if (this.edgeDataImporter.getStartLineEnding)\r\n item.startLineEnding = this.edgeDataImporter.getStartLineEnding(dataObj);\r\n if (this.edgeDataImporter.getEndLineEnding)\r\n item.endLineEnding = this.edgeDataImporter.getEndLineEnding(dataObj);\r\n };\r\n DataSource.prototype.findNode = function (key) {\r\n return this.nodes.filter(function (i) { return key !== undefined && i.key === key; })[0];\r\n };\r\n DataSource.prototype.findEdge = function (key) {\r\n return this.edges.filter(function (i) { return key !== undefined && i.key === key; })[0];\r\n };\r\n DataSource.prototype.getNodeKey = function (nodeDataObj, getKey) {\r\n return getKey(nodeDataObj);\r\n };\r\n DataSource.prototype.createModelItems = function (history, model, shapeDescriptionManager, selection, layoutParameters, snapToGrid, gridSize, measurer) {\r\n var _this = this;\r\n this.beginChangesNotification();\r\n history.clear();\r\n history.beginTransaction();\r\n ModelUtils_1.ModelUtils.deleteAllItems(history, model, selection);\r\n model.initializeKeyCounter();\r\n var DEFAULT_STEP = 2000;\r\n var rowIndex = 0;\r\n var colIndex = 0;\r\n var externalToInnerMap = {};\r\n var shapes = [];\r\n var connectors = [];\r\n this.nodes.forEach(function (node) {\r\n var point = new point_1.Point(colIndex++ * DEFAULT_STEP, rowIndex * DEFAULT_STEP);\r\n var shape = _this.createShapeByNode(history, model, selection, shapeDescriptionManager, node, point, layoutParameters, snapToGrid, gridSize, measurer);\r\n if (node.key !== undefined)\r\n externalToInnerMap[node.key] = shape.key;\r\n if (colIndex > 4) {\r\n colIndex = 0;\r\n rowIndex++;\r\n }\r\n shapes.push(shape);\r\n });\r\n this.nodes.forEach(function (node) {\r\n if (node.containerKey !== undefined && node.containerKey !== null) {\r\n var shapeKey = externalToInnerMap[node.key];\r\n var shape = model.findShape(shapeKey);\r\n var containerShapeKey = externalToInnerMap[node.containerKey];\r\n var containerShape = model.findShape(containerShapeKey);\r\n if (containerShape)\r\n ModelUtils_1.ModelUtils.insertToContainer(history, model, shape, containerShape);\r\n }\r\n });\r\n this.edges.forEach(function (edge) {\r\n var toShape = model.findShape(externalToInnerMap[edge.to]);\r\n var fromShape = model.findShape(externalToInnerMap[edge.from]);\r\n var connector = _this.createConnectorByEdge(history, model, selection, edge, fromShape, toShape);\r\n if (connector) {\r\n connectors.push(connector);\r\n ModelUtils_1.ModelUtils.updateConnectorContainer(history, model, connector);\r\n }\r\n });\r\n if (layoutParameters.needAutoLayout)\r\n this.applyLayout(history, model, shapes, connectors, layoutParameters, snapToGrid, gridSize);\r\n ModelUtils_1.ModelUtils.tryUpdateModelRectangle(history);\r\n history.endTransaction(true);\r\n this.endChangesNotification(true);\r\n };\r\n DataSource.prototype.updateModelItems = function (history, model, shapeDescriptionManager, selection, layoutParameters, addNewHistoryItem, updateDataKeys, updateTemplateItem, changes, snapToGrid, gridSize, measurer) {\r\n var _this = this;\r\n this.beginChangesNotification();\r\n history.beginTransaction();\r\n var itemsToUpdate = [];\r\n var layoutShapes = [];\r\n var layoutConnectors = [];\r\n var shapesToRemove = changes.nodes.removed.map(function (key) { return model.findShapeByDataKey(key); }).filter(function (item) { return item; });\r\n shapesToRemove.forEach(function (shape) {\r\n shape.attachedConnectors.forEach(function (connector) {\r\n if (connector.beginItem && connector.beginItem !== shape)\r\n layoutShapes.push(connector.beginItem);\r\n if (connector.endItem && connector.endItem !== shape)\r\n layoutShapes.push(connector.endItem);\r\n });\r\n });\r\n ModelUtils_1.ModelUtils.deleteItems(history, model, selection, shapesToRemove, true);\r\n var connectorsToRemove = changes.edges.removed.map(function (key) { return model.findConnectorByDataKey(key); }).filter(function (item) { return item; });\r\n connectorsToRemove.forEach(function (connector) {\r\n if (connector.beginItem)\r\n layoutShapes.push(connector.beginItem);\r\n if (connector.endItem)\r\n layoutShapes.push(connector.endItem);\r\n });\r\n ModelUtils_1.ModelUtils.deleteItems(history, model, selection, connectorsToRemove, true);\r\n layoutShapes = this.purgeLayoutShapes(layoutShapes, shapesToRemove); // remove deleted shapes and duplicates from layoutShapes\r\n var nodeKeysToUpdate = updateDataKeys || [];\r\n nodeKeysToUpdate.forEach(function (dataKey) {\r\n if (changes.nodes.remained.indexOf(dataKey) === -1)\r\n return;\r\n var node = _this.findNode(dataKey);\r\n if (node) {\r\n var shape = model.findShapeByDataKey(dataKey);\r\n if (shape) {\r\n var position = shape.position.clone();\r\n _this.changeShapeByDataItem(history, model, shape, node, position);\r\n _this.changeItemByDataItem(history, shape, node);\r\n }\r\n else\r\n shape = _this.createShapeByNode(history, model, selection, shapeDescriptionManager, node, new point_1.Point(0, 0), layoutParameters, snapToGrid, gridSize, measurer);\r\n _this.updateShapeContainer(history, model, shape, node);\r\n layoutShapes.push(shape);\r\n itemsToUpdate.push(shape);\r\n }\r\n });\r\n changes.nodes.remained.forEach(function (dataKey, index) {\r\n var shape = model.findShapeByDataKey(dataKey);\r\n if (shape)\r\n shape.dataKey = changes.nodes.remainedNew[index];\r\n });\r\n changes.nodes.added.forEach(function (dataKey) {\r\n var node = _this.findNode(dataKey);\r\n var shape = _this.createShapeByNode(history, model, selection, shapeDescriptionManager, node, new point_1.Point(0, 0), layoutParameters, snapToGrid, gridSize, measurer);\r\n _this.updateShapeContainer(history, model, shape, node);\r\n layoutShapes.push(shape);\r\n });\r\n changes.edges.added.forEach(function (dataKey) {\r\n var edge = _this.findEdge(dataKey);\r\n var fromShape = model.findShapeByDataKey(edge.from);\r\n var toShape = model.findShapeByDataKey(edge.to);\r\n var connector = _this.createConnectorByEdge(history, model, selection, edge, fromShape, toShape);\r\n if (connector) {\r\n ModelUtils_1.ModelUtils.updateConnectorContainer(history, model, connector);\r\n layoutConnectors.push(connector);\r\n }\r\n });\r\n var edgeKeysToUpdate = updateDataKeys || [];\r\n changes.edges.remained.forEach(function (dataKey) {\r\n var edge = _this.findEdge(dataKey);\r\n if (edge && ((changes.nodes.added.indexOf(edge.from) !== -1) || (changes.nodes.added.indexOf(edge.to) !== -1)))\r\n edgeKeysToUpdate.push(dataKey);\r\n });\r\n edgeKeysToUpdate.forEach(function (dataKey) {\r\n if (changes.edges.remained.indexOf(dataKey) === -1)\r\n return;\r\n var edge = _this.findEdge(dataKey);\r\n if (edge) {\r\n var fromShape = model.findShapeByDataKey(edge.from);\r\n var toShape = model.findShapeByDataKey(edge.to);\r\n var connector = model.findConnectorByDataKey(dataKey);\r\n if (connector) {\r\n _this.changeConnectorPointsByDataItem(history, connector, _this.getConnectorPointsByEdge(model, edge, fromShape, toShape));\r\n _this.changeConnectorByDataItem(history, model, connector, fromShape, toShape, edge);\r\n _this.changeItemByDataItem(history, connector, edge);\r\n }\r\n else\r\n connector = _this.createConnectorByEdge(history, model, selection, edge, fromShape, toShape);\r\n if (connector) {\r\n ModelUtils_1.ModelUtils.updateConnectorContainer(history, model, connector);\r\n layoutConnectors.push(connector);\r\n itemsToUpdate.push(connector);\r\n }\r\n }\r\n });\r\n changes.edges.remained.forEach(function (dataKey, index) {\r\n var connector = model.findConnectorByDataKey(dataKey);\r\n if (connector)\r\n connector.dataKey = changes.edges.remainedNew[index];\r\n });\r\n if (itemsToUpdate.length && updateTemplateItem)\r\n itemsToUpdate.forEach(function (item) { item.hasTemplate && updateTemplateItem(item); });\r\n if (layoutParameters.needAutoLayout && (layoutShapes.length || layoutConnectors.length))\r\n this.applyLayout(history, model, layoutShapes, layoutConnectors, layoutParameters, snapToGrid, gridSize);\r\n ModelUtils_1.ModelUtils.tryUpdateModelRectangle(history);\r\n history.endTransaction(!addNewHistoryItem);\r\n this.endChangesNotification(false);\r\n };\r\n DataSource.prototype.purgeLayoutShapes = function (layoutShapes, shapesToRemove) {\r\n var shapesToRemoveKeySet = shapesToRemove.reduce(function (acc, shape) { return (acc[shape.key] = true) && acc; }, {});\r\n return layoutShapes.reduce(function (acc, shape) {\r\n if (acc.keySet[shape.key] === undefined && shapesToRemoveKeySet[shape.key] === undefined) {\r\n acc.uniqueShapes.push(shape);\r\n acc.keySet[shape.key] = true;\r\n }\r\n return acc;\r\n }, { uniqueShapes: [], keySet: {} }).uniqueShapes;\r\n };\r\n DataSource.prototype.applyShapeAutoSize = function (history, measurer, shapeSizeSettings, shape, snapToGrid, gridSize) {\r\n if (!shape.description.enableText)\r\n return;\r\n var shapeTextSize = shape.textRectangle.createSize();\r\n var shapeSize = shape.size;\r\n var textHorOffset = shapeTextSize.width - shapeSize.width;\r\n var textVerOffset = shapeTextSize.height - shapeSize.height;\r\n var maxWidth = shape.getMaxWidth(shapeSizeSettings.shapeMaxWidth);\r\n var maxHeight = shape.getMaxHeight(shapeSizeSettings.shapeMaxHeight);\r\n var sizeToPx = function (size, isHorizontal) { return typeof (size) === \"number\" ? unit_converter_1.UnitConverter.twipsToPixelsF(size + (isHorizontal ? textHorOffset : textVerOffset)) : undefined; };\r\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))\r\n .clone().applyConverter(unit_converter_1.UnitConverter.pixelsToTwips);\r\n if (!newShapeTextSize.equals(shapeTextSize)) {\r\n var shapeNewSize = shape.description.getSizeByText(newShapeTextSize, shape);\r\n if (snapToGrid && gridSize)\r\n 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));\r\n history.addAndRedo(new ResizeShapeHistoryItem_1.ResizeShapeHistoryItem(shape.key, shape.position, shapeNewSize));\r\n }\r\n };\r\n DataSource.prototype.applyLayout = function (history, model, shapes, connectors, layoutParameters, snapToGrid, gridSize) {\r\n var graphInfo = ModelUtils_1.ModelUtils.getGraphInfoByItems(model, shapes, connectors);\r\n graphInfo.forEach(function (info) {\r\n var layout = layoutParameters.getLayoutBuilder(info.graph).build();\r\n var nonGraphItems = ModelUtils_1.ModelUtils.getNonGraphItems(model, info.container, layout.nodeToLayout, shapes, connectors);\r\n ModelUtils_1.ModelUtils.applyLayout(history, model, info.container, info.graph, layout, nonGraphItems, layoutParameters.layoutSettings, snapToGrid, gridSize, layoutParameters.skipPointIndices);\r\n });\r\n };\r\n DataSource.prototype.changeItemByDataItem = function (history, item, dataItem) {\r\n if (dataItem.customData !== undefined && !Utils_1.ObjectUtils.compareObjects(dataItem.customData, item.customData))\r\n history.addAndRedo(new ChangeCustomDataHistoryItem_1.ChangeCustomDataHistoryItem(item, dataItem.customData));\r\n if (dataItem.zIndex !== undefined && dataItem.zIndex !== item.zIndex)\r\n history.addAndRedo(new ChangeZindexHistoryItem_1.ChangeZindexHistoryItem(item, dataItem.zIndex));\r\n if (dataItem.style !== undefined)\r\n for (var key in dataItem.style) {\r\n if (!Object.prototype.hasOwnProperty.call(dataItem.style, key))\r\n continue;\r\n var value = this.getPreparedStyleValue(dataItem.style[key], Svg_1.isColorProperty(key));\r\n if (value !== item.style[key])\r\n history.addAndRedo(new ChangeStyleHistoryItem_1.ChangeStyleHistoryItem(item.key, key, value));\r\n }\r\n if (dataItem.styleText !== undefined)\r\n for (var key in dataItem.styleText) {\r\n if (!Object.prototype.hasOwnProperty.call(dataItem.styleText, key))\r\n continue;\r\n var value = this.getPreparedStyleValue(dataItem.styleText[key], Svg_1.isColorProperty(key));\r\n if (value !== item.styleText[key])\r\n history.addAndRedo(new ChangeStyleTextHistoryItem_1.ChangeStyleTextHistoryItem(item.key, key, value));\r\n }\r\n if (dataItem.locked !== undefined && dataItem.locked !== item.locked)\r\n history.addAndRedo(new ChangeLockedHistoryItem_1.ChangeLockedHistoryItem(item, dataItem.locked));\r\n };\r\n DataSource.prototype.getPreparedStyleValue = function (value, isColorProperty) {\r\n if (isColorProperty) {\r\n var colorValue = color_1.ColorUtils.stringToHash(value);\r\n if (colorValue !== null)\r\n value = colorValue;\r\n }\r\n return value;\r\n };\r\n DataSource.prototype.createShapeByNode = function (history, model, selection, shapeDescriptionManager, node, point, layoutParameters, snapToGrid, gridSize, measurer) {\r\n var insert = new AddShapeHistoryItem_1.AddShapeHistoryItem(shapeDescriptionManager.get(node.type), point, \"\", node.key);\r\n history.addAndRedo(insert);\r\n var shape = model.findShape(insert.shapeKey);\r\n ModelUtils_1.ModelUtils.updateNewShapeProperties(history, selection, insert.shapeKey);\r\n this.changeShapeByDataItem(history, model, shape, node, point);\r\n this.changeItemByDataItem(history, shape, node);\r\n if (measurer && this.canUseAutoSize && layoutParameters.autoSizeEnabled)\r\n this.applyShapeAutoSize(history, measurer, layoutParameters.sizeSettings, shape, snapToGrid, gridSize);\r\n return shape;\r\n };\r\n DataSource.prototype.changeShapeByDataItem = function (history, model, shape, node, point) {\r\n if (node.left !== undefined)\r\n point.x = ModelUtils_1.ModelUtils.getTwipsValue(model.units, node.left);\r\n if (node.top !== undefined)\r\n point.y = ModelUtils_1.ModelUtils.getTwipsValue(model.units, node.top);\r\n ModelUtils_1.ModelUtils.setShapePosition(history, model, shape, point);\r\n var size = shape.size.clone();\r\n if (node.width !== undefined)\r\n size.width = ModelUtils_1.ModelUtils.getTwipsValue(model.units, node.width);\r\n if (node.height !== undefined)\r\n size.height = ModelUtils_1.ModelUtils.getTwipsValue(model.units, node.height);\r\n ModelUtils_1.ModelUtils.setShapeSize(history, model, shape, point, size);\r\n ModelUtils_1.ModelUtils.updateShapeAttachedConnectors(history, model, shape);\r\n if (node.text !== undefined && node.text !== shape.text)\r\n history.addAndRedo(new ChangeShapeTextHistoryItem_1.ChangeShapeTextHistoryItem(shape, node.text));\r\n if (node.image !== undefined && node.image !== shape.image.actualUrl)\r\n history.addAndRedo(new ChangeShapeImageHistoryItem_1.ChangeShapeImageHistoryItem(shape, node.image));\r\n };\r\n DataSource.prototype.updateShapeContainer = function (history, model, shape, node) {\r\n var containerShape = (node.containerKey !== undefined) ? model.findShapeByDataKey(node.containerKey) : undefined;\r\n if (containerShape !== shape.container)\r\n if (containerShape)\r\n ModelUtils_1.ModelUtils.insertToContainer(history, model, shape, containerShape);\r\n else\r\n ModelUtils_1.ModelUtils.removeFromContainer(history, model, shape);\r\n };\r\n DataSource.prototype.getConnectorPointsByEdge = function (model, edge, fromShape, toShape) {\r\n var result = [];\r\n var modelPoints = this.createModelPointFromDataSourceEdgeItemPoints(model.units, edge);\r\n if (!modelPoints || modelPoints.length <= 1) {\r\n if (!fromShape || !toShape)\r\n return undefined;\r\n result.push(fromShape.position.clone());\r\n result.push(toShape.position.clone());\r\n return result;\r\n }\r\n var lastIndex = modelPoints.length - 1;\r\n for (var i = 0; i <= lastIndex; i++) {\r\n var modelPoint = modelPoints[i];\r\n if (modelPoint !== null)\r\n result.push(modelPoint);\r\n else if (!fromShape && !toShape)\r\n return undefined;\r\n else if (i === 0 && fromShape)\r\n result.push(fromShape.position.clone());\r\n else if (i === lastIndex && toShape)\r\n result.push(toShape.position.clone());\r\n }\r\n return result;\r\n };\r\n DataSource.prototype.createModelPointFromDataSourceEdgeItemPoints = function (units, edge) {\r\n var _this = this;\r\n var result = [];\r\n if (!Array.isArray(edge.points))\r\n return undefined;\r\n edge.points.forEach(function (dep) { return result.push(_this.isValidDataSourceEdgeItemPoint(dep) ? _this.createModelPoint(units, dep) : null); });\r\n return result;\r\n };\r\n DataSource.prototype.createModelPoint = function (units, point) {\r\n return new point_1.Point(ModelUtils_1.ModelUtils.getTwipsValue(units, point.x), ModelUtils_1.ModelUtils.getTwipsValue(units, point.y));\r\n };\r\n DataSource.prototype.isValidDataSourceEdgeItemPoint = function (point) {\r\n return point !== undefined && point !== null &&\r\n point.x !== undefined && point.y !== undefined &&\r\n point.x !== null && point.y !== null;\r\n };\r\n DataSource.prototype.createConnectorByEdge = function (history, model, selection, edge, fromShape, toShape) {\r\n var connector;\r\n var dataKey = edge.key;\r\n var points = this.getConnectorPointsByEdge(model, edge, fromShape, toShape);\r\n if (points && points.length > 1) {\r\n var insert = new AddConnectorHistoryItem_1.AddConnectorHistoryItem(points, dataKey);\r\n history.addAndRedo(insert);\r\n connector = model.findConnector(insert.connectorKey);\r\n ModelUtils_1.ModelUtils.updateNewConnectorProperties(history, selection, insert.connectorKey);\r\n this.changeConnectorByDataItem(history, model, connector, fromShape, toShape, edge);\r\n this.changeItemByDataItem(history, connector, edge);\r\n }\r\n return connector;\r\n };\r\n DataSource.prototype.changeConnectorByDataItem = function (history, model, connector, fromShape, toShape, edge) {\r\n var fromPointIndex = edge.fromPointIndex !== undefined ? edge.fromPointIndex : connector.beginConnectionPointIndex;\r\n if (connector.beginItem !== fromShape || connector.beginConnectionPointIndex !== fromPointIndex) {\r\n if (connector.beginItem)\r\n history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(connector, Connector_1.ConnectorPosition.Begin));\r\n if (fromShape)\r\n history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(connector, fromShape, fromPointIndex, Connector_1.ConnectorPosition.Begin));\r\n }\r\n var toPointIndex = edge.toPointIndex !== undefined ? edge.toPointIndex : connector.endConnectionPointIndex;\r\n if (connector.endItem !== toShape || connector.endConnectionPointIndex !== toPointIndex) {\r\n if (connector.endItem)\r\n history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(connector, Connector_1.ConnectorPosition.End));\r\n if (toShape)\r\n history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(connector, toShape, toPointIndex, Connector_1.ConnectorPosition.End));\r\n }\r\n ModelUtils_1.ModelUtils.updateConnectorAttachedPoints(history, model, connector);\r\n if (edge.texts !== undefined && !this.compareTexts(edge, connector)) {\r\n connector.texts.forEach(function (text) {\r\n history.addAndRedo(new ChangeConnectorTextHistoryItem_1.ChangeConnectorTextHistoryItem(connector, text.position, undefined));\r\n });\r\n for (var key in edge.texts) {\r\n if (!Object.prototype.hasOwnProperty.call(edge.texts, key))\r\n continue;\r\n var position = parseFloat(key);\r\n history.addAndRedo(new ChangeConnectorTextHistoryItem_1.ChangeConnectorTextHistoryItem(connector, position, edge.texts[key]));\r\n }\r\n }\r\n if (edge.lineOption !== undefined && edge.lineOption !== connector.properties.lineOption)\r\n history.addAndRedo(new ChangeConnectorPropertyHistoryItem_1.ChangeConnectorPropertyHistoryItem(connector.key, \"lineOption\", edge.lineOption));\r\n if (edge.startLineEnding !== undefined && edge.startLineEnding !== connector.properties.startLineEnding)\r\n history.addAndRedo(new ChangeConnectorPropertyHistoryItem_1.ChangeConnectorPropertyHistoryItem(connector.key, \"startLineEnding\", edge.startLineEnding));\r\n if (edge.endLineEnding !== undefined && edge.endLineEnding !== connector.properties.endLineEnding)\r\n history.addAndRedo(new ChangeConnectorPropertyHistoryItem_1.ChangeConnectorPropertyHistoryItem(connector.key, \"endLineEnding\", edge.endLineEnding));\r\n };\r\n DataSource.prototype.changeConnectorPointsByDataItem = function (history, connector, newPoints) {\r\n if (newPoints && newPoints.length > 1 && newPoints.join(\",\") !== connector.points.join(\",\"))\r\n history.addAndRedo(new ChangeConnectorPointsHistoryItem_1.ReplaceConnectorPointsHistoryItem(connector.key, newPoints));\r\n };\r\n DataSource.prototype.compareTexts = function (edgeObj, connector) {\r\n var texts = edgeObj.texts || {};\r\n var result = Object.keys(texts).length === connector.getTextCount();\r\n if (result)\r\n for (var key in texts) {\r\n if (!Object.prototype.hasOwnProperty.call(texts, key))\r\n continue;\r\n var position = parseFloat(key);\r\n if (!this.compareStrings(connector.getText(position), texts[key]))\r\n result = false;\r\n }\r\n return result;\r\n };\r\n DataSource.prototype.compareStrings = function (str1, str2) {\r\n if (typeof str1 === \"string\" && typeof str2 === \"string\")\r\n return str1 === str2;\r\n return this.isEmptyString(str1) && this.isEmptyString(str2);\r\n };\r\n DataSource.prototype.isEmptyString = function (str) {\r\n return str === \"\" || str === null || str === undefined;\r\n };\r\n return DataSource;\r\n}());\r\nexports.DataSource = DataSource;\r\n\n\n/***/ }),\n/* 347 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeCustomDataHistoryItem = void 0;\r\nvar HistoryItem_1 = __webpack_require__(8);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar ChangeCustomDataHistoryItem = /** @class */ (function (_super) {\r\n __extends(ChangeCustomDataHistoryItem, _super);\r\n function ChangeCustomDataHistoryItem(item, customData) {\r\n var _this = _super.call(this) || this;\r\n _this.itemKey = item.key;\r\n _this.customData = Utils_1.ObjectUtils.cloneObject(customData);\r\n return _this;\r\n }\r\n ChangeCustomDataHistoryItem.prototype.redo = function (manipulator) {\r\n var item = manipulator.model.findItem(this.itemKey);\r\n this.oldCustomData = Utils_1.ObjectUtils.cloneObject(item.customData);\r\n manipulator.changeCustomData(item, this.customData);\r\n };\r\n ChangeCustomDataHistoryItem.prototype.undo = function (manipulator) {\r\n var item = manipulator.model.findItem(this.itemKey);\r\n manipulator.changeCustomData(item, this.oldCustomData);\r\n };\r\n return ChangeCustomDataHistoryItem;\r\n}(HistoryItem_1.HistoryItem));\r\nexports.ChangeCustomDataHistoryItem = ChangeCustomDataHistoryItem;\r\n\n\n/***/ }),\n/* 348 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DataSourceEdgeDataImporter = exports.DataSourceNodeDataImporter = exports.DataSourceItemDataImporter = void 0;\r\nvar DataSourceItemDataImporter = /** @class */ (function () {\r\n function DataSourceItemDataImporter() {\r\n this.getKey = function (obj) { return obj[\"id\"]; };\r\n this.setKey = function (obj, value) { obj[\"id\"] = value; };\r\n this.getCustomData = undefined;\r\n this.setCustomData = undefined;\r\n this.getLocked = undefined;\r\n this.setLocked = undefined;\r\n this.getStyle = undefined;\r\n this.setStyle = undefined;\r\n this.getStyleText = undefined;\r\n this.setStyleText = undefined;\r\n this.getZIndex = undefined;\r\n this.setZIndex = undefined;\r\n }\r\n return DataSourceItemDataImporter;\r\n}());\r\nexports.DataSourceItemDataImporter = DataSourceItemDataImporter;\r\nvar DataSourceNodeDataImporter = /** @class */ (function (_super) {\r\n __extends(DataSourceNodeDataImporter, _super);\r\n function DataSourceNodeDataImporter() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.getType = undefined;\r\n _this.setType = undefined;\r\n _this.getText = undefined;\r\n _this.setText = undefined;\r\n _this.getImage = undefined;\r\n _this.setImage = undefined;\r\n _this.getLeft = undefined;\r\n _this.setLeft = undefined;\r\n _this.getTop = undefined;\r\n _this.setTop = undefined;\r\n _this.getWidth = undefined;\r\n _this.setWidth = undefined;\r\n _this.getHeight = undefined;\r\n _this.setHeight = undefined;\r\n _this.getChildren = undefined;\r\n _this.setChildren = undefined;\r\n _this.getParentKey = undefined;\r\n _this.setParentKey = undefined;\r\n _this.getItems = undefined;\r\n _this.setItems = undefined;\r\n _this.getContainerKey = undefined;\r\n _this.setContainerKey = undefined;\r\n return _this;\r\n }\r\n return DataSourceNodeDataImporter;\r\n}(DataSourceItemDataImporter));\r\nexports.DataSourceNodeDataImporter = DataSourceNodeDataImporter;\r\nvar DataSourceEdgeDataImporter = /** @class */ (function (_super) {\r\n __extends(DataSourceEdgeDataImporter, _super);\r\n function DataSourceEdgeDataImporter() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.getFrom = function (obj) { return obj[\"from\"]; };\r\n _this.setFrom = function (obj, value) { obj[\"from\"] = value; };\r\n _this.getFromPointIndex = undefined;\r\n _this.setFromPointIndex = undefined;\r\n _this.getTo = function (obj) { return obj[\"to\"]; };\r\n _this.setTo = function (obj, value) { obj[\"to\"] = value; };\r\n _this.getToPointIndex = undefined;\r\n _this.setToPointIndex = undefined;\r\n _this.getPoints = undefined;\r\n _this.setPoints = undefined;\r\n _this.getText = undefined;\r\n _this.setText = undefined;\r\n _this.getLineOption = undefined;\r\n _this.setLineOption = undefined;\r\n _this.getStartLineEnding = undefined;\r\n _this.setStartLineEnding = undefined;\r\n _this.getEndLineEnding = undefined;\r\n _this.setEndLineEnding = undefined;\r\n return _this;\r\n }\r\n return DataSourceEdgeDataImporter;\r\n}(DataSourceItemDataImporter));\r\nexports.DataSourceEdgeDataImporter = DataSourceEdgeDataImporter;\r\n\n\n/***/ }),\n/* 349 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DataSourceEdgeItem = exports.DataSourceNodeItem = exports.DataSourceItem = void 0;\r\nvar Connector_1 = __webpack_require__(6);\r\nvar DataSourceItem = /** @class */ (function () {\r\n function DataSourceItem(sourceKey, key, dataObj) {\r\n this.sourceKey = sourceKey;\r\n this.key = key;\r\n this.dataObj = dataObj;\r\n }\r\n return DataSourceItem;\r\n}());\r\nexports.DataSourceItem = DataSourceItem;\r\nvar DataSourceNodeItem = /** @class */ (function (_super) {\r\n __extends(DataSourceNodeItem, _super);\r\n function DataSourceNodeItem(sourceKey, key, dataObj, type, text, parentDataObj, containerKey, containerDataObj) {\r\n var _this = _super.call(this, sourceKey, key, dataObj) || this;\r\n _this.type = type;\r\n _this.text = text;\r\n _this.parentDataObj = parentDataObj;\r\n _this.containerKey = containerKey;\r\n _this.containerDataObj = containerDataObj;\r\n return _this;\r\n }\r\n return DataSourceNodeItem;\r\n}(DataSourceItem));\r\nexports.DataSourceNodeItem = DataSourceNodeItem;\r\nvar DataSourceEdgeItem = /** @class */ (function (_super) {\r\n __extends(DataSourceEdgeItem, _super);\r\n function DataSourceEdgeItem(sourceKey, key, dataObj, from, to) {\r\n var _this = _super.call(this, sourceKey, key, dataObj) || this;\r\n _this.sourceKey = sourceKey;\r\n _this.from = from;\r\n _this.to = to;\r\n return _this;\r\n }\r\n Object.defineProperty(DataSourceEdgeItem.prototype, \"text\", {\r\n get: function () {\r\n return this.texts && this.texts[Connector_1.CONNECTOR_DEFAULT_TEXT_POSITION];\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return DataSourceEdgeItem;\r\n}(DataSourceItem));\r\nexports.DataSourceEdgeItem = DataSourceEdgeItem;\r\n\n\n/***/ }),\n/* 350 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ViewController = void 0;\r\nvar CommandManager_1 = __webpack_require__(81);\r\nvar LOG_MIN_ZOOM = Math.log(0.05);\r\nvar LOG_MAX_ZOOM = Math.log(3);\r\nvar ZOOM_STEPS = 40;\r\nvar ZERO_STEP = getStepByZoom(1);\r\nvar 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];\r\nvar AUTOZOOM_COMMANDS = [CommandManager_1.DiagramCommand.SwitchAutoZoom, CommandManager_1.DiagramCommand.ToggleAutoZoom, CommandManager_1.DiagramCommand.AutoZoomToContent, CommandManager_1.DiagramCommand.AutoZoomToWidth];\r\nvar ViewController = /** @class */ (function () {\r\n function ViewController(settings, bars) {\r\n this.settings = settings;\r\n this.bars = bars;\r\n settings.onZoomChanged.add(this);\r\n this.autoZoom = settings.autoZoom;\r\n }\r\n ViewController.prototype.initialize = function (view) {\r\n this.view = view;\r\n this.view.onViewChanged.add(this);\r\n };\r\n ViewController.prototype.scrollTo = function (modelPoint, offsetPoint) {\r\n if (this.view)\r\n this.view.setScrollTo(modelPoint, offsetPoint);\r\n };\r\n ViewController.prototype.scrollBy = function (offset) {\r\n if (this.view && (offset.x !== 0 || offset.y !== 0))\r\n return this.view.scrollBy(offset);\r\n return offset;\r\n };\r\n ViewController.prototype.scrollIntoView = function (rectangle) {\r\n this.view && this.view.scrollIntoView(rectangle);\r\n };\r\n ViewController.prototype.normalize = function () {\r\n this.view.tryNormalizePaddings();\r\n };\r\n ViewController.prototype.getNextStepZoom = function (increase) {\r\n var currentZoomStep = this.getNearestCurrentZoomStep();\r\n var delta = increase ? 1 : -1;\r\n var step = Math.min(ZOOM_STEPS - 1, Math.max(0, currentZoomStep + delta));\r\n if (step !== ZERO_STEP) {\r\n var logZoom = LOG_MIN_ZOOM + (LOG_MAX_ZOOM - LOG_MIN_ZOOM) * step / (ZOOM_STEPS - 1);\r\n return Math.exp(logZoom);\r\n }\r\n return 1;\r\n };\r\n ViewController.prototype.getNearestCurrentZoomStep = function () {\r\n var zoom = this.getZoom();\r\n return getStepByZoom(zoom);\r\n };\r\n ViewController.prototype.getZoom = function () {\r\n return this.view ? this.view.actualZoom : this.settings.zoomLevel;\r\n };\r\n ViewController.prototype.resetScroll = function () {\r\n this.view.adjust({ horizontal: true, vertical: true });\r\n };\r\n ViewController.prototype.notifyViewAdjusted = function (canvasOffset) { };\r\n ViewController.prototype.notifyActualZoomChanged = function (actualZoom) {\r\n this.bars.updateItemsState(ZOOMLEVEL_COMMANDS);\r\n };\r\n ViewController.prototype.notifyZoomChanged = function (fixedZoomLevel, autoZoom) {\r\n if (this.autoZoom !== autoZoom) {\r\n this.autoZoom = autoZoom;\r\n this.bars.updateItemsState(AUTOZOOM_COMMANDS);\r\n }\r\n };\r\n return ViewController;\r\n}());\r\nexports.ViewController = ViewController;\r\nfunction getStepByZoom(zoom) {\r\n var logZoom = Math.log(zoom);\r\n return Math.round((logZoom - LOG_MIN_ZOOM) * (ZOOM_STEPS - 1) / (LOG_MAX_ZOOM - LOG_MIN_ZOOM));\r\n}\r\n\n\n/***/ }),\n/* 351 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ToolboxManager = void 0;\r\nvar TextToolbox_1 = __webpack_require__(352);\r\nvar IconToolbox_1 = __webpack_require__(353);\r\nvar TextMeasurer_1 = __webpack_require__(78);\r\nvar math_1 = __webpack_require__(32);\r\nvar ToolboxManager = /** @class */ (function () {\r\n function ToolboxManager(shapeDescriptionManager) {\r\n this.shapeDescriptionManager = shapeDescriptionManager;\r\n this.toolboxes = [];\r\n this.measurers = {};\r\n }\r\n ToolboxManager.prototype.create = function (parent, readOnly, allowDragging, renderAsText, shapes, getAllowedShapeTypes, isTouchUIEnabled, options) {\r\n var shapeTypes = Array.isArray(shapes) ? shapes : this.shapeDescriptionManager.getTypesByCategory(shapes);\r\n var toolbox = renderAsText ?\r\n new TextToolbox_1.TextToolbox(parent, readOnly, allowDragging, this.shapeDescriptionManager, shapeTypes, getAllowedShapeTypes, isTouchUIEnabled) :\r\n new IconToolbox_1.IconToolbox(parent, readOnly, allowDragging, this.shapeDescriptionManager, shapeTypes, getAllowedShapeTypes, options, this.getOrCreateMeasurer(parent), isTouchUIEnabled);\r\n toolbox.render();\r\n this.toolboxes.push(toolbox);\r\n return toolbox;\r\n };\r\n ToolboxManager.prototype.clean = function (removeElement, toolbox) {\r\n if (toolbox) {\r\n toolbox.clean(removeElement);\r\n this.toolboxes.splice(this.toolboxes.indexOf(toolbox), 1);\r\n }\r\n else {\r\n for (var i = 0; i < this.toolboxes.length; i++)\r\n this.toolboxes[i].clean(removeElement);\r\n this.toolboxes = [];\r\n }\r\n };\r\n ToolboxManager.prototype.refresh = function (toolboxes) {\r\n this.toolboxes.forEach(function (toolbox, index) {\r\n if (!toolboxes || (Array.isArray(toolboxes) && toolboxes.indexOf(index) > -1) || index === toolboxes)\r\n toolbox.render();\r\n });\r\n };\r\n ToolboxManager.prototype.applyFilter = function (str, toolboxes) {\r\n var _this = this;\r\n return this.toolboxes.reduce(function (aggr, toolbox, index) {\r\n if (!toolboxes || (Array.isArray(toolboxes) && toolboxes.indexOf(index) > -1) || index === toolboxes)\r\n toolbox.render(function (shapeType) { return _this.searchFilter(shapeType, str, index); }) && aggr.push(index);\r\n return aggr;\r\n }, []);\r\n };\r\n ToolboxManager.prototype.searchFilter = function (shapeType, str, toolboxIndex, filteringToolboxes) {\r\n if (!str || (filteringToolboxes && filteringToolboxes.indexOf(toolboxIndex) === -1))\r\n return true;\r\n str = str.toLowerCase();\r\n var shapeDescription = this.shapeDescriptionManager.get(shapeType);\r\n return shapeDescription.getTitle().toLowerCase().indexOf(str) > -1 ||\r\n shapeDescription.getDefaultText().toLowerCase().indexOf(str) > -1;\r\n };\r\n ToolboxManager.prototype.getOrCreateMeasurer = function (parent) {\r\n var id = parent.getAttribute(\"data-dxdiMeasurerID\");\r\n if (!id || !this.measurers[id]) {\r\n id = math_1.MathUtils.generateGuid();\r\n this.measurers[id] = new TextMeasurer_1.TextMeasurer(parent);\r\n parent.setAttribute(\"data-dxdiMeasurerID\", id);\r\n }\r\n return this.measurers[id];\r\n };\r\n return ToolboxManager;\r\n}());\r\nexports.ToolboxManager = ToolboxManager;\r\n\n\n/***/ }),\n/* 352 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.TextToolbox = void 0;\r\nvar Toolbox_1 = __webpack_require__(158);\r\nvar TextToolbox = /** @class */ (function (_super) {\r\n __extends(TextToolbox, _super);\r\n function TextToolbox(parent, readOnly, allowDragging, shapeDescriptionManager, shapeTypes, getAllowedShapeTypes, isTouchUIEnabled) {\r\n return _super.call(this, parent, readOnly, allowDragging, shapeDescriptionManager, shapeTypes, getAllowedShapeTypes, isTouchUIEnabled) || this;\r\n }\r\n TextToolbox.prototype.createElements = function (element, shapeTypes) {\r\n var _this = this;\r\n shapeTypes.forEach(function (shapeType) {\r\n var description = _this.shapeDescriptionManager.get(shapeType);\r\n var itemEl = document.createElement(\"div\");\r\n itemEl.setAttribute(\"class\", \"toolbox-text-item\");\r\n itemEl.setAttribute(\"data-tb-type\", shapeType);\r\n itemEl.textContent = description.getDefaultText() || description.getTitle();\r\n element.appendChild(itemEl);\r\n });\r\n };\r\n TextToolbox.prototype.createDraggingElement = function (draggingObject) {\r\n var element = document.createElement(\"DIV\");\r\n element.setAttribute(\"class\", \"dxdi-toolbox-drag-text-item\");\r\n var shapeDescription = this.shapeDescriptionManager.get(draggingObject.evt.data);\r\n element.textContent = shapeDescription.getDefaultText() || shapeDescription.getTitle();\r\n document.body.appendChild(element);\r\n return element;\r\n };\r\n return TextToolbox;\r\n}(Toolbox_1.Toolbox));\r\nexports.TextToolbox = TextToolbox;\r\n\n\n/***/ }),\n/* 353 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.IconToolbox = void 0;\r\nvar Toolbox_1 = __webpack_require__(158);\r\nvar RenderHelper_1 = __webpack_require__(15);\r\nvar Shape_1 = __webpack_require__(13);\r\nvar unit_converter_1 = __webpack_require__(11);\r\nvar point_1 = __webpack_require__(1);\r\nvar TextShapeDescription_1 = __webpack_require__(122);\r\nvar Style_1 = __webpack_require__(27);\r\nvar CustomShapeDescription_1 = __webpack_require__(127);\r\nvar RectaglePrimitive_1 = __webpack_require__(21);\r\nvar DEFAULT_SHAPE_ICON_SIZE = 32;\r\nvar SHRINK_TEXT_SHAPE_ICON_SIZE = 26;\r\nvar SHRINKED_TEXT = \"T\";\r\nvar IconToolbox = /** @class */ (function (_super) {\r\n __extends(IconToolbox, _super);\r\n function IconToolbox(parent, readonly, allowDragging, shapeDescriptionManager, shapeTypes, getAllowedShapeTypes, options, measurer, isTouchUIEnabled) {\r\n var _this = _super.call(this, parent, readonly, allowDragging, shapeDescriptionManager, shapeTypes, getAllowedShapeTypes, isTouchUIEnabled) || this;\r\n _this.options = options;\r\n _this.measurer = measurer;\r\n return _this;\r\n }\r\n IconToolbox.prototype.createElements = function (element, shapeTypes) {\r\n var svgElement = document.createElementNS(RenderHelper_1.svgNS, \"svg\");\r\n svgElement.className.baseVal = \"dxdi-canvas\";\r\n element.appendChild(svgElement);\r\n this.drawShapeIcons(svgElement, shapeTypes, this.options.toolboxWidth || svgElement.getBoundingClientRect().width);\r\n };\r\n IconToolbox.prototype.drawShapeIcons = function (parent, shapeTypes, svgWidth) {\r\n var _this = this;\r\n var lineWidth = Style_1.DEFAULT_STROKE_WIDTH;\r\n var targetWidth = svgWidth - 2 * lineWidth;\r\n var shapeIconSize = this.options.shapeIconSize;\r\n if (!shapeIconSize && this.options.shapeIconSpacing && this.options.shapeIconCountInRow)\r\n shapeIconSize = Math.floor((targetWidth - (this.options.shapeIconCountInRow - 1) * this.options.shapeIconSpacing) / this.options.shapeIconCountInRow);\r\n if (!shapeIconSize)\r\n shapeIconSize = DEFAULT_SHAPE_ICON_SIZE;\r\n shapeIconSize = Math.max(shapeIconSize, this.options.shapeIconSpacing / 2);\r\n var width = shapeIconSize;\r\n var iconCountInRow = this.options.shapeIconCountInRow;\r\n if (!iconCountInRow) {\r\n iconCountInRow = 1;\r\n while (width < targetWidth) {\r\n width += this.options.shapeIconSpacing + shapeIconSize;\r\n if (width < targetWidth)\r\n iconCountInRow++;\r\n }\r\n }\r\n var shapeIconSpacing = (iconCountInRow > 1) ? (targetWidth - shapeIconSize * iconCountInRow) / (iconCountInRow - 1) : 0;\r\n var xPos = lineWidth;\r\n var yPos = lineWidth;\r\n var size = unit_converter_1.UnitConverter.pixelsToTwips(shapeIconSize);\r\n shapeTypes.forEach(function (shapeType, index) {\r\n if (index > 0 && index % iconCountInRow === 0) {\r\n xPos = lineWidth;\r\n yPos += shapeIconSize + shapeIconSpacing;\r\n }\r\n var shapeDescription = _this.shapeDescriptionManager.get(shapeType);\r\n var shape = _this.createShape(shapeDescription, xPos, yPos, shapeIconSize < SHRINK_TEXT_SHAPE_ICON_SIZE);\r\n _this.updateShapeIconBounds(shape, shapeIconSize);\r\n var shapeEl = _this.drawShape(parent, shape);\r\n _this.drawSelector(shapeEl, unit_converter_1.UnitConverter.pixelsToTwips(xPos), unit_converter_1.UnitConverter.pixelsToTwips(yPos), size);\r\n xPos += shapeIconSize + shapeIconSpacing;\r\n });\r\n parent.style.height = yPos + shapeIconSize + lineWidth + \"px\";\r\n parent.style.width = svgWidth + \"px\";\r\n };\r\n IconToolbox.prototype.drawShape = function (parent, shape) {\r\n var _this = this;\r\n var primitives = shape.description.createPrimitives(shape, true);\r\n var gEl = document.createElementNS(RenderHelper_1.svgNS, \"g\");\r\n gEl.setAttribute(\"data-tb-type\", shape.description.key.toString());\r\n gEl.setAttribute(\"class\", \"toolbox-item\");\r\n gEl.setAttribute(\"title\", shape.description.getTitle());\r\n if (this.options.shapeIconAttributes)\r\n for (var key in this.options.shapeIconAttributes)\r\n if (Object.prototype.hasOwnProperty.call(this.options.shapeIconAttributes, key))\r\n gEl.setAttribute(key, this.options.shapeIconAttributes[key]);\r\n parent.appendChild(gEl);\r\n primitives.forEach(function (pr) {\r\n var el = pr.createElement(function (e) { return gEl.appendChild(e); });\r\n pr.applyElementProperties(el, _this.measurer);\r\n });\r\n return gEl;\r\n };\r\n IconToolbox.prototype.drawSelector = function (parent, x, y, size) {\r\n var _this = this;\r\n var selectorRect = new RectaglePrimitive_1.RectanglePrimitive(x, y, size, size, undefined, \"selector\");\r\n selectorRect.createElement(function (el) {\r\n selectorRect.applyElementProperties(el, _this.measurer);\r\n parent.appendChild(el);\r\n });\r\n };\r\n IconToolbox.prototype.createShape = function (shapeDescription, xPos, yPos, shrinkText) {\r\n var xPosT = unit_converter_1.UnitConverter.pixelsToTwips(xPos);\r\n var yPosT = unit_converter_1.UnitConverter.pixelsToTwips(yPos);\r\n var shape = new Shape_1.Shape(shapeDescription, new point_1.Point(xPosT, yPosT), true);\r\n if (this.needResetShapeText(shapeDescription))\r\n shape.text = \"\";\r\n else if (shrinkText)\r\n shape.text = SHRINKED_TEXT;\r\n return shape;\r\n };\r\n IconToolbox.prototype.needResetShapeText = function (shapeDescription) {\r\n if (shapeDescription instanceof TextShapeDescription_1.TextShapeDescription)\r\n return false;\r\n if (shapeDescription instanceof CustomShapeDescription_1.CustomShapeDescription && shapeDescription.baseDescription instanceof TextShapeDescription_1.TextShapeDescription)\r\n return false;\r\n return true;\r\n };\r\n IconToolbox.prototype.updateShapeIconBounds = function (shape, shapeIconSize) {\r\n var shapeSizeT = unit_converter_1.UnitConverter.pixelsToTwips(shapeIconSize);\r\n shape.size.height = shape.size.width * shape.getToolboxHeightToWidthRatio();\r\n if (shape.size.width > shape.size.height) {\r\n var ratio = shape.size.height / shape.size.width;\r\n shape.size.width = shapeSizeT;\r\n shape.size.height = shapeSizeT * ratio;\r\n shape.position.y = shape.position.y + (shapeSizeT - shape.size.height) / 2;\r\n shape.parameters.forEach(function (p) { p.value = p.value * shapeSizeT / shape.description.defaultSize.width; });\r\n }\r\n else if (shape.size.width < shape.size.height) {\r\n var ratio = shape.size.width / shape.size.height;\r\n shape.size.height = shapeSizeT;\r\n shape.size.width = shapeSizeT * ratio;\r\n shape.position.x = shape.position.x + (shapeSizeT - shape.size.width) / 2;\r\n shape.parameters.forEach(function (p) { p.value = p.value * shapeSizeT / shape.description.defaultSize.height; });\r\n }\r\n else {\r\n shape.size.width = shapeSizeT;\r\n shape.size.height = shapeSizeT;\r\n shape.parameters.forEach(function (p) { p.value = p.value * shapeSizeT / shape.description.defaultSize.width; });\r\n }\r\n };\r\n IconToolbox.prototype.createDraggingElement = function (draggingObject) {\r\n var element = document.createElement(\"DIV\");\r\n element.setAttribute(\"class\", \"dxdi-toolbox-drag-item\");\r\n document.body.appendChild(element);\r\n var svgElement = document.createElementNS(RenderHelper_1.svgNS, \"svg\");\r\n svgElement.className.baseVal = \"dxdi-canvas\";\r\n element.appendChild(svgElement);\r\n var shapeDescription = this.shapeDescriptionManager.get(draggingObject.evt.data);\r\n var shape = this.createShape(shapeDescription, Style_1.DEFAULT_STROKE_WIDTH, Style_1.DEFAULT_STROKE_WIDTH);\r\n this.drawShape(svgElement, shape);\r\n element.style.width = unit_converter_1.UnitConverter.twipsToPixels(shape.size.width) + 2 * Style_1.DEFAULT_STROKE_WIDTH + \"px\";\r\n element.style.height = unit_converter_1.UnitConverter.twipsToPixels(shape.size.height) + 2 * Style_1.DEFAULT_STROKE_WIDTH + \"px\";\r\n return element;\r\n };\r\n return IconToolbox;\r\n}(Toolbox_1.Toolbox));\r\nexports.IconToolbox = IconToolbox;\r\n\n\n/***/ }),\n/* 354 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ApiController = void 0;\r\nvar batch_updatable_1 = __webpack_require__(80);\r\nvar Event_1 = __webpack_require__(14);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar __1 = __webpack_require__(107);\r\nvar ApiController = /** @class */ (function (_super) {\r\n __extends(ApiController, _super);\r\n function ApiController(events, selection, model) {\r\n var _this = _super.call(this) || this;\r\n _this.events = events;\r\n _this.model = model;\r\n _this.selection = selection;\r\n return _this;\r\n }\r\n ApiController.prototype.notifySelectionChanged = function (selection) {\r\n if (this.isUpdateLocked())\r\n this.registerOccurredEvent(ApiControllerAction.SelectionChanged);\r\n else\r\n this.raiseSelectionChanged();\r\n };\r\n ApiController.prototype.notifyToolboxDragStart = function () {\r\n this.events.raise(\"notifyToolboxItemDragStart\");\r\n };\r\n ApiController.prototype.notifyToolboxDragEnd = function () {\r\n this.events.raise(\"notifyToolboxItemDragEnd\");\r\n };\r\n ApiController.prototype.notifyClick = function (evt) {\r\n var _this = this;\r\n this.tryRaiseUserAction(evt, function (i) { return _this.events.raise(\"notifyItemClick\", i); });\r\n };\r\n ApiController.prototype.notifyDblClick = function (evt) {\r\n var _this = this;\r\n this.tryRaiseUserAction(evt, function (i) { return _this.events.raise(\"notifyItemDblClick\", i); });\r\n };\r\n ApiController.prototype.createNativeItem = function (item) {\r\n return item && this.cleanupNativeItem(item.toNative(this.model.units));\r\n };\r\n ApiController.prototype.createNativeShape = function (shape) {\r\n return this.createNativeItem(shape);\r\n };\r\n ApiController.prototype.createNativeConnector = function (connector) {\r\n return this.createNativeItem(connector);\r\n };\r\n ApiController.prototype.convertUnit = function (value) {\r\n return ModelUtils_1.ModelUtils.getlUnitValue(this.model.units, value);\r\n };\r\n ApiController.prototype.convertPoint = function (point) {\r\n return new __1.Point(this.convertUnit(point.x), this.convertUnit(point.y));\r\n };\r\n ApiController.prototype.convertSize = function (size) {\r\n return new __1.Size(this.convertUnit(size.width), this.convertUnit(size.height));\r\n };\r\n ApiController.prototype.cleanupNativeItem = function (item) {\r\n var ds = this.dataSource;\r\n if (ds) {\r\n if (ds.isAutoGeneratedKey(item.fromKey))\r\n item.fromKey = undefined;\r\n if (ds.isAutoGeneratedKey(item.key))\r\n item.key = undefined;\r\n if (ds.isAutoGeneratedKey(item.toKey))\r\n item.toKey = undefined;\r\n }\r\n return item;\r\n };\r\n ApiController.prototype.setDataSource = function (dataSource) {\r\n this.dataSource = dataSource;\r\n };\r\n ApiController.prototype.tryRaiseUserAction = function (evt, callEvent) {\r\n var _this = this;\r\n if (this.isUserAction(evt)) {\r\n var item_1 = this.model.findItem(evt.source.key);\r\n item_1 && this.events.raise1(function (l) { return callEvent(_this.createNativeItem(item_1)); });\r\n }\r\n };\r\n ApiController.prototype.isUserAction = function (evt) {\r\n return evt.source && (evt.source.type === Event_1.MouseEventElementType.Shape ||\r\n evt.source.type === Event_1.MouseEventElementType.ShapeExpandButton ||\r\n evt.source.type === Event_1.MouseEventElementType.ShapeParameterBox ||\r\n evt.source.type === Event_1.MouseEventElementType.ShapeResizeBox ||\r\n evt.source.type === Event_1.MouseEventElementType.ShapeConnectionPoint ||\r\n evt.source.type === Event_1.MouseEventElementType.Connector ||\r\n evt.source.type === Event_1.MouseEventElementType.ConnectorPoint ||\r\n evt.source.type === Event_1.MouseEventElementType.ConnectorSide ||\r\n evt.source.type === Event_1.MouseEventElementType.ConnectorOrthogonalSide ||\r\n evt.source.type === Event_1.MouseEventElementType.ConnectorText);\r\n };\r\n ApiController.prototype.onUpdateUnlocked = function (occurredEvents) {\r\n if (occurredEvents & ApiControllerAction.SelectionChanged)\r\n this.raiseSelectionChanged();\r\n };\r\n ApiController.prototype.raiseSelectionChanged = function () {\r\n var _this = this;\r\n var items = this.selection.getKeys().map(function (key) { return _this.createNativeItem(_this.model.findItem(key)); });\r\n this.events.raise1(function (l) { return l.notifySelectionChanged(items); });\r\n };\r\n return ApiController;\r\n}(batch_updatable_1.BatchUpdatableObject));\r\nexports.ApiController = ApiController;\r\nvar ApiControllerAction;\r\n(function (ApiControllerAction) {\r\n ApiControllerAction[ApiControllerAction[\"SelectionChanged\"] = 1] = \"SelectionChanged\";\r\n})(ApiControllerAction || (ApiControllerAction = {}));\r\n\n\n/***/ }),\n/* 355 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PermissionsProvider = void 0;\r\nvar Shape_1 = __webpack_require__(13);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar ModelOperationSettings_1 = __webpack_require__(16);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar AddShape_1 = __webpack_require__(356);\r\nvar DeleteShape_1 = __webpack_require__(357);\r\nvar DeleteConnector_1 = __webpack_require__(358);\r\nvar AddShapeFromToolbox_1 = __webpack_require__(359);\r\nvar ChangeConnection_1 = __webpack_require__(360);\r\nvar ChangeConnectorPoints_1 = __webpack_require__(361);\r\nvar BeforeChangeShapeText_1 = __webpack_require__(362);\r\nvar BeforeChangeConnectorText_1 = __webpack_require__(363);\r\nvar ChangeShapeText_1 = __webpack_require__(364);\r\nvar ChangeConnectorText_1 = __webpack_require__(365);\r\nvar PermissionsProviderStorage_1 = __webpack_require__(366);\r\nvar ResizeShape_1 = __webpack_require__(367);\r\nvar MoveShape_1 = __webpack_require__(368);\r\nvar PermissionsProvider = /** @class */ (function () {\r\n function PermissionsProvider(apiController) {\r\n this.onRequestOperation = new Utils_1.EventDispatcher();\r\n this.cache = [];\r\n this.permissionsLockCount = 0;\r\n this.requestDeleteItems = {};\r\n this.updateUICount = 0;\r\n this.apiController = apiController;\r\n this.operationSettings = new ModelOperationSettings_1.ModelOperationSettings();\r\n this.storage = new PermissionsProviderStorage_1.PermissionsProviderStorage();\r\n }\r\n PermissionsProvider.prototype.notifySelectionChanged = function (_selection) {\r\n this.clearCache();\r\n };\r\n PermissionsProvider.prototype.notifyModelChanged = function (changes) {\r\n this.clearCache();\r\n };\r\n PermissionsProvider.prototype.notifyPageColorChanged = function (color) { };\r\n PermissionsProvider.prototype.notifyPageSizeChanged = function (pageSize, pageLandscape) { };\r\n PermissionsProvider.prototype.clearCache = function (operation) {\r\n if (operation !== undefined)\r\n this.cache = this.cache.filter(function (entry) { return entry.operation !== operation; });\r\n else\r\n this.cache = [];\r\n };\r\n PermissionsProvider.prototype.canDeleteItems = function (items) {\r\n var _this = this;\r\n var allowed = true;\r\n items.forEach(function (item) {\r\n var entity;\r\n if (item instanceof Shape_1.Shape)\r\n entity = new DeleteShape_1.DeleteShapeRequestedEntity(_this.apiController, item);\r\n if (item instanceof Connector_1.Connector)\r\n entity = new DeleteConnector_1.DeleteConnectorRequestedEntity(_this.apiController, item);\r\n allowed = allowed && _this.requestOperation(entity);\r\n });\r\n return allowed;\r\n };\r\n PermissionsProvider.prototype.canAddItems = function (items) {\r\n var _this = this;\r\n var allowed = true;\r\n items.forEach(function (item) {\r\n if (item instanceof Shape_1.Shape)\r\n allowed = allowed && _this.requestOperation(new AddShape_1.AddShapeRequestedEntity(_this.apiController, item));\r\n if (item instanceof Connector_1.Connector) {\r\n allowed = allowed && _this.canChangeConnection(item, item.beginItem, undefined, Connector_1.ConnectorPosition.Begin, item.beginConnectionPointIndex);\r\n allowed = allowed && _this.canChangeConnection(item, item.endItem, undefined, Connector_1.ConnectorPosition.End, item.endConnectionPointIndex);\r\n }\r\n });\r\n return allowed;\r\n };\r\n PermissionsProvider.prototype.canAddShapeFromToolbox = function (itemType) {\r\n return this.requestOperation(new AddShapeFromToolbox_1.AddShapeFromToolboxRequestedEntity(this.apiController, itemType));\r\n };\r\n PermissionsProvider.prototype.canChangeConnection = function (connector, item, oldItem, position, connectionPointIndex) {\r\n if (connector && this.requestDeleteItems[connector.key])\r\n return true;\r\n if (item === undefined || item === null || item instanceof Shape_1.Shape)\r\n return this.requestOperation(new ChangeConnection_1.ChangeConnectionRequestedEntity(this.apiController, connector, item, oldItem, position, connectionPointIndex));\r\n return true;\r\n };\r\n PermissionsProvider.prototype.canChangeConnectorPoints = function (connector, oldPoints, points) {\r\n if (connector && this.requestDeleteItems[connector.key])\r\n return true;\r\n return this.requestOperation(new ChangeConnectorPoints_1.ChangeConnectorPointsRequestedEntity(this.apiController, connector, oldPoints, points));\r\n };\r\n PermissionsProvider.prototype.canChangeShapeText = function (shape) {\r\n return this.requestOperation(new BeforeChangeShapeText_1.BeforeChangeShapeTextRequestedEntity(this.apiController, shape));\r\n };\r\n PermissionsProvider.prototype.canChangeConnectorText = function (connector, position) {\r\n return this.requestOperation(new BeforeChangeConnectorText_1.BeforeChangeConnectorTextRequestedEntity(this.apiController, connector, position));\r\n };\r\n PermissionsProvider.prototype.canApplyShapeTextChange = function (shape, textToApply) {\r\n return this.requestOperation(new ChangeShapeText_1.ChangeShapeTextRequestedEntity(this.apiController, shape, textToApply));\r\n };\r\n PermissionsProvider.prototype.canApplyConnectorTextChange = function (connector, position, textToApply) {\r\n return this.requestOperation(new ChangeConnectorText_1.ChangeConnectorTextRequestedEntity(this.apiController, connector, position, textToApply));\r\n };\r\n PermissionsProvider.prototype.canResizeShapes = function (shapeInfo) {\r\n var _this = this;\r\n var allowed = true;\r\n shapeInfo.forEach(function (info) {\r\n allowed = allowed && _this.requestOperation(new ResizeShape_1.ResizeShapeRequestedEntity(_this.apiController, info.shape, info.oldSize, info.size));\r\n });\r\n return allowed;\r\n };\r\n PermissionsProvider.prototype.canMoveShapes = function (shapeInfo) {\r\n var _this = this;\r\n var allowed = true;\r\n shapeInfo.forEach(function (info) {\r\n allowed = allowed && _this.requestOperation(new MoveShape_1.MoveShapeRequestedEntity(_this.apiController, info.shape, info.oldPosition, info.position));\r\n });\r\n return allowed;\r\n };\r\n PermissionsProvider.prototype.requestOperation = function (entity) {\r\n var allowed = true;\r\n if (!this.permissionsLockCount) {\r\n var cachedEntity_1;\r\n if (this.updateUICount > 0)\r\n this.cache.forEach(function (item) {\r\n if (item.equals(entity)) {\r\n cachedEntity_1 = item;\r\n return;\r\n }\r\n });\r\n if (cachedEntity_1)\r\n allowed = cachedEntity_1.allowed;\r\n else {\r\n this.requestOperationCore(entity);\r\n if (this.updateUICount > 0)\r\n this.cache.push(entity);\r\n allowed = entity.allowed;\r\n }\r\n if (this.updateUICount === 0 && this.storage.needStorePermissions()) {\r\n this.storage.storePermission(entity.storageKey, allowed);\r\n return this.storage.isStoredPermissionsGranted();\r\n }\r\n }\r\n return allowed;\r\n };\r\n PermissionsProvider.prototype.requestOperationCore = function (entity) {\r\n entity.eventArgs.allowed = this.operationSettings[entity.settingsKey];\r\n entity.eventArgs.updateUI = this.updateUICount > 0;\r\n if (entity.allowed)\r\n this.onRequestOperation.raise(\"notifyRequestOperation\", entity.operation, entity.eventArgs);\r\n };\r\n PermissionsProvider.prototype.lockPermissions = function () {\r\n this.permissionsLockCount++;\r\n };\r\n PermissionsProvider.prototype.unlockPermissions = function () {\r\n this.permissionsLockCount--;\r\n };\r\n PermissionsProvider.prototype.beginDeleteItems = function (items) {\r\n var _this = this;\r\n items.forEach(function (item) { return _this.requestDeleteItems[item.key] = item; });\r\n };\r\n PermissionsProvider.prototype.endDeleteItems = function () {\r\n this.requestDeleteItems = {};\r\n };\r\n PermissionsProvider.prototype.beginUpdateUI = function () {\r\n this.updateUICount++;\r\n };\r\n PermissionsProvider.prototype.endUpdateUI = function () {\r\n this.updateUICount--;\r\n };\r\n PermissionsProvider.prototype.addInteractingItem = function (item, operation) {\r\n this.storage.addInteractingItem(item, operation);\r\n };\r\n PermissionsProvider.prototype.getInteractingItem = function (item, operation) {\r\n return this.storage.getInteractingItem(item, operation);\r\n };\r\n PermissionsProvider.prototype.getInteractingItemCount = function () {\r\n return this.storage.getInteractingItemCount();\r\n };\r\n PermissionsProvider.prototype.clearInteractingItems = function () {\r\n this.storage.clearInteractingItems();\r\n };\r\n PermissionsProvider.prototype.beginStorePermissions = function () {\r\n this.storage.beginStorePermissions();\r\n };\r\n PermissionsProvider.prototype.endStorePermissions = function () {\r\n this.storage.endStorePermissions();\r\n };\r\n PermissionsProvider.prototype.isStoredPermissionsGranted = function () {\r\n return this.permissionsLockCount > 0 || this.storage.isStoredPermissionsGranted();\r\n };\r\n return PermissionsProvider;\r\n}());\r\nexports.PermissionsProvider = PermissionsProvider;\r\n\n\n/***/ }),\n/* 356 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.AddShapeEventArgs = exports.AddShapeRequestedEntity = void 0;\r\nvar ModelOperationSettings_1 = __webpack_require__(16);\r\nvar RequestedEntity_1 = __webpack_require__(24);\r\nvar AddShapeRequestedEntity = /** @class */ (function (_super) {\r\n __extends(AddShapeRequestedEntity, _super);\r\n function AddShapeRequestedEntity(apiController, shape) {\r\n var _this = _super.call(this, apiController) || this;\r\n _this.shape = shape;\r\n return _this;\r\n }\r\n Object.defineProperty(AddShapeRequestedEntity.prototype, \"operation\", {\r\n get: function () {\r\n return ModelOperationSettings_1.DiagramModelOperation.AddShape;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n AddShapeRequestedEntity.prototype.createEventArgs = function () {\r\n return new AddShapeEventArgs(this.apiController.createNativeShape(this.shape), this.apiController.convertPoint(this.shape.position));\r\n };\r\n Object.defineProperty(AddShapeRequestedEntity.prototype, \"settingsKey\", {\r\n get: function () {\r\n return \"addShape\";\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(AddShapeRequestedEntity.prototype, \"storageKey\", {\r\n get: function () {\r\n return this.settingsKey + \"_\" + (this.shape && this.shape.key);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n AddShapeRequestedEntity.prototype.equals = function (other) {\r\n if (other instanceof AddShapeRequestedEntity)\r\n return this.shape === other.shape && this.shape.position.equals(other.shape.position);\r\n return false;\r\n };\r\n return AddShapeRequestedEntity;\r\n}(RequestedEntity_1.RequestedEntity));\r\nexports.AddShapeRequestedEntity = AddShapeRequestedEntity;\r\nvar AddShapeEventArgs = /** @class */ (function (_super) {\r\n __extends(AddShapeEventArgs, _super);\r\n function AddShapeEventArgs(shape, position) {\r\n var _this = _super.call(this) || this;\r\n _this.shape = shape;\r\n _this.position = position;\r\n return _this;\r\n }\r\n return AddShapeEventArgs;\r\n}(RequestedEntity_1.PermissionRequestEventArgs));\r\nexports.AddShapeEventArgs = AddShapeEventArgs;\r\n\n\n/***/ }),\n/* 357 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DeleteShapeEventArgs = exports.DeleteShapeRequestedEntity = void 0;\r\nvar ModelOperationSettings_1 = __webpack_require__(16);\r\nvar RequestedEntity_1 = __webpack_require__(24);\r\nvar DeleteShapeRequestedEntity = /** @class */ (function (_super) {\r\n __extends(DeleteShapeRequestedEntity, _super);\r\n function DeleteShapeRequestedEntity(apiController, shape) {\r\n var _this = _super.call(this, apiController) || this;\r\n _this.shape = shape;\r\n return _this;\r\n }\r\n Object.defineProperty(DeleteShapeRequestedEntity.prototype, \"operation\", {\r\n get: function () {\r\n return ModelOperationSettings_1.DiagramModelOperation.DeleteShape;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n DeleteShapeRequestedEntity.prototype.createEventArgs = function () {\r\n return new DeleteShapeEventArgs(this.apiController.createNativeShape(this.shape));\r\n };\r\n Object.defineProperty(DeleteShapeRequestedEntity.prototype, \"settingsKey\", {\r\n get: function () {\r\n return \"deleteShape\";\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DeleteShapeRequestedEntity.prototype, \"storageKey\", {\r\n get: function () {\r\n return this.settingsKey + \"_\" + (this.shape && this.shape.key);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n DeleteShapeRequestedEntity.prototype.equals = function (other) {\r\n if (other instanceof DeleteShapeRequestedEntity)\r\n return this.shape === other.shape;\r\n return false;\r\n };\r\n return DeleteShapeRequestedEntity;\r\n}(RequestedEntity_1.RequestedEntity));\r\nexports.DeleteShapeRequestedEntity = DeleteShapeRequestedEntity;\r\nvar DeleteShapeEventArgs = /** @class */ (function (_super) {\r\n __extends(DeleteShapeEventArgs, _super);\r\n function DeleteShapeEventArgs(shape) {\r\n var _this = _super.call(this) || this;\r\n _this.shape = shape;\r\n return _this;\r\n }\r\n return DeleteShapeEventArgs;\r\n}(RequestedEntity_1.PermissionRequestEventArgs));\r\nexports.DeleteShapeEventArgs = DeleteShapeEventArgs;\r\n\n\n/***/ }),\n/* 358 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DeleteConnectorEventArgs = exports.DeleteConnectorRequestedEntity = void 0;\r\nvar ModelOperationSettings_1 = __webpack_require__(16);\r\nvar RequestedEntity_1 = __webpack_require__(24);\r\nvar DeleteConnectorRequestedEntity = /** @class */ (function (_super) {\r\n __extends(DeleteConnectorRequestedEntity, _super);\r\n function DeleteConnectorRequestedEntity(apiController, connector) {\r\n var _this = _super.call(this, apiController) || this;\r\n _this.connector = connector;\r\n return _this;\r\n }\r\n Object.defineProperty(DeleteConnectorRequestedEntity.prototype, \"operation\", {\r\n get: function () {\r\n return ModelOperationSettings_1.DiagramModelOperation.DeleteConnector;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n DeleteConnectorRequestedEntity.prototype.createEventArgs = function () {\r\n return new DeleteConnectorEventArgs(this.apiController.createNativeConnector(this.connector));\r\n };\r\n Object.defineProperty(DeleteConnectorRequestedEntity.prototype, \"settingsKey\", {\r\n get: function () {\r\n return \"deleteConnector\";\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DeleteConnectorRequestedEntity.prototype, \"storageKey\", {\r\n get: function () {\r\n return this.settingsKey + \"_\" + (this.connector && this.connector.key);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n DeleteConnectorRequestedEntity.prototype.equals = function (other) {\r\n if (other instanceof DeleteConnectorRequestedEntity)\r\n return this.connector === other.connector;\r\n return false;\r\n };\r\n return DeleteConnectorRequestedEntity;\r\n}(RequestedEntity_1.RequestedEntity));\r\nexports.DeleteConnectorRequestedEntity = DeleteConnectorRequestedEntity;\r\nvar DeleteConnectorEventArgs = /** @class */ (function (_super) {\r\n __extends(DeleteConnectorEventArgs, _super);\r\n function DeleteConnectorEventArgs(connector) {\r\n var _this = _super.call(this) || this;\r\n _this.connector = connector;\r\n return _this;\r\n }\r\n return DeleteConnectorEventArgs;\r\n}(RequestedEntity_1.PermissionRequestEventArgs));\r\nexports.DeleteConnectorEventArgs = DeleteConnectorEventArgs;\r\n\n\n/***/ }),\n/* 359 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.AddShapeFromToolboxEventArgs = exports.AddShapeFromToolboxRequestedEntity = void 0;\r\nvar ModelOperationSettings_1 = __webpack_require__(16);\r\nvar RequestedEntity_1 = __webpack_require__(24);\r\nvar AddShapeFromToolboxRequestedEntity = /** @class */ (function (_super) {\r\n __extends(AddShapeFromToolboxRequestedEntity, _super);\r\n function AddShapeFromToolboxRequestedEntity(apiController, shapeType) {\r\n var _this = _super.call(this, apiController) || this;\r\n _this.shapeType = shapeType;\r\n return _this;\r\n }\r\n Object.defineProperty(AddShapeFromToolboxRequestedEntity.prototype, \"operation\", {\r\n get: function () {\r\n return ModelOperationSettings_1.DiagramModelOperation.AddShapeFromToolbox;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n AddShapeFromToolboxRequestedEntity.prototype.createEventArgs = function () {\r\n return new AddShapeFromToolboxEventArgs(this.shapeType);\r\n };\r\n Object.defineProperty(AddShapeFromToolboxRequestedEntity.prototype, \"settingsKey\", {\r\n get: function () {\r\n return \"addShapeFromToolbox\";\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(AddShapeFromToolboxRequestedEntity.prototype, \"storageKey\", {\r\n get: function () {\r\n return this.settingsKey + \"_\" + this.shapeType;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n AddShapeFromToolboxRequestedEntity.prototype.equals = function (other) {\r\n if (other instanceof AddShapeFromToolboxRequestedEntity)\r\n return this.shapeType === other.shapeType;\r\n return false;\r\n };\r\n return AddShapeFromToolboxRequestedEntity;\r\n}(RequestedEntity_1.RequestedEntity));\r\nexports.AddShapeFromToolboxRequestedEntity = AddShapeFromToolboxRequestedEntity;\r\nvar AddShapeFromToolboxEventArgs = /** @class */ (function (_super) {\r\n __extends(AddShapeFromToolboxEventArgs, _super);\r\n function AddShapeFromToolboxEventArgs(shapeType) {\r\n var _this = _super.call(this) || this;\r\n _this.shapeType = shapeType;\r\n return _this;\r\n }\r\n return AddShapeFromToolboxEventArgs;\r\n}(RequestedEntity_1.PermissionRequestEventArgs));\r\nexports.AddShapeFromToolboxEventArgs = AddShapeFromToolboxEventArgs;\r\n\n\n/***/ }),\n/* 360 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeConnectionEventArgs = exports.ChangeConnectionRequestedEntity = void 0;\r\nvar ModelOperationSettings_1 = __webpack_require__(16);\r\nvar RequestedEntity_1 = __webpack_require__(24);\r\nvar ChangeConnectionRequestedEntity = /** @class */ (function (_super) {\r\n __extends(ChangeConnectionRequestedEntity, _super);\r\n function ChangeConnectionRequestedEntity(apiController, connector, shape, oldShape, position, connectionPointIndex) {\r\n var _this = _super.call(this, apiController) || this;\r\n _this.connector = connector;\r\n _this.shape = shape;\r\n _this.oldShape = oldShape;\r\n _this.position = position;\r\n _this.connectionPointIndex = connectionPointIndex;\r\n return _this;\r\n }\r\n Object.defineProperty(ChangeConnectionRequestedEntity.prototype, \"operation\", {\r\n get: function () {\r\n return ModelOperationSettings_1.DiagramModelOperation.ChangeConnection;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ChangeConnectionRequestedEntity.prototype.createEventArgs = function () {\r\n return new ChangeConnectionEventArgs(this.apiController.createNativeConnector(this.connector), this.apiController.createNativeShape(this.shape), this.apiController.createNativeShape(this.oldShape), this.position, this.connectionPointIndex);\r\n };\r\n Object.defineProperty(ChangeConnectionRequestedEntity.prototype, \"settingsKey\", {\r\n get: function () {\r\n return \"changeConnection\";\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ChangeConnectionRequestedEntity.prototype, \"storageKey\", {\r\n get: function () {\r\n return this.settingsKey + \"_\" + (this.connector && this.connector.key) + \"_\" + this.position;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ChangeConnectionRequestedEntity.prototype.equals = function (other) {\r\n if (other instanceof ChangeConnectionRequestedEntity) {\r\n var connectorsAreEqual = (!this.connector && !other.connector) || (this.connector && other.connector && this.connector === other.connector);\r\n var shapesAreEqual = (!this.shape && !other.shape) || (this.shape && other.shape && this.shape === other.shape);\r\n var oldShapesAreEqual = (!this.oldShape && !other.oldShape) || (this.oldShape && other.oldShape && this.oldShape === other.oldShape);\r\n return shapesAreEqual && oldShapesAreEqual && connectorsAreEqual && this.position === other.position && this.connectionPointIndex === other.connectionPointIndex;\r\n }\r\n return false;\r\n };\r\n return ChangeConnectionRequestedEntity;\r\n}(RequestedEntity_1.RequestedEntity));\r\nexports.ChangeConnectionRequestedEntity = ChangeConnectionRequestedEntity;\r\nvar ChangeConnectionEventArgs = /** @class */ (function (_super) {\r\n __extends(ChangeConnectionEventArgs, _super);\r\n function ChangeConnectionEventArgs(connector, shape, oldShape, position, connectionPointIndex) {\r\n var _this = _super.call(this) || this;\r\n _this.connector = connector;\r\n _this.shape = shape;\r\n _this.oldShape = oldShape;\r\n _this.position = position;\r\n _this.connectionPointIndex = connectionPointIndex;\r\n return _this;\r\n }\r\n return ChangeConnectionEventArgs;\r\n}(RequestedEntity_1.PermissionRequestEventArgs));\r\nexports.ChangeConnectionEventArgs = ChangeConnectionEventArgs;\r\n\n\n/***/ }),\n/* 361 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeConnectorPointsEventArgs = exports.ChangeConnectorPointsRequestedEntity = void 0;\r\nvar ModelOperationSettings_1 = __webpack_require__(16);\r\nvar RequestedEntity_1 = __webpack_require__(24);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar ChangeConnectorPointsRequestedEntity = /** @class */ (function (_super) {\r\n __extends(ChangeConnectorPointsRequestedEntity, _super);\r\n function ChangeConnectorPointsRequestedEntity(apiController, connector, oldPoints, points) {\r\n var _this = _super.call(this, apiController) || this;\r\n _this.connector = connector;\r\n _this.oldPoints = oldPoints;\r\n _this.points = points;\r\n return _this;\r\n }\r\n Object.defineProperty(ChangeConnectorPointsRequestedEntity.prototype, \"operation\", {\r\n get: function () {\r\n return ModelOperationSettings_1.DiagramModelOperation.ChangeConnectorPoints;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ChangeConnectorPointsRequestedEntity.prototype.createEventArgs = function () {\r\n var _this = this;\r\n return new ChangeConnectorPointsEventArgs(this.apiController.createNativeConnector(this.connector), this.oldPoints.map(function (pt) { return _this.apiController.convertPoint(pt); }), this.points.map(function (pt) { return _this.apiController.convertPoint(pt); }));\r\n };\r\n Object.defineProperty(ChangeConnectorPointsRequestedEntity.prototype, \"settingsKey\", {\r\n get: function () {\r\n return \"changeConnectorPoints\";\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ChangeConnectorPointsRequestedEntity.prototype, \"storageKey\", {\r\n get: function () {\r\n return this.settingsKey + \"_\" + (this.connector && this.connector.key);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ChangeConnectorPointsRequestedEntity.prototype.equals = function (other) {\r\n if (other instanceof ChangeConnectorPointsRequestedEntity)\r\n return this.connector === other.connector &&\r\n Utils_1.GeometryUtils.arePointsEqual(this.oldPoints, other.oldPoints) &&\r\n Utils_1.GeometryUtils.arePointsEqual(this.points, other.points);\r\n return false;\r\n };\r\n return ChangeConnectorPointsRequestedEntity;\r\n}(RequestedEntity_1.RequestedEntity));\r\nexports.ChangeConnectorPointsRequestedEntity = ChangeConnectorPointsRequestedEntity;\r\nvar ChangeConnectorPointsEventArgs = /** @class */ (function (_super) {\r\n __extends(ChangeConnectorPointsEventArgs, _super);\r\n function ChangeConnectorPointsEventArgs(connector, oldPoints, points) {\r\n var _this = _super.call(this) || this;\r\n _this.connector = connector;\r\n _this.oldPoints = oldPoints;\r\n _this.points = points;\r\n return _this;\r\n }\r\n return ChangeConnectorPointsEventArgs;\r\n}(RequestedEntity_1.PermissionRequestEventArgs));\r\nexports.ChangeConnectorPointsEventArgs = ChangeConnectorPointsEventArgs;\r\n\n\n/***/ }),\n/* 362 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.BeforeChangeShapeTextEventArgs = exports.BeforeChangeShapeTextRequestedEntity = void 0;\r\nvar ModelOperationSettings_1 = __webpack_require__(16);\r\nvar RequestedEntity_1 = __webpack_require__(24);\r\nvar BeforeChangeShapeTextRequestedEntity = /** @class */ (function (_super) {\r\n __extends(BeforeChangeShapeTextRequestedEntity, _super);\r\n function BeforeChangeShapeTextRequestedEntity(apiController, shape) {\r\n var _this = _super.call(this, apiController) || this;\r\n _this.shape = shape;\r\n return _this;\r\n }\r\n Object.defineProperty(BeforeChangeShapeTextRequestedEntity.prototype, \"operation\", {\r\n get: function () {\r\n return ModelOperationSettings_1.DiagramModelOperation.BeforeChangeShapeText;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n BeforeChangeShapeTextRequestedEntity.prototype.createEventArgs = function () {\r\n return new BeforeChangeShapeTextEventArgs(this.apiController.createNativeShape(this.shape));\r\n };\r\n Object.defineProperty(BeforeChangeShapeTextRequestedEntity.prototype, \"settingsKey\", {\r\n get: function () {\r\n return \"changeShapeText\";\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(BeforeChangeShapeTextRequestedEntity.prototype, \"storageKey\", {\r\n get: function () {\r\n return \"before\" + this.settingsKey + \"_\" + (this.shape && this.shape.key);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n BeforeChangeShapeTextRequestedEntity.prototype.equals = function (other) {\r\n if (other instanceof BeforeChangeShapeTextRequestedEntity)\r\n return this.shape === other.shape && this.shape.text === other.shape.text;\r\n return false;\r\n };\r\n return BeforeChangeShapeTextRequestedEntity;\r\n}(RequestedEntity_1.RequestedEntity));\r\nexports.BeforeChangeShapeTextRequestedEntity = BeforeChangeShapeTextRequestedEntity;\r\nvar BeforeChangeShapeTextEventArgs = /** @class */ (function (_super) {\r\n __extends(BeforeChangeShapeTextEventArgs, _super);\r\n function BeforeChangeShapeTextEventArgs(shape) {\r\n var _this = _super.call(this) || this;\r\n _this.shape = shape;\r\n return _this;\r\n }\r\n return BeforeChangeShapeTextEventArgs;\r\n}(RequestedEntity_1.PermissionRequestEventArgs));\r\nexports.BeforeChangeShapeTextEventArgs = BeforeChangeShapeTextEventArgs;\r\n\n\n/***/ }),\n/* 363 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.BeforeChangeConnectorTextEventArgs = exports.BeforeChangeConnectorTextRequestedEntity = void 0;\r\nvar ModelOperationSettings_1 = __webpack_require__(16);\r\nvar RequestedEntity_1 = __webpack_require__(24);\r\nvar BeforeChangeConnectorTextRequestedEntity = /** @class */ (function (_super) {\r\n __extends(BeforeChangeConnectorTextRequestedEntity, _super);\r\n function BeforeChangeConnectorTextRequestedEntity(apiController, connector, position) {\r\n var _this = _super.call(this, apiController) || this;\r\n _this.connector = connector;\r\n _this.position = position;\r\n return _this;\r\n }\r\n Object.defineProperty(BeforeChangeConnectorTextRequestedEntity.prototype, \"operation\", {\r\n get: function () {\r\n return ModelOperationSettings_1.DiagramModelOperation.BeforeChangeConnectorText;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n BeforeChangeConnectorTextRequestedEntity.prototype.createEventArgs = function () {\r\n return new BeforeChangeConnectorTextEventArgs(this.apiController.createNativeConnector(this.connector), this.position, this.connector.texts.map(function (t) { return t; }).sort(function (a, b) { return a.position - b.position; }).indexOf(this.connector.texts.get(this.position)));\r\n };\r\n Object.defineProperty(BeforeChangeConnectorTextRequestedEntity.prototype, \"settingsKey\", {\r\n get: function () {\r\n return \"changeConnectorText\";\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(BeforeChangeConnectorTextRequestedEntity.prototype, \"storageKey\", {\r\n get: function () {\r\n return \"before\" + this.settingsKey + \"_\" + (this.connector && this.connector.key);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n BeforeChangeConnectorTextRequestedEntity.prototype.equals = function (other) {\r\n if (other instanceof BeforeChangeConnectorTextRequestedEntity)\r\n return this.connector === other.connector && this.position === other.position && this.connector.texts.get(this.position) === other.connector.texts.get(other.position);\r\n return false;\r\n };\r\n return BeforeChangeConnectorTextRequestedEntity;\r\n}(RequestedEntity_1.RequestedEntity));\r\nexports.BeforeChangeConnectorTextRequestedEntity = BeforeChangeConnectorTextRequestedEntity;\r\nvar BeforeChangeConnectorTextEventArgs = /** @class */ (function (_super) {\r\n __extends(BeforeChangeConnectorTextEventArgs, _super);\r\n function BeforeChangeConnectorTextEventArgs(connector, position, index) {\r\n var _this = _super.call(this) || this;\r\n _this.connector = connector;\r\n _this.position = position;\r\n _this.index = index;\r\n return _this;\r\n }\r\n return BeforeChangeConnectorTextEventArgs;\r\n}(RequestedEntity_1.PermissionRequestEventArgs));\r\nexports.BeforeChangeConnectorTextEventArgs = BeforeChangeConnectorTextEventArgs;\r\n\n\n/***/ }),\n/* 364 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeShapeTextEventArgs = exports.ChangeShapeTextRequestedEntity = void 0;\r\nvar ModelOperationSettings_1 = __webpack_require__(16);\r\nvar RequestedEntity_1 = __webpack_require__(24);\r\nvar ChangeShapeTextRequestedEntity = /** @class */ (function (_super) {\r\n __extends(ChangeShapeTextRequestedEntity, _super);\r\n function ChangeShapeTextRequestedEntity(apiController, shape, text) {\r\n var _this = _super.call(this, apiController) || this;\r\n _this.shape = shape;\r\n _this.text = text;\r\n return _this;\r\n }\r\n Object.defineProperty(ChangeShapeTextRequestedEntity.prototype, \"operation\", {\r\n get: function () {\r\n return ModelOperationSettings_1.DiagramModelOperation.ChangeShapeText;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ChangeShapeTextRequestedEntity.prototype.createEventArgs = function () {\r\n return new ChangeShapeTextEventArgs(this.apiController.createNativeShape(this.shape), this.text);\r\n };\r\n Object.defineProperty(ChangeShapeTextRequestedEntity.prototype, \"settingsKey\", {\r\n get: function () {\r\n return \"changeShapeText\";\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ChangeShapeTextRequestedEntity.prototype, \"storageKey\", {\r\n get: function () {\r\n return this.settingsKey + \"_\" + (this.shape && this.shape.key);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ChangeShapeTextRequestedEntity.prototype.equals = function (other) {\r\n if (other instanceof ChangeShapeTextRequestedEntity)\r\n return this.shape === other.shape && this.text === other.text;\r\n return false;\r\n };\r\n return ChangeShapeTextRequestedEntity;\r\n}(RequestedEntity_1.RequestedEntity));\r\nexports.ChangeShapeTextRequestedEntity = ChangeShapeTextRequestedEntity;\r\nvar ChangeShapeTextEventArgs = /** @class */ (function (_super) {\r\n __extends(ChangeShapeTextEventArgs, _super);\r\n function ChangeShapeTextEventArgs(shape, text) {\r\n var _this = _super.call(this) || this;\r\n _this.shape = shape;\r\n _this.text = text;\r\n return _this;\r\n }\r\n return ChangeShapeTextEventArgs;\r\n}(RequestedEntity_1.PermissionRequestEventArgs));\r\nexports.ChangeShapeTextEventArgs = ChangeShapeTextEventArgs;\r\n\n\n/***/ }),\n/* 365 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ChangeConnectorTextEventArgs = exports.ChangeConnectorTextRequestedEntity = void 0;\r\nvar ModelOperationSettings_1 = __webpack_require__(16);\r\nvar RequestedEntity_1 = __webpack_require__(24);\r\nvar ChangeConnectorTextRequestedEntity = /** @class */ (function (_super) {\r\n __extends(ChangeConnectorTextRequestedEntity, _super);\r\n function ChangeConnectorTextRequestedEntity(apiController, connector, position, text) {\r\n var _this = _super.call(this, apiController) || this;\r\n _this.connector = connector;\r\n _this.position = position;\r\n _this.text = text;\r\n return _this;\r\n }\r\n Object.defineProperty(ChangeConnectorTextRequestedEntity.prototype, \"operation\", {\r\n get: function () {\r\n return ModelOperationSettings_1.DiagramModelOperation.ChangeConnectorText;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ChangeConnectorTextRequestedEntity.prototype.createEventArgs = function () {\r\n return new ChangeConnectorTextEventArgs(this.apiController.createNativeConnector(this.connector), this.position, this.connector.texts.map(function (t) { return t; }).sort(function (a, b) { return a.position - b.position; }).indexOf(this.connector.texts.get(this.position)), this.text);\r\n };\r\n Object.defineProperty(ChangeConnectorTextRequestedEntity.prototype, \"settingsKey\", {\r\n get: function () {\r\n return \"changeConnectorText\";\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ChangeConnectorTextRequestedEntity.prototype, \"storageKey\", {\r\n get: function () {\r\n return this.settingsKey + \"_\" + (this.connector && this.connector.key);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ChangeConnectorTextRequestedEntity.prototype.equals = function (other) {\r\n if (other instanceof ChangeConnectorTextRequestedEntity)\r\n return this.connector === other.connector && this.position === other.position && this.text === other.text;\r\n return false;\r\n };\r\n return ChangeConnectorTextRequestedEntity;\r\n}(RequestedEntity_1.RequestedEntity));\r\nexports.ChangeConnectorTextRequestedEntity = ChangeConnectorTextRequestedEntity;\r\nvar ChangeConnectorTextEventArgs = /** @class */ (function (_super) {\r\n __extends(ChangeConnectorTextEventArgs, _super);\r\n function ChangeConnectorTextEventArgs(connector, position, index, text) {\r\n var _this = _super.call(this) || this;\r\n _this.connector = connector;\r\n _this.position = position;\r\n _this.index = index;\r\n _this.text = text;\r\n return _this;\r\n }\r\n return ChangeConnectorTextEventArgs;\r\n}(RequestedEntity_1.PermissionRequestEventArgs));\r\nexports.ChangeConnectorTextEventArgs = ChangeConnectorTextEventArgs;\r\n\n\n/***/ }),\n/* 366 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PermissionsProviderStorage = void 0;\r\nvar Shape_1 = __webpack_require__(13);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar PermissionsProviderStorage = /** @class */ (function () {\r\n function PermissionsProviderStorage() {\r\n this.interactingItems = {};\r\n this.storedPermissions = {};\r\n }\r\n PermissionsProviderStorage.prototype.addInteractingItem = function (item, operation) {\r\n var key = this.getInteractingItemKey(item, operation);\r\n if (this.interactingItems[key] === undefined && (item instanceof Shape_1.Shape || item instanceof Connector_1.Connector))\r\n this.interactingItems[key] = item.clone();\r\n };\r\n PermissionsProviderStorage.prototype.getInteractingItem = function (item, operation) {\r\n var key = this.getInteractingItemKey(item, operation);\r\n return this.interactingItems[key];\r\n };\r\n PermissionsProviderStorage.prototype.getInteractingItemCount = function () {\r\n return Object.keys(this.interactingItems).length;\r\n };\r\n PermissionsProviderStorage.prototype.clearInteractingItems = function () {\r\n this.interactingItems = {};\r\n };\r\n PermissionsProviderStorage.prototype.getInteractingItemKey = function (item, operation) {\r\n return item.key + (operation !== undefined ? \"_\" + operation.toString() : \"\");\r\n };\r\n PermissionsProviderStorage.prototype.needStorePermissions = function () {\r\n return this.storePermissions;\r\n };\r\n PermissionsProviderStorage.prototype.beginStorePermissions = function () {\r\n this.storePermissions = true;\r\n };\r\n PermissionsProviderStorage.prototype.endStorePermissions = function () {\r\n this.storePermissions = false;\r\n this.storedPermissions = {};\r\n };\r\n PermissionsProviderStorage.prototype.isStoredPermissionsGranted = function () {\r\n var keys = Object.keys(this.storedPermissions);\r\n var granted = true;\r\n for (var i = 0; i < keys.length; i++)\r\n granted = granted && this.storedPermissions[keys[i]];\r\n return granted;\r\n };\r\n PermissionsProviderStorage.prototype.storePermission = function (key, allowed) {\r\n this.storedPermissions[key] = allowed;\r\n };\r\n return PermissionsProviderStorage;\r\n}());\r\nexports.PermissionsProviderStorage = PermissionsProviderStorage;\r\n\n\n/***/ }),\n/* 367 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ResizeShapeEventArgs = exports.ResizeShapeRequestedEntity = void 0;\r\nvar ModelOperationSettings_1 = __webpack_require__(16);\r\nvar RequestedEntity_1 = __webpack_require__(24);\r\nvar ResizeShapeRequestedEntity = /** @class */ (function (_super) {\r\n __extends(ResizeShapeRequestedEntity, _super);\r\n function ResizeShapeRequestedEntity(apiController, shape, oldSize, size) {\r\n var _this = _super.call(this, apiController) || this;\r\n _this.shape = shape;\r\n _this.oldSize = oldSize;\r\n _this.size = size;\r\n return _this;\r\n }\r\n Object.defineProperty(ResizeShapeRequestedEntity.prototype, \"operation\", {\r\n get: function () {\r\n return ModelOperationSettings_1.DiagramModelOperation.ResizeShape;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ResizeShapeRequestedEntity.prototype.createEventArgs = function () {\r\n return new ResizeShapeEventArgs(this.apiController.createNativeShape(this.shape), this.apiController.convertSize(this.oldSize), this.apiController.convertSize(this.size));\r\n };\r\n Object.defineProperty(ResizeShapeRequestedEntity.prototype, \"settingsKey\", {\r\n get: function () {\r\n return \"resizeShape\";\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ResizeShapeRequestedEntity.prototype, \"storageKey\", {\r\n get: function () {\r\n return this.settingsKey + \"_\" + (this.shape && this.shape.key);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ResizeShapeRequestedEntity.prototype.equals = function (other) {\r\n if (other instanceof ResizeShapeRequestedEntity)\r\n return this.shape === other.shape && this.oldSize.equals(other.oldSize) && this.size.equals(other.size);\r\n return false;\r\n };\r\n return ResizeShapeRequestedEntity;\r\n}(RequestedEntity_1.RequestedEntity));\r\nexports.ResizeShapeRequestedEntity = ResizeShapeRequestedEntity;\r\nvar ResizeShapeEventArgs = /** @class */ (function (_super) {\r\n __extends(ResizeShapeEventArgs, _super);\r\n function ResizeShapeEventArgs(shape, oldSize, size) {\r\n var _this = _super.call(this) || this;\r\n _this.shape = shape;\r\n _this.oldSize = oldSize;\r\n _this.size = size;\r\n return _this;\r\n }\r\n return ResizeShapeEventArgs;\r\n}(RequestedEntity_1.PermissionRequestEventArgs));\r\nexports.ResizeShapeEventArgs = ResizeShapeEventArgs;\r\n\n\n/***/ }),\n/* 368 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MoveShapeEventArgs = exports.MoveShapeRequestedEntity = void 0;\r\nvar ModelOperationSettings_1 = __webpack_require__(16);\r\nvar RequestedEntity_1 = __webpack_require__(24);\r\nvar MoveShapeRequestedEntity = /** @class */ (function (_super) {\r\n __extends(MoveShapeRequestedEntity, _super);\r\n function MoveShapeRequestedEntity(apiController, shape, oldPosition, position) {\r\n var _this = _super.call(this, apiController) || this;\r\n _this.shape = shape;\r\n _this.oldPosition = oldPosition;\r\n _this.position = position;\r\n return _this;\r\n }\r\n Object.defineProperty(MoveShapeRequestedEntity.prototype, \"operation\", {\r\n get: function () {\r\n return ModelOperationSettings_1.DiagramModelOperation.MoveShape;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n MoveShapeRequestedEntity.prototype.createEventArgs = function () {\r\n return new MoveShapeEventArgs(this.apiController.createNativeShape(this.shape), this.apiController.convertPoint(this.oldPosition), this.apiController.convertPoint(this.position));\r\n };\r\n Object.defineProperty(MoveShapeRequestedEntity.prototype, \"settingsKey\", {\r\n get: function () {\r\n return \"moveShape\";\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(MoveShapeRequestedEntity.prototype, \"storageKey\", {\r\n get: function () {\r\n return this.settingsKey + \"_\" + (this.shape && this.shape.key);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n MoveShapeRequestedEntity.prototype.equals = function (other) {\r\n if (other instanceof MoveShapeRequestedEntity)\r\n return this.shape === other.shape && this.oldPosition.equals(other.oldPosition) && this.position.equals(other.position);\r\n return false;\r\n };\r\n return MoveShapeRequestedEntity;\r\n}(RequestedEntity_1.RequestedEntity));\r\nexports.MoveShapeRequestedEntity = MoveShapeRequestedEntity;\r\nvar MoveShapeEventArgs = /** @class */ (function (_super) {\r\n __extends(MoveShapeEventArgs, _super);\r\n function MoveShapeEventArgs(shape, oldPosition, position) {\r\n var _this = _super.call(this) || this;\r\n _this.shape = shape;\r\n _this.oldPosition = oldPosition;\r\n _this.position = position;\r\n return _this;\r\n }\r\n return MoveShapeEventArgs;\r\n}(RequestedEntity_1.PermissionRequestEventArgs));\r\nexports.MoveShapeEventArgs = MoveShapeEventArgs;\r\n\n\n/***/ }),\n/* 369 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ConnectorRoutingModel = exports.ConnectorRoutingPenaltyDescription = void 0;\r\nvar Settings_1 = __webpack_require__(28);\r\nvar Shape_1 = __webpack_require__(13);\r\nvar Connector_1 = __webpack_require__(6);\r\nvar ConnectorProperties_1 = __webpack_require__(30);\r\nvar RightAngleConnectorRoutingStrategy_1 = __webpack_require__(370);\r\nvar ConnectorRoutingPenaltyDescription = /** @class */ (function () {\r\n function ConnectorRoutingPenaltyDescription() {\r\n this.shape = 20.0;\r\n this.margin = 2.0;\r\n this.turnBack = 20.0;\r\n this.turnLeft = 3.1;\r\n this.turnRight = 3.0;\r\n }\r\n return ConnectorRoutingPenaltyDescription;\r\n}());\r\nexports.ConnectorRoutingPenaltyDescription = ConnectorRoutingPenaltyDescription;\r\nvar ConnectorRoutingModel = /** @class */ (function () {\r\n function ConnectorRoutingModel() {\r\n this.connectorRoutingMode = Settings_1.ConnectorRoutingMode.AllShapesOnly;\r\n this.shapeMargins = Connector_1.Connector.minOffset;\r\n this.shouldReverseConnections = true;\r\n this.shouldResizeConnections = true;\r\n this.penaltyDescription = new ConnectorRoutingPenaltyDescription();\r\n }\r\n ConnectorRoutingModel.prototype.initialize = function (model) {\r\n this.model = model;\r\n };\r\n ConnectorRoutingModel.prototype.createStrategy = function (option) {\r\n if (this.model !== undefined && this.connectorRoutingMode !== Settings_1.ConnectorRoutingMode.None && option === ConnectorProperties_1.ConnectorLineOption.Orthogonal)\r\n return new RightAngleConnectorRoutingStrategy_1.RightAngleConnectorRoutingStrategy(this);\r\n return undefined;\r\n };\r\n ConnectorRoutingModel.prototype.getItems = function (beginConnectorShape, endConnectorShape) {\r\n return this.getShapes(beginConnectorShape, endConnectorShape);\r\n };\r\n ConnectorRoutingModel.prototype.notifyConnectorRoutingModeChanged = function (connectorRoutingMode) {\r\n this.connectorRoutingMode = connectorRoutingMode;\r\n };\r\n ConnectorRoutingModel.prototype.getShapes = function (beginConnectorShape, endConnectorShape) {\r\n if (this.model === undefined || this.connectorRoutingMode === undefined || this.connectorRoutingMode === Settings_1.ConnectorRoutingMode.None)\r\n return [];\r\n if (this.connectorRoutingMode === Settings_1.ConnectorRoutingMode.AllShapesOnly)\r\n return this.model.items.filter(function (i) { return i instanceof Shape_1.Shape; });\r\n return this.getConnectorShapes(beginConnectorShape, endConnectorShape);\r\n };\r\n ConnectorRoutingModel.prototype.getConnectorShapes = function (beginConnectorShape, endConnectorShape) {\r\n var result = [];\r\n if (beginConnectorShape)\r\n result.push(beginConnectorShape);\r\n if (endConnectorShape && beginConnectorShape !== endConnectorShape)\r\n result.push(endConnectorShape);\r\n return result;\r\n };\r\n return ConnectorRoutingModel;\r\n}());\r\nexports.ConnectorRoutingModel = ConnectorRoutingModel;\r\n\n\n/***/ }),\n/* 370 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RightAngleConnectorRoutingStrategy = void 0;\r\nvar segment_1 = __webpack_require__(33);\r\nvar ConnectorRenderPoint_1 = __webpack_require__(29);\r\nvar RightAngleConnectorRoutingContext_1 = __webpack_require__(371);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar RightAngleConnectorRoutingStrategy = /** @class */ (function () {\r\n function RightAngleConnectorRoutingStrategy(model) {\r\n this.model = model;\r\n }\r\n RightAngleConnectorRoutingStrategy.prototype.createRenderPoints = function (points, supportRenderPoints, beginConnectionShape, endConnectionShape, beginConnectionPointIndex, endConnectionPointIndex, container) {\r\n if (supportRenderPoints.length > 1) {\r\n var context = new RightAngleConnectorRoutingContext_1.RightAngleConnectorRoutingContext(this.model, points, supportRenderPoints, beginConnectionShape, endConnectionShape, beginConnectionPointIndex, endConnectionPointIndex);\r\n context.initialize(container);\r\n if (context.shouldCreateRenderPoints)\r\n return this.createRenderPointsCore(context);\r\n }\r\n };\r\n RightAngleConnectorRoutingStrategy.prototype.clone = function () {\r\n return new RightAngleConnectorRoutingStrategy(this.model);\r\n };\r\n RightAngleConnectorRoutingStrategy.prototype.onAddPoint = function (points, pointIndex, point, oldRenderPoints) {\r\n var renderPoints = oldRenderPoints.map(function (p) { return new ConnectorRenderPoint_1.ConnectorRenderPoint(p.x, p.y, p.pointIndex); });\r\n var renderPointIndex = ModelUtils_1.ModelUtils.findFirstPointIndex(renderPoints, function (p) { return p.equals(point); });\r\n if (renderPointIndex === 0) {\r\n renderPoints.splice(1, 0, new ConnectorRenderPoint_1.ConnectorRenderPoint(point.x, point.y, pointIndex));\r\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, 2);\r\n }\r\n var lastRenderPointIndex = renderPoints.length - 1;\r\n if (renderPointIndex === lastRenderPointIndex) {\r\n renderPoints.splice(lastRenderPointIndex, 0, new ConnectorRenderPoint_1.ConnectorRenderPoint(point.x, point.y, pointIndex));\r\n renderPoints[lastRenderPointIndex + 1].pointIndex = pointIndex + 1;\r\n return renderPoints;\r\n }\r\n if (renderPointIndex > 0) {\r\n var oldRenderPoint = renderPoints[renderPointIndex];\r\n renderPoints[renderPointIndex] = new ConnectorRenderPoint_1.ConnectorRenderPoint(oldRenderPoint.x, oldRenderPoint.y, pointIndex, oldRenderPoint.skipped);\r\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, renderPointIndex + 1);\r\n }\r\n var firstSegment = new segment_1.Segment(renderPoints[0], renderPoints[1]);\r\n var newRenderPoint = new ConnectorRenderPoint_1.ConnectorRenderPoint(point.x, point.y);\r\n if (firstSegment.containsPoint(newRenderPoint)) {\r\n renderPoints.splice(1, 0, new ConnectorRenderPoint_1.ConnectorRenderPoint(newRenderPoint.x, newRenderPoint.y, -1));\r\n renderPoints.splice(2, 0, new ConnectorRenderPoint_1.ConnectorRenderPoint(newRenderPoint.x, newRenderPoint.y, pointIndex));\r\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, 3);\r\n }\r\n var lastSegment = new segment_1.Segment(renderPoints[lastRenderPointIndex - 1], renderPoints[lastRenderPointIndex]);\r\n if (lastSegment.containsPoint(newRenderPoint)) {\r\n renderPoints.splice(lastRenderPointIndex, 0, new ConnectorRenderPoint_1.ConnectorRenderPoint(newRenderPoint.x, newRenderPoint.y, pointIndex));\r\n renderPoints.splice(lastRenderPointIndex + 1, 0, new ConnectorRenderPoint_1.ConnectorRenderPoint(newRenderPoint.x, newRenderPoint.y, -1));\r\n renderPoints[lastRenderPointIndex + 2].pointIndex = pointIndex + 1;\r\n return renderPoints;\r\n }\r\n return oldRenderPoints;\r\n };\r\n RightAngleConnectorRoutingStrategy.prototype.onDeletePoint = function (points, pointIndex, oldRenderPoints) {\r\n var renderPoints = oldRenderPoints.map(function (p) { return new ConnectorRenderPoint_1.ConnectorRenderPoint(p.x, p.y, p.pointIndex); });\r\n var renderPointIndex = this.getRenderPointIndexByPointIndex(renderPoints, pointIndex);\r\n if (renderPointIndex === 1) {\r\n var previuosRenderPoint = renderPoints[0];\r\n var currentRenderPoint_1 = renderPoints[1];\r\n if (previuosRenderPoint.equals(currentRenderPoint_1)) {\r\n renderPoints.splice(1, 1);\r\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, 1);\r\n }\r\n renderPoints[1] = new ConnectorRenderPoint_1.ConnectorRenderPoint(currentRenderPoint_1.x, currentRenderPoint_1.y, -1, currentRenderPoint_1.skipped);\r\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, 2);\r\n }\r\n if (renderPointIndex === 2) {\r\n var previuosRenderPoint = renderPoints[1];\r\n var currentRenderPoint_2 = renderPoints[2];\r\n if (previuosRenderPoint.equals(currentRenderPoint_2)) {\r\n renderPoints.splice(1, 2);\r\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, 1);\r\n }\r\n renderPoints[2] = new ConnectorRenderPoint_1.ConnectorRenderPoint(currentRenderPoint_2.x, currentRenderPoint_2.y, -1, currentRenderPoint_2.skipped);\r\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, 3);\r\n }\r\n var lastRenderPointIndex = renderPoints.length - 1;\r\n if (renderPointIndex === lastRenderPointIndex - 1) {\r\n var currentRenderPoint_3 = renderPoints[lastRenderPointIndex - 1];\r\n var nextRenderPoint = renderPoints[lastRenderPointIndex];\r\n if (currentRenderPoint_3.equals(nextRenderPoint)) {\r\n renderPoints.splice(lastRenderPointIndex - 1, 1);\r\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, lastRenderPointIndex - 1);\r\n }\r\n renderPoints[lastRenderPointIndex - 1] = new ConnectorRenderPoint_1.ConnectorRenderPoint(currentRenderPoint_3.x, currentRenderPoint_3.y, -1, currentRenderPoint_3.skipped);\r\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, lastRenderPointIndex);\r\n }\r\n if (renderPointIndex === lastRenderPointIndex - 2) {\r\n var currentRenderPoint_4 = renderPoints[lastRenderPointIndex - 2];\r\n var nextRenderPoint = renderPoints[lastRenderPointIndex - 1];\r\n if (currentRenderPoint_4.equals(nextRenderPoint)) {\r\n renderPoints.splice(lastRenderPointIndex - 2, 2);\r\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, lastRenderPointIndex - 2);\r\n }\r\n renderPoints[lastRenderPointIndex - 2] = new ConnectorRenderPoint_1.ConnectorRenderPoint(currentRenderPoint_4.x, currentRenderPoint_4.y, -1, currentRenderPoint_4.skipped);\r\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, lastRenderPointIndex - 1);\r\n }\r\n var currentRenderPoint = renderPoints[renderPointIndex];\r\n renderPoints[renderPointIndex] = new ConnectorRenderPoint_1.ConnectorRenderPoint(currentRenderPoint.x, currentRenderPoint.y, -1, currentRenderPoint.skipped);\r\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, renderPointIndex + 1);\r\n };\r\n RightAngleConnectorRoutingStrategy.prototype.onMovePoint = function (points, pointIndex, point, oldRenderPoints) {\r\n if (pointIndex === 0 || pointIndex === points.length - 1)\r\n return oldRenderPoints;\r\n var renderPoints = oldRenderPoints.map(function (p) { return new ConnectorRenderPoint_1.ConnectorRenderPoint(p.x, p.y, p.pointIndex); });\r\n this.onMovePointCore(renderPoints, pointIndex, point);\r\n ModelUtils_1.ModelUtils.skipUnnecessaryRightAngleRenderPoints(renderPoints);\r\n return renderPoints;\r\n };\r\n RightAngleConnectorRoutingStrategy.prototype.onMovePoints = function (points, beginPointIndex, beginPoint, lastPointIndex, lastPoint, oldRenderPoints) {\r\n if (beginPointIndex === 0 || lastPointIndex === points.length - 1)\r\n return oldRenderPoints;\r\n var renderPoints = oldRenderPoints.map(function (p) { return new ConnectorRenderPoint_1.ConnectorRenderPoint(p.x, p.y, p.pointIndex); });\r\n this.onMovePointCore(renderPoints, beginPointIndex, beginPoint);\r\n this.onMovePointCore(renderPoints, lastPointIndex, lastPoint);\r\n ModelUtils_1.ModelUtils.skipUnnecessaryRightAngleRenderPoints(renderPoints);\r\n return renderPoints;\r\n };\r\n RightAngleConnectorRoutingStrategy.prototype.onMovePointCore = function (newRenderPoints, pointIndex, newPoint) {\r\n var renderPointIndex = this.getRenderPointIndexByPointIndex(newRenderPoints, pointIndex);\r\n if (renderPointIndex >= 0) {\r\n var oldRenderPoint = newRenderPoints[renderPointIndex];\r\n newRenderPoints[renderPointIndex] = new ConnectorRenderPoint_1.ConnectorRenderPoint(newPoint.x, newPoint.y, pointIndex, oldRenderPoint.skipped);\r\n }\r\n };\r\n RightAngleConnectorRoutingStrategy.prototype.createRenderPointsCore = function (context) {\r\n var result = [];\r\n var currentIndex = -1;\r\n var currentRenderSegment;\r\n var currentStartCustomPointIndex = -1;\r\n context.setup();\r\n var renderSegments = context.renderSegments;\r\n var endPoint = renderSegments[renderSegments.length - 1].endPoint;\r\n var points = context.points;\r\n do {\r\n this.registerCustomPoints(result, points, currentStartCustomPointIndex + 2, renderSegments[currentIndex + 1].startPointIndex - 1);\r\n currentIndex++;\r\n currentRenderSegment = renderSegments[currentIndex];\r\n currentStartCustomPointIndex = currentRenderSegment.startPointIndex;\r\n this.registerRenderPoints(result, context.createRoutedPoints(currentRenderSegment.startInfo, currentRenderSegment.endInfo, currentRenderSegment.createProhibitedSegments()), currentStartCustomPointIndex);\r\n } while (!currentRenderSegment.endPoint.equals(endPoint));\r\n context.validateRenderPoints(result);\r\n return result;\r\n };\r\n RightAngleConnectorRoutingStrategy.prototype.getRenderPointIndexByPointIndex = function (points, index) {\r\n return ModelUtils_1.ModelUtils.findFirstPointIndex(points, function (p) { return p.pointIndex === index; });\r\n };\r\n RightAngleConnectorRoutingStrategy.prototype.registerRenderPoints = function (resultPath, routedPoints, beginPointIndex) {\r\n var _this = this;\r\n routedPoints.forEach(function (p, i) {\r\n var pointIndex = i === 0 ? beginPointIndex : (i === routedPoints.length - 1 ? beginPointIndex + 1 : -1);\r\n _this.registerPoint(resultPath, p, pointIndex);\r\n });\r\n };\r\n RightAngleConnectorRoutingStrategy.prototype.registerCustomPoints = function (resultPath, points, startIndex, endIndex) {\r\n for (var i = startIndex; i <= endIndex; i++)\r\n this.registerPoint(resultPath, points[i], i);\r\n };\r\n RightAngleConnectorRoutingStrategy.prototype.registerPoint = function (resultPath, point, pointIndex) {\r\n resultPath.push(new ConnectorRenderPoint_1.ConnectorRenderPoint(point.x, point.y, pointIndex));\r\n };\r\n return RightAngleConnectorRoutingStrategy;\r\n}());\r\nexports.RightAngleConnectorRoutingStrategy = RightAngleConnectorRoutingStrategy;\r\n\n\n/***/ }),\n/* 371 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RightAngleConnectorRoutingContext = exports.IntersectingItemsByPointsContext = exports.CuttingItemsContext = void 0;\r\nvar point_1 = __webpack_require__(1);\r\nvar segment_1 = __webpack_require__(33);\r\nvar vector_1 = __webpack_require__(58);\r\nvar DiagramItem_1 = __webpack_require__(9);\r\nvar RightAngleConnectorRoutingMathOperations_1 = __webpack_require__(159);\r\nvar ConnectorRenderSegment_1 = __webpack_require__(372);\r\nvar RoutingGrid_1 = __webpack_require__(374);\r\nvar ModelUtils_1 = __webpack_require__(4);\r\nvar AStarMetrics_1 = __webpack_require__(160);\r\nvar AStarContext_1 = __webpack_require__(375);\r\nvar AStarCalculator_1 = __webpack_require__(379);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar CuttingItemsContext = /** @class */ (function () {\r\n function CuttingItemsContext() {\r\n this.cuttingItemKeys = [];\r\n }\r\n Object.defineProperty(CuttingItemsContext.prototype, \"isEmpty\", {\r\n get: function () {\r\n return this.cuttingItemKeys.length === 0;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n CuttingItemsContext.prototype.registerShape = function (key, rect, segments) {\r\n if (Utils_1.GeometryUtils.areSegmentsCutRectangle(segments, rect)) {\r\n this.cuttingItemKeys.push(key);\r\n return true;\r\n }\r\n return false;\r\n };\r\n return CuttingItemsContext;\r\n}());\r\nexports.CuttingItemsContext = CuttingItemsContext;\r\nvar IntersectingItemsByPointsContext = /** @class */ (function () {\r\n function IntersectingItemsByPointsContext() {\r\n this.items = {};\r\n }\r\n IntersectingItemsByPointsContext.prototype.getOrAddItems = function (point, getItems) {\r\n if (point) {\r\n var key = point.toString();\r\n var item = this.items[key];\r\n if (item !== undefined)\r\n return item.items;\r\n if (getItems) {\r\n var items = getItems(point);\r\n this.items[key] = { point: point, items: items };\r\n return items;\r\n }\r\n }\r\n return undefined;\r\n };\r\n return IntersectingItemsByPointsContext;\r\n}());\r\nexports.IntersectingItemsByPointsContext = IntersectingItemsByPointsContext;\r\nvar RightAngleConnectorRoutingContext = /** @class */ (function () {\r\n function RightAngleConnectorRoutingContext(routingModel, points, supportRenderPoints, beginConnectionShape, endConnectionShape, beginConnectionPointIndex, endConnectionPointIndex) {\r\n this.routingModel = routingModel;\r\n this.points = points;\r\n this.supportRenderPoints = supportRenderPoints;\r\n this.beginConnectionShape = beginConnectionShape;\r\n this.endConnectionShape = endConnectionShape;\r\n this.beginConnectionSide = this.getConnectionSide(this.beginConnectionShape, beginConnectionPointIndex, this.beginPoint);\r\n this.endConnectionSide = this.getConnectionSide(this.endConnectionShape, endConnectionPointIndex, this.endPoint);\r\n this.ignorableItemKeys = {};\r\n this.cuttingShapesContext = new CuttingItemsContext();\r\n this.intersectedItemsByPointsContext = new IntersectingItemsByPointsContext();\r\n this.isInvalidRenderSegments = true;\r\n }\r\n Object.defineProperty(RightAngleConnectorRoutingContext.prototype, \"shapeMargins\", {\r\n get: function () {\r\n return this.routingModel.shapeMargins;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(RightAngleConnectorRoutingContext.prototype, \"beginPoint\", {\r\n get: function () {\r\n return this.points[0];\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(RightAngleConnectorRoutingContext.prototype, \"endPoint\", {\r\n get: function () {\r\n return this.points[this.points.length - 1];\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(RightAngleConnectorRoutingContext.prototype, \"hasIntersecting\", {\r\n get: function () {\r\n return !this.cuttingShapesContext.isEmpty;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(RightAngleConnectorRoutingContext.prototype, \"shouldCreateRenderPoints\", {\r\n get: function () {\r\n return this.isInvalidRenderSegments ||\r\n (!this.isSmallPath &&\r\n (this.hasIntersecting || this.isReversedStartConnection || this.isReversedEndConnection));\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(RightAngleConnectorRoutingContext.prototype, \"beginPathPoint\", {\r\n get: function () {\r\n return this.beginConnectionSegment instanceof segment_1.Segment ? this.beginConnectionSegment.startPoint : this.beginConnectionSegment;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(RightAngleConnectorRoutingContext.prototype, \"endPathPoint\", {\r\n get: function () {\r\n return this.endConnectionSegment instanceof segment_1.Segment ? this.endConnectionSegment.endPoint : this.endConnectionSegment;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(RightAngleConnectorRoutingContext.prototype, \"isReversedStartConnection\", {\r\n get: function () {\r\n if (!this.beginConnectionShape || this.beginConnectionSide === DiagramItem_1.ConnectionPointSide.Undefined)\r\n return false;\r\n var beginConnectionSegment = this.beginConnectionSegment;\r\n return !(beginConnectionSegment instanceof point_1.Point) &&\r\n this.isReversedConnectionSegment(this.supportSegments[0], beginConnectionSegment);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(RightAngleConnectorRoutingContext.prototype, \"isReversedEndConnection\", {\r\n get: function () {\r\n if (!this.endConnectionShape || this.endConnectionSide === DiagramItem_1.ConnectionPointSide.Undefined)\r\n return false;\r\n var endConnectionSegment = this.endConnectionSegment;\r\n return !(endConnectionSegment instanceof point_1.Point) &&\r\n this.isReversedConnectionSegment(this.supportSegments[this.supportSegments.length - 1], endConnectionSegment);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n RightAngleConnectorRoutingContext.prototype.isReversedConnectionSegment = function (supportSegment, connectionSegment) {\r\n return vector_1.Vector.scalarProduct(vector_1.Vector.fromSegment(supportSegment), vector_1.Vector.fromPoints(connectionSegment.startPoint, connectionSegment.endPoint)) <= 0;\r\n };\r\n Object.defineProperty(RightAngleConnectorRoutingContext.prototype, \"isSmallPath\", {\r\n get: function () {\r\n var doubleMargins = 2 * this.routingModel.shapeMargins;\r\n return Math.abs(this.beginPathPoint.x - this.endPathPoint.x) < doubleMargins &&\r\n Math.abs(this.beginPathPoint.y - this.endPathPoint.y) < doubleMargins;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n RightAngleConnectorRoutingContext.prototype.initialize = function (container) {\r\n this.processContainers(container);\r\n this.processSupportSegments();\r\n this.processIntersection();\r\n this.processConnections();\r\n this.processRenderSegments();\r\n };\r\n RightAngleConnectorRoutingContext.prototype.setup = function () {\r\n this.processRoutingGrid();\r\n this.processRoutingMetrics();\r\n };\r\n RightAngleConnectorRoutingContext.prototype.createRoutedPoints = function (startInfo, targetInfo, prohibitedSegments) {\r\n var startPathPoint = startInfo instanceof point_1.Point ? startInfo : startInfo.endPoint;\r\n var targetPathPoint = targetInfo instanceof point_1.Point ? targetInfo : targetInfo.startPoint;\r\n var context = this.createAStarContext(startPathPoint, targetPathPoint, prohibitedSegments);\r\n AStarCalculator_1.AStarCalculator.calculate(context);\r\n var result = context.path;\r\n this.addConnectionRoutedPoints(result, startInfo, targetInfo);\r\n RightAngleConnectorRoutingMathOperations_1.RightAngleConnectorRoutingMathOperations.unionPoints(result);\r\n return result;\r\n };\r\n RightAngleConnectorRoutingContext.prototype.getIntersectedItems = function (point, predicate) {\r\n var _this = this;\r\n return this.intersectedItemsByPointsContext.getOrAddItems(point, function (p) { return _this.routingModel\r\n .getItems(_this.beginConnectionShape, _this.endConnectionShape)\r\n .filter(function (s) { return !_this.isIgnorableItem(s) && predicate(p, s); }); });\r\n };\r\n RightAngleConnectorRoutingContext.prototype.validateRenderPoints = function (result) {\r\n if (this.isInvalidRenderSegments) {\r\n RightAngleConnectorRoutingMathOperations_1.RightAngleConnectorRoutingMathOperations.unionPoints(result);\r\n ModelUtils_1.ModelUtils.validateRenderPointIndexes(this.points, result, 0);\r\n }\r\n ModelUtils_1.ModelUtils.skipUnnecessaryRightAngleRenderPoints(result);\r\n };\r\n RightAngleConnectorRoutingContext.prototype.processContainers = function (container) {\r\n if (container)\r\n this.registerIgnorableShape(container);\r\n if (this.beginConnectionShape) {\r\n var beginShapeContainer = this.beginConnectionShape.container;\r\n if (beginShapeContainer)\r\n this.registerIgnorableShape(beginShapeContainer);\r\n }\r\n if (this.endConnectionShape) {\r\n var endShapeContainer = this.endConnectionShape.container;\r\n if (endShapeContainer)\r\n this.registerIgnorableShape(endShapeContainer);\r\n }\r\n };\r\n RightAngleConnectorRoutingContext.prototype.processSupportSegments = function () {\r\n this.supportSegments = this.createSupportSegments();\r\n };\r\n RightAngleConnectorRoutingContext.prototype.processIntersection = function () {\r\n var _this = this;\r\n var shapes = this.routingModel.getItems(this.beginConnectionShape, this.endConnectionShape);\r\n if (shapes)\r\n shapes.forEach(function (s) {\r\n var key = s.key;\r\n var rect = s.rectangle;\r\n if (!_this.cuttingShapesContext.registerShape(key, rect, _this.supportSegments)) {\r\n if ((!_this.isConnectedByStart(s) && rect.containsPoint(_this.beginPoint)) ||\r\n !_this.isConnectedByEnd(s) && rect.containsPoint(_this.endPoint))\r\n _this.registerIgnorableShape(s);\r\n }\r\n else if (_this.ignorableItemKeys[key] !== undefined)\r\n delete _this.ignorableItemKeys[key];\r\n });\r\n };\r\n RightAngleConnectorRoutingContext.prototype.processConnections = function () {\r\n var beginShapeContainsEndConnection = false;\r\n var endShapeContainsBeginConnection = false;\r\n if (this.beginConnectionShape !== this.endConnectionShape) {\r\n beginShapeContainsEndConnection = this.shapeContainsOtherConnection(this.beginConnectionShape, this.endConnectionShape, this.endPoint);\r\n endShapeContainsBeginConnection = this.shapeContainsOtherConnection(this.endConnectionShape, this.beginConnectionShape, this.beginPoint);\r\n if (beginShapeContainsEndConnection)\r\n this.registerIgnorableShape(this.beginConnectionShape);\r\n if (endShapeContainsBeginConnection)\r\n this.registerIgnorableShape(this.endConnectionShape);\r\n }\r\n var shapeMargins = this.routingModel.shapeMargins;\r\n this.beginConnectionSegment = this.createBeginConnectionSegment(shapeMargins, beginShapeContainsEndConnection);\r\n this.endConnectionSegment = this.createEndConnectionSegment(shapeMargins, endShapeContainsBeginConnection);\r\n };\r\n RightAngleConnectorRoutingContext.prototype.processRenderSegments = function () {\r\n this.isInvalidRenderSegments = false;\r\n this.renderSegments = this.createRenderSegments();\r\n for (var i = 0; i < this.renderSegments.length - 1; i++) {\r\n var renderSegment = this.renderSegments[i];\r\n var nextRenderSegment = this.renderSegments[i + 1];\r\n if (renderSegment.endPoint.equals(nextRenderSegment.startPoint)) {\r\n this.isInvalidRenderSegments = true;\r\n return;\r\n }\r\n }\r\n };\r\n RightAngleConnectorRoutingContext.prototype.createGridPoints = function () {\r\n var result = [];\r\n this.renderSegments.forEach(function (s) { return s.createGridPoints().forEach(function (p) { return result.push(p); }); });\r\n return result;\r\n };\r\n RightAngleConnectorRoutingContext.prototype.processRoutingGrid = function () {\r\n this.routingGrid = this.createGrid();\r\n };\r\n RightAngleConnectorRoutingContext.prototype.processRoutingMetrics = function () {\r\n this.metrics = this.createAStarMetrics();\r\n };\r\n RightAngleConnectorRoutingContext.prototype.createAStarMetrics = function () {\r\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)));\r\n };\r\n RightAngleConnectorRoutingContext.prototype.createAStarContext = function (start, target, prohibitedSegments) {\r\n return new AStarContext_1.AStarContext(this, start, target, prohibitedSegments, this.routingGrid, this.metrics);\r\n };\r\n RightAngleConnectorRoutingContext.prototype.addConnectionRoutedPoints = function (path, startInfo, targetInfo) {\r\n if (startInfo instanceof segment_1.Segment)\r\n path.splice(0, 0, startInfo.startPoint);\r\n if (targetInfo instanceof segment_1.Segment)\r\n path.push(targetInfo.endPoint);\r\n };\r\n RightAngleConnectorRoutingContext.prototype.createSupportSegments = function () {\r\n var _this = this;\r\n return this.supportRenderPoints.length <= 1 ? [] : Utils_1.GeometryUtils.createSegments(this.supportRenderPoints).filter(function (s) { return !_this.isCustomSegment(s, _this.supportRenderPoints[0], _this.supportRenderPoints[_this.supportRenderPoints.length - 1]); });\r\n };\r\n RightAngleConnectorRoutingContext.prototype.isCustomSegment = function (segment, startSegmentsPoint, endSegmentsPoint) {\r\n var startRenderPoint = segment.startPoint;\r\n if (startRenderPoint.equals(startSegmentsPoint))\r\n return false;\r\n var endRenderPoint = segment.endPoint;\r\n if (endRenderPoint.equals(endSegmentsPoint))\r\n return false;\r\n return endRenderPoint.pointIndex - startRenderPoint.pointIndex === 1;\r\n };\r\n RightAngleConnectorRoutingContext.prototype.createRenderSegments = function () {\r\n var _this = this;\r\n var unionRoutingSegments = RightAngleConnectorRoutingMathOperations_1.RightAngleConnectorRoutingMathOperations.createUnionSegments(this.supportSegments, function (ep, sp) { return _this.shouldCreateSegment(ep, sp); });\r\n var lastIndex = unionRoutingSegments.length - 1;\r\n return unionRoutingSegments.map(function (s, i) {\r\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));\r\n });\r\n };\r\n RightAngleConnectorRoutingContext.prototype.createPreviousCustomSegment = function (startRoutingPoint) {\r\n var previuosPointIndex = startRoutingPoint.pointIndex - 1;\r\n return previuosPointIndex >= 0 ? new segment_1.Segment(this.points[previuosPointIndex].clone(), new point_1.Point(startRoutingPoint.x, startRoutingPoint.y)) : undefined;\r\n };\r\n RightAngleConnectorRoutingContext.prototype.shouldCreateSegment = function (prevEndPoint, startNextPoint) {\r\n return !prevEndPoint.equals(startNextPoint) || startNextPoint.pointIndex > 0;\r\n };\r\n RightAngleConnectorRoutingContext.prototype.isPathNormal = function (connectionSide) {\r\n if (connectionSide === DiagramItem_1.ConnectionPointSide.Undefined)\r\n return true;\r\n return RightAngleConnectorRoutingMathOperations_1.RightAngleConnectorRoutingMathOperations.isSegmentNormal(new segment_1.Segment(this.beginPoint, this.endPoint), connectionSide === DiagramItem_1.ConnectionPointSide.East || connectionSide === DiagramItem_1.ConnectionPointSide.West);\r\n };\r\n RightAngleConnectorRoutingContext.prototype.registerIgnorableShape = function (shape) {\r\n this.ignorableItemKeys[shape.key] = true;\r\n };\r\n RightAngleConnectorRoutingContext.prototype.isConnectedByStart = function (shape) {\r\n return this.beginConnectionShape && this.beginConnectionShape.key === shape.key && this.beginConnectionSide !== DiagramItem_1.ConnectionPointSide.Undefined;\r\n };\r\n RightAngleConnectorRoutingContext.prototype.isConnectedByEnd = function (shape) {\r\n return this.endConnectionShape && this.endConnectionShape.key === shape.key && this.endConnectionSide !== DiagramItem_1.ConnectionPointSide.Undefined;\r\n };\r\n RightAngleConnectorRoutingContext.prototype.getConnectionSide = function (shape, index, point) {\r\n return shape ? shape.getConnectionPointSideByIndex(index, point) : DiagramItem_1.ConnectionPointSide.Undefined;\r\n };\r\n RightAngleConnectorRoutingContext.prototype.shapeContainsOtherConnection = function (targetShape, otherShape, otherPoint) {\r\n if (!targetShape)\r\n return false;\r\n var targetRectangle = targetShape.rectangle;\r\n return targetRectangle.containsPoint(otherPoint) &&\r\n (!otherShape || !otherShape.rectangle.equals(targetRectangle));\r\n };\r\n RightAngleConnectorRoutingContext.prototype.createBeginConnectionSegment = function (offset, beginShapeContainsEndConnection) {\r\n if (this.beginConnectionSide === DiagramItem_1.ConnectionPointSide.Undefined)\r\n return this.createBeginConnectionSegmentCore(offset);\r\n if (!beginShapeContainsEndConnection || !this.routingModel.shouldReverseConnections) {\r\n var segment = this.createBeginConnectionSegmentCore(offset);\r\n if (segment instanceof point_1.Point || !this.routingModel.shouldResizeConnections)\r\n return segment;\r\n var startPoint = segment.startPoint;\r\n var endPoint = segment.endPoint;\r\n var currentOffset = offset;\r\n while (this.hasIntersectedItemsByPoint(endPoint, startPoint, this.beginConnectionShape)) {\r\n currentOffset = currentOffset / 2;\r\n segment = this.createBeginConnectionSegmentCore(currentOffset);\r\n endPoint = segment.endPoint;\r\n }\r\n return segment;\r\n }\r\n if (!this.endConnectionShape)\r\n return this.createBeginConnectionSegmentCore(-offset);\r\n if (this.isPathNormal(this.endConnectionSide))\r\n return this.createBeginConnectionSegmentCore(-offset);\r\n var reversedSegment = this.createBeginConnectionSegmentCore(-2 * offset);\r\n if (this.isEndConnectionRectanleLineIntersected(reversedSegment, false, true))\r\n return this.createBeginConnectionSegmentCore(offset);\r\n return this.createBeginConnectionSegmentCore(-offset);\r\n };\r\n RightAngleConnectorRoutingContext.prototype.hasIntersectedItemsByPoint = function (point, secondPoint, connectionItem) {\r\n var intersectedItems = this.getIntersectedItems(point, function (p, s) { return s.rectangle.containsPoint(p) && !s.rectangle.containsPoint(secondPoint) && s.key !== connectionItem.key; });\r\n return intersectedItems !== undefined && intersectedItems.length > 0;\r\n };\r\n RightAngleConnectorRoutingContext.prototype.createEndConnectionSegment = function (offset, endShapeContainsBeginConnection) {\r\n if (this.endConnectionSide === DiagramItem_1.ConnectionPointSide.Undefined)\r\n return this.createEndConnectionSegmentCore(offset);\r\n if (!endShapeContainsBeginConnection || !this.routingModel.shouldReverseConnections) {\r\n var segment = this.createEndConnectionSegmentCore(offset);\r\n if (segment instanceof point_1.Point || !this.routingModel.shouldResizeConnections)\r\n return segment;\r\n var endPoint = segment.endPoint;\r\n var startPoint = segment.startPoint;\r\n var currentOffset = offset;\r\n while (this.hasIntersectedItemsByPoint(startPoint, endPoint, this.endConnectionShape)) {\r\n currentOffset = currentOffset / 2;\r\n segment = this.createEndConnectionSegmentCore(currentOffset);\r\n startPoint = segment.startPoint;\r\n }\r\n return segment;\r\n }\r\n if (!this.beginConnectionShape)\r\n return this.createEndConnectionSegmentCore(-offset);\r\n if (this.isPathNormal(this.beginConnectionSide))\r\n return this.createEndConnectionSegmentCore(-offset);\r\n var reversedSegment = this.createEndConnectionSegmentCore(-2 * offset);\r\n if (this.isBeginConnectionRectanleLineIntersected(reversedSegment, true, false))\r\n return this.createEndConnectionSegmentCore(offset);\r\n return this.createEndConnectionSegmentCore(-offset);\r\n };\r\n RightAngleConnectorRoutingContext.prototype.createBeginConnectionSegmentCore = function (offset) {\r\n return RightAngleConnectorRoutingMathOperations_1.RightAngleConnectorRoutingMathOperations.createBeginConnectionSegment(this.beginConnectionSide, this.beginPoint, offset, function (x, y) { return new point_1.Point(x, y); });\r\n };\r\n RightAngleConnectorRoutingContext.prototype.createEndConnectionSegmentCore = function (offset) {\r\n return RightAngleConnectorRoutingMathOperations_1.RightAngleConnectorRoutingMathOperations.createEndConnectionSegment(this.endConnectionSide, this.endPoint, offset, function (x, y) { return new point_1.Point(x, y); });\r\n };\r\n RightAngleConnectorRoutingContext.prototype.isBeginConnectionRectanleLineIntersected = function (segment, excludeBeginPoint, excludeEndPoint) {\r\n return RightAngleConnectorRoutingMathOperations_1.RightAngleConnectorRoutingMathOperations.isConnectionRectanleLineIntersected(this.beginConnectionShape.rectangle, segment, this.beginConnectionSide, excludeBeginPoint, excludeEndPoint, function (x, y) { return new point_1.Point(x, y); });\r\n };\r\n RightAngleConnectorRoutingContext.prototype.isEndConnectionRectanleLineIntersected = function (segment, excludeBeginPoint, excludeEndPoint) {\r\n return RightAngleConnectorRoutingMathOperations_1.RightAngleConnectorRoutingMathOperations.isConnectionRectanleLineIntersected(this.endConnectionShape.rectangle, segment, this.endConnectionSide, excludeBeginPoint, excludeEndPoint, function (x, y) { return new point_1.Point(x, y); });\r\n };\r\n RightAngleConnectorRoutingContext.prototype.isIgnorableItem = function (item) {\r\n return this.ignorableItemKeys[item.key] !== undefined;\r\n };\r\n RightAngleConnectorRoutingContext.prototype.createExtendedShapesBounds = function () {\r\n var _this = this;\r\n return this.routingModel.getItems(this.beginConnectionShape, this.endConnectionShape).map(function (i) { return i.rectangle.clone().inflate(_this.routingModel.shapeMargins); });\r\n };\r\n RightAngleConnectorRoutingContext.prototype.createGrid = function () {\r\n return RoutingGrid_1.RoutingGrid.create(this.createGridPoints(), this.createExtendedShapesBounds(), function (x, y) { return new point_1.Point(x, y); });\r\n };\r\n return RightAngleConnectorRoutingContext;\r\n}());\r\nexports.RightAngleConnectorRoutingContext = RightAngleConnectorRoutingContext;\r\n\n\n/***/ }),\n/* 372 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ConnectorRenderSegment = void 0;\r\nvar segment_1 = __webpack_require__(33);\r\nvar ConnectorProhibitedSegments_1 = __webpack_require__(373);\r\nvar ConnectorRenderSegment = /** @class */ (function () {\r\n function ConnectorRenderSegment(startInfo, endInfo, startPointIndex, previousCustomSegment) {\r\n this.startInfo = startInfo;\r\n this.endInfo = endInfo;\r\n this.startPointIndex = startPointIndex;\r\n this.previousCustomSegment = previousCustomSegment;\r\n }\r\n Object.defineProperty(ConnectorRenderSegment.prototype, \"startPathPoint\", {\r\n get: function () {\r\n return this.startInfo instanceof segment_1.Segment ? this.startInfo.endPoint : this.startInfo;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ConnectorRenderSegment.prototype, \"endPathPoint\", {\r\n get: function () {\r\n return this.endInfo instanceof segment_1.Segment ? this.endInfo.startPoint : this.endInfo;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ConnectorRenderSegment.prototype, \"startPoint\", {\r\n get: function () {\r\n return this.startInfo instanceof segment_1.Segment ? this.startInfo.startPoint : this.startInfo;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ConnectorRenderSegment.prototype, \"endPoint\", {\r\n get: function () {\r\n return this.endInfo instanceof segment_1.Segment ? this.endInfo.endPoint : this.endInfo;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ConnectorRenderSegment.prototype.createGridPoints = function () {\r\n var result = [];\r\n if (this.endInfo instanceof segment_1.Segment) {\r\n result.push(this.endInfo.startPoint);\r\n result.push(this.endInfo.endPoint);\r\n }\r\n else\r\n result.push(this.endInfo);\r\n return result;\r\n };\r\n ConnectorRenderSegment.prototype.createProhibitedSegments = function () {\r\n if (this.startInfo instanceof segment_1.Segment) {\r\n var result = this.createProhibitedSegmentsCore(this.startInfo);\r\n if (this.endInfo instanceof segment_1.Segment) {\r\n result.addSegment(this.endInfo);\r\n result.addExludedPoint(this.endInfo.startPoint);\r\n }\r\n if (this.previousCustomSegment)\r\n result.addSegment(this.previousCustomSegment);\r\n return result;\r\n }\r\n if (this.endInfo instanceof segment_1.Segment) {\r\n var result = this.createProhibitedSegmentsCore(this.endInfo);\r\n result.addExludedPoint(this.endInfo.startPoint);\r\n if (this.previousCustomSegment)\r\n result.addSegment(this.previousCustomSegment);\r\n return result;\r\n }\r\n return this.previousCustomSegment ? this.createProhibitedSegmentsCore(this.previousCustomSegment) : undefined;\r\n };\r\n ConnectorRenderSegment.prototype.createProhibitedSegmentsCore = function (segment) {\r\n var result = new ConnectorProhibitedSegments_1.ConnectorProhibitedSegments();\r\n result.addSegment(segment);\r\n return result;\r\n };\r\n return ConnectorRenderSegment;\r\n}());\r\nexports.ConnectorRenderSegment = ConnectorRenderSegment;\r\n\n\n/***/ }),\n/* 373 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ConnectorProhibitedSegments = void 0;\r\nvar ConnectorProhibitedSegments = /** @class */ (function () {\r\n function ConnectorProhibitedSegments() {\r\n this.segments = [];\r\n this.exludedPoints = {};\r\n }\r\n ConnectorProhibitedSegments.prototype.addSegment = function (segment) {\r\n this.segments.push(segment);\r\n };\r\n ConnectorProhibitedSegments.prototype.addExludedPoint = function (point) {\r\n this.exludedPoints[point.toString()] = point;\r\n };\r\n ConnectorProhibitedSegments.prototype.allowPoint = function (point) {\r\n if (this.exludedPoints[point.toString()] === undefined)\r\n for (var i = 0; i < this.segments.length; i++)\r\n if (this.segments[i].containsPoint(point))\r\n return false;\r\n return true;\r\n };\r\n return ConnectorProhibitedSegments;\r\n}());\r\nexports.ConnectorProhibitedSegments = ConnectorProhibitedSegments;\r\n\n\n/***/ }),\n/* 374 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RoutingGrid = void 0;\r\nvar search_1 = __webpack_require__(42);\r\nvar RoutingGrid = /** @class */ (function () {\r\n function RoutingGrid(verticalGridLines, horizontalGridLines, createPoint) {\r\n this.verticalGridLines = verticalGridLines;\r\n this.horizontalGridLines = horizontalGridLines;\r\n this.createPoint = createPoint;\r\n }\r\n RoutingGrid.create = function (points, boundsSet, createPoint) {\r\n var _this = this;\r\n var verticalLines = [];\r\n var horizontalLines = [];\r\n var varticalHashMap = {};\r\n var horizontalHashMap = {};\r\n boundsSet.forEach(function (x) {\r\n _this.addLine(x.x, verticalLines, varticalHashMap);\r\n _this.addLine(x.right, verticalLines, varticalHashMap);\r\n _this.addLine(x.y, horizontalLines, horizontalHashMap);\r\n _this.addLine(x.bottom, horizontalLines, horizontalHashMap);\r\n });\r\n points.forEach(function (p) {\r\n _this.addLine(p.x, verticalLines, varticalHashMap);\r\n _this.addLine(p.y, horizontalLines, horizontalHashMap);\r\n });\r\n verticalLines.sort(function (a, b) { return a - b; });\r\n horizontalLines.sort(function (a, b) { return a - b; });\r\n return new RoutingGrid(verticalLines, horizontalLines, createPoint);\r\n };\r\n RoutingGrid.addLine = function (line, lines, hashMap) {\r\n if (!hashMap[line]) {\r\n lines.push(line);\r\n hashMap[line] = true;\r\n }\r\n };\r\n RoutingGrid.prototype.getNeighborPoints = function (point) {\r\n var result = [];\r\n if (!this.horizontalGridLines || !this.horizontalGridLines.length ||\r\n !this.verticalGridLines || !this.verticalGridLines.length)\r\n return result;\r\n var verticalIndex = search_1.SearchUtils.binaryIndexOf(this.verticalGridLines, function (x) { return x - point.x; });\r\n if (verticalIndex < 0) {\r\n verticalIndex = ~verticalIndex;\r\n if (this.isValidArrayIndex(this.verticalGridLines, verticalIndex))\r\n result.push(this.createPoint(this.verticalGridLines[verticalIndex], point.y));\r\n }\r\n else if (this.isValidArrayIndex(this.verticalGridLines, verticalIndex + 1))\r\n result.push(this.createPoint(this.verticalGridLines[verticalIndex + 1], point.y));\r\n if (this.isValidArrayIndex(this.verticalGridLines, verticalIndex - 1))\r\n result.push(this.createPoint(this.verticalGridLines[verticalIndex - 1], point.y));\r\n var horizontalIndex = search_1.SearchUtils.binaryIndexOf(this.horizontalGridLines, function (y) { return y - point.y; });\r\n if (horizontalIndex < 0) {\r\n horizontalIndex = ~horizontalIndex;\r\n if (this.isValidArrayIndex(this.horizontalGridLines, horizontalIndex))\r\n result.push(this.createPoint(point.x, this.horizontalGridLines[horizontalIndex]));\r\n }\r\n else if (this.isValidArrayIndex(this.horizontalGridLines, horizontalIndex + 1))\r\n result.push(this.createPoint(point.x, this.horizontalGridLines[horizontalIndex + 1]));\r\n if (this.isValidArrayIndex(this.horizontalGridLines, horizontalIndex - 1))\r\n result.push(this.createPoint(point.x, this.horizontalGridLines[horizontalIndex - 1]));\r\n return result;\r\n };\r\n RoutingGrid.prototype.isValidArrayIndex = function (array, index) {\r\n return array && index >= 0 && index < array.length;\r\n };\r\n return RoutingGrid;\r\n}());\r\nexports.RoutingGrid = RoutingGrid;\r\n\n\n/***/ }),\n/* 375 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.AStarContext = exports.AStarContextBase = void 0;\r\nvar SortedQueues_1 = __webpack_require__(376);\r\nvar UniqueAStarNodePositions_1 = __webpack_require__(377);\r\nvar AStarNode_1 = __webpack_require__(378);\r\nvar segment_1 = __webpack_require__(33);\r\nvar RightAngleConnectorRoutingMathOperations_1 = __webpack_require__(159);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar AStarContextBase = /** @class */ (function () {\r\n function AStarContextBase(startPosition, targetPosition, maxStepsCount) {\r\n this.startPosition = startPosition;\r\n this.targetPosition = targetPosition;\r\n this.maxStepsCount = maxStepsCount;\r\n this.prohibitedPoints = {};\r\n }\r\n Object.defineProperty(AStarContextBase.prototype, \"shouldStartContinue\", {\r\n get: function () {\r\n return this.updatableSet.count > 0 && this.stepsCount < this.maxStepsCount;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(AStarContextBase.prototype, \"shouldFinish\", {\r\n get: function () {\r\n return this.currentNode.position.equals(this.targetPosition);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n AStarContextBase.prototype.start = function () {\r\n this.generalSet = new SortedQueues_1.SortedQueues(function (x) { return x.key; });\r\n this.updatableSet = new UniqueAStarNodePositions_1.UniqueAStarNodePositions();\r\n var currentNode = new AStarNode_1.AStarNode(this.startPosition, this.getDistance(this.startPosition, this.targetPosition));\r\n this.currentNode = currentNode;\r\n this.generalSet.enqueue(currentNode);\r\n this.updatableSet.add(currentNode.position, currentNode);\r\n this.stepsCount = 0;\r\n this.openNode = undefined;\r\n };\r\n AStarContextBase.prototype.startContinue = function () {\r\n this.currentNode = this.generalSet.dequeueMin();\r\n };\r\n AStarContextBase.prototype.endContinue = function () {\r\n var _this = this;\r\n var currentPosition = this.currentNode.position;\r\n this.updatableSet.remove(currentPosition);\r\n this.addProhibitedPoint(currentPosition);\r\n this.getNeighborPoints(currentPosition).forEach(function (nextPosition) {\r\n var penalty = _this.getPenalty(_this.currentNode, nextPosition);\r\n var openNode = _this.updatableSet.getNode(nextPosition);\r\n if (openNode === undefined) {\r\n openNode = new AStarNode_1.AStarNode(nextPosition, _this.getDistance(nextPosition, _this.targetPosition));\r\n openNode.parent = _this.currentNode;\r\n openNode.penalty = penalty;\r\n _this.generalSet.enqueue(openNode);\r\n _this.updatableSet.add(nextPosition, openNode);\r\n }\r\n else if (openNode.penalty > penalty) {\r\n var generalSet = _this.generalSet;\r\n generalSet.remove(openNode);\r\n openNode.parent = _this.currentNode;\r\n openNode.penalty = penalty;\r\n generalSet.enqueue(openNode);\r\n }\r\n _this.openNode = openNode;\r\n });\r\n this.stepsCount++;\r\n };\r\n AStarContextBase.prototype.finishWithPath = function () {\r\n this.path = this.currentNode.getPath();\r\n };\r\n AStarContextBase.prototype.finishWithoutPath = function () {\r\n this.path = [];\r\n };\r\n return AStarContextBase;\r\n}());\r\nexports.AStarContextBase = AStarContextBase;\r\nvar AStarContext = /** @class */ (function (_super) {\r\n __extends(AStarContext, _super);\r\n function AStarContext(routingContext, startPosition, targetPosition, prohibitedSegments, grid, metrics) {\r\n var _this = _super.call(this, startPosition, targetPosition, 10000) || this;\r\n _this.routingContext = routingContext;\r\n _this.startPosition = startPosition;\r\n _this.targetPosition = targetPosition;\r\n _this.prohibitedSegments = prohibitedSegments;\r\n _this.grid = grid;\r\n _this.metrics = metrics;\r\n return _this;\r\n }\r\n AStarContext.prototype.addProhibitedPoint = function (point) {\r\n this.prohibitedPoints[point.toString()] = point;\r\n };\r\n AStarContext.prototype.getNeighborPoints = function (point) {\r\n var _this = this;\r\n return this.grid.getNeighborPoints(point).filter(function (p) { return _this.allowPoint(p); });\r\n };\r\n AStarContext.prototype.getDistance = function (startPoint, endPoint) {\r\n return this.metrics.distance(startPoint, endPoint);\r\n };\r\n AStarContext.prototype.getPenalty = function (node, nextPoint) {\r\n var parent = node.parent;\r\n var currentPosition = node.position;\r\n var turnDirection = this.getTurnDirection(parent ? Utils_1.GeometryUtils.createAngle(parent.position, currentPosition, nextPoint) : 0);\r\n var distance = this.getDistance(currentPosition, nextPoint);\r\n var middlePosition = new segment_1.Segment(currentPosition, nextPoint).center;\r\n return node.penalty + this.metrics.penalty(distance, middlePosition, turnDirection, this.getIntersectedItems(middlePosition));\r\n };\r\n AStarContext.prototype.allowPoint = function (p) {\r\n return this.prohibitedPoints[p.toString()] === undefined && (!this.prohibitedSegments || this.prohibitedSegments.allowPoint(p));\r\n };\r\n AStarContext.prototype.getTurnDirection = function (angle) {\r\n return RightAngleConnectorRoutingMathOperations_1.RightAngleConnectorRoutingMathOperations.getTurnDirection(angle);\r\n };\r\n AStarContext.prototype.getIntersectedItems = function (position) {\r\n var _this = this;\r\n var margin = this.routingContext.shapeMargins;\r\n return this.routingContext.getIntersectedItems(position, function (p, i) { return _this.hasIntersectedItem(p, i, margin); });\r\n };\r\n AStarContext.prototype.hasIntersectedItem = function (point, item, margin) {\r\n if (!this.isIntersectedWithExtendedRectangle(point, item, margin))\r\n return false;\r\n if (this.hasOneShapeConnection(item))\r\n return true;\r\n return !this.itemContainsConnectionPoints(item);\r\n };\r\n AStarContext.prototype.isIntersectedWithExtendedRectangle = function (point, item, margin) {\r\n return item.rectangle.clone().inflate(margin).containsPoint(point);\r\n };\r\n AStarContext.prototype.itemContainsConnectionPoints = function (item) {\r\n var rectangle = item.rectangle;\r\n return rectangle.containsPoint(this.routingContext.beginPoint) && rectangle.containsPoint(this.routingContext.endPoint);\r\n };\r\n AStarContext.prototype.hasOneShapeConnection = function (item) {\r\n var connectionPoints = item.getConnectionPoints();\r\n return this.isConnectionPoint(connectionPoints, this.routingContext.beginPoint) &&\r\n this.isConnectionPoint(connectionPoints, this.routingContext.endPoint);\r\n };\r\n AStarContext.prototype.isConnectionPoint = function (connectionPoints, point) {\r\n return connectionPoints.filter(function (p) { return p.equals(point); }).length > 0;\r\n };\r\n return AStarContext;\r\n}(AStarContextBase));\r\nexports.AStarContext = AStarContext;\r\n\n\n/***/ }),\n/* 376 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SortedQueues = void 0;\r\nvar search_1 = __webpack_require__(42);\r\nvar SortedQueues = /** @class */ (function () {\r\n function SortedQueues(getKey) {\r\n this.getKey = getKey;\r\n this._itemsArrays = {};\r\n this._sortedKeys = [];\r\n }\r\n Object.defineProperty(SortedQueues.prototype, \"sortedKeys\", {\r\n get: function () { return this._sortedKeys; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n SortedQueues.prototype.getQueue = function (key) {\r\n return this._itemsArrays[key];\r\n };\r\n SortedQueues.prototype.enqueue = function (item) {\r\n var key = this.getKey(item);\r\n if (this._itemsArrays[key] === undefined) {\r\n this._itemsArrays[key] = [item];\r\n this.addSortedKey(key);\r\n }\r\n else\r\n this._itemsArrays[key].push(item);\r\n };\r\n SortedQueues.prototype.remove = function (item) {\r\n var key = this.getKey(item);\r\n var itemsArray = this._itemsArrays[key];\r\n if (itemsArray !== undefined)\r\n if (!itemsArray.length)\r\n this.removeCore(key);\r\n else if (itemsArray[0] === item) {\r\n itemsArray.shift();\r\n if (!itemsArray.length)\r\n this.removeCore(key);\r\n }\r\n else\r\n this._itemsArrays[key] = itemsArray.filter(function (x) { return x !== item; });\r\n };\r\n SortedQueues.prototype.dequeueMin = function () {\r\n if (!this._sortedKeys.length)\r\n return undefined;\r\n var key = this._sortedKeys[0];\r\n var itemsArray = this._itemsArrays[key];\r\n var item = itemsArray.shift();\r\n if (!itemsArray.length)\r\n this.removeCore(key);\r\n return item;\r\n };\r\n SortedQueues.prototype.removeCore = function (key) {\r\n delete this._itemsArrays[key];\r\n this.removeSortedKey(key);\r\n };\r\n SortedQueues.prototype.removeSortedKey = function (key) {\r\n var sortedPointIndex = search_1.SearchUtils.binaryIndexOf(this._sortedKeys, function (x) { return x - key; });\r\n if (sortedPointIndex >= 0)\r\n this.sortedKeys.splice(sortedPointIndex, 1);\r\n };\r\n SortedQueues.prototype.addSortedKey = function (key) {\r\n var sortedPointIndex = search_1.SearchUtils.binaryIndexOf(this._sortedKeys, function (x) { return x - key; });\r\n if (sortedPointIndex < 0)\r\n this._sortedKeys.splice(-(sortedPointIndex + 1), 0, key);\r\n };\r\n return SortedQueues;\r\n}());\r\nexports.SortedQueues = SortedQueues;\r\n\n\n/***/ }),\n/* 377 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.UniqueAStarNodePositions = void 0;\r\nvar UniqueAStarNodePositions = /** @class */ (function () {\r\n function UniqueAStarNodePositions(getKey) {\r\n if (getKey === void 0) { getKey = function (key) { return key.toString(); }; }\r\n this.getKey = getKey;\r\n this.items = {};\r\n }\r\n Object.defineProperty(UniqueAStarNodePositions.prototype, \"count\", {\r\n get: function () { return Object.keys(this.items).length; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n UniqueAStarNodePositions.prototype.getNode = function (position) {\r\n var item = this.items[this.getKey(position)];\r\n return item !== undefined ? item.node : undefined;\r\n };\r\n UniqueAStarNodePositions.prototype.add = function (position, node) {\r\n var key = this.getKey(position);\r\n if (this.items[key] === undefined)\r\n this.items[key] = { position: position, node: node };\r\n };\r\n UniqueAStarNodePositions.prototype.remove = function (position) {\r\n var key = this.getKey(position);\r\n if (this.items[key] !== undefined)\r\n delete this.items[key];\r\n };\r\n return UniqueAStarNodePositions;\r\n}());\r\nexports.UniqueAStarNodePositions = UniqueAStarNodePositions;\r\n\n\n/***/ }),\n/* 378 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.AStarNode = void 0;\r\nvar AStarNode = /** @class */ (function () {\r\n function AStarNode(position, distance) {\r\n this.position = position;\r\n this.distance = distance;\r\n this.penalty = 0;\r\n }\r\n Object.defineProperty(AStarNode.prototype, \"key\", {\r\n get: function () { return this.distance + this.penalty; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n AStarNode.prototype.getPath = function () {\r\n var result = [];\r\n // eslint-disable-next-line @typescript-eslint/no-this-alias\r\n var currentNode = this;\r\n while (currentNode !== undefined) {\r\n result.splice(0, 0, currentNode.position);\r\n currentNode = currentNode.parent;\r\n }\r\n return result;\r\n };\r\n return AStarNode;\r\n}());\r\nexports.AStarNode = AStarNode;\r\n\n\n/***/ }),\n/* 379 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.AStarCalculator = void 0;\r\nvar AStarCalculator = /** @class */ (function () {\r\n function AStarCalculator() {\r\n }\r\n AStarCalculator.calculate = function (context) {\r\n if (context) {\r\n var callBack = this.start(context);\r\n while (callBack)\r\n callBack = callBack(context);\r\n }\r\n };\r\n AStarCalculator.start = function (context) {\r\n context.start();\r\n return context.shouldStartContinue ? AStarCalculator.startContinue : AStarCalculator.finishWithPath;\r\n };\r\n AStarCalculator.startContinue = function (context) {\r\n context.startContinue();\r\n return context.shouldFinish ? AStarCalculator.finishWithPath : AStarCalculator.endContinue;\r\n };\r\n AStarCalculator.endContinue = function (context) {\r\n context.endContinue();\r\n return context.shouldStartContinue ? AStarCalculator.startContinue : AStarCalculator.finishWithoutPath;\r\n };\r\n AStarCalculator.finishWithPath = function (context) {\r\n context.finishWithPath();\r\n };\r\n AStarCalculator.finishWithoutPath = function (context) {\r\n context.finishWithoutPath();\r\n };\r\n return AStarCalculator;\r\n}());\r\nexports.AStarCalculator = AStarCalculator;\r\n\n\n/***/ }),\n/* 380 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ReloadContentParameters = void 0;\r\nvar ReloadContentParameters = /** @class */ (function () {\r\n function ReloadContentParameters() {\r\n this.isEmpty = true;\r\n }\r\n ReloadContentParameters.prototype.add = function (dataKey, getData, layoutParameters) {\r\n if (dataKey !== undefined) {\r\n if (this._dataKeys === undefined)\r\n this._dataKeys = [];\r\n if (Array.isArray(dataKey))\r\n this._dataKeys = this._dataKeys.concat(dataKey);\r\n else\r\n this._dataKeys.push(dataKey);\r\n }\r\n this._getData = this._getData || getData;\r\n this._layoutParameters = this._layoutParameters || layoutParameters;\r\n this.isEmpty = false;\r\n };\r\n ReloadContentParameters.prototype.clear = function () {\r\n this.isEmpty = true;\r\n this._dataKeys = undefined;\r\n this._getData = undefined;\r\n this._layoutParameters = undefined;\r\n };\r\n Object.defineProperty(ReloadContentParameters.prototype, \"empty\", {\r\n get: function () { return this.isEmpty; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ReloadContentParameters.prototype, \"dataKeys\", {\r\n get: function () { return this._dataKeys; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ReloadContentParameters.prototype, \"getData\", {\r\n get: function () { return this._getData; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ReloadContentParameters.prototype, \"layoutParameters\", {\r\n get: function () { return this._layoutParameters; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return ReloadContentParameters;\r\n}());\r\nexports.ReloadContentParameters = ReloadContentParameters;\r\n\n\n/***/ }),\n/* 381 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ToolboxTouchDragEventsHandler = void 0;\r\nvar Utils_1 = __webpack_require__(3);\r\nvar ToolboxDragEventsHandlerBase_1 = __webpack_require__(105);\r\nvar ToolboxTouchDragEventsHandler = /** @class */ (function (_super) {\r\n __extends(ToolboxTouchDragEventsHandler, _super);\r\n function ToolboxTouchDragEventsHandler() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(ToolboxTouchDragEventsHandler.prototype, \"downEventName\", {\r\n get: function () { return \"touchstart\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ToolboxTouchDragEventsHandler.prototype, \"moveEventName\", {\r\n get: function () { return \"touchmove\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ToolboxTouchDragEventsHandler.prototype, \"upEventName\", {\r\n get: function () { return \"touchend\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ToolboxTouchDragEventsHandler.prototype.attach = function (source) {\r\n _super.prototype.attach.call(this, source);\r\n this.onElementTouchMoveHandler = this.onElementTouchMove.bind(this);\r\n this.onSelectionChangeHandler = this.onSelectionChange.bind(this);\r\n source.mainElement.addEventListener(this.moveEventName, this.onElementTouchMoveHandler);\r\n source.mainElement.addEventListener(\"selectionchange\", this.onSelectionChangeHandler);\r\n };\r\n ToolboxTouchDragEventsHandler.prototype.detach = function () {\r\n this.manager.mainElement.removeEventListener(this.moveEventName, this.onElementTouchMoveHandler);\r\n this.manager.mainElement.removeEventListener(\"selectionchange\", this.onSelectionChangeHandler);\r\n _super.prototype.detach.call(this);\r\n };\r\n ToolboxTouchDragEventsHandler.prototype.onDownCore = function (evt) {\r\n Utils_1.HtmlFocusUtils.focusWithPreventScroll(this.manager.mainElement);\r\n this.manager.startTouchDragging();\r\n };\r\n ToolboxTouchDragEventsHandler.prototype.onElementTouchMove = function (evt) {\r\n if (this.manager.draggingObject)\r\n evt.preventDefault();\r\n };\r\n ToolboxTouchDragEventsHandler.prototype.onSelectionChange = function () { };\r\n return ToolboxTouchDragEventsHandler;\r\n}(ToolboxDragEventsHandlerBase_1.ToolboxDragEventsHandlerBase));\r\nexports.ToolboxTouchDragEventsHandler = ToolboxTouchDragEventsHandler;\r\n\n\n/***/ }),\n/* 382 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ToolboxPointerDragEventsHandler = void 0;\r\nvar dom_1 = __webpack_require__(23);\r\nvar ToolboxDragEventsHandlerBase_1 = __webpack_require__(105);\r\nvar IDragEventsHandler_1 = __webpack_require__(161);\r\nvar Utils_1 = __webpack_require__(3);\r\nvar ToolboxPointerDragEventsHandler = /** @class */ (function (_super) {\r\n __extends(ToolboxPointerDragEventsHandler, _super);\r\n function ToolboxPointerDragEventsHandler() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(ToolboxPointerDragEventsHandler.prototype, \"downEventName\", {\r\n get: function () { return \"pointerdown\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ToolboxPointerDragEventsHandler.prototype, \"moveEventName\", {\r\n get: function () { return \"pointermove\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ToolboxPointerDragEventsHandler.prototype, \"upEventName\", {\r\n get: function () { return \"pointerup\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ToolboxPointerDragEventsHandler.prototype.isTouchEvent = function (evt) {\r\n return this.isTouchUIEnabled || evt.pointerType === \"touch\";\r\n };\r\n ToolboxPointerDragEventsHandler.prototype.attach = function (source) {\r\n _super.prototype.attach.call(this, source);\r\n this.onDragStartHandler = this.onDragStart.bind(this);\r\n source.mainElement.addEventListener(\"dragstart\", this.onDragStartHandler);\r\n dom_1.DomUtils.addClassName(source.mainElement, IDragEventsHandler_1.TOUCH_ACTION_NONE);\r\n };\r\n ToolboxPointerDragEventsHandler.prototype.detach = function () {\r\n this.manager.mainElement.removeEventListener(\"dragstart\", this.onDragStartHandler);\r\n dom_1.DomUtils.removeClassName(this.manager.mainElement, IDragEventsHandler_1.TOUCH_ACTION_NONE);\r\n _super.prototype.detach.call(this);\r\n };\r\n ToolboxPointerDragEventsHandler.prototype.onDownCore = function (evt) {\r\n Utils_1.HtmlFocusUtils.focusWithPreventScroll(this.manager.mainElement);\r\n if (this.isTouchEvent(evt))\r\n this.manager.startTouchDragging();\r\n };\r\n ToolboxPointerDragEventsHandler.prototype.onDragStart = function (evt) {\r\n this.manager.startDragging();\r\n evt.preventDefault();\r\n };\r\n return ToolboxPointerDragEventsHandler;\r\n}(ToolboxDragEventsHandlerBase_1.ToolboxDragEventsHandlerBase));\r\nexports.ToolboxPointerDragEventsHandler = ToolboxPointerDragEventsHandler;\r\n\n\n/***/ }),\n/* 383 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ToolboxMouseDragEventsHandler = void 0;\r\nvar ToolboxDragEventsHandlerBase_1 = __webpack_require__(105);\r\nvar ToolboxMouseDragEventsHandler = /** @class */ (function (_super) {\r\n __extends(ToolboxMouseDragEventsHandler, _super);\r\n function ToolboxMouseDragEventsHandler() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(ToolboxMouseDragEventsHandler.prototype, \"downEventName\", {\r\n get: function () { return \"mousedown\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ToolboxMouseDragEventsHandler.prototype, \"moveEventName\", {\r\n get: function () { return \"mousemove\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ToolboxMouseDragEventsHandler.prototype, \"upEventName\", {\r\n get: function () { return \"mouseup\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ToolboxMouseDragEventsHandler.prototype.isTouchEvent = function (evt) {\r\n return this.isTouchUIEnabled;\r\n };\r\n ToolboxMouseDragEventsHandler.prototype.attach = function (source) {\r\n _super.prototype.attach.call(this, source);\r\n this.onDragStartHandler = this.onDragStart.bind(this);\r\n source.mainElement.addEventListener(\"dragstart\", this.onDragStartHandler);\r\n };\r\n ToolboxMouseDragEventsHandler.prototype.detach = function () {\r\n this.manager.mainElement.removeEventListener(\"dragstart\", this.onDragStartHandler);\r\n _super.prototype.detach.call(this);\r\n };\r\n ToolboxMouseDragEventsHandler.prototype.onDownCore = function (evt) { };\r\n ToolboxMouseDragEventsHandler.prototype.onDragStart = function (evt) {\r\n this.manager.startDragging();\r\n evt.preventDefault();\r\n };\r\n return ToolboxMouseDragEventsHandler;\r\n}(ToolboxDragEventsHandlerBase_1.ToolboxDragEventsHandlerBase));\r\nexports.ToolboxMouseDragEventsHandler = ToolboxMouseDragEventsHandler;\r\n\n\n/***/ }),\n/* 384 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RenderManagerTouchDragEventsHandler = void 0;\r\nvar RenderManagerDragEventsHandlerBase_1 = __webpack_require__(106);\r\nvar RenderManagerTouchDragEventsHandler = /** @class */ (function (_super) {\r\n __extends(RenderManagerTouchDragEventsHandler, _super);\r\n function RenderManagerTouchDragEventsHandler() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(RenderManagerTouchDragEventsHandler.prototype, \"enterEventName\", {\r\n get: function () { return \"mouseenter\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(RenderManagerTouchDragEventsHandler.prototype, \"leaveEventName\", {\r\n get: function () { return \"mouseleave\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(RenderManagerTouchDragEventsHandler.prototype, \"downEventName\", {\r\n get: function () { return \"touchstart\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(RenderManagerTouchDragEventsHandler.prototype, \"moveEventName\", {\r\n get: function () { return \"touchmove\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(RenderManagerTouchDragEventsHandler.prototype, \"upEventName\", {\r\n get: function () { return \"touchend\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n RenderManagerTouchDragEventsHandler.prototype.onDownCore = function (evt) {\r\n this.manager.onTouchDown(evt);\r\n };\r\n RenderManagerTouchDragEventsHandler.prototype.onMoveCore = function (evt) {\r\n this.manager.onTouchMove(evt);\r\n };\r\n RenderManagerTouchDragEventsHandler.prototype.onUpCore = function (evt) {\r\n this.manager.onTouchUp(evt);\r\n };\r\n return RenderManagerTouchDragEventsHandler;\r\n}(RenderManagerDragEventsHandlerBase_1.RenderManagerDragEventsHandlerBase));\r\nexports.RenderManagerTouchDragEventsHandler = RenderManagerTouchDragEventsHandler;\r\n\n\n/***/ }),\n/* 385 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RenderManagerPointerDragEventsHandler = void 0;\r\nvar dom_1 = __webpack_require__(23);\r\nvar IDragEventsHandler_1 = __webpack_require__(161);\r\nvar RenderManagerDragEventsHandlerBase_1 = __webpack_require__(106);\r\nvar RenderManagerPointerDragEventsHandler = /** @class */ (function (_super) {\r\n __extends(RenderManagerPointerDragEventsHandler, _super);\r\n function RenderManagerPointerDragEventsHandler() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(RenderManagerPointerDragEventsHandler.prototype, \"enterEventName\", {\r\n get: function () { return \"pointerenter\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(RenderManagerPointerDragEventsHandler.prototype, \"leaveEventName\", {\r\n get: function () { return \"pointerleave\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(RenderManagerPointerDragEventsHandler.prototype, \"downEventName\", {\r\n get: function () { return \"pointerdown\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(RenderManagerPointerDragEventsHandler.prototype, \"moveEventName\", {\r\n get: function () { return \"pointermove\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(RenderManagerPointerDragEventsHandler.prototype, \"upEventName\", {\r\n get: function () { return \"pointerup\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n RenderManagerPointerDragEventsHandler.prototype.attach = function (source) {\r\n _super.prototype.attach.call(this, source);\r\n var svgElement = source.svgElement;\r\n svgElement.ondragstart = function () { return false; };\r\n dom_1.DomUtils.addClassName(svgElement, IDragEventsHandler_1.TOUCH_ACTION_NONE);\r\n };\r\n RenderManagerPointerDragEventsHandler.prototype.detach = function () {\r\n var svgElement = this.manager.svgElement;\r\n svgElement.ondragstart = undefined;\r\n dom_1.DomUtils.removeClassName(svgElement, IDragEventsHandler_1.TOUCH_ACTION_NONE);\r\n _super.prototype.detach.call(this);\r\n };\r\n RenderManagerPointerDragEventsHandler.prototype.onDownCore = function (evt) {\r\n if (evt.pointerType === \"touch\")\r\n this.manager.onTouchDown(evt);\r\n else\r\n this.manager.onMouseDown(evt);\r\n };\r\n RenderManagerPointerDragEventsHandler.prototype.onMoveCore = function (evt) {\r\n if (evt.pointerType === \"touch\")\r\n this.manager.onTouchMove(evt);\r\n else\r\n this.manager.onMouseMove(evt);\r\n };\r\n RenderManagerPointerDragEventsHandler.prototype.onUpCore = function (evt) {\r\n if (evt.pointerType === \"touch\")\r\n this.manager.onTouchUp(evt);\r\n else\r\n this.manager.onMouseUp(evt);\r\n };\r\n return RenderManagerPointerDragEventsHandler;\r\n}(RenderManagerDragEventsHandlerBase_1.RenderManagerDragEventsHandlerBase));\r\nexports.RenderManagerPointerDragEventsHandler = RenderManagerPointerDragEventsHandler;\r\n\n\n/***/ }),\n/* 386 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.RenderManagerMouseDragEventsHandler = void 0;\r\nvar RenderManagerDragEventsHandlerBase_1 = __webpack_require__(106);\r\nvar RenderManagerMouseDragEventsHandler = /** @class */ (function (_super) {\r\n __extends(RenderManagerMouseDragEventsHandler, _super);\r\n function RenderManagerMouseDragEventsHandler() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(RenderManagerMouseDragEventsHandler.prototype, \"enterEventName\", {\r\n get: function () { return \"mouseenter\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(RenderManagerMouseDragEventsHandler.prototype, \"leaveEventName\", {\r\n get: function () { return \"mouseleave\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(RenderManagerMouseDragEventsHandler.prototype, \"downEventName\", {\r\n get: function () { return \"mousedown\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(RenderManagerMouseDragEventsHandler.prototype, \"moveEventName\", {\r\n get: function () { return \"mousemove\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(RenderManagerMouseDragEventsHandler.prototype, \"upEventName\", {\r\n get: function () { return \"mouseup\"; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n RenderManagerMouseDragEventsHandler.prototype.onDownCore = function (evt) {\r\n this.manager.onMouseDown(evt);\r\n };\r\n RenderManagerMouseDragEventsHandler.prototype.onMoveCore = function (evt) {\r\n this.manager.onMouseMove(evt);\r\n };\r\n RenderManagerMouseDragEventsHandler.prototype.onUpCore = function (evt) {\r\n this.manager.onMouseUp(evt);\r\n };\r\n return RenderManagerMouseDragEventsHandler;\r\n}(RenderManagerDragEventsHandlerBase_1.RenderManagerDragEventsHandlerBase));\r\nexports.RenderManagerMouseDragEventsHandler = RenderManagerMouseDragEventsHandler;\r\n\n\n/***/ }),\n/* 387 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ })\n/******/ ]);\n});"],"sourceRoot":""}