{"version":3,"sources":["webpack:///./src/views/Graph/GraphDesign/components/tipDialog.vue?7ee5","webpack:///./src/views/Graph/GraphDesign/components/graphDialog.vue?e190","webpack:///./src/utitls/validate.js","webpack:///./src/api/Device.js","webpack:///./src/api/Node.js","webpack:///./src/styles/elementReset.scss?9fe3","webpack:///./src/views/Graph/GraphDesign/assets/index.scss?13df","webpack:///./src/api/DeviceParame.js","webpack:///./src/utitls/imgToBase64.js","webpack:///./src/api/SCADABgImg.js","webpack:///./node_modules/mousetrap/mousetrap.js","webpack:///./src/views/Graph/GraphDesign/components/bgImageDialog.vue?5c19","webpack:///./src/views/Graph/GraphDesign/components/changeWHDialog.vue?c72e","webpack:///./src/views/Graph/GraphDesign/components/changeColorDialog.vue?ca4c","webpack:///./node_modules/core-js/internals/set-to-string-tag.js","webpack:///./src/views/Graph/GraphDesign/components/actionDialog.vue?b32f","webpack:///./node_modules/@antv/x6-plugin-transform/es/transform.js","webpack:///./node_modules/@antv/x6-plugin-transform/es/style/raw.js","webpack:///./node_modules/@antv/x6-plugin-transform/es/api.js","webpack:///./node_modules/@antv/x6-plugin-transform/es/index.js","webpack:///./node_modules/@antv/x6-plugin-snapline/es/snapline.js","webpack:///./node_modules/@antv/x6-plugin-snapline/es/style/raw.js","webpack:///./node_modules/@antv/x6-plugin-snapline/es/api.js","webpack:///./node_modules/@antv/x6-plugin-snapline/es/index.js","webpack:///./node_modules/@antv/x6-plugin-clipboard/es/clipboard.js","webpack:///./node_modules/@antv/x6-plugin-clipboard/es/api.js","webpack:///./node_modules/@antv/x6-plugin-clipboard/es/index.js","webpack:///./node_modules/@antv/x6-plugin-keyboard/es/keyboard.js","webpack:///./node_modules/@antv/x6-plugin-keyboard/es/api.js","webpack:///./node_modules/@antv/x6-plugin-keyboard/es/index.js","webpack:///./node_modules/@antv/x6-plugin-history/es/api.js","webpack:///./node_modules/@antv/x6-plugin-history/es/index.js","webpack:///./node_modules/@antv/x6-plugin-selection/es/selection.js","webpack:///./node_modules/@antv/x6-plugin-selection/es/style/raw.js","webpack:///./node_modules/@antv/x6-plugin-selection/es/api.js","webpack:///./node_modules/@antv/x6-plugin-selection/es/index.js","webpack:///./node_modules/@antv/x6-plugin-scroller/es/scroller.js","webpack:///./node_modules/@antv/x6-plugin-scroller/es/style/raw.js","webpack:///./node_modules/@antv/x6-plugin-scroller/es/api.js","webpack:///./node_modules/@antv/x6-plugin-scroller/es/index.js","webpack:///./node_modules/@antv/x6-plugin-minimap/es/style/raw.js","webpack:///./node_modules/@antv/x6-plugin-minimap/es/index.js","webpack:///./node_modules/@antv/x6-plugin-dnd/es/style/raw.js","webpack:///./node_modules/@antv/x6-plugin-dnd/es/index.js","webpack:///./node_modules/@antv/x6-plugin-stencil/es/grid.js","webpack:///./node_modules/@antv/x6-plugin-stencil/es/style/raw.js","webpack:///./node_modules/@antv/x6-plugin-stencil/es/index.js","webpack:///./src/views/Graph/GraphDesign/assets/InitGraphInfo.js","webpack:///./src/views/Graph/GraphDesign/assets/InitNodeInfo.js","webpack:///./src/views/Graph/GraphDesign/assets/InitKeyboard.js","webpack:///./src/views/Graph/GraphDesign/assets/InitEdgeInfo.js","webpack:///./src/views/Graph/GraphDesign/assets/InitStencilInfo.js","webpack:///./src/views/Graph/GraphDesign/components/actionRuleDialog.vue","webpack:///./src/views/Graph/GraphDesign/components/actionRuleDialog.vue?1c7b","webpack:///./src/views/Graph/GraphDesign/components/actionDialog.vue","webpack:///./src/views/Graph/GraphDesign/components/actionDialog.vue?00cb","webpack:///./src/views/Graph/GraphDesign/components/responseRuleDialog.vue","webpack:///./src/views/Graph/GraphDesign/components/responseRuleDialog.vue?3766","webpack:///./src/views/Graph/GraphDesign/components/responseDialog.vue","webpack:///./src/views/Graph/GraphDesign/components/responseDialog.vue?7c1a","webpack:///./src/views/Graph/GraphDesign/components/bindDialog.vue","webpack:///./src/views/Graph/GraphDesign/components/bindDialog.vue?5381","webpack:///./src/views/Graph/GraphDesign/components/bgImageDialog.vue","webpack:///./src/views/Graph/GraphDesign/components/bgImageDialog.vue?bbdd","webpack:///./src/views/Graph/GraphDesign/components/changeColorRuleDialog.vue","webpack:///./src/views/Graph/GraphDesign/components/changeColorRuleDialog.vue?e5fd","webpack:///./src/views/Graph/GraphDesign/components/changeColorDialog.vue","webpack:///./src/views/Graph/GraphDesign/components/changeColorDialog.vue?9324","webpack:///./src/views/Graph/GraphDesign/components/changeWHRuleDialog.vue","webpack:///./src/views/Graph/GraphDesign/components/changeWHRuleDialog.vue?6541","webpack:///./src/views/Graph/GraphDesign/components/changeWHDialog.vue","webpack:///./src/views/Graph/GraphDesign/components/changeWHDialog.vue?6e5d","webpack:///./src/views/Graph/GraphDesign/components/tipRuleDialog.vue","webpack:///./src/views/Graph/GraphDesign/components/tipRuleDialog.vue?25c0","webpack:///./src/views/Graph/GraphDesign/components/tipDialog.vue","webpack:///./src/views/Graph/GraphDesign/components/tipDialog.vue?f8fd","webpack:///./src/views/Graph/GraphDesign/components/graphDialogRuleDialog.vue","webpack:///./src/views/Graph/GraphDesign/components/graphDialogRuleDialog.vue?95d4","webpack:///./src/views/Graph/GraphDesign/components/graphDialog.vue","webpack:///./src/views/Graph/GraphDesign/components/graphDialog.vue?19dc","webpack:///./src/views/Graph/GraphDesign/components/deviceListDialog.vue","webpack:///./src/views/Graph/GraphDesign/components/deviceListDialog.vue?dca4","webpack:///./src/views/Graph/GraphDesign/index.vue","webpack:///./src/views/Graph/GraphDesign/index.vue?3b44","webpack:///./src/views/Graph/GraphDesign/components/responseDialog.vue?ee89","webpack:///./src/api/EnumInfo.js","webpack:///./node_modules/core-js/modules/es.reflect.to-string-tag.js"],"names":["isNull","data","JSON","stringify","GetCustomeFillList","$http","get","params","GetDeviceFillList","GetDeviceFillListByTypeID","GetDevicePageList","GetDeviceScenePageList","GetDeviceList","AddDevice","post","EditDevice","put","DeleteDevice","delete","SetDevicePermission","GetNodePageList","AddNode","EditNode","DeleteNode","UploadeImages","datas","headers","GetAllNodes","GetDeviceParameList","GetDeviceParameListByDeviceID","GetDeviceParamePageList","AddDeviceParame","EditDeviceParame","DeleteDeviceParame","GetParameModel","responseType","DownloadDeviceParames","UploadDeviceParames","getBase64","file","Promise","resolve","reject","reader","FileReader","imgResult","readAsDataURL","onload","result","onerror","error","onloadend","GetBgImgList","DeleteBgImg","window","document","undefined","_REVERSE_MAP","_MAP","8","9","13","16","17","18","20","27","32","33","34","35","36","37","38","39","40","45","46","91","93","224","_KEYCODE_MAP","106","107","109","110","111","186","187","188","189","190","191","192","219","220","221","222","_SHIFT_MAP","_SPECIAL_ALIASES","test","navigator","platform","i","toString","Mousetrap","prototype","bind","keys","callback","action","self","this","Array","_bindMultiple","call","unbind","trigger","_directMap","reset","_callbacks","stopCallback","e","element","className","indexOf","_belongsTo","target","composedPath","initialEventTarget","tagName","isContentEditable","handleKey","_handleKey","apply","arguments","addKeycodes","object","key","hasOwnProperty","init","documentMousetrap","method","charAt","module","exports","_addEvent","type","addEventListener","attachEvent","_characterFromEvent","character","String","fromCharCode","which","shiftKey","toLowerCase","_modifiersMatch","modifiers1","modifiers2","sort","join","_eventModifiers","modifiers","push","altKey","ctrlKey","metaKey","_preventDefault","preventDefault","returnValue","_stopPropagation","stopPropagation","cancelBubble","_isModifier","_getReverseMap","_pickBestAction","length","_keysFromString","combination","replace","split","_getKeyInfo","ancestor","parentNode","targetElement","_resetTimer","_sequenceLevels","_ignoreNextKeyup","_ignoreNextKeypress","_nextExpectedAction","_resetSequences","doNotReset","activeSequences","_getMatches","sequenceName","level","matches","seq","deleteCombo","combo","deleteSequence","splice","_fireCallback","sequence","srcElement","_handleKeyEvent","keyCode","_resetSequenceTimer","clearTimeout","setTimeout","_bindSequence","_increaseSequence","nextAction","_callbackAndReset","isFinal","wrappedCallback","_bindSingle","info","callbacks","maxLevel","processedSequenceCallback","Math","max","ignoreThisKeypress","combinations","defineProperty","f","hasOwn","wellKnownSymbol","TO_STRING_TAG","TAG","STATIC","configurable","value","Private","__decorate","decorators","desc","d","c","r","Object","getOwnPropertyDescriptor","Reflect","decorate","graph","model","renderer","findViewByCell","node","prefixClassName","containerClassName","options","super","assign","defaultOptions","render","startListening","delegateEvents","resizeClassName","rotateClassName","on","update","remove","view","onKnobMouseDown","onKnobMouseUp","undelegateEvents","off","container","createElement","knob","attr","rotate","cloneNode","addClass","resizes","POSITIONS","map","pos","elem","empty","append","renderHandles","NODE_CLS","toggleClass","preserveAspectRatio","orthogonalResizing","resizable","rotatable","appendChild","ctm","matrix","bbox","getBBox","x","a","y","width","height","angle","normalize","getAngle","transform","css","left","top","updateResizerDirections","removeClass","startHandle","stopHandle","shift","floor","DIRECTIONS","prevShift","directions","slice","concat","dir","querySelectorAll","forEach","resize","index","bottom","right","evt","startBatch","cid","prepareResizing","startAction","relativeDirection","trueDirection","getTrueDirection","rx","ry","direction","toValidResizeDirection","selector","setEventData","resizeX","resizeY","center","getCenter","normalizeEvent","client","snapToGrid","clientX","clientY","start","create","theta","getEventData","scroller","getPlugin","restrict","restrictedResizing","factor","fix","rect","getBoundingClientRect","clamp","autoScrollOnResizing","autoScroll","gridSize","getGridSize","resized","notify","currentBBox","requestedSize","diff","rawWidth","rawHeight","minWidth","minHeight","min","maxWidth","Infinity","maxHeight","candidateWidth","candidateHeight","allowReverse","reverted","revertedDir","handle","querySelector","onMouseMove","resizeOptions","ui","rotated","currentAngle","rotateGrid","absolute","stopAction","stopBatch","getAttribute","delegateDocumentEvents","documentEvents","undelegateDocumentEvents","name","args","localPoint","cell","dispose","mousemove","touchmove","mouseup","touchend","createTransformWidget","createWidget","clearTransformWidgets","clearWidgets","widgets","Map","disabled","ensure","onNodeClick","onBlankMouseDown","stopListening","widget","createTransform","set","getTransformOptions","resizing","enabled","rotating","parseOptionGroup","Number","MAX_SAFE_INTEGER","orthogonal","grid","getCellById","id","clear","clean","Transform","arg","val","__rest","s","t","p","getOwnPropertySymbols","propertyIsEnumerable","others","offset","filter","containerWrapper","horizontal","vertical","horizontalClassName","verticalClassName","setAttribute","captureCursorOffset","snapOnMoving","onBatchStop","snapOnResizing","targetView","getDelegatedView","isNodeMovable","getPosition","isNode","can","translating","area","getGraphArea","inflate","snapped","nodeBbox","nodeBBoxRotated","nodeTopLeft","getTopLeft","nodeBottomRight","getBottomRight","tolerance","verticalLeft","verticalTop","verticalHeight","horizontalTop","horizontalLeft","horizontalWidth","snapOrigin","getNodes","some","isIgnored","snapBBox","snapTopLeft","snapBottomRight","groups","distances","k","list","position","distance","abs","item","sortBy","hide","dx","dy","dWidth","dHeight","quadrant","rad","toRad","cos","sin","quadrant13","newWidth","newHeight","snaplines","getRestrictArea","newRotatedBBox","delegatedView","size","getSize","cellBBox","nodeCenter","verticalFix","horizontalFix","targetNode","snapCenter","newCenter","newX","newY","translate","snapNode","isDescendantOf","isArray","shape","metadata","localToGraph","end","setAttributes","x1","sharp","y1","x2","y2","display","show","timer","resetTimer","delay","unmount","isSnaplineEnabled","snapline","isEnabled","enableSnapline","enable","disableSnapline","disable","toggleSnapline","toggleEnabled","hideSnapline","setSnaplineFilter","setFilter","isSnaplineOnResizingEnabled","isOnResizingEnabled","enableSnaplineOnResizing","enableOnResizing","disableSnaplineOnResizing","disableOnResizing","toggleSnaplineOnResizing","toggleOnResizing","isSharpSnapline","isSharp","enableSharpSnapline","enableSharp","disableSharpSnapline","disableSharp","toggleSharpSnapline","toggleSharp","getSnaplineTolerance","getTolerance","setSnaplineTolerance","setTolerance","snaplineImpl","cells","isModel","cloned","cloneSubGraph","isEdge","serialize","copy","isGraph","batchUpdate","localOptions","edgeProps","nodeProps","deserialize","removeProp","prop","addCells","useLocalStorage","save","fetch","Storage","LOCAL_STORAGE_KEY","prefixCls","localStorage","toJSON","setItem","raw","getItem","parse","fromJSON","removeItem","isClipboardEnabled","clipboard","enableClipboard","disableClipboard","toggleClipboard","isClipboardEmpty","isEmpty","getCellsInClipboard","cleanClipboard","cut","paste","clipboardImpl","force","commonOptions","_a","global","focus","mousetrap","createMousetrap","HTMLElement","removeAttribute","getKeys","isInputEvent","preventScroll","formatkey","formated","toLocaleLowerCase","formatFn","format","currentTarget","body","contains","isInput","includes","allowed","isGraphEvent","guard","KeyboardImpl","keyboard","isEnabledForEvent","isKeyboardEnabled","enableKeyboard","disableKeyboard","toggleKeyboard","bindKey","unbindKey","clearKeys","triggerKey","keyboardImpl","isHistoryEnabled","history","enableHistory","disableHistory","toggleHistory","undo","redo","undoAndCancel","cancel","canUndo","canRedo","cleanHistory","getHistoryStackSize","getUndoStackSize","getUndoSize","getRedoStackSize","getRedoSize","getUndoRemainSize","batchCommands","batchLevel","lastBatchIndex","freezed","stackSize","handlers","getOptions","validator","Validator","cancelInvalid","cmd","undoStack","pop","revertCommand","redoStack","applyCommand","undoStackPush","ul","events","validate","initBatchCommand","storeBatchCommand","eventNames","addCommand","batch","cmds","sortBatchCommands","pick","revertOptionsList","executeCommand","applyOptionsList","revert","getCell","event","isAddEvent","isRemoveEvent","addNode","props","edge","addEdge","isChangeEvent","prev","next","ensureUndefinedAttrs","eventArgs","dryrun","ignoreAdd","ignoreRemove","ignoreChange","before","beforeAddCommand","isModelChange","diffId","modelChange","diffName","findIndex","createCommand","cloneDeep","previous","afterAddCommand","filterBatchCommand","consolidateCommands","isEqual","emit","lastCommandGroup","penultimateCommandGroup","eventTypes","Set","has","every","maybePositionChange","newAttrs","oldAttrs","History","command","onCommandAdded","isValidCommand","validation","handoverErr","routes","rollup","err","fn","evts","Error","Util","startsWith","reservedNames","batchEvents","results","ii","j","classNames","box","children","boxClassName","collection","comparator","depthComparator","boxCount","createContainer","onGraphTransformed","onModelUpdated","onCellAdded","onCellRemoved","onReseted","onCollectionUpdated","onNodePositionChanged","onCellChanged","updateSelectionBoxes","showNodeSelectionBox","pointerEvents","selection","translateBy","allowTranslating","translateByUi","current","translateSelectedNodes","removed","unselect","toArray","items","add","filterCells","prevMap","nextMap","added","select","updateContainer","content","graphContainer","offsetX","offsetY","scrollLeft","scrollTop","pageXOffset","pageYOffset","scrollerX","scrollerY","moving","eventData","origin","pageToLocal","scale","getScale","sx","sy","getCellViewsInArea","hideRubberband","following","updateSelectedNodesPosition","originX","originY","notifyBoxEvent","stopSelecting","movable","startTranslating","activeView","getCellViewFromElem","totalBBox","getCellsBBox","deep","minDx","minDy","maxDx","maxDy","dLeft","dTop","strLeft","strTop","parseFloat","boxesUpdated","len","$boxes","updateElementPosition","selectionContainer","appendTo","showRubberband","autoScrollGraph","parseInt","getSelectionOffset","updateContainerPosition","exclude","otherOptions","excluded","getDescendants","child","currentCell","getConnectedEdges","strict","views","rubberNode","getNodesInArea","rubberEdge","getEdgesInArea","getSelectedClassName","removeCellUnSelectedClassName","canShowSelectionBox","rubberband","selected","root","inner","selectionContent","prepend","corner","useCellGeometry","boxContent","innerHTML","removeChild","showEdgeSelectionBox","addCellSelectedClassName","showSelected","confirmUpdate","cellId","createSelectionBox","destroySelectionBox","destroyAllSelectionBoxes","listenCellRemoveEvent","base","getAncestors","touchcancel","isSelectionEnabled","enableSelection","disableSelection","toggleSelection","isMultipleSelection","enableMultipleSelection","disableMultipleSelection","toggleMultipleSelection","multiple","isSelectionMovable","enableSelectionMovable","disableSelectionMovable","toggleSelectionMovable","isRubberbandEnabled","enableRubberband","disableRubberband","toggleRubberband","isStrictRubberband","enableStrictRubberband","disableStrictRubberband","toggleStrictRubberband","setRubberbandModifiers","setSelectionFilter","setSelectionDisplayContent","isSelectionEmpty","cleanSelection","resetSelection","getSelectedCells","getSelectedCellCount","isSelected","selectionImpl","movedMap","WeakMap","unselectMap","merge","setup","isMultiple","enableMultiple","disableMultiple","rubberbandDisabled","setModifiers","setContent","getCells","onBlankClick","onCellMouseMove","onCellMouseUp","onBoxMouseDown","allowGraphPanning","panning","allowPanning","allowScrollerPanning","allowRubberband","startRubberband","isMatch","multipleSelectionModifiers","selectCellOnMoved","selectNodeOnMoved","selectEdgeOnMoved","allowMultipleSelection","startSelecting","Selection","padding","onUpdate","debounce","containerClass","pageVisible","pagedClass","contentClass","background","backgroundClass","backgroundManager","Background","autoResize","onScale","onResize","storeScrollPosition","restoreScrollPosition","delegateBackgroundEvents","undelegateBackgroundEvents","delegatedHandlers","reduce","memo","handler","onBackgroundEvent","delegateEvent","guarded","undelegateEvent","valid","cachedCenterPoint","centerPoint","updatePageBreak","ox","oy","updateScale","autoResizeOptions","cachedScrollLeft","cachedScrollTop","cachedClientSize","clientWidth","clientHeight","IS_IE","IS_EDGE","visibility","pageWidth","pageHeight","pageBreak","graphWidth","graphHeight","hasPageBreak","l","div","after","getClientSize","clientToLocalPoint","gridWidth","gridHeight","allowNewOrigin","fitToContent","getFitToContentOptions","contentArea","getContentArea","scrollToPoint","optons","tx","ty","tWidth","tHeight","storeClientSize","visibleCenter","getVisibleArea","positionPoint","getPadding","clientSize","cx","cy","addPadding","restoreClientSize","positionContent","positionCell","positionRect","getTopCenter","getTopRight","getRightMiddle","getBottomCenter","getBottomLeft","getLeftMiddle","point","pad","normalizeSides","clientRect","fromSize","targetRect","clone","moveAndExpand","normalizePercentage","zoom","rawDiff","scaleGrid","round","maxScale","minScale","clampScale","fx","fy","beforeManipulation","afterManipulation","viewportArea","bound","scaleContentToFitImpl","zoomToRect","transformOrigin","targetScale","targetPoint","delta","range","move","localToBackgroundPoint","onTransitionEnd","transitionClassName","Event","transitionEventName","syncTransition","originalEvent","transition","transitionDuration","duration","transitionDelay","transitionTimingFunction","timing","removeTransition","rectangle","MIN_VALUE","PIXEL_SIZE","w","h","getMaxUniformScaleToFit","transitionToPoint","pan","stopPanning","b","transformPoint","offsetWidth","offsetHeight","buffer","style","transformRectangle","inverse","containsRect","isIntersectWithRect","containsPoint","overflow","ScrollerImpl","draw","graphOptions","panningClass","pannableClass","minVisibleWidth","minVisibleHeight","lockScroller","unlockScroller","updateScroller","getScrollbarPosition","setScrollbarPosition","pannable","scrollerImpl","updateClassName","updatePageSize","zoomToFit","centerContent","centerCell","onGraph","isPannable","disablePanning","enablePanning","lock","unlock","scrollbarPosition","scrollToContent","scrollToCell","transitionToRect","enableAutoResize","disableAutoResize","preparePanning","onRightMouseDown","button","startPanning","once","isPanning","prefix","dataset","ClassName","updateViewport","viewport","scalable","zoomHandle","sourceGraph","targetGraphOptions","interacting","embedding","targetGraph","createGraph","updatePaper","getEventNamespace","onTransform","mousedown","touchstart","targetGraphTransforming","ratio","sourceGraphScale","targetGraphScale","graphToLocal","translation","geometry","translateX","translateY","startScale","startGeometry","frameId","cancelAnimationFrame","requestAnimationFrame","ts","pageX","pageY","GridLayout","defaults","draggingGraph","delegateGraphOptions","async","targetModel","draggingContainer","sourceNode","prepareDragging","local","updateNodePosition","draggingView","draggingNode","snap","draggingModel","getDragNode","scaled","clearDragging","resetCells","delegateView","geometryBBox","draggingBBox","originOffset","updateGraphPosition","documentElement","nodeBBox","clientToLocal","silent","snapOffset","embeddingMode","isValidArea","isInsideValidArea","candidateEmbedView","processEmbedding","clearEmbedding","ret","drop","onDropped","finalizeEmbedding","onDropInvalid","isAsync","then","dndRect","targetScroller","dndContainer","getDropArea","isInsideDndRect","outter","intersectsWithRect","droppingNode","getDropNode","removeZIndex","validateNode","addCell","stencil","toDeferredBoolean","nodes","columns","rows","ceil","centre","resizeToFit","marginX","marginY","columnWidths","columnWidth","getNodesInColumn","getMaxDim","columnLefts","accumulate","rowHeights","rowHeight","getNodesInRow","rowTops","rowIndex","columnIndex","calcHeight","calcWidth","setSize","Dnd","columnCount","res","ClassNames","graphs","dnd","onSearch","initContainer","initSearch","initContent","initGroups","setTitle","groupName","loadGroup","isGroupCollapsed","expandGroup","collapseGroup","isGroupCollapsable","group","hasClass","initGroup","groupNames","notFoundText","search","renderSearch","globalGraphOptions","stencilGraphOptions","groupElem","collapsable","collapsed","title","groupTitle","groupContent","graphOptionsInGroup","stencilGraphWidth","stencilGraphHeight","preventDefaultBlankAction","clearGroups","setCollapsableState","defaultGroupName","input","placeholder","searchText","onDragStart","reverse","getModel","removeCells","getGroup","layout","getGraph","graphPadding","stencilGraphPadding","getGroupByNode","nodeMovable","keyword","found","matched","isCellMatched","filters","ignoreCase","paths","path","getPropByPath","collapseGroups","expandGroups","closest","toggleGroup","allCollapsed","find","Stencil","layoutOptions","InitGraphInfo","magnetThreshold","mousewheel","visible","color","thickness","highlighting","attrs","fill","stroke","magnetAvailable","magnetAdsorbed","GraphSizeOptions","label","GraphGridTypes","InitConnecting","router","connector","radius","anchor","connectionPoint","GraphBgImageRepeatOptions","GraphBgImagePositionOptions","GraphBgImageSizeOptions","FontFamilyOptions","SetKeyBoard","EdgeMarkerOptions","InitPortsInfo","circle","magnet","strokeWidth","DeviceList","reactive","ParameList","selectDevice","ref","selectParame","formRef","form","dialogVisible","scenesBaseInfo","rules","required","message","handleOpen","InitList","ruleIndex","dialogRowValue","deviceID","deviceName","parameID","parameName","GetParameList","Type","handleClose","emits","handleConfirm","fields","ElMessage","console","log","parame","Data","ID","Name","catch","deviceTypeID","DeviceType","readType","handleChangeDevice","__exports__","modeType","operatType","link","ruleDialogInfo","rowValue","handleDialogValue","row","delRule","ElMessageBox","confirm","confirmButtonText","cancelButtonText","changeRules","RuleTypeList","maxValue","minValue","dialogTitle","GetResponseRuleTypes","ruleType","typeCode","TypeCode","typeName","TypeName","typeDesc","TypeDesc","bindInfo","imgInfoList","initGetList","url","Content","imgContent","colorValue","DirectionTypeList","TtypeDesc","tipInfo","route","useRoute","regUrl","RegExp","global_config","BASE_URL","reg","graphJson","contentJson","scenceName","showCode","ChangeShowCode","graphInfo","initGraph","initGraphInfo","selectNode","selectEdge","graphSize","graphW","graphH","bgColor","useBgImage","bgImage","bgRepeat","bgPosition","bgSize","bgOpacity","showGrid","gridType","gridColor","gridThickness","scaleRate","usePorts","transformEnable","hasTip","hasGraphDialog","tipRules","hasDialog","dialogRules","refStencil","refContainer","nodeInfo","borderColor","borderWidth","fontFamily","fontSize","fontWeight","fontStyle","textDecoration","fontColor","zIndex","textAnchor","textVerticalAnchor","edgeInfo","sourceMarker","targetMarker","strokeDasharray","fillColor","showRoutePoint","connectorParames","activeInfo","activeType","activeTab","activeGraphProp","activeGraphEvent","activeNodeProp","activeNodeEvent","activeEdgeProp","activeEdgeEvent","noedEvent","hasMousedown","hasMouseup","hasClick","hasDblClick","hasShowHide","hasRotate","hasBind","hasChangeColor","hasChangeWH","edgeEvent","hasFlow","actionDialogInfo","tipDialogInfo","graphDialogInfo","responseDialogInfo","bindDialogInfo","changeColorDialogInfo","bgImgDialogInfo","changeWHDialogInfo","deviceListDialogInfo","scenesInfo","deviceTypeName","selectMoreNode","Graph","connecting","createEdge","Shape","Edge","line","validateConnection","targetMagnet","use","Clipboard","Keyboard","SaveInfo","removeTools","showNodePorts","_node$attr","_node$attr2","_node$attr3","_node$attr4","_node$data$hasMousedo","_node$data$hasMouseup","_node$data$hasClick","_node$data$hasDblClic","_node$data$hasShowHid","_node$data$hasRotate","_node$data$hasBind","_node$data$hasChangeC","_node$data$hasChangeW","getZIndex","InitNoedEvent","getConnector","_edge$data$hasShowHid","_edge$data$hasFlow","_edge$data$hasChangeC","InitEdgeEvent","Total","NodeCount","NodeInfos","createNode","Info","ports","tools","imgPath","image","nodeinfo","load","getPorts","port","setPortProp","handleChangeGraphSize","handleChangGraphWH","handleChangeImg","fileList","handleDrawGraphBg","setBgImg","handleChangeGraphUseBgImage","drawBackground","repeat","opacity","handleChangeShowGraphGrid","hideGrid","handleDrawGraphGrid","drawGrid","handleTransformEnable","cellInfo","handleSetGraphScale","zoomTo","handleChangeGridSize","setGridSize","_graphInfo$value$scal","setTipRules","setGraphDialogRules","handleChangeNodeWidth","handleChangNodeBaseInfo","handleChangeNodeHeight","handleChangeNodeX","handleChangeNodeY","handleChangeNodeAngle","handleChangeNodeBgColor","ChangeNodeAttr","handleChangeNodeBorderColor","handleChangeNodeBorderWidth","handleChangeNodeFontSize","handleChangeNodeFontColor","handleChangeNodeFontWeight","handleChangeNodeFontStyle","handleChangeNodeTextDecoration","handleChangeNodeTextVerticalAnchor","handleChangeNodeTextAnchor","handleChangeNodeZIndex","setZIndex","handleChangeNodeHasMousedown","ChangeNodeData_SelectChange","handleChangeNodeHasMouseup","handleChangeNodeHasClick","handleChangeNodeHasDblClick","handleChangeNodeHasShowHide","handleChangeNodeHasRotate","handleChangeNodeHasBind","handleChangeNodeHasChangeColor","handleChangeNodeHasChangeWH","setNodeData","MousedownRule","MouseupRule","ClickRule","DblClickRule","setData","overwrite","setResponseData","ShowHideRule","RotateRule","FlowRule","setChangeWHData","ChangeWHRule","setBindInfo","BindRule","setChangeColorRules","ChangeColorRule","handleChangeNodeFontFamily","ChangeSourceMarkerType","ChangeEdgeAttr","ChangeTargetMarkerType","handleEdgeStrokeDasharrayChange","handleEdgeWidthChange","handleChangeEdgeFillColor","handleEdgeZIndexChange","ChangeRouteVisible","edges","getEdges","hasTools","addTools","handleChangeEdgeHasShowHide","ChangeEdgeData_SelectChange","handleChangeEdgeHasFlow","handleChangeEdgeHasChangeColor","ChangeEdgeConnector","setConnector","onMounted","query","code","FormData","GetScenesInfo","DeviceTypeName","SceneInfo","SceneGraph","onUnmounted","EditScenesInfo","PreView","href","open","SetDeviceID","showTipDialog","showGraphDialog","showActionDialog","getData","showResponseDialog","showBindDialog","showChangeColorDialog","showChangeWHDialog","clearRules","handleAlignment","minX","maxX","minY","maxY","xArr","yArr","centerX","centerY","GetNodeTypes","GetSceneTypes","$","setToStringTag"],"mappings":"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","file":"js/chunk-e7382718.0079e412.js","sourcesContent":["export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./tipDialog.vue?vue&type=style&index=0&id=169b56c7&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./graphDialog.vue?vue&type=style&index=0&id=5c144693&lang=scss&scoped=true\"","export const isNull = (data) => {\r\n if (!data)\r\n return true\r\n if (JSON.stringify(data) === '{}')\r\n return true\r\n if (JSON.stringify(data) === '[]')\r\n return true\r\n}","import $http from '@/utitls/request'\r\n/**\r\n * 获取客户填充信息\r\n */\r\nexport const GetCustomeFillList = (data) => {\r\n return $http.get('/api/Device/GetCustomeFillList', { params: data })\r\n}\r\n/**\r\n * 获取设备填充信息\r\n */\r\nexport const GetDeviceFillList = (data) => {\r\n return $http.get('/api/Device/GetDeviceFillList', { params: data })\r\n}\r\n/**\r\n * 获取指定设备类型的设备填充信息\r\n */\r\nexport const GetDeviceFillListByTypeID = (data) => {\r\n return $http.get('/api/Device/GetDeviceFillListByTypeID', { params: data })\r\n}\r\n/**\r\n * 分页获取设备信息\r\n */\r\nexport const GetDevicePageList = (data) => {\r\n return $http.get('/api/Device/GetDevicePageList', { params: data })\r\n}\r\n/**\r\n * 分页获取设备场景信息\r\n */\r\nexport const GetDeviceScenePageList = (data) => {\r\n return $http.get('/api/Device/GetDeviceScenePageList', { params: data })\r\n}\r\n/**\r\n * 分页获取设备信息\r\n */\r\nexport const GetDeviceList = (data) => {\r\n return $http.get('/api/Device/GetDeviceList', { params: data })\r\n}\r\n/**\r\n * 新增\r\n */\r\nexport const AddDevice = (data) => {\r\n return $http.post('/api/Device/AddDevice', data)\r\n}\r\n/**\r\n * 修改\r\n */\r\nexport const EditDevice = (data) => {\r\n return $http.put('/api/Device/EditDevice', data)\r\n}\r\n/**\r\n * 删除\r\n */\r\nexport const DeleteDevice = (data) => {\r\n return $http.delete('/api/Device/DeleteDevice', { params: data })\r\n}\r\n/**\r\n * 设置设备权限\r\n */\r\nexport const SetDevicePermission = (data) => {\r\n return $http.post('/api/Device/SetDevicePermission', data)\r\n}","import $http from '@/utitls/request'\r\n/**\r\n * 获取组态节点填充信息\r\n */\r\nexport const GetNodeFillList = (data) => {\r\n return $http.get('/api/Node/GetNodeFillList', { params: data })\r\n}\r\n/**\r\n * 分页获取组态节点信息\r\n */\r\nexport const GetNodePageList = (data) => {\r\n return $http.get('/api/Node/GetNodePageList', { params: data })\r\n}\r\n/**\r\n * 新增\r\n */\r\nexport const AddNode = (data) => {\r\n return $http.post('/api/Node/AddNode', data)\r\n}\r\n/**\r\n * 修改\r\n */\r\nexport const EditNode = (data) => {\r\n return $http.put('/api/Node/EditNode', data)\r\n}\r\n/**\r\n * 删除\r\n */\r\nexport const DeleteNode = (data) => {\r\n return $http.delete('/api/Node/DeleteNode', { params: data })\r\n}\r\n/**\r\n * 图片批量上传\r\n */\r\nexport const UploadeImages = (datas) => {\r\n return $http.post('/api/Node/UploadeImages', datas, { headers: { 'Content-Type': 'multipart/form-data' } })\r\n}\r\n/**\r\n * 获取所有节点信息\r\n */\r\nexport const GetAllNodes = () => {\r\n return $http.post('/api/Node/GetAllNodes')\r\n}","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./elementReset.scss?vue&type=style&index=0&id=00eae6c8&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!./index.scss?vue&type=style&index=1&id=00eae6c8&lang=scss&scoped=true\"","import $http from '@/utitls/request'\r\n/**\r\n * 获取指定设备类型参数信息\r\n */\r\nexport const GetDeviceParameList = (data) => {\r\n return $http.get('/api/DeviceParame/GetDeviceParameList', { params: data })\r\n}\r\n/**\r\n * 获取指定设备参数信息\r\n */\r\nexport const GetDeviceParameListByDeviceID = (data) => {\r\n return $http.get('/api/DeviceParame/GetDeviceParameListByDeviceID', { params: data })\r\n}\r\n/**\r\n * 分页获取设备参数信息\r\n */\r\nexport const GetDeviceParamePageList = (data) => {\r\n return $http.get('/api/DeviceParame/GetDeviceParamePageList', { params: data })\r\n}\r\n/**\r\n * 新增\r\n */\r\nexport const AddDeviceParame = (data) => {\r\n return $http.post('/api/DeviceParame/AddDeviceParame', data)\r\n}\r\n/**\r\n * 修改\r\n */\r\nexport const EditDeviceParame = (data) => {\r\n return $http.put('/api/DeviceParame/EditDeviceParame', data)\r\n}\r\n/**\r\n * 删除\r\n */\r\nexport const DeleteDeviceParame = (data) => {\r\n return $http.delete('/api/DeviceParame/DeleteDeviceParame', { params: data })\r\n}\r\n/**\r\n * 下载参数模板\r\n */\r\nexport const GetParameModel = (data) => {\r\n return $http.get('/api/DeviceParame/GetParameModel', { params: data, responseType: 'blob' })\r\n}\r\n/**\r\n * 下载指定设备类型的参数模板\r\n */\r\nexport const DownloadDeviceParames = (data) => {\r\n return $http.get('/api/DeviceParame/DownloadDeviceParames', { params: data, responseType: 'blob' })\r\n}\r\n/**\r\n * 上传设备参数\r\n */\r\nexport const UploadDeviceParames = (data) => {\r\n return $http.post('/api/DeviceParame/UploadDeviceParames', data, { headers: { 'Content-Type': 'multipart/form-data' } })\r\n}","export const getBase64 = (file) => {\r\n return new Promise(function (resolve, reject) {\r\n const reader = new FileReader()\r\n let imgResult = ''\r\n reader.readAsDataURL(file)\r\n reader.onload = function () {\r\n imgResult = reader.result\r\n }\r\n reader.onerror = function (error) {\r\n reject(error)\r\n }\r\n reader.onloadend = function () {\r\n resolve(imgResult)\r\n }\r\n })\r\n}\r\n","import $http from '@/utitls/request'\r\n/**\r\n * 获取背景图信息\r\n */\r\nexport const GetBgImgList = () => {\r\n return $http.post('/api/SCADABgImg/GetBgImgList')\r\n}\r\n/**\r\n * 新增\r\n */\r\nexport const UploadBgImg = () => {\r\n return $http.post('/api/SCADABgImg/UploadBgImg')\r\n}\r\n/**\r\n * 删除\r\n */\r\nexport const DeleteBgImg = (data) => {\r\n return $http.delete('/api/SCADABgImg/DeleteBgImg', { params: data })\r\n}","/*global define:false */\n/**\n * Copyright 2012-2017 Craig Campbell\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * Mousetrap is a simple keyboard shortcut library for Javascript with\n * no external dependencies\n *\n * @version 1.6.5\n * @url craig.is/killing/mice\n */\n(function(window, document, undefined) {\n\n // Check if mousetrap is used inside browser, if not, return\n if (!window) {\n return;\n }\n\n /**\n * mapping of special keycodes to their corresponding keys\n *\n * everything in this dictionary cannot use keypress events\n * so it has to be here to map to the correct keycodes for\n * keyup/keydown events\n *\n * @type {Object}\n */\n var _MAP = {\n 8: 'backspace',\n 9: 'tab',\n 13: 'enter',\n 16: 'shift',\n 17: 'ctrl',\n 18: 'alt',\n 20: 'capslock',\n 27: 'esc',\n 32: 'space',\n 33: 'pageup',\n 34: 'pagedown',\n 35: 'end',\n 36: 'home',\n 37: 'left',\n 38: 'up',\n 39: 'right',\n 40: 'down',\n 45: 'ins',\n 46: 'del',\n 91: 'meta',\n 93: 'meta',\n 224: 'meta'\n };\n\n /**\n * mapping for special characters so they can support\n *\n * this dictionary is only used incase you want to bind a\n * keyup or keydown event to one of these keys\n *\n * @type {Object}\n */\n var _KEYCODE_MAP = {\n 106: '*',\n 107: '+',\n 109: '-',\n 110: '.',\n 111 : '/',\n 186: ';',\n 187: '=',\n 188: ',',\n 189: '-',\n 190: '.',\n 191: '/',\n 192: '`',\n 219: '[',\n 220: '\\\\',\n 221: ']',\n 222: '\\''\n };\n\n /**\n * this is a mapping of keys that require shift on a US keypad\n * back to the non shift equivelents\n *\n * this is so you can use keyup events with these keys\n *\n * note that this will only work reliably on US keyboards\n *\n * @type {Object}\n */\n var _SHIFT_MAP = {\n '~': '`',\n '!': '1',\n '@': '2',\n '#': '3',\n '$': '4',\n '%': '5',\n '^': '6',\n '&': '7',\n '*': '8',\n '(': '9',\n ')': '0',\n '_': '-',\n '+': '=',\n ':': ';',\n '\\\"': '\\'',\n '<': ',',\n '>': '.',\n '?': '/',\n '|': '\\\\'\n };\n\n /**\n * this is a list of special strings you can use to map\n * to modifier keys when you specify your keyboard shortcuts\n *\n * @type {Object}\n */\n var _SPECIAL_ALIASES = {\n 'option': 'alt',\n 'command': 'meta',\n 'return': 'enter',\n 'escape': 'esc',\n 'plus': '+',\n 'mod': /Mac|iPod|iPhone|iPad/.test(navigator.platform) ? 'meta' : 'ctrl'\n };\n\n /**\n * variable to store the flipped version of _MAP from above\n * needed to check if we should use keypress or not when no action\n * is specified\n *\n * @type {Object|undefined}\n */\n var _REVERSE_MAP;\n\n /**\n * loop through the f keys, f1 to f19 and add them to the map\n * programatically\n */\n for (var i = 1; i < 20; ++i) {\n _MAP[111 + i] = 'f' + i;\n }\n\n /**\n * loop through to map numbers on the numeric keypad\n */\n for (i = 0; i <= 9; ++i) {\n\n // This needs to use a string cause otherwise since 0 is falsey\n // mousetrap will never fire for numpad 0 pressed as part of a keydown\n // event.\n //\n // @see https://github.com/ccampbell/mousetrap/pull/258\n _MAP[i + 96] = i.toString();\n }\n\n /**\n * cross browser add event method\n *\n * @param {Element|HTMLDocument} object\n * @param {string} type\n * @param {Function} callback\n * @returns void\n */\n function _addEvent(object, type, callback) {\n if (object.addEventListener) {\n object.addEventListener(type, callback, false);\n return;\n }\n\n object.attachEvent('on' + type, callback);\n }\n\n /**\n * takes the event and returns the key character\n *\n * @param {Event} e\n * @return {string}\n */\n function _characterFromEvent(e) {\n\n // for keypress events we should return the character as is\n if (e.type == 'keypress') {\n var character = String.fromCharCode(e.which);\n\n // if the shift key is not pressed then it is safe to assume\n // that we want the character to be lowercase. this means if\n // you accidentally have caps lock on then your key bindings\n // will continue to work\n //\n // the only side effect that might not be desired is if you\n // bind something like 'A' cause you want to trigger an\n // event when capital A is pressed caps lock will no longer\n // trigger the event. shift+a will though.\n if (!e.shiftKey) {\n character = character.toLowerCase();\n }\n\n return character;\n }\n\n // for non keypress events the special maps are needed\n if (_MAP[e.which]) {\n return _MAP[e.which];\n }\n\n if (_KEYCODE_MAP[e.which]) {\n return _KEYCODE_MAP[e.which];\n }\n\n // if it is not in the special map\n\n // with keydown and keyup events the character seems to always\n // come in as an uppercase character whether you are pressing shift\n // or not. we should make sure it is always lowercase for comparisons\n return String.fromCharCode(e.which).toLowerCase();\n }\n\n /**\n * checks if two arrays are equal\n *\n * @param {Array} modifiers1\n * @param {Array} modifiers2\n * @returns {boolean}\n */\n function _modifiersMatch(modifiers1, modifiers2) {\n return modifiers1.sort().join(',') === modifiers2.sort().join(',');\n }\n\n /**\n * takes a key event and figures out what the modifiers are\n *\n * @param {Event} e\n * @returns {Array}\n */\n function _eventModifiers(e) {\n var modifiers = [];\n\n if (e.shiftKey) {\n modifiers.push('shift');\n }\n\n if (e.altKey) {\n modifiers.push('alt');\n }\n\n if (e.ctrlKey) {\n modifiers.push('ctrl');\n }\n\n if (e.metaKey) {\n modifiers.push('meta');\n }\n\n return modifiers;\n }\n\n /**\n * prevents default for this event\n *\n * @param {Event} e\n * @returns void\n */\n function _preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n return;\n }\n\n e.returnValue = false;\n }\n\n /**\n * stops propogation for this event\n *\n * @param {Event} e\n * @returns void\n */\n function _stopPropagation(e) {\n if (e.stopPropagation) {\n e.stopPropagation();\n return;\n }\n\n e.cancelBubble = true;\n }\n\n /**\n * determines if the keycode specified is a modifier key or not\n *\n * @param {string} key\n * @returns {boolean}\n */\n function _isModifier(key) {\n return key == 'shift' || key == 'ctrl' || key == 'alt' || key == 'meta';\n }\n\n /**\n * reverses the map lookup so that we can look for specific keys\n * to see what can and can't use keypress\n *\n * @return {Object}\n */\n function _getReverseMap() {\n if (!_REVERSE_MAP) {\n _REVERSE_MAP = {};\n for (var key in _MAP) {\n\n // pull out the numeric keypad from here cause keypress should\n // be able to detect the keys from the character\n if (key > 95 && key < 112) {\n continue;\n }\n\n if (_MAP.hasOwnProperty(key)) {\n _REVERSE_MAP[_MAP[key]] = key;\n }\n }\n }\n return _REVERSE_MAP;\n }\n\n /**\n * picks the best action based on the key combination\n *\n * @param {string} key - character for key\n * @param {Array} modifiers\n * @param {string=} action passed in\n */\n function _pickBestAction(key, modifiers, action) {\n\n // if no action was picked in we should try to pick the one\n // that we think would work best for this key\n if (!action) {\n action = _getReverseMap()[key] ? 'keydown' : 'keypress';\n }\n\n // modifier keys don't work as expected with keypress,\n // switch to keydown\n if (action == 'keypress' && modifiers.length) {\n action = 'keydown';\n }\n\n return action;\n }\n\n /**\n * Converts from a string key combination to an array\n *\n * @param {string} combination like \"command+shift+l\"\n * @return {Array}\n */\n function _keysFromString(combination) {\n if (combination === '+') {\n return ['+'];\n }\n\n combination = combination.replace(/\\+{2}/g, '+plus');\n return combination.split('+');\n }\n\n /**\n * Gets info for a specific key combination\n *\n * @param {string} combination key combination (\"command+s\" or \"a\" or \"*\")\n * @param {string=} action\n * @returns {Object}\n */\n function _getKeyInfo(combination, action) {\n var keys;\n var key;\n var i;\n var modifiers = [];\n\n // take the keys from this pattern and figure out what the actual\n // pattern is all about\n keys = _keysFromString(combination);\n\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n\n // normalize key names\n if (_SPECIAL_ALIASES[key]) {\n key = _SPECIAL_ALIASES[key];\n }\n\n // if this is not a keypress event then we should\n // be smart about using shift keys\n // this will only work for US keyboards however\n if (action && action != 'keypress' && _SHIFT_MAP[key]) {\n key = _SHIFT_MAP[key];\n modifiers.push('shift');\n }\n\n // if this key is a modifier then add it to the list of modifiers\n if (_isModifier(key)) {\n modifiers.push(key);\n }\n }\n\n // depending on what the key combination is\n // we will try to pick the best event for it\n action = _pickBestAction(key, modifiers, action);\n\n return {\n key: key,\n modifiers: modifiers,\n action: action\n };\n }\n\n function _belongsTo(element, ancestor) {\n if (element === null || element === document) {\n return false;\n }\n\n if (element === ancestor) {\n return true;\n }\n\n return _belongsTo(element.parentNode, ancestor);\n }\n\n function Mousetrap(targetElement) {\n var self = this;\n\n targetElement = targetElement || document;\n\n if (!(self instanceof Mousetrap)) {\n return new Mousetrap(targetElement);\n }\n\n /**\n * element to attach key events to\n *\n * @type {Element}\n */\n self.target = targetElement;\n\n /**\n * a list of all the callbacks setup via Mousetrap.bind()\n *\n * @type {Object}\n */\n self._callbacks = {};\n\n /**\n * direct map of string combinations to callbacks used for trigger()\n *\n * @type {Object}\n */\n self._directMap = {};\n\n /**\n * keeps track of what level each sequence is at since multiple\n * sequences can start out with the same sequence\n *\n * @type {Object}\n */\n var _sequenceLevels = {};\n\n /**\n * variable to store the setTimeout call\n *\n * @type {null|number}\n */\n var _resetTimer;\n\n /**\n * temporary state where we will ignore the next keyup\n *\n * @type {boolean|string}\n */\n var _ignoreNextKeyup = false;\n\n /**\n * temporary state where we will ignore the next keypress\n *\n * @type {boolean}\n */\n var _ignoreNextKeypress = false;\n\n /**\n * are we currently inside of a sequence?\n * type of action (\"keyup\" or \"keydown\" or \"keypress\") or false\n *\n * @type {boolean|string}\n */\n var _nextExpectedAction = false;\n\n /**\n * resets all sequence counters except for the ones passed in\n *\n * @param {Object} doNotReset\n * @returns void\n */\n function _resetSequences(doNotReset) {\n doNotReset = doNotReset || {};\n\n var activeSequences = false,\n key;\n\n for (key in _sequenceLevels) {\n if (doNotReset[key]) {\n activeSequences = true;\n continue;\n }\n _sequenceLevels[key] = 0;\n }\n\n if (!activeSequences) {\n _nextExpectedAction = false;\n }\n }\n\n /**\n * finds all callbacks that match based on the keycode, modifiers,\n * and action\n *\n * @param {string} character\n * @param {Array} modifiers\n * @param {Event|Object} e\n * @param {string=} sequenceName - name of the sequence we are looking for\n * @param {string=} combination\n * @param {number=} level\n * @returns {Array}\n */\n function _getMatches(character, modifiers, e, sequenceName, combination, level) {\n var i;\n var callback;\n var matches = [];\n var action = e.type;\n\n // if there are no events related to this keycode\n if (!self._callbacks[character]) {\n return [];\n }\n\n // if a modifier key is coming up on its own we should allow it\n if (action == 'keyup' && _isModifier(character)) {\n modifiers = [character];\n }\n\n // loop through all callbacks for the key that was pressed\n // and see if any of them match\n for (i = 0; i < self._callbacks[character].length; ++i) {\n callback = self._callbacks[character][i];\n\n // if a sequence name is not specified, but this is a sequence at\n // the wrong level then move onto the next match\n if (!sequenceName && callback.seq && _sequenceLevels[callback.seq] != callback.level) {\n continue;\n }\n\n // if the action we are looking for doesn't match the action we got\n // then we should keep going\n if (action != callback.action) {\n continue;\n }\n\n // if this is a keypress event and the meta key and control key\n // are not pressed that means that we need to only look at the\n // character, otherwise check the modifiers as well\n //\n // chrome will not fire a keypress if meta or control is down\n // safari will fire a keypress if meta or meta+shift is down\n // firefox will fire a keypress if meta or control is down\n if ((action == 'keypress' && !e.metaKey && !e.ctrlKey) || _modifiersMatch(modifiers, callback.modifiers)) {\n\n // when you bind a combination or sequence a second time it\n // should overwrite the first one. if a sequenceName or\n // combination is specified in this call it does just that\n //\n // @todo make deleting its own method?\n var deleteCombo = !sequenceName && callback.combo == combination;\n var deleteSequence = sequenceName && callback.seq == sequenceName && callback.level == level;\n if (deleteCombo || deleteSequence) {\n self._callbacks[character].splice(i, 1);\n }\n\n matches.push(callback);\n }\n }\n\n return matches;\n }\n\n /**\n * actually calls the callback function\n *\n * if your callback function returns false this will use the jquery\n * convention - prevent default and stop propogation on the event\n *\n * @param {Function} callback\n * @param {Event} e\n * @returns void\n */\n function _fireCallback(callback, e, combo, sequence) {\n\n // if this event should not happen stop here\n if (self.stopCallback(e, e.target || e.srcElement, combo, sequence)) {\n return;\n }\n\n if (callback(e, combo) === false) {\n _preventDefault(e);\n _stopPropagation(e);\n }\n }\n\n /**\n * handles a character key event\n *\n * @param {string} character\n * @param {Array} modifiers\n * @param {Event} e\n * @returns void\n */\n self._handleKey = function(character, modifiers, e) {\n var callbacks = _getMatches(character, modifiers, e);\n var i;\n var doNotReset = {};\n var maxLevel = 0;\n var processedSequenceCallback = false;\n\n // Calculate the maxLevel for sequences so we can only execute the longest callback sequence\n for (i = 0; i < callbacks.length; ++i) {\n if (callbacks[i].seq) {\n maxLevel = Math.max(maxLevel, callbacks[i].level);\n }\n }\n\n // loop through matching callbacks for this key event\n for (i = 0; i < callbacks.length; ++i) {\n\n // fire for all sequence callbacks\n // this is because if for example you have multiple sequences\n // bound such as \"g i\" and \"g t\" they both need to fire the\n // callback for matching g cause otherwise you can only ever\n // match the first one\n if (callbacks[i].seq) {\n\n // only fire callbacks for the maxLevel to prevent\n // subsequences from also firing\n //\n // for example 'a option b' should not cause 'option b' to fire\n // even though 'option b' is part of the other sequence\n //\n // any sequences that do not match here will be discarded\n // below by the _resetSequences call\n if (callbacks[i].level != maxLevel) {\n continue;\n }\n\n processedSequenceCallback = true;\n\n // keep a list of which sequences were matches for later\n doNotReset[callbacks[i].seq] = 1;\n _fireCallback(callbacks[i].callback, e, callbacks[i].combo, callbacks[i].seq);\n continue;\n }\n\n // if there were no sequence matches but we are still here\n // that means this is a regular match so we should fire that\n if (!processedSequenceCallback) {\n _fireCallback(callbacks[i].callback, e, callbacks[i].combo);\n }\n }\n\n // if the key you pressed matches the type of sequence without\n // being a modifier (ie \"keyup\" or \"keypress\") then we should\n // reset all sequences that were not matched by this event\n //\n // this is so, for example, if you have the sequence \"h a t\" and you\n // type \"h e a r t\" it does not match. in this case the \"e\" will\n // cause the sequence to reset\n //\n // modifier keys are ignored because you can have a sequence\n // that contains modifiers such as \"enter ctrl+space\" and in most\n // cases the modifier key will be pressed before the next key\n //\n // also if you have a sequence such as \"ctrl+b a\" then pressing the\n // \"b\" key will trigger a \"keypress\" and a \"keydown\"\n //\n // the \"keydown\" is expected when there is a modifier, but the\n // \"keypress\" ends up matching the _nextExpectedAction since it occurs\n // after and that causes the sequence to reset\n //\n // we ignore keypresses in a sequence that directly follow a keydown\n // for the same character\n var ignoreThisKeypress = e.type == 'keypress' && _ignoreNextKeypress;\n if (e.type == _nextExpectedAction && !_isModifier(character) && !ignoreThisKeypress) {\n _resetSequences(doNotReset);\n }\n\n _ignoreNextKeypress = processedSequenceCallback && e.type == 'keydown';\n };\n\n /**\n * handles a keydown event\n *\n * @param {Event} e\n * @returns void\n */\n function _handleKeyEvent(e) {\n\n // normalize e.which for key events\n // @see http://stackoverflow.com/questions/4285627/javascript-keycode-vs-charcode-utter-confusion\n if (typeof e.which !== 'number') {\n e.which = e.keyCode;\n }\n\n var character = _characterFromEvent(e);\n\n // no character found then stop\n if (!character) {\n return;\n }\n\n // need to use === for the character check because the character can be 0\n if (e.type == 'keyup' && _ignoreNextKeyup === character) {\n _ignoreNextKeyup = false;\n return;\n }\n\n self.handleKey(character, _eventModifiers(e), e);\n }\n\n /**\n * called to set a 1 second timeout on the specified sequence\n *\n * this is so after each key press in the sequence you have 1 second\n * to press the next key before you have to start over\n *\n * @returns void\n */\n function _resetSequenceTimer() {\n clearTimeout(_resetTimer);\n _resetTimer = setTimeout(_resetSequences, 1000);\n }\n\n /**\n * binds a key sequence to an event\n *\n * @param {string} combo - combo specified in bind call\n * @param {Array} keys\n * @param {Function} callback\n * @param {string=} action\n * @returns void\n */\n function _bindSequence(combo, keys, callback, action) {\n\n // start off by adding a sequence level record for this combination\n // and setting the level to 0\n _sequenceLevels[combo] = 0;\n\n /**\n * callback to increase the sequence level for this sequence and reset\n * all other sequences that were active\n *\n * @param {string} nextAction\n * @returns {Function}\n */\n function _increaseSequence(nextAction) {\n return function() {\n _nextExpectedAction = nextAction;\n ++_sequenceLevels[combo];\n _resetSequenceTimer();\n };\n }\n\n /**\n * wraps the specified callback inside of another function in order\n * to reset all sequence counters as soon as this sequence is done\n *\n * @param {Event} e\n * @returns void\n */\n function _callbackAndReset(e) {\n _fireCallback(callback, e, combo);\n\n // we should ignore the next key up if the action is key down\n // or keypress. this is so if you finish a sequence and\n // release the key the final key will not trigger a keyup\n if (action !== 'keyup') {\n _ignoreNextKeyup = _characterFromEvent(e);\n }\n\n // weird race condition if a sequence ends with the key\n // another sequence begins with\n setTimeout(_resetSequences, 10);\n }\n\n // loop through keys one at a time and bind the appropriate callback\n // function. for any key leading up to the final one it should\n // increase the sequence. after the final, it should reset all sequences\n //\n // if an action is specified in the original bind call then that will\n // be used throughout. otherwise we will pass the action that the\n // next key in the sequence should match. this allows a sequence\n // to mix and match keypress and keydown events depending on which\n // ones are better suited to the key provided\n for (var i = 0; i < keys.length; ++i) {\n var isFinal = i + 1 === keys.length;\n var wrappedCallback = isFinal ? _callbackAndReset : _increaseSequence(action || _getKeyInfo(keys[i + 1]).action);\n _bindSingle(keys[i], wrappedCallback, action, combo, i);\n }\n }\n\n /**\n * binds a single keyboard combination\n *\n * @param {string} combination\n * @param {Function} callback\n * @param {string=} action\n * @param {string=} sequenceName - name of sequence if part of sequence\n * @param {number=} level - what part of the sequence the command is\n * @returns void\n */\n function _bindSingle(combination, callback, action, sequenceName, level) {\n\n // store a direct mapped reference for use with Mousetrap.trigger\n self._directMap[combination + ':' + action] = callback;\n\n // make sure multiple spaces in a row become a single space\n combination = combination.replace(/\\s+/g, ' ');\n\n var sequence = combination.split(' ');\n var info;\n\n // if this pattern is a sequence of keys then run through this method\n // to reprocess each pattern one key at a time\n if (sequence.length > 1) {\n _bindSequence(combination, sequence, callback, action);\n return;\n }\n\n info = _getKeyInfo(combination, action);\n\n // make sure to initialize array if this is the first time\n // a callback is added for this key\n self._callbacks[info.key] = self._callbacks[info.key] || [];\n\n // remove an existing match if there is one\n _getMatches(info.key, info.modifiers, {type: info.action}, sequenceName, combination, level);\n\n // add this call back to the array\n // if it is a sequence put it at the beginning\n // if not put it at the end\n //\n // this is important because the way these are processed expects\n // the sequence ones to come first\n self._callbacks[info.key][sequenceName ? 'unshift' : 'push']({\n callback: callback,\n modifiers: info.modifiers,\n action: info.action,\n seq: sequenceName,\n level: level,\n combo: combination\n });\n }\n\n /**\n * binds multiple combinations to the same callback\n *\n * @param {Array} combinations\n * @param {Function} callback\n * @param {string|undefined} action\n * @returns void\n */\n self._bindMultiple = function(combinations, callback, action) {\n for (var i = 0; i < combinations.length; ++i) {\n _bindSingle(combinations[i], callback, action);\n }\n };\n\n // start!\n _addEvent(targetElement, 'keypress', _handleKeyEvent);\n _addEvent(targetElement, 'keydown', _handleKeyEvent);\n _addEvent(targetElement, 'keyup', _handleKeyEvent);\n }\n\n /**\n * binds an event to mousetrap\n *\n * can be a single key, a combination of keys separated with +,\n * an array of keys, or a sequence of keys separated by spaces\n *\n * be sure to list the modifier keys first to make sure that the\n * correct key ends up getting bound (the last key in the pattern)\n *\n * @param {string|Array} keys\n * @param {Function} callback\n * @param {string=} action - 'keypress', 'keydown', or 'keyup'\n * @returns void\n */\n Mousetrap.prototype.bind = function(keys, callback, action) {\n var self = this;\n keys = keys instanceof Array ? keys : [keys];\n self._bindMultiple.call(self, keys, callback, action);\n return self;\n };\n\n /**\n * unbinds an event to mousetrap\n *\n * the unbinding sets the callback function of the specified key combo\n * to an empty function and deletes the corresponding key in the\n * _directMap dict.\n *\n * TODO: actually remove this from the _callbacks dictionary instead\n * of binding an empty function\n *\n * the keycombo+action has to be exactly the same as\n * it was defined in the bind method\n *\n * @param {string|Array} keys\n * @param {string} action\n * @returns void\n */\n Mousetrap.prototype.unbind = function(keys, action) {\n var self = this;\n return self.bind.call(self, keys, function() {}, action);\n };\n\n /**\n * triggers an event that has already been bound\n *\n * @param {string} keys\n * @param {string=} action\n * @returns void\n */\n Mousetrap.prototype.trigger = function(keys, action) {\n var self = this;\n if (self._directMap[keys + ':' + action]) {\n self._directMap[keys + ':' + action]({}, keys);\n }\n return self;\n };\n\n /**\n * resets the library back to its initial state. this is useful\n * if you want to clear out the current keyboard shortcuts and bind\n * new ones - for example if you switch to another page\n *\n * @returns void\n */\n Mousetrap.prototype.reset = function() {\n var self = this;\n self._callbacks = {};\n self._directMap = {};\n return self;\n };\n\n /**\n * should we stop this event before firing off callbacks\n *\n * @param {Event} e\n * @param {Element} element\n * @return {boolean}\n */\n Mousetrap.prototype.stopCallback = function(e, element) {\n var self = this;\n\n // if the element has the class \"mousetrap\" then no need to stop\n if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) {\n return false;\n }\n\n if (_belongsTo(element, self.target)) {\n return false;\n }\n\n // Events originating from a shadow DOM are re-targetted and `e.target` is the shadow host,\n // not the initial event target in the shadow tree. Note that not all events cross the\n // shadow boundary.\n // For shadow trees with `mode: 'open'`, the initial event target is the first element in\n // the event’s composed path. For shadow trees with `mode: 'closed'`, the initial event\n // target cannot be obtained.\n if ('composedPath' in e && typeof e.composedPath === 'function') {\n // For open shadow trees, update `element` so that the following check works.\n var initialEventTarget = e.composedPath()[0];\n if (initialEventTarget !== e.target) {\n element = initialEventTarget;\n }\n }\n\n // stop for input, select, and textarea\n return element.tagName == 'INPUT' || element.tagName == 'SELECT' || element.tagName == 'TEXTAREA' || element.isContentEditable;\n };\n\n /**\n * exposes _handleKey publicly so it can be overwritten by extensions\n */\n Mousetrap.prototype.handleKey = function() {\n var self = this;\n return self._handleKey.apply(self, arguments);\n };\n\n /**\n * allow custom key mappings\n */\n Mousetrap.addKeycodes = function(object) {\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n _MAP[key] = object[key];\n }\n }\n _REVERSE_MAP = null;\n };\n\n /**\n * Init the global mousetrap functions\n *\n * This method is needed to allow the global mousetrap functions to work\n * now that mousetrap is a constructor function.\n */\n Mousetrap.init = function() {\n var documentMousetrap = Mousetrap(document);\n for (var method in documentMousetrap) {\n if (method.charAt(0) !== '_') {\n Mousetrap[method] = (function(method) {\n return function() {\n return documentMousetrap[method].apply(documentMousetrap, arguments);\n };\n } (method));\n }\n }\n };\n\n Mousetrap.init();\n\n // expose mousetrap to the global object\n window.Mousetrap = Mousetrap;\n\n // expose as a common js module\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = Mousetrap;\n }\n\n // expose mousetrap as an AMD module\n if (typeof define === 'function' && define.amd) {\n define(function() {\n return Mousetrap;\n });\n }\n}) (typeof window !== 'undefined' ? window : null, typeof window !== 'undefined' ? document : null);\n","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./bgImageDialog.vue?vue&type=style&index=0&id=dfa93a36&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./changeWHDialog.vue?vue&type=style&index=0&id=62c82fd3&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./changeColorDialog.vue?vue&type=style&index=0&id=88b34016&lang=scss&scoped=true\"","var defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n if (target && !STATIC) target = target.prototype;\n if (target && !hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./actionDialog.vue?vue&type=style&index=0&id=3d4b8685&lang=scss&scoped=true\"","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { GeometryUtil, Angle, Point, Dom, NumberExt, View, } from '@antv/x6';\nexport class TransformImpl extends View {\n get model() {\n return this.graph.model;\n }\n get view() {\n return this.graph.renderer.findViewByCell(this.node);\n }\n get containerClassName() {\n return this.prefixClassName('widget-transform');\n }\n get resizeClassName() {\n return `${this.containerClassName}-resize`;\n }\n get rotateClassName() {\n return `${this.containerClassName}-rotate`;\n }\n constructor(options, node, graph) {\n super();\n this.node = node;\n this.graph = graph;\n this.options = Object.assign(Object.assign({}, Private.defaultOptions), options);\n this.render();\n this.startListening();\n }\n startListening() {\n this.delegateEvents({\n [`mousedown .${this.resizeClassName}`]: 'startResizing',\n [`touchstart .${this.resizeClassName}`]: 'startResizing',\n [`mousedown .${this.rotateClassName}`]: 'startRotating',\n [`touchstart .${this.rotateClassName}`]: 'startRotating',\n });\n this.model.on('*', this.update, this);\n this.graph.on('scale', this.update, this);\n this.graph.on('translate', this.update, this);\n this.node.on('removed', this.remove, this);\n this.model.on('reseted', this.remove, this);\n this.view.on('cell:knob:mousedown', this.onKnobMouseDown, this);\n this.view.on('cell:knob:mouseup', this.onKnobMouseUp, this);\n }\n stopListening() {\n this.undelegateEvents();\n this.model.off('*', this.update, this);\n this.graph.off('scale', this.update, this);\n this.graph.off('translate', this.update, this);\n this.node.off('removed', this.remove, this);\n this.model.off('reseted', this.remove, this);\n this.view.off('cell:knob:mousedown', this.onKnobMouseDown, this);\n this.view.off('cell:knob:mouseup', this.onKnobMouseUp, this);\n }\n renderHandles() {\n this.container = document.createElement('div');\n const knob = document.createElement('div');\n Dom.attr(knob, 'draggable', 'false');\n const rotate = knob.cloneNode(true);\n Dom.addClass(rotate, this.rotateClassName);\n const resizes = Private.POSITIONS.map((pos) => {\n const elem = knob.cloneNode(true);\n Dom.addClass(elem, this.resizeClassName);\n Dom.attr(elem, 'data-position', pos);\n return elem;\n });\n this.empty();\n Dom.append(this.container, [...resizes, rotate]);\n }\n render() {\n this.renderHandles();\n if (this.view) {\n this.view.addClass(Private.NODE_CLS);\n }\n Dom.addClass(this.container, this.containerClassName);\n Dom.toggleClass(this.container, 'no-orth-resize', this.options.preserveAspectRatio || !this.options.orthogonalResizing);\n Dom.toggleClass(this.container, 'no-resize', !this.options.resizable);\n Dom.toggleClass(this.container, 'no-rotate', !this.options.rotatable);\n if (this.options.className) {\n Dom.addClass(this.container, this.options.className);\n }\n this.graph.container.appendChild(this.container);\n return this.update();\n }\n update() {\n const ctm = this.graph.matrix();\n const bbox = this.node.getBBox();\n bbox.x *= ctm.a;\n bbox.x += ctm.e;\n bbox.y *= ctm.d;\n bbox.y += ctm.f;\n bbox.width *= ctm.a;\n bbox.height *= ctm.d;\n const angle = Angle.normalize(this.node.getAngle());\n const transform = angle !== 0 ? `rotate(${angle}deg)` : '';\n Dom.css(this.container, {\n transform,\n width: bbox.width,\n height: bbox.height,\n left: bbox.x,\n top: bbox.y,\n });\n this.updateResizerDirections();\n return this;\n }\n remove() {\n if (this.view) {\n this.view.removeClass(Private.NODE_CLS);\n }\n return super.remove();\n }\n onKnobMouseDown() {\n this.startHandle();\n }\n onKnobMouseUp() {\n this.stopHandle();\n }\n updateResizerDirections() {\n // Update the directions on the resizer divs while the node being rotated.\n // The directions are represented by cardinal points (N,S,E,W). For example\n // the div originally pointed to north needs to be changed to point to south\n // if the node was rotated by 180 degrees.\n const angle = Angle.normalize(this.node.getAngle());\n const shift = Math.floor(angle * (Private.DIRECTIONS.length / 360));\n if (shift !== this.prevShift) {\n // Create the current directions array based on the calculated shift.\n const directions = Private.DIRECTIONS.slice(shift).concat(Private.DIRECTIONS.slice(0, shift));\n const className = (dir) => `${this.containerClassName}-cursor-${dir}`;\n const resizes = this.container.querySelectorAll(`.${this.resizeClassName}`);\n resizes.forEach((resize, index) => {\n Dom.removeClass(resize, Private.DIRECTIONS.map((dir) => className(dir)).join(' '));\n Dom.addClass(resize, className(directions[index]));\n });\n this.prevShift = shift;\n }\n }\n getTrueDirection(dir) {\n const angle = Angle.normalize(this.node.getAngle());\n let index = Private.POSITIONS.indexOf(dir);\n index += Math.floor(angle * (Private.POSITIONS.length / 360));\n index %= Private.POSITIONS.length;\n return Private.POSITIONS[index];\n }\n toValidResizeDirection(dir) {\n return ({\n top: 'top-left',\n bottom: 'bottom-right',\n left: 'bottom-left',\n right: 'top-right',\n }[dir] || dir);\n }\n startResizing(evt) {\n evt.stopPropagation();\n this.model.startBatch('resize', { cid: this.cid });\n const dir = Dom.attr(evt.target, 'data-position');\n this.prepareResizing(evt, dir);\n this.startAction(evt);\n }\n prepareResizing(evt, relativeDirection) {\n const trueDirection = this.getTrueDirection(relativeDirection);\n let rx = 0;\n let ry = 0;\n relativeDirection.split('-').forEach((direction) => {\n rx = { left: -1, right: 1 }[direction] || rx;\n ry = { top: -1, bottom: 1 }[direction] || ry;\n });\n const direction = this.toValidResizeDirection(relativeDirection);\n const selector = {\n 'top-right': 'bottomLeft',\n 'top-left': 'bottomRight',\n 'bottom-left': 'topRight',\n 'bottom-right': 'topLeft',\n }[direction];\n const angle = Angle.normalize(this.node.getAngle());\n this.setEventData(evt, {\n selector,\n direction,\n trueDirection,\n relativeDirection,\n angle,\n resizeX: rx,\n resizeY: ry,\n action: 'resizing',\n });\n }\n startRotating(evt) {\n evt.stopPropagation();\n this.model.startBatch('rotate', { cid: this.cid });\n const center = this.node.getBBox().getCenter();\n const e = this.normalizeEvent(evt);\n const client = this.graph.snapToGrid(e.clientX, e.clientY);\n this.setEventData(evt, {\n center,\n action: 'rotating',\n angle: Angle.normalize(this.node.getAngle()),\n start: Point.create(client).theta(center),\n });\n this.startAction(evt);\n }\n onMouseMove(evt) {\n const view = this.graph.findViewByCell(this.node);\n let data = this.getEventData(evt);\n if (data.action) {\n const e = this.normalizeEvent(evt);\n let clientX = e.clientX;\n let clientY = e.clientY;\n const scroller = this.graph.getPlugin('scroller');\n const restrict = this.options.restrictedResizing;\n if (restrict === true || typeof restrict === 'number') {\n const factor = restrict === true ? 0 : restrict;\n const fix = scroller ? Math.max(factor, 8) : factor;\n const rect = this.graph.container.getBoundingClientRect();\n clientX = NumberExt.clamp(clientX, rect.left + fix, rect.right - fix);\n clientY = NumberExt.clamp(clientY, rect.top + fix, rect.bottom - fix);\n }\n else if (this.options.autoScrollOnResizing && scroller) {\n scroller.autoScroll(clientX, clientY);\n }\n const pos = this.graph.snapToGrid(clientX, clientY);\n const gridSize = this.graph.getGridSize();\n const node = this.node;\n const options = this.options;\n if (data.action === 'resizing') {\n data = data;\n if (!data.resized) {\n if (view) {\n view.addClass('node-resizing');\n this.notify('node:resize', evt, view);\n }\n data.resized = true;\n }\n const currentBBox = node.getBBox();\n const requestedSize = Point.create(pos)\n .rotate(data.angle, currentBBox.getCenter())\n .diff(currentBBox[data.selector]);\n let width = data.resizeX\n ? requestedSize.x * data.resizeX\n : currentBBox.width;\n let height = data.resizeY\n ? requestedSize.y * data.resizeY\n : currentBBox.height;\n const rawWidth = width;\n const rawHeight = height;\n width = GeometryUtil.snapToGrid(width, gridSize);\n height = GeometryUtil.snapToGrid(height, gridSize);\n width = Math.max(width, options.minWidth || gridSize);\n height = Math.max(height, options.minHeight || gridSize);\n width = Math.min(width, options.maxWidth || Infinity);\n height = Math.min(height, options.maxHeight || Infinity);\n if (options.preserveAspectRatio) {\n const candidateWidth = (currentBBox.width * height) / currentBBox.height;\n const candidateHeight = (currentBBox.height * width) / currentBBox.width;\n if (width < candidateWidth) {\n height = candidateHeight;\n }\n else {\n width = candidateWidth;\n }\n }\n const relativeDirection = data.relativeDirection;\n if (options.allowReverse &&\n (rawWidth <= -width || rawHeight <= -height)) {\n let reverted;\n if (relativeDirection === 'left') {\n if (rawWidth <= -width) {\n reverted = 'right';\n }\n }\n else if (relativeDirection === 'right') {\n if (rawWidth <= -width) {\n reverted = 'left';\n }\n }\n else if (relativeDirection === 'top') {\n if (rawHeight <= -height) {\n reverted = 'bottom';\n }\n }\n else if (relativeDirection === 'bottom') {\n if (rawHeight <= -height) {\n reverted = 'top';\n }\n }\n else if (relativeDirection === 'top-left') {\n if (rawWidth <= -width && rawHeight <= -height) {\n reverted = 'bottom-right';\n }\n else if (rawWidth <= -width) {\n reverted = 'top-right';\n }\n else if (rawHeight <= -height) {\n reverted = 'bottom-left';\n }\n }\n else if (relativeDirection === 'top-right') {\n if (rawWidth <= -width && rawHeight <= -height) {\n reverted = 'bottom-left';\n }\n else if (rawWidth <= -width) {\n reverted = 'top-left';\n }\n else if (rawHeight <= -height) {\n reverted = 'bottom-right';\n }\n }\n else if (relativeDirection === 'bottom-left') {\n if (rawWidth <= -width && rawHeight <= -height) {\n reverted = 'top-right';\n }\n else if (rawWidth <= -width) {\n reverted = 'bottom-right';\n }\n else if (rawHeight <= -height) {\n reverted = 'top-left';\n }\n }\n else if (relativeDirection === 'bottom-right') {\n if (rawWidth <= -width && rawHeight <= -height) {\n reverted = 'top-left';\n }\n else if (rawWidth <= -width) {\n reverted = 'bottom-left';\n }\n else if (rawHeight <= -height) {\n reverted = 'top-right';\n }\n }\n const revertedDir = reverted;\n this.stopHandle();\n const handle = this.container.querySelector(`.${this.resizeClassName}[data-position=\"${revertedDir}\"]`);\n this.startHandle(handle);\n this.prepareResizing(evt, revertedDir);\n this.onMouseMove(evt);\n }\n if (currentBBox.width !== width || currentBBox.height !== height) {\n const resizeOptions = {\n ui: true,\n direction: data.direction,\n relativeDirection: data.relativeDirection,\n trueDirection: data.trueDirection,\n minWidth: options.minWidth,\n minHeight: options.minHeight,\n maxWidth: options.maxWidth,\n maxHeight: options.maxHeight,\n preserveAspectRatio: options.preserveAspectRatio === true,\n };\n node.resize(width, height, resizeOptions);\n this.notify('node:resizing', evt, view);\n }\n }\n else if (data.action === 'rotating') {\n data = data;\n if (!data.rotated) {\n if (view) {\n view.addClass('node-rotating');\n this.notify('node:rotate', evt, view);\n }\n data.rotated = true;\n }\n const currentAngle = node.getAngle();\n const theta = data.start - Point.create(pos).theta(data.center);\n let target = data.angle + theta;\n if (options.rotateGrid) {\n target = GeometryUtil.snapToGrid(target, options.rotateGrid);\n }\n target = Angle.normalize(target);\n if (currentAngle !== target) {\n node.rotate(target, { absolute: true });\n this.notify('node:rotating', evt, view);\n }\n }\n }\n }\n onMouseUp(evt) {\n const data = this.getEventData(evt);\n if (data.action) {\n this.stopAction(evt);\n this.model.stopBatch(data.action === 'resizing' ? 'resize' : 'rotate', {\n cid: this.cid,\n });\n }\n }\n startHandle(handle) {\n this.handle = handle || null;\n Dom.addClass(this.container, `${this.containerClassName}-active`);\n if (handle) {\n Dom.addClass(handle, `${this.containerClassName}-active-handle`);\n const pos = handle.getAttribute('data-position');\n if (pos) {\n const dir = Private.DIRECTIONS[Private.POSITIONS.indexOf(pos)];\n Dom.addClass(this.container, `${this.containerClassName}-cursor-${dir}`);\n }\n }\n }\n stopHandle() {\n Dom.removeClass(this.container, `${this.containerClassName}-active`);\n if (this.handle) {\n Dom.removeClass(this.handle, `${this.containerClassName}-active-handle`);\n const pos = this.handle.getAttribute('data-position');\n if (pos) {\n const dir = Private.DIRECTIONS[Private.POSITIONS.indexOf(pos)];\n Dom.removeClass(this.container, `${this.containerClassName}-cursor-${dir}`);\n }\n this.handle = null;\n }\n }\n startAction(evt) {\n this.startHandle(evt.target);\n this.graph.view.undelegateEvents();\n this.delegateDocumentEvents(Private.documentEvents, evt.data);\n }\n stopAction(evt) {\n this.stopHandle();\n this.undelegateDocumentEvents();\n this.graph.view.delegateEvents();\n const view = this.graph.findViewByCell(this.node);\n const data = this.getEventData(evt);\n if (view) {\n view.removeClass(`node-${data.action}`);\n if (data.action === 'resizing' && data.resized) {\n this.notify('node:resized', evt, view);\n }\n else if (data.action === 'rotating' && data.rotated) {\n this.notify('node:rotated', evt, view);\n }\n }\n }\n notify(name, evt, view, args = {}) {\n if (view) {\n const graph = view.graph;\n const e = graph.view.normalizeEvent(evt);\n const localPoint = graph.snapToGrid(e.clientX, e.clientY);\n this.trigger(name, Object.assign({ e,\n view, node: view.cell, cell: view.cell, x: localPoint.x, y: localPoint.y }, args));\n }\n }\n dispose() {\n this.remove();\n this.off();\n }\n}\n__decorate([\n View.dispose()\n], TransformImpl.prototype, \"dispose\", null);\nvar Private;\n(function (Private) {\n Private.NODE_CLS = 'has-widget-transform';\n Private.DIRECTIONS = ['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w'];\n Private.POSITIONS = [\n 'top-left',\n 'top',\n 'top-right',\n 'right',\n 'bottom-right',\n 'bottom',\n 'bottom-left',\n 'left',\n ];\n Private.documentEvents = {\n mousemove: 'onMouseMove',\n touchmove: 'onMouseMove',\n mouseup: 'onMouseUp',\n touchend: 'onMouseUp',\n };\n Private.defaultOptions = {\n minWidth: 0,\n minHeight: 0,\n maxWidth: Infinity,\n maxHeight: Infinity,\n rotateGrid: 15,\n rotatable: true,\n preserveAspectRatio: false,\n orthogonalResizing: true,\n restrictedResizing: false,\n autoScrollOnResizing: true,\n allowReverse: true,\n };\n})(Private || (Private = {}));\n//# sourceMappingURL=transform.js.map","/* eslint-disable */\n/**\n * Auto generated file, do not modify it!\n */\nexport const content = `.x6-widget-transform {\n position: absolute;\n box-sizing: content-box !important;\n margin: -5px 0 0 -5px;\n padding: 4px;\n border: 1px dashed #000;\n border-radius: 5px;\n user-select: none;\n pointer-events: none;\n}\n.x6-widget-transform > div {\n position: absolute;\n box-sizing: border-box;\n background-color: #fff;\n border: 1px solid #000;\n transition: background-color 0.2s;\n pointer-events: auto;\n -webkit-user-drag: none;\n user-drag: none;\n /* stylelint-disable-line */\n}\n.x6-widget-transform > div:hover {\n background-color: #d3d3d3;\n}\n.x6-widget-transform-cursor-n {\n cursor: n-resize;\n}\n.x6-widget-transform-cursor-s {\n cursor: s-resize;\n}\n.x6-widget-transform-cursor-e {\n cursor: e-resize;\n}\n.x6-widget-transform-cursor-w {\n cursor: w-resize;\n}\n.x6-widget-transform-cursor-ne {\n cursor: ne-resize;\n}\n.x6-widget-transform-cursor-nw {\n cursor: nw-resize;\n}\n.x6-widget-transform-cursor-se {\n cursor: se-resize;\n}\n.x6-widget-transform-cursor-sw {\n cursor: sw-resize;\n}\n.x6-widget-transform-resize {\n width: 10px;\n height: 10px;\n border-radius: 6px;\n}\n.x6-widget-transform-resize[data-position='top-left'] {\n top: -5px;\n left: -5px;\n}\n.x6-widget-transform-resize[data-position='top-right'] {\n top: -5px;\n right: -5px;\n}\n.x6-widget-transform-resize[data-position='bottom-left'] {\n bottom: -5px;\n left: -5px;\n}\n.x6-widget-transform-resize[data-position='bottom-right'] {\n right: -5px;\n bottom: -5px;\n}\n.x6-widget-transform-resize[data-position='top'] {\n top: -5px;\n left: 50%;\n margin-left: -5px;\n}\n.x6-widget-transform-resize[data-position='bottom'] {\n bottom: -5px;\n left: 50%;\n margin-left: -5px;\n}\n.x6-widget-transform-resize[data-position='left'] {\n top: 50%;\n left: -5px;\n margin-top: -5px;\n}\n.x6-widget-transform-resize[data-position='right'] {\n top: 50%;\n right: -5px;\n margin-top: -5px;\n}\n.x6-widget-transform.prevent-aspect-ratio .x6-widget-transform-resize[data-position='top'],\n.x6-widget-transform.prevent-aspect-ratio .x6-widget-transform-resize[data-position='bottom'],\n.x6-widget-transform.prevent-aspect-ratio .x6-widget-transform-resize[data-position='left'],\n.x6-widget-transform.prevent-aspect-ratio .x6-widget-transform-resize[data-position='right'] {\n display: none;\n}\n.x6-widget-transform.no-orth-resize .x6-widget-transform-resize[data-position='bottom'],\n.x6-widget-transform.no-orth-resize .x6-widget-transform-resize[data-position='left'],\n.x6-widget-transform.no-orth-resize .x6-widget-transform-resize[data-position='right'],\n.x6-widget-transform.no-orth-resize .x6-widget-transform-resize[data-position='top'] {\n display: none;\n}\n.x6-widget-transform.no-resize .x6-widget-transform-resize {\n display: none;\n}\n.x6-widget-transform-rotate {\n top: -20px;\n left: -20px;\n width: 12px;\n height: 12px;\n border-radius: 6px;\n cursor: crosshair;\n}\n.x6-widget-transform.no-rotate .x6-widget-transform-rotate {\n display: none;\n}\n.x6-widget-transform-active {\n border-color: transparent;\n pointer-events: all;\n}\n.x6-widget-transform-active > div {\n display: none;\n}\n.x6-widget-transform-active > .x6-widget-transform-active-handle {\n display: block;\n background-color: #808080;\n}\n`;\n//# sourceMappingURL=raw.js.map","import { Graph } from '@antv/x6';\nGraph.prototype.createTransformWidget = function (node) {\n const transform = this.getPlugin('transform');\n if (transform) {\n transform.createWidget(node);\n }\n return this;\n};\nGraph.prototype.clearTransformWidgets = function () {\n const transform = this.getPlugin('transform');\n if (transform) {\n transform.clearWidgets();\n }\n return this;\n};\n//# sourceMappingURL=api.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Basecoat, CssLoader } from '@antv/x6';\nimport { TransformImpl } from './transform';\nimport { content } from './style/raw';\nimport './api';\nexport class Transform extends Basecoat {\n constructor(options = {}) {\n super();\n this.name = 'transform';\n this.widgets = new Map();\n this.disabled = false;\n this.options = options;\n CssLoader.ensure(this.name, content);\n }\n init(graph) {\n this.graph = graph;\n if (this.disabled) {\n return;\n }\n this.startListening();\n }\n startListening() {\n this.graph.on('node:click', this.onNodeClick, this);\n this.graph.on('blank:mousedown', this.onBlankMouseDown, this);\n }\n stopListening() {\n this.graph.off('node:click', this.onNodeClick, this);\n this.graph.off('blank:mousedown', this.onBlankMouseDown, this);\n }\n enable() {\n if (this.disabled) {\n this.disabled = false;\n this.startListening();\n }\n }\n disable() {\n if (!this.disabled) {\n this.disabled = true;\n this.stopListening();\n }\n }\n isEnabled() {\n return !this.disabled;\n }\n createWidget(node) {\n this.clearWidgets();\n const widget = this.createTransform(node);\n if (widget) {\n this.widgets.set(node, widget);\n widget.on('*', (name, args) => {\n this.trigger(name, args);\n this.graph.trigger(name, args);\n });\n }\n }\n onNodeClick({ node }) {\n this.createWidget(node);\n }\n onBlankMouseDown() {\n this.clearWidgets();\n }\n createTransform(node) {\n const options = this.getTransformOptions(node);\n if (options.resizable || options.rotatable) {\n return new TransformImpl(options, node, this.graph);\n }\n return null;\n }\n getTransformOptions(node) {\n if (!this.options.resizing) {\n this.options.resizing = {\n enabled: false,\n };\n }\n if (!this.options.rotating) {\n this.options.rotating = {\n enabled: false,\n };\n }\n if (typeof this.options.resizing === 'boolean') {\n this.options.resizing = {\n enabled: this.options.resizing,\n };\n }\n if (typeof this.options.rotating === 'boolean') {\n this.options.rotating = {\n enabled: this.options.rotating,\n };\n }\n const resizing = Transform.parseOptionGroup(this.graph, node, this.options.resizing);\n const rotating = Transform.parseOptionGroup(this.graph, node, this.options.rotating);\n const options = {\n resizable: !!resizing.enabled,\n minWidth: resizing.minWidth || 0,\n maxWidth: resizing.maxWidth || Number.MAX_SAFE_INTEGER,\n minHeight: resizing.minHeight || 0,\n maxHeight: resizing.maxHeight || Number.MAX_SAFE_INTEGER,\n orthogonalResizing: typeof resizing.orthogonal === 'boolean' ? resizing.orthogonal : true,\n restrictedResizing: !!resizing.restrict,\n autoScrollOnResizing: typeof resizing.autoScroll === 'boolean' ? resizing.autoScroll : true,\n preserveAspectRatio: !!resizing.preserveAspectRatio,\n allowReverse: typeof resizing.allowReverse === 'boolean'\n ? resizing.allowReverse\n : true,\n rotatable: !!rotating.enabled,\n rotateGrid: rotating.grid || 15,\n };\n return options;\n }\n clearWidgets() {\n this.widgets.forEach((widget, node) => {\n if (this.graph.getCellById(node.id)) {\n widget.dispose();\n }\n });\n this.widgets.clear();\n }\n dispose() {\n this.clearWidgets();\n this.stopListening();\n this.off();\n CssLoader.clean(this.name);\n }\n}\n__decorate([\n Basecoat.dispose()\n], Transform.prototype, \"dispose\", null);\n(function (Transform) {\n function parseOptionGroup(graph, arg, options) {\n const result = {};\n Object.keys(options || {}).forEach((key) => {\n const val = options[key];\n result[key] = typeof val === 'function' ? val.call(graph, arg) : val;\n });\n return result;\n }\n Transform.parseOptionGroup = parseOptionGroup;\n})(Transform || (Transform = {}));\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { ArrayExt, FunctionExt, Vector, Angle, Point, Rectangle, View, } from '@antv/x6';\nexport class SnaplineImpl extends View {\n get model() {\n return this.graph.model;\n }\n get containerClassName() {\n return this.prefixClassName('widget-snapline');\n }\n get verticalClassName() {\n return `${this.containerClassName}-vertical`;\n }\n get horizontalClassName() {\n return `${this.containerClassName}-horizontal`;\n }\n constructor(options) {\n super();\n const { graph } = options, others = __rest(options, [\"graph\"]);\n this.graph = graph;\n this.options = Object.assign({}, others);\n this.offset = { x: 0, y: 0 };\n this.render();\n if (!this.disabled) {\n this.startListening();\n }\n }\n get disabled() {\n return this.options.enabled !== true;\n }\n enable() {\n if (this.disabled) {\n this.options.enabled = true;\n this.startListening();\n }\n }\n disable() {\n if (!this.disabled) {\n this.options.enabled = false;\n this.stopListening();\n }\n }\n setFilter(filter) {\n this.options.filter = filter;\n }\n render() {\n const container = (this.containerWrapper = new Vector('svg'));\n const horizontal = (this.horizontal = new Vector('line'));\n const vertical = (this.vertical = new Vector('line'));\n container.addClass(this.containerClassName);\n horizontal.addClass(this.horizontalClassName);\n vertical.addClass(this.verticalClassName);\n container.setAttribute('width', '100%');\n container.setAttribute('height', '100%');\n horizontal.setAttribute('display', 'none');\n vertical.setAttribute('display', 'none');\n container.append([horizontal, vertical]);\n if (this.options.className) {\n container.addClass(this.options.className);\n }\n this.container = this.containerWrapper.node;\n }\n startListening() {\n this.stopListening();\n this.graph.on('node:mousedown', this.captureCursorOffset, this);\n this.graph.on('node:mousemove', this.snapOnMoving, this);\n this.model.on('batch:stop', this.onBatchStop, this);\n this.delegateDocumentEvents({\n mouseup: 'hide',\n touchend: 'hide',\n });\n }\n stopListening() {\n this.graph.off('node:mousedown', this.captureCursorOffset, this);\n this.graph.off('node:mousemove', this.snapOnMoving, this);\n this.model.off('batch:stop', this.onBatchStop, this);\n this.undelegateDocumentEvents();\n }\n onBatchStop({ name, data }) {\n if (name === 'resize') {\n this.snapOnResizing(data.cell, data);\n }\n }\n captureCursorOffset({ view, x, y }) {\n const targetView = view.getDelegatedView();\n if (targetView && this.isNodeMovable(targetView)) {\n const pos = view.cell.getPosition();\n this.offset = {\n x: x - pos.x,\n y: y - pos.y,\n };\n }\n }\n isNodeMovable(view) {\n return view && view.cell.isNode() && view.can('nodeMovable');\n }\n getRestrictArea(view) {\n const restrict = this.graph.options.translating.restrict;\n const area = typeof restrict === 'function'\n ? FunctionExt.call(restrict, this.graph, view)\n : restrict;\n if (typeof area === 'number') {\n return this.graph.transform.getGraphArea().inflate(area);\n }\n if (area === true) {\n return this.graph.transform.getGraphArea();\n }\n return area || null;\n }\n snapOnResizing(node, options) {\n if (this.options.resizing &&\n !options.snapped &&\n options.ui &&\n options.direction &&\n options.trueDirection) {\n const view = this.graph.renderer.findViewByCell(node);\n if (view && view.cell.isNode()) {\n const nodeBbox = node.getBBox();\n const nodeBBoxRotated = nodeBbox.bbox(node.getAngle());\n const nodeTopLeft = nodeBBoxRotated.getTopLeft();\n const nodeBottomRight = nodeBBoxRotated.getBottomRight();\n const angle = Angle.normalize(node.getAngle());\n const tolerance = this.options.tolerance || 0;\n let verticalLeft;\n let verticalTop;\n let verticalHeight;\n let horizontalTop;\n let horizontalLeft;\n let horizontalWidth;\n const snapOrigin = {\n vertical: 0,\n horizontal: 0,\n };\n const direction = options.direction;\n const trueDirection = options.trueDirection;\n const relativeDirection = options.relativeDirection;\n if (trueDirection.indexOf('right') !== -1) {\n snapOrigin.vertical = nodeBottomRight.x;\n }\n else {\n snapOrigin.vertical = nodeTopLeft.x;\n }\n if (trueDirection.indexOf('bottom') !== -1) {\n snapOrigin.horizontal = nodeBottomRight.y;\n }\n else {\n snapOrigin.horizontal = nodeTopLeft.y;\n }\n this.model.getNodes().some((cell) => {\n if (this.isIgnored(node, cell)) {\n return false;\n }\n const snapBBox = cell.getBBox().bbox(cell.getAngle());\n const snapTopLeft = snapBBox.getTopLeft();\n const snapBottomRight = snapBBox.getBottomRight();\n const groups = {\n vertical: [snapTopLeft.x, snapBottomRight.x],\n horizontal: [snapTopLeft.y, snapBottomRight.y],\n };\n const distances = {};\n Object.keys(groups).forEach((k) => {\n const key = k;\n const list = groups[key]\n .map((value) => ({\n position: value,\n distance: Math.abs(value - snapOrigin[key]),\n }))\n .filter((item) => item.distance <= tolerance);\n distances[key] = ArrayExt.sortBy(list, (item) => item.distance);\n });\n if (verticalLeft == null && distances.vertical.length > 0) {\n verticalLeft = distances.vertical[0].position;\n verticalTop = Math.min(nodeBBoxRotated.y, snapBBox.y);\n verticalHeight =\n Math.max(nodeBottomRight.y, snapBottomRight.y) - verticalTop;\n }\n if (horizontalTop == null && distances.horizontal.length > 0) {\n horizontalTop = distances.horizontal[0].position;\n horizontalLeft = Math.min(nodeBBoxRotated.x, snapBBox.x);\n horizontalWidth =\n Math.max(nodeBottomRight.x, snapBottomRight.x) - horizontalLeft;\n }\n return verticalLeft != null && horizontalTop != null;\n });\n this.hide();\n let dx = 0;\n let dy = 0;\n if (horizontalTop != null || verticalLeft != null) {\n if (verticalLeft != null) {\n dx =\n trueDirection.indexOf('right') !== -1\n ? verticalLeft - nodeBottomRight.x\n : nodeTopLeft.x - verticalLeft;\n }\n if (horizontalTop != null) {\n dy =\n trueDirection.indexOf('bottom') !== -1\n ? horizontalTop - nodeBottomRight.y\n : nodeTopLeft.y - horizontalTop;\n }\n }\n let dWidth = 0;\n let dHeight = 0;\n if (angle % 90 === 0) {\n if (angle === 90 || angle === 270) {\n dWidth = dy;\n dHeight = dx;\n }\n else {\n dWidth = dx;\n dHeight = dy;\n }\n }\n else {\n const quadrant = angle >= 0 && angle < 90\n ? 1\n : angle >= 90 && angle < 180\n ? 4\n : angle >= 180 && angle < 270\n ? 3\n : 2;\n if (horizontalTop != null && verticalLeft != null) {\n if (dx < dy) {\n dy = 0;\n horizontalTop = undefined;\n }\n else {\n dx = 0;\n verticalLeft = undefined;\n }\n }\n const rad = Angle.toRad(angle % 90);\n if (dx) {\n dWidth = quadrant === 3 ? dx / Math.cos(rad) : dx / Math.sin(rad);\n }\n if (dy) {\n dHeight = quadrant === 3 ? dy / Math.cos(rad) : dy / Math.sin(rad);\n }\n const quadrant13 = quadrant === 1 || quadrant === 3;\n switch (relativeDirection) {\n case 'top':\n case 'bottom':\n dHeight = dy\n ? dy / (quadrant13 ? Math.cos(rad) : Math.sin(rad))\n : dx / (quadrant13 ? Math.sin(rad) : Math.cos(rad));\n break;\n case 'left':\n case 'right':\n dWidth = dx\n ? dx / (quadrant13 ? Math.cos(rad) : Math.sin(rad))\n : dy / (quadrant13 ? Math.sin(rad) : Math.cos(rad));\n break;\n default:\n break;\n }\n }\n switch (relativeDirection) {\n case 'top':\n case 'bottom':\n dWidth = 0;\n break;\n case 'left':\n case 'right':\n dHeight = 0;\n break;\n default:\n break;\n }\n const gridSize = this.graph.getGridSize();\n let newWidth = Math.max(nodeBbox.width + dWidth, gridSize);\n let newHeight = Math.max(nodeBbox.height + dHeight, gridSize);\n if (options.minWidth && options.minWidth > gridSize) {\n newWidth = Math.max(newWidth, options.minWidth);\n }\n if (options.minHeight && options.minHeight > gridSize) {\n newHeight = Math.max(newHeight, options.minHeight);\n }\n if (options.maxWidth) {\n newWidth = Math.min(newWidth, options.maxWidth);\n }\n if (options.maxHeight) {\n newHeight = Math.min(newHeight, options.maxHeight);\n }\n if (options.preserveAspectRatio) {\n if (dHeight < dWidth) {\n newHeight = newWidth * (nodeBbox.height / nodeBbox.width);\n }\n else {\n newWidth = newHeight * (nodeBbox.width / nodeBbox.height);\n }\n }\n if (newWidth !== nodeBbox.width || newHeight !== nodeBbox.height) {\n node.resize(newWidth, newHeight, {\n direction,\n relativeDirection,\n trueDirection,\n snapped: true,\n snaplines: this.cid,\n restrict: this.getRestrictArea(view),\n });\n if (verticalHeight) {\n verticalHeight += newHeight - nodeBbox.height;\n }\n if (horizontalWidth) {\n horizontalWidth += newWidth - nodeBbox.width;\n }\n }\n const newRotatedBBox = node.getBBox().bbox(angle);\n if (verticalLeft &&\n Math.abs(newRotatedBBox.x - verticalLeft) > 1 &&\n Math.abs(newRotatedBBox.width + newRotatedBBox.x - verticalLeft) > 1) {\n verticalLeft = undefined;\n }\n if (horizontalTop &&\n Math.abs(newRotatedBBox.y - horizontalTop) > 1 &&\n Math.abs(newRotatedBBox.height + newRotatedBBox.y - horizontalTop) > 1) {\n horizontalTop = undefined;\n }\n this.update({\n verticalLeft,\n verticalTop,\n verticalHeight,\n horizontalTop,\n horizontalLeft,\n horizontalWidth,\n });\n }\n }\n }\n snapOnMoving({ view, e, x, y }) {\n const targetView = view.getEventData(e).delegatedView || view;\n if (!this.isNodeMovable(targetView)) {\n return;\n }\n const node = targetView.cell;\n const size = node.getSize();\n const position = node.getPosition();\n const cellBBox = new Rectangle(x - this.offset.x, y - this.offset.y, size.width, size.height);\n const angle = node.getAngle();\n const nodeCenter = cellBBox.getCenter();\n const nodeBBoxRotated = cellBBox.bbox(angle);\n const nodeTopLeft = nodeBBoxRotated.getTopLeft();\n const nodeBottomRight = nodeBBoxRotated.getBottomRight();\n const distance = this.options.tolerance || 0;\n let verticalLeft;\n let verticalTop;\n let verticalHeight;\n let horizontalTop;\n let horizontalLeft;\n let horizontalWidth;\n let verticalFix = 0;\n let horizontalFix = 0;\n this.model.getNodes().some((targetNode) => {\n if (this.isIgnored(node, targetNode)) {\n return false;\n }\n const snapBBox = targetNode.getBBox().bbox(targetNode.getAngle());\n const snapCenter = snapBBox.getCenter();\n const snapTopLeft = snapBBox.getTopLeft();\n const snapBottomRight = snapBBox.getBottomRight();\n if (verticalLeft == null) {\n if (Math.abs(snapCenter.x - nodeCenter.x) < distance) {\n verticalLeft = snapCenter.x;\n verticalFix = 0.5;\n }\n else if (Math.abs(snapTopLeft.x - nodeTopLeft.x) < distance) {\n verticalLeft = snapTopLeft.x;\n verticalFix = 0;\n }\n else if (Math.abs(snapTopLeft.x - nodeBottomRight.x) < distance) {\n verticalLeft = snapTopLeft.x;\n verticalFix = 1;\n }\n else if (Math.abs(snapBottomRight.x - nodeBottomRight.x) < distance) {\n verticalLeft = snapBottomRight.x;\n verticalFix = 1;\n }\n else if (Math.abs(snapBottomRight.x - nodeTopLeft.x) < distance) {\n verticalLeft = snapBottomRight.x;\n }\n if (verticalLeft != null) {\n verticalTop = Math.min(nodeBBoxRotated.y, snapBBox.y);\n verticalHeight =\n Math.max(nodeBottomRight.y, snapBottomRight.y) - verticalTop;\n }\n }\n if (horizontalTop == null) {\n if (Math.abs(snapCenter.y - nodeCenter.y) < distance) {\n horizontalTop = snapCenter.y;\n horizontalFix = 0.5;\n }\n else if (Math.abs(snapTopLeft.y - nodeTopLeft.y) < distance) {\n horizontalTop = snapTopLeft.y;\n }\n else if (Math.abs(snapTopLeft.y - nodeBottomRight.y) < distance) {\n horizontalTop = snapTopLeft.y;\n horizontalFix = 1;\n }\n else if (Math.abs(snapBottomRight.y - nodeBottomRight.y) < distance) {\n horizontalTop = snapBottomRight.y;\n horizontalFix = 1;\n }\n else if (Math.abs(snapBottomRight.y - nodeTopLeft.y) < distance) {\n horizontalTop = snapBottomRight.y;\n }\n if (horizontalTop != null) {\n horizontalLeft = Math.min(nodeBBoxRotated.x, snapBBox.x);\n horizontalWidth =\n Math.max(nodeBottomRight.x, snapBottomRight.x) - horizontalLeft;\n }\n }\n return verticalLeft != null && horizontalTop != null;\n });\n this.hide();\n if (horizontalTop != null || verticalLeft != null) {\n if (horizontalTop != null) {\n nodeBBoxRotated.y =\n horizontalTop - horizontalFix * nodeBBoxRotated.height;\n }\n if (verticalLeft != null) {\n nodeBBoxRotated.x = verticalLeft - verticalFix * nodeBBoxRotated.width;\n }\n const newCenter = nodeBBoxRotated.getCenter();\n const newX = newCenter.x - cellBBox.width / 2;\n const newY = newCenter.y - cellBBox.height / 2;\n const dx = newX - position.x;\n const dy = newY - position.y;\n if (dx !== 0 || dy !== 0) {\n node.translate(dx, dy, {\n snapped: true,\n restrict: this.getRestrictArea(targetView),\n });\n if (horizontalWidth) {\n horizontalWidth += dx;\n }\n if (verticalHeight) {\n verticalHeight += dy;\n }\n }\n this.update({\n verticalLeft,\n verticalTop,\n verticalHeight,\n horizontalTop,\n horizontalLeft,\n horizontalWidth,\n });\n }\n }\n isIgnored(snapNode, targetNode) {\n return (targetNode.id === snapNode.id ||\n targetNode.isDescendantOf(snapNode) ||\n !this.filter(targetNode));\n }\n filter(node) {\n const filter = this.options.filter;\n if (Array.isArray(filter)) {\n return filter.some((item) => {\n if (typeof item === 'string') {\n return node.shape === item;\n }\n return node.id === item.id;\n });\n }\n if (typeof filter === 'function') {\n return FunctionExt.call(filter, this.graph, node);\n }\n return true;\n }\n update(metadata) {\n // https://en.wikipedia.org/wiki/Transformation_matrix#Affine_transformations\n if (metadata.horizontalTop) {\n const start = this.graph.localToGraph(new Point(metadata.horizontalLeft, metadata.horizontalTop));\n const end = this.graph.localToGraph(new Point(metadata.horizontalLeft + metadata.horizontalWidth, metadata.horizontalTop));\n this.horizontal.setAttributes({\n x1: this.options.sharp ? `${start.x}` : '0',\n y1: `${start.y}`,\n x2: this.options.sharp ? `${end.x}` : '100%',\n y2: `${end.y}`,\n display: 'inherit',\n });\n }\n else {\n this.horizontal.setAttribute('display', 'none');\n }\n if (metadata.verticalLeft) {\n const start = this.graph.localToGraph(new Point(metadata.verticalLeft, metadata.verticalTop));\n const end = this.graph.localToGraph(new Point(metadata.verticalLeft, metadata.verticalTop + metadata.verticalHeight));\n this.vertical.setAttributes({\n x1: `${start.x}`,\n y1: this.options.sharp ? `${start.y}` : '0',\n x2: `${end.x}`,\n y2: this.options.sharp ? `${end.y}` : '100%',\n display: 'inherit',\n });\n }\n else {\n this.vertical.setAttribute('display', 'none');\n }\n this.show();\n }\n resetTimer() {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n show() {\n this.resetTimer();\n if (this.container.parentNode == null) {\n this.graph.container.appendChild(this.container);\n }\n return this;\n }\n hide() {\n this.resetTimer();\n this.vertical.setAttribute('display', 'none');\n this.horizontal.setAttribute('display', 'none');\n const clean = this.options.clean;\n const delay = typeof clean === 'number' ? clean : clean !== false ? 3000 : 0;\n if (delay > 0) {\n this.timer = window.setTimeout(() => {\n if (this.container.parentNode !== null) {\n this.unmount();\n }\n }, delay);\n }\n return this;\n }\n onRemove() {\n this.stopListening();\n this.hide();\n }\n dispose() {\n this.remove();\n }\n}\n__decorate([\n View.dispose()\n], SnaplineImpl.prototype, \"dispose\", null);\n//# sourceMappingURL=snapline.js.map","/* eslint-disable */\n/**\n * Auto generated file, do not modify it!\n */\nexport const content = `.x6-widget-snapline {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n pointer-events: none;\n}\n.x6-widget-snapline-vertical,\n.x6-widget-snapline-horizontal {\n stroke: #2ecc71;\n stroke-width: 1px;\n}\n`;\n//# sourceMappingURL=raw.js.map","import { Graph } from '@antv/x6';\nGraph.prototype.isSnaplineEnabled = function () {\n const snapline = this.getPlugin('snapline');\n if (snapline) {\n return snapline.isEnabled();\n }\n return false;\n};\nGraph.prototype.enableSnapline = function () {\n const snapline = this.getPlugin('snapline');\n if (snapline) {\n snapline.enable();\n }\n return this;\n};\nGraph.prototype.disableSnapline = function () {\n const snapline = this.getPlugin('snapline');\n if (snapline) {\n snapline.disable();\n }\n return this;\n};\nGraph.prototype.toggleSnapline = function () {\n const snapline = this.getPlugin('snapline');\n if (snapline) {\n snapline.toggleEnabled();\n }\n return this;\n};\nGraph.prototype.hideSnapline = function () {\n const snapline = this.getPlugin('snapline');\n if (snapline) {\n snapline.hide();\n }\n return this;\n};\nGraph.prototype.setSnaplineFilter = function (filter) {\n const snapline = this.getPlugin('snapline');\n if (snapline) {\n snapline.setFilter(filter);\n }\n return this;\n};\nGraph.prototype.isSnaplineOnResizingEnabled = function () {\n const snapline = this.getPlugin('snapline');\n if (snapline) {\n return snapline.isOnResizingEnabled();\n }\n return false;\n};\nGraph.prototype.enableSnaplineOnResizing = function () {\n const snapline = this.getPlugin('snapline');\n if (snapline) {\n snapline.enableOnResizing();\n }\n return this;\n};\nGraph.prototype.disableSnaplineOnResizing = function () {\n const snapline = this.getPlugin('snapline');\n if (snapline) {\n snapline.disableOnResizing();\n }\n return this;\n};\nGraph.prototype.toggleSnaplineOnResizing = function (enableOnResizing) {\n const snapline = this.getPlugin('snapline');\n if (snapline) {\n snapline.toggleOnResizing(enableOnResizing);\n }\n return this;\n};\nGraph.prototype.isSharpSnapline = function () {\n const snapline = this.getPlugin('snapline');\n if (snapline) {\n return snapline.isSharp();\n }\n return false;\n};\nGraph.prototype.enableSharpSnapline = function () {\n const snapline = this.getPlugin('snapline');\n if (snapline) {\n snapline.enableSharp();\n }\n return this;\n};\nGraph.prototype.disableSharpSnapline = function () {\n const snapline = this.getPlugin('snapline');\n if (snapline) {\n snapline.disableSharp();\n }\n return this;\n};\nGraph.prototype.toggleSharpSnapline = function (sharp) {\n const snapline = this.getPlugin('snapline');\n if (snapline) {\n snapline.toggleSharp(sharp);\n }\n return this;\n};\nGraph.prototype.getSnaplineTolerance = function () {\n const snapline = this.getPlugin('snapline');\n if (snapline) {\n return snapline.getTolerance();\n }\n};\nGraph.prototype.setSnaplineTolerance = function (tolerance) {\n const snapline = this.getPlugin('snapline');\n if (snapline) {\n snapline.setTolerance(tolerance);\n }\n return this;\n};\n//# sourceMappingURL=api.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Disposable, CssLoader } from '@antv/x6';\nimport { SnaplineImpl } from './snapline';\nimport { content } from './style/raw';\nimport './api';\nexport class Snapline extends Disposable {\n constructor(options = {}) {\n super();\n this.name = 'snapline';\n this.options = Object.assign({ enabled: true, tolerance: 10 }, options);\n CssLoader.ensure(this.name, content);\n }\n init(graph) {\n this.snaplineImpl = new SnaplineImpl(Object.assign(Object.assign({}, this.options), { graph }));\n }\n // #region api\n isEnabled() {\n return !this.snaplineImpl.disabled;\n }\n enable() {\n this.snaplineImpl.enable();\n }\n disable() {\n this.snaplineImpl.disable();\n }\n toggleEnabled(enabled) {\n if (enabled != null) {\n if (enabled !== this.isEnabled()) {\n if (enabled) {\n this.enable();\n }\n else {\n this.disable();\n }\n }\n }\n else {\n if (this.isEnabled()) {\n this.disable();\n }\n else {\n this.enable();\n }\n return this;\n }\n }\n hide() {\n this.snaplineImpl.hide();\n return this;\n }\n setFilter(filter) {\n this.snaplineImpl.setFilter(filter);\n return this;\n }\n isOnResizingEnabled() {\n return this.snaplineImpl.options.resizing === true;\n }\n enableOnResizing() {\n this.snaplineImpl.options.resizing = true;\n return this;\n }\n disableOnResizing() {\n this.snaplineImpl.options.resizing = false;\n return this;\n }\n toggleOnResizing(enableOnResizing) {\n if (enableOnResizing != null) {\n if (enableOnResizing !== this.isOnResizingEnabled()) {\n if (enableOnResizing) {\n this.enableOnResizing();\n }\n else {\n this.disableOnResizing();\n }\n }\n }\n else if (this.isOnResizingEnabled()) {\n this.disableOnResizing();\n }\n else {\n this.enableOnResizing();\n }\n return this;\n }\n isSharp() {\n return this.snaplineImpl.options.sharp === true;\n }\n enableSharp() {\n this.snaplineImpl.options.sharp = true;\n return this;\n }\n disableSharp() {\n this.snaplineImpl.options.sharp = false;\n return this;\n }\n toggleSharp(sharp) {\n if (sharp != null) {\n if (sharp !== this.isSharp()) {\n if (sharp) {\n this.enableSharp();\n }\n else {\n this.disableSharp();\n }\n }\n }\n else if (this.isSharp()) {\n this.disableSharp();\n }\n else {\n this.enableSharp();\n }\n return this;\n }\n getTolerance() {\n return this.snaplineImpl.options.tolerance;\n }\n setTolerance(tolerance) {\n this.snaplineImpl.options.tolerance = tolerance;\n return this;\n }\n captureCursorOffset(e) {\n this.snaplineImpl.captureCursorOffset(e);\n }\n snapOnMoving(args) {\n this.snaplineImpl.snapOnMoving(args);\n }\n // #endregion\n dispose() {\n this.snaplineImpl.dispose();\n CssLoader.clean(this.name);\n }\n}\n__decorate([\n Disposable.dispose()\n], Snapline.prototype, \"dispose\", null);\n//# sourceMappingURL=index.js.map","import { Config, Graph, Model, ArrayExt } from '@antv/x6';\nexport class ClipboardImpl {\n constructor() {\n this.cells = [];\n }\n copy(cells, graph, options = {}) {\n this.options = Object.assign({}, options);\n const model = Model.isModel(graph) ? graph : graph.model;\n const cloned = model.cloneSubGraph(cells, options);\n // sort asc by cell type\n this.cells = ArrayExt.sortBy(Object.keys(cloned).map((key) => cloned[key]), (cell) => (cell.isEdge() ? 2 : 1));\n this.serialize(options);\n }\n cut(cells, graph, options = {}) {\n this.copy(cells, graph, options);\n const model = Graph.isGraph(graph) ? graph.model : graph;\n model.batchUpdate('cut', () => {\n cells.forEach((cell) => cell.remove());\n });\n }\n paste(graph, options = {}) {\n const localOptions = Object.assign(Object.assign({}, this.options), options);\n const { offset, edgeProps, nodeProps } = localOptions;\n let dx = 20;\n let dy = 20;\n if (offset) {\n dx = typeof offset === 'number' ? offset : offset.dx;\n dy = typeof offset === 'number' ? offset : offset.dy;\n }\n this.deserialize(localOptions);\n const cells = this.cells;\n cells.forEach((cell) => {\n cell.model = null;\n cell.removeProp('zIndex');\n if (dx || dy) {\n cell.translate(dx, dy);\n }\n if (nodeProps && cell.isNode()) {\n cell.prop(nodeProps);\n }\n if (edgeProps && cell.isEdge()) {\n cell.prop(edgeProps);\n }\n });\n const model = Graph.isGraph(graph) ? graph.model : graph;\n model.batchUpdate('paste', () => {\n model.addCells(this.cells);\n });\n this.copy(cells, graph, options);\n return cells;\n }\n serialize(options) {\n if (options.useLocalStorage !== false) {\n Storage.save(this.cells);\n }\n }\n deserialize(options) {\n if (options.useLocalStorage) {\n const cells = Storage.fetch();\n if (cells) {\n this.cells = cells;\n }\n }\n }\n isEmpty(options = {}) {\n if (options.useLocalStorage) {\n // With useLocalStorage turned on, no real cells can be obtained without deserialize first\n // https://github.com/antvis/X6/issues/2573\n this.deserialize(options);\n }\n return this.cells.length <= 0;\n }\n clean() {\n this.options = {};\n this.cells = [];\n Storage.clean();\n }\n}\nvar Storage;\n(function (Storage) {\n const LOCAL_STORAGE_KEY = `${Config.prefixCls}.clipboard.cells`;\n function save(cells) {\n if (window.localStorage) {\n const data = cells.map((cell) => cell.toJSON());\n localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(data));\n }\n }\n Storage.save = save;\n function fetch() {\n if (window.localStorage) {\n const raw = localStorage.getItem(LOCAL_STORAGE_KEY);\n const cells = raw ? JSON.parse(raw) : [];\n if (cells) {\n return Model.fromJSON(cells);\n }\n }\n }\n Storage.fetch = fetch;\n function clean() {\n if (window.localStorage) {\n localStorage.removeItem(LOCAL_STORAGE_KEY);\n }\n }\n Storage.clean = clean;\n})(Storage || (Storage = {}));\n//# sourceMappingURL=clipboard.js.map","import { Graph } from '@antv/x6';\nGraph.prototype.isClipboardEnabled = function () {\n const clipboard = this.getPlugin('clipboard');\n if (clipboard) {\n return clipboard.isEnabled();\n }\n return false;\n};\nGraph.prototype.enableClipboard = function () {\n const clipboard = this.getPlugin('clipboard');\n if (clipboard) {\n clipboard.enable();\n }\n return this;\n};\nGraph.prototype.disableClipboard = function () {\n const clipboard = this.getPlugin('clipboard');\n if (clipboard) {\n clipboard.disable();\n }\n return this;\n};\nGraph.prototype.toggleClipboard = function (enabled) {\n const clipboard = this.getPlugin('clipboard');\n if (clipboard) {\n clipboard.toggleEnabled(enabled);\n }\n return this;\n};\nGraph.prototype.isClipboardEmpty = function (options) {\n const clipboard = this.getPlugin('clipboard');\n if (clipboard) {\n return clipboard.isEmpty(options);\n }\n return true;\n};\nGraph.prototype.getCellsInClipboard = function () {\n const clipboard = this.getPlugin('clipboard');\n if (clipboard) {\n return clipboard.getCellsInClipboard();\n }\n return [];\n};\nGraph.prototype.cleanClipboard = function () {\n const clipboard = this.getPlugin('clipboard');\n if (clipboard) {\n clipboard.clean();\n }\n return this;\n};\nGraph.prototype.copy = function (cells, options) {\n const clipboard = this.getPlugin('clipboard');\n if (clipboard) {\n clipboard.copy(cells, options);\n }\n return this;\n};\nGraph.prototype.cut = function (cells, options) {\n const clipboard = this.getPlugin('clipboard');\n if (clipboard) {\n clipboard.cut(cells, options);\n }\n return this;\n};\nGraph.prototype.paste = function (options, graph) {\n const clipboard = this.getPlugin('clipboard');\n if (clipboard) {\n return clipboard.paste(options, graph);\n }\n return [];\n};\n//# sourceMappingURL=api.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Basecoat } from '@antv/x6';\nimport { ClipboardImpl } from './clipboard';\nimport './api';\nexport class Clipboard extends Basecoat {\n get disabled() {\n return this.options.enabled !== true;\n }\n get cells() {\n return this.clipboardImpl.cells;\n }\n constructor(options = {}) {\n super();\n this.name = 'clipboard';\n this.options = Object.assign({ enabled: true }, options);\n }\n init(graph) {\n this.graph = graph;\n this.clipboardImpl = new ClipboardImpl();\n this.clipboardImpl.deserialize(this.options);\n }\n // #region api\n isEnabled() {\n return !this.disabled;\n }\n enable() {\n if (this.disabled) {\n this.options.enabled = true;\n }\n }\n disable() {\n if (!this.disabled) {\n this.options.enabled = false;\n }\n }\n toggleEnabled(enabled) {\n if (enabled != null) {\n if (enabled !== this.isEnabled()) {\n if (enabled) {\n this.enable();\n }\n else {\n this.disable();\n }\n }\n }\n else if (this.isEnabled()) {\n this.disable();\n }\n else {\n this.enable();\n }\n return this;\n }\n isEmpty(options = {}) {\n return this.clipboardImpl.isEmpty(options);\n }\n getCellsInClipboard() {\n return this.cells;\n }\n clean(force) {\n if (!this.disabled || force) {\n this.clipboardImpl.clean();\n this.notify('clipboard:changed', { cells: [] });\n }\n return this;\n }\n copy(cells, options = {}) {\n if (!this.disabled) {\n this.clipboardImpl.copy(cells, this.graph, Object.assign(Object.assign({}, this.commonOptions), options));\n this.notify('clipboard:changed', { cells });\n }\n return this;\n }\n cut(cells, options = {}) {\n if (!this.disabled) {\n this.clipboardImpl.cut(cells, this.graph, Object.assign(Object.assign({}, this.commonOptions), options));\n this.notify('clipboard:changed', { cells });\n }\n return this;\n }\n paste(options = {}, graph = this.graph) {\n if (!this.disabled) {\n return this.clipboardImpl.paste(graph, Object.assign(Object.assign({}, this.commonOptions), options));\n }\n return [];\n }\n // #endregion\n get commonOptions() {\n const _a = this.options, { enabled } = _a, others = __rest(_a, [\"enabled\"]);\n return others;\n }\n notify(name, args) {\n this.trigger(name, args);\n this.graph.trigger(name, args);\n }\n dispose() {\n this.clean(true);\n this.off();\n }\n}\n__decorate([\n Basecoat.dispose()\n], Clipboard.prototype, \"dispose\", null);\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport Mousetrap from 'mousetrap';\nimport { Dom, FunctionExt, Disposable, } from '@antv/x6';\nexport class KeyboardImpl extends Disposable {\n get graph() {\n return this.options.graph;\n }\n constructor(options) {\n super();\n this.options = options;\n const scroller = this.graph.getPlugin('scroller');\n this.container = scroller ? scroller.container : this.graph.container;\n if (options.global) {\n this.target = document;\n }\n else {\n this.target = this.container;\n if (!this.disabled) {\n // ensure the container focusable\n this.target.setAttribute('tabindex', '-1');\n }\n // change to mouseup event,prevent page stalling caused by focus\n this.graph.on('cell:mouseup', this.focus, this);\n this.graph.on('blank:mouseup', this.focus, this);\n }\n this.mousetrap = KeyboardImpl.createMousetrap(this);\n }\n get disabled() {\n return this.options.enabled !== true;\n }\n enable() {\n if (this.disabled) {\n this.options.enabled = true;\n if (this.target instanceof HTMLElement) {\n this.target.setAttribute('tabindex', '-1');\n }\n }\n }\n disable() {\n if (!this.disabled) {\n this.options.enabled = false;\n if (this.target instanceof HTMLElement) {\n this.target.removeAttribute('tabindex');\n }\n }\n }\n on(keys, callback, action) {\n this.mousetrap.bind(this.getKeys(keys), callback, action);\n }\n off(keys, action) {\n this.mousetrap.unbind(this.getKeys(keys), action);\n }\n clear() {\n this.mousetrap.reset();\n }\n trigger(key, action) {\n this.mousetrap.trigger(key, action);\n }\n focus(e) {\n const isInputEvent = this.isInputEvent(e.e);\n if (isInputEvent) {\n return;\n }\n const target = this.target;\n target.focus({\n preventScroll: true,\n });\n }\n getKeys(keys) {\n return (Array.isArray(keys) ? keys : [keys]).map((key) => this.formatkey(key));\n }\n formatkey(key) {\n const formated = key\n .toLocaleLowerCase()\n .replace(/\\s/g, '')\n .replace('delete', 'del')\n .replace('cmd', 'command');\n const formatFn = this.options.format;\n if (formatFn) {\n return FunctionExt.call(formatFn, this.graph, formated);\n }\n return formated;\n }\n isGraphEvent(e) {\n const target = e.target;\n const currentTarget = e.currentTarget;\n if (target) {\n if (target === this.target ||\n currentTarget === this.target ||\n target === document.body) {\n return true;\n }\n return Dom.contains(this.container, target);\n }\n return false;\n }\n isInputEvent(e) {\n var _a;\n const target = e.target;\n const tagName = (_a = target === null || target === void 0 ? void 0 : target.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase();\n let isInput = ['input', 'textarea'].includes(tagName);\n if (Dom.attr(target, 'contenteditable') === 'true') {\n isInput = true;\n }\n return isInput;\n }\n isEnabledForEvent(e) {\n const allowed = !this.disabled && this.isGraphEvent(e);\n const isInputEvent = this.isInputEvent(e);\n if (allowed) {\n if (isInputEvent && (e.key === 'Backspace' || e.key === 'Delete')) {\n return false;\n }\n if (this.options.guard) {\n return FunctionExt.call(this.options.guard, this.graph, e);\n }\n }\n return allowed;\n }\n dispose() {\n this.mousetrap.reset();\n }\n}\n__decorate([\n Disposable.dispose()\n], KeyboardImpl.prototype, \"dispose\", null);\n(function (KeyboardImpl) {\n function createMousetrap(keyboard) {\n const mousetrap = new Mousetrap(keyboard.target);\n const stopCallback = mousetrap.stopCallback;\n mousetrap.stopCallback = (e, elem, combo) => {\n if (keyboard.isEnabledForEvent(e)) {\n if (stopCallback) {\n return stopCallback.call(mousetrap, e, elem, combo);\n }\n return false;\n }\n return true;\n };\n return mousetrap;\n }\n KeyboardImpl.createMousetrap = createMousetrap;\n})(KeyboardImpl || (KeyboardImpl = {}));\n//# sourceMappingURL=keyboard.js.map","import { Graph } from '@antv/x6';\nGraph.prototype.isKeyboardEnabled = function () {\n const keyboard = this.getPlugin('keyboard');\n if (keyboard) {\n return keyboard.isEnabled();\n }\n return false;\n};\nGraph.prototype.enableKeyboard = function () {\n const keyboard = this.getPlugin('keyboard');\n if (keyboard) {\n keyboard.enable();\n }\n return this;\n};\nGraph.prototype.disableKeyboard = function () {\n const keyboard = this.getPlugin('keyboard');\n if (keyboard) {\n keyboard.disable();\n }\n return this;\n};\nGraph.prototype.toggleKeyboard = function (enabled) {\n const keyboard = this.getPlugin('keyboard');\n if (keyboard) {\n keyboard.toggleEnabled(enabled);\n }\n return this;\n};\nGraph.prototype.bindKey = function (keys, callback, action) {\n const keyboard = this.getPlugin('keyboard');\n if (keyboard) {\n keyboard.bindKey(keys, callback, action);\n }\n return this;\n};\nGraph.prototype.unbindKey = function (keys, action) {\n const keyboard = this.getPlugin('keyboard');\n if (keyboard) {\n keyboard.unbindKey(keys, action);\n }\n return this;\n};\nGraph.prototype.clearKeys = function () {\n const keyboard = this.getPlugin('keyboard');\n if (keyboard) {\n keyboard.clear();\n }\n return this;\n};\nGraph.prototype.triggerKey = function (key, action) {\n const keyboard = this.getPlugin('keyboard');\n if (keyboard) {\n keyboard.trigger(key, action);\n }\n return this;\n};\n//# sourceMappingURL=api.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Disposable } from '@antv/x6';\nimport { KeyboardImpl } from './keyboard';\nimport './api';\nexport class Keyboard extends Disposable {\n constructor(options = {}) {\n super();\n this.name = 'keyboard';\n this.options = Object.assign({ enabled: true }, options);\n }\n init(graph) {\n this.keyboardImpl = new KeyboardImpl(Object.assign(Object.assign({}, this.options), { graph }));\n }\n // #region api\n isEnabled() {\n return !this.keyboardImpl.disabled;\n }\n enable() {\n this.keyboardImpl.enable();\n }\n disable() {\n this.keyboardImpl.disable();\n }\n toggleEnabled(enabled) {\n if (enabled != null) {\n if (enabled !== this.isEnabled()) {\n if (enabled) {\n this.enable();\n }\n else {\n this.disable();\n }\n }\n }\n else if (this.isEnabled()) {\n this.disable();\n }\n else {\n this.enable();\n }\n return this;\n }\n bindKey(keys, callback, action) {\n this.keyboardImpl.on(keys, callback, action);\n return this;\n }\n trigger(key, action) {\n this.keyboardImpl.trigger(key, action);\n return this;\n }\n clear() {\n this.keyboardImpl.clear();\n return this;\n }\n unbindKey(keys, action) {\n this.keyboardImpl.off(keys, action);\n return this;\n }\n // #endregion\n dispose() {\n this.keyboardImpl.dispose();\n }\n}\n__decorate([\n Disposable.dispose()\n], Keyboard.prototype, \"dispose\", null);\n//# sourceMappingURL=index.js.map","import { Graph } from '@antv/x6';\nGraph.prototype.isHistoryEnabled = function () {\n const history = this.getPlugin('history');\n if (history) {\n return history.isEnabled();\n }\n return false;\n};\nGraph.prototype.enableHistory = function () {\n const history = this.getPlugin('history');\n if (history) {\n history.enable();\n }\n return this;\n};\nGraph.prototype.disableHistory = function () {\n const history = this.getPlugin('history');\n if (history) {\n history.disable();\n }\n return this;\n};\nGraph.prototype.toggleHistory = function (enabled) {\n const history = this.getPlugin('history');\n if (history) {\n history.toggleEnabled(enabled);\n }\n return this;\n};\nGraph.prototype.undo = function (options) {\n const history = this.getPlugin('history');\n if (history) {\n history.undo(options);\n }\n return this;\n};\nGraph.prototype.redo = function (options) {\n const history = this.getPlugin('history');\n if (history) {\n history.redo(options);\n }\n return this;\n};\nGraph.prototype.undoAndCancel = function (options) {\n const history = this.getPlugin('history');\n if (history) {\n history.cancel(options);\n }\n return this;\n};\nGraph.prototype.canUndo = function () {\n const history = this.getPlugin('history');\n if (history) {\n return history.canUndo();\n }\n return false;\n};\nGraph.prototype.canRedo = function () {\n const history = this.getPlugin('history');\n if (history) {\n return history.canRedo();\n }\n return false;\n};\nGraph.prototype.cleanHistory = function (options) {\n const history = this.getPlugin('history');\n if (history) {\n history.clean(options);\n }\n return this;\n};\nGraph.prototype.getHistoryStackSize = function () {\n const history = this.getPlugin('history');\n return history.getSize();\n};\nGraph.prototype.getUndoStackSize = function () {\n const history = this.getPlugin('history');\n return history.getUndoSize();\n};\nGraph.prototype.getRedoStackSize = function () {\n const history = this.getPlugin('history');\n return history.getRedoSize();\n};\nGraph.prototype.getUndoRemainSize = function () {\n const history = this.getPlugin('history');\n return history.getUndoRemainSize();\n};\n//# sourceMappingURL=api.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ObjectExt, FunctionExt, Basecoat, Model, } from '@antv/x6';\nimport './api';\nexport class History extends Basecoat {\n constructor(options = {}) {\n super();\n this.name = 'history';\n this.batchCommands = null;\n this.batchLevel = 0;\n this.lastBatchIndex = -1;\n this.freezed = false;\n this.stackSize = 0; // 0: not limit\n this.handlers = [];\n const { stackSize = 0 } = options;\n this.stackSize = stackSize;\n this.options = Util.getOptions(options);\n this.validator = new History.Validator({\n history: this,\n cancelInvalid: this.options.cancelInvalid,\n });\n }\n init(graph) {\n this.graph = graph;\n this.model = this.graph.model;\n this.clean();\n this.startListening();\n }\n // #region api\n isEnabled() {\n return !this.disabled;\n }\n enable() {\n if (this.disabled) {\n this.options.enabled = true;\n }\n }\n disable() {\n if (!this.disabled) {\n this.options.enabled = false;\n }\n }\n toggleEnabled(enabled) {\n if (enabled != null) {\n if (enabled !== this.isEnabled()) {\n if (enabled) {\n this.enable();\n }\n else {\n this.disable();\n }\n }\n }\n else if (this.isEnabled()) {\n this.disable();\n }\n else {\n this.enable();\n }\n return this;\n }\n undo(options = {}) {\n if (!this.disabled) {\n const cmd = this.undoStack.pop();\n if (cmd) {\n this.revertCommand(cmd, options);\n this.redoStack.push(cmd);\n this.notify('undo', cmd, options);\n }\n }\n return this;\n }\n redo(options = {}) {\n if (!this.disabled) {\n const cmd = this.redoStack.pop();\n if (cmd) {\n this.applyCommand(cmd, options);\n this.undoStackPush(cmd);\n this.notify('redo', cmd, options);\n }\n }\n return this;\n }\n /**\n * Same as `undo()` but does not store the undo-ed command to the\n * `redoStack`. Canceled command therefore cannot be redo-ed.\n */\n cancel(options = {}) {\n if (!this.disabled) {\n const cmd = this.undoStack.pop();\n if (cmd) {\n this.revertCommand(cmd, options);\n this.redoStack = [];\n this.notify('cancel', cmd, options);\n }\n }\n return this;\n }\n getSize() {\n return this.stackSize;\n }\n getUndoRemainSize() {\n const ul = this.undoStack.length;\n return this.stackSize - ul;\n }\n getUndoSize() {\n return this.undoStack.length;\n }\n getRedoSize() {\n return this.redoStack.length;\n }\n canUndo() {\n return !this.disabled && this.undoStack.length > 0;\n }\n canRedo() {\n return !this.disabled && this.redoStack.length > 0;\n }\n clean(options = {}) {\n this.undoStack = [];\n this.redoStack = [];\n this.notify('clean', null, options);\n return this;\n }\n // #endregion\n get disabled() {\n return this.options.enabled !== true;\n }\n validate(events, ...callbacks) {\n this.validator.validate(events, ...callbacks);\n return this;\n }\n startListening() {\n this.model.on('batch:start', this.initBatchCommand, this);\n this.model.on('batch:stop', this.storeBatchCommand, this);\n if (this.options.eventNames) {\n this.options.eventNames.forEach((name, index) => {\n this.handlers[index] = this.addCommand.bind(this, name);\n this.model.on(name, this.handlers[index]);\n });\n }\n this.validator.on('invalid', (args) => this.trigger('invalid', args));\n }\n stopListening() {\n this.model.off('batch:start', this.initBatchCommand, this);\n this.model.off('batch:stop', this.storeBatchCommand, this);\n if (this.options.eventNames) {\n this.options.eventNames.forEach((name, index) => {\n this.model.off(name, this.handlers[index]);\n });\n this.handlers.length = 0;\n }\n this.validator.off('invalid');\n }\n createCommand(options) {\n return {\n batch: options ? options.batch : false,\n data: {},\n };\n }\n revertCommand(cmd, options) {\n this.freezed = true;\n const cmds = Array.isArray(cmd) ? Util.sortBatchCommands(cmd) : [cmd];\n for (let i = cmds.length - 1; i >= 0; i -= 1) {\n const cmd = cmds[i];\n const localOptions = Object.assign(Object.assign({}, options), ObjectExt.pick(cmd.options, this.options.revertOptionsList || []));\n this.executeCommand(cmd, true, localOptions);\n }\n this.freezed = false;\n }\n applyCommand(cmd, options) {\n this.freezed = true;\n const cmds = Array.isArray(cmd) ? Util.sortBatchCommands(cmd) : [cmd];\n for (let i = 0; i < cmds.length; i += 1) {\n const cmd = cmds[i];\n const localOptions = Object.assign(Object.assign({}, options), ObjectExt.pick(cmd.options, this.options.applyOptionsList || []));\n this.executeCommand(cmd, false, localOptions);\n }\n this.freezed = false;\n }\n executeCommand(cmd, revert, options) {\n const model = this.model;\n // const cell = cmd.modelChange ? model : model.getCell(cmd.data.id!)\n const cell = model.getCell(cmd.data.id);\n const event = cmd.event;\n if ((Util.isAddEvent(event) && revert) ||\n (Util.isRemoveEvent(event) && !revert)) {\n cell && cell.remove(options);\n }\n else if ((Util.isAddEvent(event) && !revert) ||\n (Util.isRemoveEvent(event) && revert)) {\n const data = cmd.data;\n if (data.node) {\n model.addNode(data.props, options);\n }\n else if (data.edge) {\n model.addEdge(data.props, options);\n }\n }\n else if (Util.isChangeEvent(event)) {\n const data = cmd.data;\n const key = data.key;\n if (key && cell) {\n const value = revert ? data.prev[key] : data.next[key];\n if (data.key === 'attrs') {\n this.ensureUndefinedAttrs(value, revert ? data.next[key] : data.prev[key]);\n }\n cell.prop(key, value, options);\n }\n }\n else {\n const executeCommand = this.options.executeCommand;\n if (executeCommand) {\n FunctionExt.call(executeCommand, this, cmd, revert, options);\n }\n }\n }\n addCommand(event, args) {\n if (this.freezed || this.disabled) {\n return;\n }\n const eventArgs = args;\n const options = eventArgs.options || {};\n if (options.dryrun) {\n return;\n }\n if ((Util.isAddEvent(event) && this.options.ignoreAdd) ||\n (Util.isRemoveEvent(event) && this.options.ignoreRemove) ||\n (Util.isChangeEvent(event) && this.options.ignoreChange)) {\n return;\n }\n // before\n // ------\n const before = this.options.beforeAddCommand;\n if (before != null &&\n FunctionExt.call(before, this, event, args) === false) {\n return;\n }\n if (event === 'cell:change:*') {\n // eslint-disable-next-line\n event = `cell:change:${eventArgs.key}`;\n }\n const cell = eventArgs.cell;\n const isModelChange = Model.isModel(cell);\n let cmd;\n if (this.batchCommands) {\n // In most cases we are working with same object, doing\n // same action etc. translate an object piece by piece.\n cmd = this.batchCommands[Math.max(this.lastBatchIndex, 0)];\n // Check if we are start working with new object or performing different\n // action with it. Note, that command is uninitialized when lastCmdIndex\n // equals -1. In that case we are done, command we were looking for is\n // already set\n const diffId = (isModelChange && !cmd.modelChange) || cmd.data.id !== cell.id;\n const diffName = cmd.event !== event;\n if (this.lastBatchIndex >= 0 && (diffId || diffName)) {\n // Trying to find command first, which was performing same\n // action with the object as we are doing now with cell.\n const index = this.batchCommands.findIndex((cmd) => ((isModelChange && cmd.modelChange) || cmd.data.id === cell.id) &&\n cmd.event === event);\n if (index < 0 || Util.isAddEvent(event) || Util.isRemoveEvent(event)) {\n cmd = this.createCommand({ batch: true });\n }\n else {\n cmd = this.batchCommands[index];\n this.batchCommands.splice(index, 1);\n }\n this.batchCommands.push(cmd);\n this.lastBatchIndex = this.batchCommands.length - 1;\n }\n }\n else {\n cmd = this.createCommand({ batch: false });\n }\n // add & remove\n // ------------\n if (Util.isAddEvent(event) || Util.isRemoveEvent(event)) {\n const data = cmd.data;\n cmd.event = event;\n cmd.options = options;\n data.id = cell.id;\n data.props = ObjectExt.cloneDeep(cell.toJSON());\n if (cell.isEdge()) {\n data.edge = true;\n }\n else if (cell.isNode()) {\n data.node = true;\n }\n return this.push(cmd, options);\n }\n // change:*\n // --------\n if (Util.isChangeEvent(event)) {\n const key = args.key;\n const data = cmd.data;\n if (!cmd.batch || !cmd.event) {\n // Do this only once. Set previous data and action (also\n // serves as a flag so that we don't repeat this branche).\n cmd.event = event;\n cmd.options = options;\n data.key = key;\n if (data.prev == null) {\n data.prev = {};\n }\n data.prev[key] = ObjectExt.cloneDeep(cell.previous(key));\n if (isModelChange) {\n cmd.modelChange = true;\n }\n else {\n data.id = cell.id;\n }\n }\n if (data.next == null) {\n data.next = {};\n }\n data.next[key] = ObjectExt.cloneDeep(cell.prop(key));\n return this.push(cmd, options);\n }\n // others\n // ------\n const afterAddCommand = this.options.afterAddCommand;\n if (afterAddCommand) {\n FunctionExt.call(afterAddCommand, this, event, args, cmd);\n }\n this.push(cmd, options);\n }\n /**\n * Gather multiple changes into a single command. These commands could\n * be reverted with single `undo()` call. From the moment the function\n * is called every change made on model is not stored into the undoStack.\n * Changes are temporarily kept until `storeBatchCommand()` is called.\n */\n // eslint-disable-next-line\n initBatchCommand(options) {\n if (this.freezed) {\n return;\n }\n if (this.batchCommands) {\n this.batchLevel += 1;\n }\n else {\n this.batchCommands = [this.createCommand({ batch: true })];\n this.batchLevel = 0;\n this.lastBatchIndex = -1;\n }\n }\n /**\n * Store changes temporarily kept in the undoStack. You have to call this\n * function as many times as `initBatchCommand()` been called.\n */\n storeBatchCommand(options) {\n if (this.freezed) {\n return;\n }\n if (this.batchCommands && this.batchLevel <= 0) {\n const cmds = this.filterBatchCommand(this.batchCommands);\n if (cmds.length > 0) {\n this.redoStack = [];\n this.undoStackPush(cmds);\n this.consolidateCommands();\n this.notify('add', cmds, options);\n }\n this.batchCommands = null;\n this.lastBatchIndex = -1;\n this.batchLevel = 0;\n }\n else if (this.batchCommands && this.batchLevel > 0) {\n this.batchLevel -= 1;\n }\n }\n filterBatchCommand(batchCommands) {\n let cmds = batchCommands.slice();\n const result = [];\n while (cmds.length > 0) {\n const cmd = cmds.shift();\n const evt = cmd.event;\n const id = cmd.data.id;\n if (evt != null && (id != null || cmd.modelChange)) {\n if (Util.isAddEvent(evt)) {\n const index = cmds.findIndex((c) => Util.isRemoveEvent(c.event) && c.data.id === id);\n if (index >= 0) {\n cmds = cmds.filter((c, i) => index < i || c.data.id !== id);\n continue;\n }\n }\n else if (Util.isRemoveEvent(evt)) {\n const index = cmds.findIndex((c) => Util.isAddEvent(c.event) && c.data.id === id);\n if (index >= 0) {\n cmds.splice(index, 1);\n continue;\n }\n }\n else if (Util.isChangeEvent(evt)) {\n const data = cmd.data;\n if (ObjectExt.isEqual(data.prev, data.next)) {\n continue;\n }\n }\n else {\n // pass\n }\n result.push(cmd);\n }\n }\n return result;\n }\n notify(event, cmd, options) {\n const cmds = cmd == null ? null : Array.isArray(cmd) ? cmd : [cmd];\n this.emit(event, { cmds, options });\n this.graph.trigger(`history:${event}`, { cmds, options });\n this.emit('change', { cmds, options });\n this.graph.trigger('history:change', { cmds, options });\n }\n push(cmd, options) {\n this.redoStack = [];\n if (cmd.batch) {\n this.lastBatchIndex = Math.max(this.lastBatchIndex, 0);\n this.emit('batch', { cmd, options });\n }\n else {\n this.undoStackPush(cmd);\n this.consolidateCommands();\n this.notify('add', cmd, options);\n }\n }\n /**\n * Conditionally combine multiple undo items into one.\n *\n * Currently this is only used combine a `cell:changed:position` event\n * followed by multiple `cell:change:parent` and `cell:change:children`\n * events, such that a \"move + embed\" action can be undone in one step.\n *\n * See https://github.com/antvis/X6/issues/2421\n *\n * This is an ugly WORKAROUND. It does not solve deficiencies in the batch\n * system itself.\n */\n consolidateCommands() {\n var _a;\n const lastCommandGroup = this.undoStack[this.undoStack.length - 1];\n const penultimateCommandGroup = this.undoStack[this.undoStack.length - 2];\n // We are looking for at least one cell:change:parent\n // and one cell:change:children\n if (!Array.isArray(lastCommandGroup)) {\n return;\n }\n const eventTypes = new Set(lastCommandGroup.map((cmd) => cmd.event));\n if (eventTypes.size !== 2 ||\n !eventTypes.has('cell:change:parent') ||\n !eventTypes.has('cell:change:children')) {\n return;\n }\n // We are looking for events from user interactions\n if (!lastCommandGroup.every((cmd) => { var _a; return cmd.batch && ((_a = cmd.options) === null || _a === void 0 ? void 0 : _a.ui); })) {\n return;\n }\n // We are looking for a command group with exactly one event, whose event\n // type is cell:change:position, and is from user interactions\n if (!Array.isArray(penultimateCommandGroup) ||\n penultimateCommandGroup.length !== 1) {\n return;\n }\n const maybePositionChange = penultimateCommandGroup[0];\n if (maybePositionChange.event !== 'cell:change:position' ||\n !((_a = maybePositionChange.options) === null || _a === void 0 ? void 0 : _a.ui)) {\n return;\n }\n // Actually consolidating the commands we get\n penultimateCommandGroup.push(...lastCommandGroup);\n this.undoStack.pop();\n }\n undoStackPush(cmd) {\n if (this.stackSize === 0) {\n this.undoStack.push(cmd);\n return;\n }\n if (this.undoStack.length >= this.stackSize) {\n this.undoStack.shift();\n }\n this.undoStack.push(cmd);\n }\n ensureUndefinedAttrs(newAttrs, oldAttrs) {\n if (newAttrs !== null && oldAttrs !== null && typeof newAttrs === 'object' && typeof oldAttrs === 'object') {\n Object.keys(oldAttrs).forEach((key) => {\n // eslint-disable-next-line no-prototype-builtins\n if (!newAttrs.hasOwnProperty(key)) {\n newAttrs[key] = undefined;\n }\n else if (typeof newAttrs[key] === 'object' &&\n typeof oldAttrs[key] === 'object') {\n this.ensureUndefinedAttrs(newAttrs[key], oldAttrs[key]);\n }\n });\n }\n }\n dispose() {\n this.validator.dispose();\n this.clean();\n this.stopListening();\n this.off();\n }\n}\n__decorate([\n Basecoat.dispose()\n], History.prototype, \"dispose\", null);\n(function (History) {\n /**\n * Runs a set of callbacks to determine if a command is valid. This is\n * useful for checking if a certain action in your application does\n * lead to an invalid state of the graph.\n */\n class Validator extends Basecoat {\n constructor(options) {\n super();\n this.map = {};\n this.command = options.history;\n this.cancelInvalid = options.cancelInvalid !== false;\n this.command.on('add', this.onCommandAdded, this);\n }\n onCommandAdded({ cmds }) {\n return Array.isArray(cmds)\n ? cmds.every((cmd) => this.isValidCommand(cmd))\n : this.isValidCommand(cmds);\n }\n isValidCommand(cmd) {\n if (cmd.options && cmd.options.validation === false) {\n return true;\n }\n const callbacks = (cmd.event && this.map[cmd.event]) || [];\n let handoverErr = null;\n callbacks.forEach((routes) => {\n let i = 0;\n const rollup = (err) => {\n const fn = routes[i];\n i += 1;\n try {\n if (fn) {\n fn(err, cmd, rollup);\n }\n else {\n handoverErr = err;\n return;\n }\n }\n catch (err) {\n rollup(err);\n }\n };\n rollup(handoverErr);\n });\n if (handoverErr) {\n if (this.cancelInvalid) {\n this.command.cancel();\n }\n this.emit('invalid', { err: handoverErr });\n return false;\n }\n return true;\n }\n validate(events, ...callbacks) {\n const evts = Array.isArray(events) ? events : events.split(/\\s+/);\n callbacks.forEach((callback) => {\n if (typeof callback !== 'function') {\n throw new Error(`${evts.join(' ')} requires callback functions.`);\n }\n });\n evts.forEach((event) => {\n if (this.map[event] == null) {\n this.map[event] = [];\n }\n this.map[event].push(callbacks);\n });\n return this;\n }\n dispose() {\n this.command.off('add', this.onCommandAdded, this);\n }\n }\n __decorate([\n Basecoat.dispose()\n ], Validator.prototype, \"dispose\", null);\n History.Validator = Validator;\n})(History || (History = {}));\nvar Util;\n(function (Util) {\n function isAddEvent(event) {\n return event === 'cell:added';\n }\n Util.isAddEvent = isAddEvent;\n function isRemoveEvent(event) {\n return event === 'cell:removed';\n }\n Util.isRemoveEvent = isRemoveEvent;\n function isChangeEvent(event) {\n return event != null && event.startsWith('cell:change:');\n }\n Util.isChangeEvent = isChangeEvent;\n function getOptions(options) {\n const reservedNames = [\n 'cell:added',\n 'cell:removed',\n 'cell:change:*',\n ];\n const batchEvents = ['batch:start', 'batch:stop'];\n const eventNames = options.eventNames\n ? options.eventNames.filter((event) => !(Util.isChangeEvent(event) ||\n reservedNames.includes(event) ||\n batchEvents.includes(event)))\n : reservedNames;\n return Object.assign(Object.assign({ enabled: true }, options), { eventNames, applyOptionsList: options.applyOptionsList || ['propertyPath'], revertOptionsList: options.revertOptionsList || ['propertyPath'] });\n }\n Util.getOptions = getOptions;\n function sortBatchCommands(cmds) {\n const results = [];\n for (let i = 0, ii = cmds.length; i < ii; i += 1) {\n const cmd = cmds[i];\n let index = null;\n if (Util.isAddEvent(cmd.event)) {\n const id = cmd.data.id;\n for (let j = 0; j < i; j += 1) {\n if (cmds[j].data.id === id) {\n index = j;\n break;\n }\n }\n }\n if (index !== null) {\n results.splice(index, 0, cmd);\n }\n else {\n results.push(cmd);\n }\n }\n return results;\n }\n Util.sortBatchCommands = sortBatchCommands;\n})(Util || (Util = {}));\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Rectangle, FunctionExt, Dom, Cell, Collection, View, } from '@antv/x6';\nexport class SelectionImpl extends View {\n get graph() {\n return this.options.graph;\n }\n get boxClassName() {\n return this.prefixClassName(Private.classNames.box);\n }\n get $boxes() {\n return Dom.children(this.container, this.boxClassName);\n }\n get handleOptions() {\n return this.options;\n }\n constructor(options) {\n super();\n this.options = options;\n if (this.options.model) {\n this.options.collection = this.options.model.collection;\n }\n if (this.options.collection) {\n this.collection = this.options.collection;\n }\n else {\n this.collection = new Collection([], {\n comparator: Private.depthComparator,\n });\n this.options.collection = this.collection;\n }\n this.boxCount = 0;\n this.createContainer();\n this.startListening();\n }\n startListening() {\n const graph = this.graph;\n const collection = this.collection;\n this.delegateEvents({\n [`mousedown .${this.boxClassName}`]: 'onSelectionBoxMouseDown',\n [`touchstart .${this.boxClassName}`]: 'onSelectionBoxMouseDown',\n }, true);\n graph.on('scale', this.onGraphTransformed, this);\n graph.on('translate', this.onGraphTransformed, this);\n graph.model.on('updated', this.onModelUpdated, this);\n collection.on('added', this.onCellAdded, this);\n collection.on('removed', this.onCellRemoved, this);\n collection.on('reseted', this.onReseted, this);\n collection.on('updated', this.onCollectionUpdated, this);\n collection.on('node:change:position', this.onNodePositionChanged, this);\n collection.on('cell:changed', this.onCellChanged, this);\n }\n stopListening() {\n const graph = this.graph;\n const collection = this.collection;\n this.undelegateEvents();\n graph.off('scale', this.onGraphTransformed, this);\n graph.off('translate', this.onGraphTransformed, this);\n graph.model.off('updated', this.onModelUpdated, this);\n collection.off('added', this.onCellAdded, this);\n collection.off('removed', this.onCellRemoved, this);\n collection.off('reseted', this.onReseted, this);\n collection.off('updated', this.onCollectionUpdated, this);\n collection.off('node:change:position', this.onNodePositionChanged, this);\n collection.off('cell:changed', this.onCellChanged, this);\n }\n onRemove() {\n this.stopListening();\n }\n onGraphTransformed() {\n this.updateSelectionBoxes();\n }\n onCellChanged() {\n this.updateSelectionBoxes();\n }\n onNodePositionChanged({ node, options, }) {\n const { showNodeSelectionBox, pointerEvents } = this.options;\n const { ui, selection, translateBy, snapped } = options;\n const allowTranslating = (showNodeSelectionBox !== true || pointerEvents === 'none') &&\n !this.translating &&\n !selection;\n const translateByUi = ui && translateBy && node.id === translateBy;\n if (allowTranslating && (translateByUi || snapped)) {\n this.translating = true;\n const current = node.position();\n const previous = node.previous('position');\n const dx = current.x - previous.x;\n const dy = current.y - previous.y;\n if (dx !== 0 || dy !== 0) {\n this.translateSelectedNodes(dx, dy, node, options);\n }\n this.translating = false;\n }\n }\n onModelUpdated({ removed }) {\n if (removed && removed.length) {\n this.unselect(removed);\n }\n }\n isEmpty() {\n return this.length <= 0;\n }\n isSelected(cell) {\n return this.collection.has(cell);\n }\n get length() {\n return this.collection.length;\n }\n get cells() {\n return this.collection.toArray();\n }\n select(cells, options = {}) {\n options.dryrun = true;\n const items = this.filter(Array.isArray(cells) ? cells : [cells]);\n this.collection.add(items, options);\n return this;\n }\n unselect(cells, options = {}) {\n // dryrun to prevent cell be removed from graph\n options.dryrun = true;\n this.collection.remove(Array.isArray(cells) ? cells : [cells], options);\n return this;\n }\n reset(cells, options = {}) {\n if (cells) {\n if (options.batch) {\n const filterCells = this.filter(Array.isArray(cells) ? cells : [cells]);\n this.collection.reset(filterCells, Object.assign(Object.assign({}, options), { ui: true }));\n return this;\n }\n const prev = this.cells;\n const next = this.filter(Array.isArray(cells) ? cells : [cells]);\n const prevMap = {};\n const nextMap = {};\n prev.forEach((cell) => (prevMap[cell.id] = cell));\n next.forEach((cell) => (nextMap[cell.id] = cell));\n const added = [];\n const removed = [];\n next.forEach((cell) => {\n if (!prevMap[cell.id]) {\n added.push(cell);\n }\n });\n prev.forEach((cell) => {\n if (!nextMap[cell.id]) {\n removed.push(cell);\n }\n });\n if (removed.length) {\n this.unselect(removed, Object.assign(Object.assign({}, options), { ui: true }));\n }\n if (added.length) {\n this.select(added, Object.assign(Object.assign({}, options), { ui: true }));\n }\n if (removed.length === 0 && added.length === 0) {\n this.updateContainer();\n }\n return this;\n }\n return this.clean(options);\n }\n clean(options = {}) {\n if (this.length) {\n if (options.batch === false) {\n this.unselect(this.cells, options);\n }\n else {\n this.collection.reset([], Object.assign(Object.assign({}, options), { ui: true }));\n }\n }\n return this;\n }\n setFilter(filter) {\n this.options.filter = filter;\n }\n setContent(content) {\n this.options.content = content;\n }\n startSelecting(evt) {\n // Flow: startSelecting => adjustSelection => stopSelecting\n evt = this.normalizeEvent(evt); // eslint-disable-line\n this.clean();\n let x;\n let y;\n const graphContainer = this.graph.container;\n if (evt.offsetX != null &&\n evt.offsetY != null &&\n graphContainer.contains(evt.target)) {\n x = evt.offsetX;\n y = evt.offsetY;\n }\n else {\n const offset = Dom.offset(graphContainer);\n const scrollLeft = graphContainer.scrollLeft;\n const scrollTop = graphContainer.scrollTop;\n x = evt.clientX - offset.left + window.pageXOffset + scrollLeft;\n y = evt.clientY - offset.top + window.pageYOffset + scrollTop;\n }\n Dom.css(this.container, {\n top: y,\n left: x,\n width: 1,\n height: 1,\n });\n this.setEventData(evt, {\n action: 'selecting',\n clientX: evt.clientX,\n clientY: evt.clientY,\n offsetX: x,\n offsetY: y,\n scrollerX: 0,\n scrollerY: 0,\n moving: false,\n });\n this.delegateDocumentEvents(Private.documentEvents, evt.data);\n }\n filter(cells) {\n const filter = this.options.filter;\n return cells.filter((cell) => {\n if (Array.isArray(filter)) {\n return filter.some((item) => {\n if (typeof item === 'string') {\n return cell.shape === item;\n }\n return cell.id === item.id;\n });\n }\n if (typeof filter === 'function') {\n return FunctionExt.call(filter, this.graph, cell);\n }\n return true;\n });\n }\n stopSelecting(evt) {\n const graph = this.graph;\n const eventData = this.getEventData(evt);\n const action = eventData.action;\n switch (action) {\n case 'selecting': {\n let width = Dom.width(this.container);\n let height = Dom.height(this.container);\n const offset = Dom.offset(this.container);\n const origin = graph.pageToLocal(offset.left, offset.top);\n const scale = graph.transform.getScale();\n width /= scale.sx;\n height /= scale.sy;\n const rect = new Rectangle(origin.x, origin.y, width, height);\n const cells = this.getCellViewsInArea(rect).map((view) => view.cell);\n this.reset(cells, { batch: true });\n this.hideRubberband();\n break;\n }\n case 'translating': {\n const client = graph.snapToGrid(evt.clientX, evt.clientY);\n if (!this.options.following) {\n const data = eventData;\n this.updateSelectedNodesPosition({\n dx: data.clientX - data.originX,\n dy: data.clientY - data.originY,\n });\n }\n this.graph.model.stopBatch('move-selection');\n this.notifyBoxEvent('box:mouseup', evt, client.x, client.y);\n break;\n }\n default: {\n this.clean();\n break;\n }\n }\n }\n onMouseUp(evt) {\n const action = this.getEventData(evt).action;\n if (action) {\n this.stopSelecting(evt);\n this.undelegateDocumentEvents();\n }\n }\n onSelectionBoxMouseDown(evt) {\n if (!this.options.following) {\n evt.stopPropagation();\n }\n const e = this.normalizeEvent(evt);\n if (this.options.movable) {\n this.startTranslating(e);\n }\n const activeView = this.getCellViewFromElem(e.target);\n this.setEventData(e, { activeView });\n const client = this.graph.snapToGrid(e.clientX, e.clientY);\n this.notifyBoxEvent('box:mousedown', e, client.x, client.y);\n this.delegateDocumentEvents(Private.documentEvents, e.data);\n }\n startTranslating(evt) {\n this.graph.model.startBatch('move-selection');\n const client = this.graph.snapToGrid(evt.clientX, evt.clientY);\n this.setEventData(evt, {\n action: 'translating',\n clientX: client.x,\n clientY: client.y,\n originX: client.x,\n originY: client.y,\n });\n }\n getRestrictArea() {\n const restrict = this.graph.options.translating.restrict;\n const area = typeof restrict === 'function'\n ? FunctionExt.call(restrict, this.graph, null)\n : restrict;\n if (typeof area === 'number') {\n return this.graph.transform.getGraphArea().inflate(area);\n }\n if (area === true) {\n return this.graph.transform.getGraphArea();\n }\n return area || null;\n }\n getSelectionOffset(client, data) {\n let dx = client.x - data.clientX;\n let dy = client.y - data.clientY;\n const restrict = this.getRestrictArea();\n if (restrict) {\n const cells = this.collection.toArray();\n const totalBBox = Cell.getCellsBBox(cells, { deep: true }) || Rectangle.create();\n const minDx = restrict.x - totalBBox.x;\n const minDy = restrict.y - totalBBox.y;\n const maxDx = restrict.x + restrict.width - (totalBBox.x + totalBBox.width);\n const maxDy = restrict.y + restrict.height - (totalBBox.y + totalBBox.height);\n if (dx < minDx) {\n dx = minDx;\n }\n if (dy < minDy) {\n dy = minDy;\n }\n if (maxDx < dx) {\n dx = maxDx;\n }\n if (maxDy < dy) {\n dy = maxDy;\n }\n if (!this.options.following) {\n const offsetX = client.x - data.originX;\n const offsetY = client.y - data.originY;\n dx = offsetX <= minDx || offsetX >= maxDx ? 0 : dx;\n dy = offsetY <= minDy || offsetY >= maxDy ? 0 : dy;\n }\n }\n return {\n dx,\n dy,\n };\n }\n updateElementPosition(elem, dLeft, dTop) {\n const strLeft = Dom.css(elem, 'left');\n const strTop = Dom.css(elem, 'top');\n const left = strLeft ? parseFloat(strLeft) : 0;\n const top = strTop ? parseFloat(strTop) : 0;\n Dom.css(elem, 'left', left + dLeft);\n Dom.css(elem, 'top', top + dTop);\n }\n updateSelectedNodesPosition(offset) {\n const { dx, dy } = offset;\n if (dx || dy) {\n if ((this.translateSelectedNodes(dx, dy), this.boxesUpdated)) {\n if (this.collection.length > 1) {\n this.updateSelectionBoxes();\n }\n }\n else {\n const scale = this.graph.transform.getScale();\n for (let i = 0, len = this.$boxes.length; i < len; i += 1) {\n this.updateElementPosition(this.$boxes[i], dx * scale.sx, dy * scale.sy);\n }\n this.updateElementPosition(this.selectionContainer, dx * scale.sx, dy * scale.sy);\n }\n }\n }\n autoScrollGraph(x, y) {\n const scroller = this.graph.getPlugin('scroller');\n if (scroller) {\n return scroller.autoScroll(x, y);\n }\n return { scrollerX: 0, scrollerY: 0 };\n }\n adjustSelection(evt) {\n const e = this.normalizeEvent(evt);\n const eventData = this.getEventData(e);\n const action = eventData.action;\n switch (action) {\n case 'selecting': {\n const data = eventData;\n if (data.moving !== true) {\n Dom.appendTo(this.container, this.graph.container);\n this.showRubberband();\n data.moving = true;\n }\n const { scrollerX, scrollerY } = this.autoScrollGraph(e.clientX, e.clientY);\n data.scrollerX += scrollerX;\n data.scrollerY += scrollerY;\n const dx = e.clientX - data.clientX + data.scrollerX;\n const dy = e.clientY - data.clientY + data.scrollerY;\n const left = parseInt(Dom.css(this.container, 'left') || '0', 10);\n const top = parseInt(Dom.css(this.container, 'top') || '0', 10);\n Dom.css(this.container, {\n left: dx < 0 ? data.offsetX + dx : left,\n top: dy < 0 ? data.offsetY + dy : top,\n width: Math.abs(dx),\n height: Math.abs(dy),\n });\n break;\n }\n case 'translating': {\n const client = this.graph.snapToGrid(e.clientX, e.clientY);\n const data = eventData;\n const offset = this.getSelectionOffset(client, data);\n if (this.options.following) {\n this.updateSelectedNodesPosition(offset);\n }\n else {\n this.updateContainerPosition(offset);\n }\n if (offset.dx) {\n data.clientX = client.x;\n }\n if (offset.dy) {\n data.clientY = client.y;\n }\n this.notifyBoxEvent('box:mousemove', evt, client.x, client.y);\n break;\n }\n default:\n break;\n }\n this.boxesUpdated = false;\n }\n translateSelectedNodes(dx, dy, exclude, otherOptions) {\n const map = {};\n const excluded = [];\n if (exclude) {\n map[exclude.id] = true;\n }\n this.collection.toArray().forEach((cell) => {\n cell.getDescendants({ deep: true }).forEach((child) => {\n map[child.id] = true;\n });\n });\n if (otherOptions && otherOptions.translateBy) {\n const currentCell = this.graph.getCellById(otherOptions.translateBy);\n if (currentCell) {\n map[currentCell.id] = true;\n currentCell.getDescendants({ deep: true }).forEach((child) => {\n map[child.id] = true;\n });\n excluded.push(currentCell);\n }\n }\n this.collection.toArray().forEach((cell) => {\n if (!map[cell.id]) {\n const options = Object.assign(Object.assign({}, otherOptions), { selection: this.cid, exclude: excluded });\n cell.translate(dx, dy, options);\n this.graph.model.getConnectedEdges(cell).forEach((edge) => {\n if (!map[edge.id]) {\n edge.translate(dx, dy, options);\n map[edge.id] = true;\n }\n });\n }\n });\n }\n getCellViewsInArea(rect) {\n const graph = this.graph;\n const options = {\n strict: this.options.strict,\n };\n let views = [];\n if (this.options.rubberNode) {\n views = views.concat(graph.model\n .getNodesInArea(rect, options)\n .map((node) => graph.renderer.findViewByCell(node))\n .filter((view) => view != null));\n }\n if (this.options.rubberEdge) {\n views = views.concat(graph.model\n .getEdgesInArea(rect, options)\n .map((edge) => graph.renderer.findViewByCell(edge))\n .filter((view) => view != null));\n }\n return views;\n }\n notifyBoxEvent(name, e, x, y) {\n const data = this.getEventData(e);\n const view = data.activeView;\n this.trigger(name, { e, view, x, y, cell: view.cell });\n }\n getSelectedClassName(cell) {\n return this.prefixClassName(`${cell.isNode() ? 'node' : 'edge'}-selected`);\n }\n addCellSelectedClassName(cell) {\n const view = this.graph.renderer.findViewByCell(cell);\n if (view) {\n view.addClass(this.getSelectedClassName(cell));\n }\n }\n removeCellUnSelectedClassName(cell) {\n const view = this.graph.renderer.findViewByCell(cell);\n if (view) {\n view.removeClass(this.getSelectedClassName(cell));\n }\n }\n destroySelectionBox(cell) {\n this.removeCellUnSelectedClassName(cell);\n if (this.canShowSelectionBox(cell)) {\n Dom.remove(this.container.querySelector(`[data-cell-id=\"${cell.id}\"]`));\n if (this.$boxes.length === 0) {\n this.hide();\n }\n this.boxCount = Math.max(0, this.boxCount - 1);\n }\n }\n destroyAllSelectionBoxes(cells) {\n cells.forEach((cell) => this.removeCellUnSelectedClassName(cell));\n this.hide();\n Dom.remove(this.$boxes);\n this.boxCount = 0;\n }\n hide() {\n Dom.removeClass(this.container, this.prefixClassName(Private.classNames.rubberband));\n Dom.removeClass(this.container, this.prefixClassName(Private.classNames.selected));\n }\n showRubberband() {\n Dom.addClass(this.container, this.prefixClassName(Private.classNames.rubberband));\n }\n hideRubberband() {\n Dom.removeClass(this.container, this.prefixClassName(Private.classNames.rubberband));\n }\n showSelected() {\n Dom.removeAttribute(this.container, 'style');\n Dom.addClass(this.container, this.prefixClassName(Private.classNames.selected));\n }\n createContainer() {\n this.container = document.createElement('div');\n Dom.addClass(this.container, this.prefixClassName(Private.classNames.root));\n if (this.options.className) {\n Dom.addClass(this.container, this.options.className);\n }\n this.selectionContainer = document.createElement('div');\n Dom.addClass(this.selectionContainer, this.prefixClassName(Private.classNames.inner));\n this.selectionContent = document.createElement('div');\n Dom.addClass(this.selectionContent, this.prefixClassName(Private.classNames.content));\n Dom.append(this.selectionContainer, this.selectionContent);\n Dom.attr(this.selectionContainer, 'data-selection-length', this.collection.length);\n Dom.prepend(this.container, this.selectionContainer);\n }\n updateContainerPosition(offset) {\n if (offset.dx || offset.dy) {\n this.updateElementPosition(this.selectionContainer, offset.dx, offset.dy);\n }\n }\n updateContainer() {\n const origin = { x: Infinity, y: Infinity };\n const corner = { x: 0, y: 0 };\n const cells = this.collection\n .toArray()\n .filter((cell) => this.canShowSelectionBox(cell));\n cells.forEach((cell) => {\n const view = this.graph.renderer.findViewByCell(cell);\n if (view) {\n const bbox = view.getBBox({\n useCellGeometry: true,\n });\n origin.x = Math.min(origin.x, bbox.x);\n origin.y = Math.min(origin.y, bbox.y);\n corner.x = Math.max(corner.x, bbox.x + bbox.width);\n corner.y = Math.max(corner.y, bbox.y + bbox.height);\n }\n });\n Dom.css(this.selectionContainer, {\n position: 'absolute',\n pointerEvents: 'none',\n left: origin.x,\n top: origin.y,\n width: corner.x - origin.x,\n height: corner.y - origin.y,\n });\n Dom.attr(this.selectionContainer, 'data-selection-length', this.collection.length);\n const boxContent = this.options.content;\n if (boxContent) {\n if (typeof boxContent === 'function') {\n const content = FunctionExt.call(boxContent, this.graph, this, this.selectionContent);\n if (content) {\n this.selectionContent.innerHTML = content;\n }\n }\n else {\n this.selectionContent.innerHTML = boxContent;\n }\n }\n if (this.collection.length > 0 && !this.container.parentNode) {\n Dom.appendTo(this.container, this.graph.container);\n }\n else if (this.collection.length <= 0 && this.container.parentNode) {\n this.container.parentNode.removeChild(this.container);\n }\n }\n canShowSelectionBox(cell) {\n return ((cell.isNode() && this.options.showNodeSelectionBox === true) ||\n (cell.isEdge() && this.options.showEdgeSelectionBox === true));\n }\n createSelectionBox(cell) {\n this.addCellSelectedClassName(cell);\n if (this.canShowSelectionBox(cell)) {\n const view = this.graph.renderer.findViewByCell(cell);\n if (view) {\n const bbox = view.getBBox({\n useCellGeometry: true,\n });\n const className = this.boxClassName;\n const box = document.createElement('div');\n Dom.addClass(box, className);\n Dom.addClass(box, `${className}-${cell.isNode() ? 'node' : 'edge'}`);\n Dom.attr(box, 'data-cell-id', cell.id);\n Dom.css(box, {\n position: 'absolute',\n left: bbox.x,\n top: bbox.y,\n width: bbox.width,\n height: bbox.height,\n pointerEvents: this.options.pointerEvents || 'auto',\n });\n Dom.appendTo(box, this.container);\n this.showSelected();\n this.boxCount += 1;\n }\n }\n }\n updateSelectionBoxes() {\n if (this.collection.length > 0) {\n this.boxesUpdated = true;\n this.confirmUpdate();\n // this.graph.renderer.requestViewUpdate(this as any, 1, options)\n }\n }\n confirmUpdate() {\n if (this.boxCount) {\n this.hide();\n for (let i = 0, len = this.$boxes.length; i < len; i += 1) {\n const box = this.$boxes[i];\n const cellId = Dom.attr(box, 'data-cell-id');\n Dom.remove(box);\n const cell = this.collection.get(cellId);\n if (cell) {\n this.createSelectionBox(cell);\n }\n }\n this.updateContainer();\n }\n return 0;\n }\n getCellViewFromElem(elem) {\n const id = elem.getAttribute('data-cell-id');\n if (id) {\n const cell = this.collection.get(id);\n if (cell) {\n return this.graph.renderer.findViewByCell(cell);\n }\n }\n return null;\n }\n onCellRemoved({ cell }) {\n this.destroySelectionBox(cell);\n this.updateContainer();\n }\n onReseted({ previous, current }) {\n this.destroyAllSelectionBoxes(previous);\n current.forEach((cell) => {\n this.listenCellRemoveEvent(cell);\n this.createSelectionBox(cell);\n });\n this.updateContainer();\n }\n onCellAdded({ cell }) {\n // The collection do not known the cell was removed when cell was\n // removed by interaction(such as, by \"delete\" shortcut), so we should\n // manually listen to cell's remove event.\n this.listenCellRemoveEvent(cell);\n this.createSelectionBox(cell);\n this.updateContainer();\n }\n listenCellRemoveEvent(cell) {\n cell.off('removed', this.onCellRemoved, this);\n cell.on('removed', this.onCellRemoved, this);\n }\n onCollectionUpdated({ added, removed, options, }) {\n added.forEach((cell) => {\n this.trigger('cell:selected', { cell, options });\n if (cell.isNode()) {\n this.trigger('node:selected', { cell, options, node: cell });\n }\n else if (cell.isEdge()) {\n this.trigger('edge:selected', { cell, options, edge: cell });\n }\n });\n removed.forEach((cell) => {\n this.trigger('cell:unselected', { cell, options });\n if (cell.isNode()) {\n this.trigger('node:unselected', { cell, options, node: cell });\n }\n else if (cell.isEdge()) {\n this.trigger('edge:unselected', { cell, options, edge: cell });\n }\n });\n const args = {\n added,\n removed,\n options,\n selected: this.cells.filter((cell) => !!this.graph.getCellById(cell.id)),\n };\n this.trigger('selection:changed', args);\n }\n // #endregion\n dispose() {\n this.clean();\n this.remove();\n this.off();\n }\n}\n__decorate([\n View.dispose()\n], SelectionImpl.prototype, \"dispose\", null);\n// private\n// -------\nvar Private;\n(function (Private) {\n const base = 'widget-selection';\n Private.classNames = {\n root: base,\n inner: `${base}-inner`,\n box: `${base}-box`,\n content: `${base}-content`,\n rubberband: `${base}-rubberband`,\n selected: `${base}-selected`,\n };\n Private.documentEvents = {\n mousemove: 'adjustSelection',\n touchmove: 'adjustSelection',\n mouseup: 'onMouseUp',\n touchend: 'onMouseUp',\n touchcancel: 'onMouseUp',\n };\n function depthComparator(cell) {\n return cell.getAncestors().length;\n }\n Private.depthComparator = depthComparator;\n})(Private || (Private = {}));\n//# sourceMappingURL=selection.js.map","/* eslint-disable */\n/**\n * Auto generated file, do not modify it!\n */\nexport const content = `.x6-widget-selection {\n position: absolute;\n top: 0;\n left: 0;\n display: none;\n width: 0;\n height: 0;\n touch-action: none;\n}\n.x6-widget-selection-rubberband {\n display: block;\n overflow: visible;\n opacity: 0.3;\n}\n.x6-widget-selection-selected {\n display: block;\n}\n.x6-widget-selection-box {\n cursor: move;\n}\n.x6-widget-selection-inner[data-selection-length='0'],\n.x6-widget-selection-inner[data-selection-length='1'] {\n display: none;\n}\n.x6-widget-selection-content {\n position: absolute;\n top: 100%;\n right: -20px;\n left: -20px;\n margin-top: 30px;\n padding: 6px;\n line-height: 14px;\n text-align: center;\n border-radius: 6px;\n}\n.x6-widget-selection-content:empty {\n display: none;\n}\n.x6-widget-selection-rubberband {\n background-color: #3498db;\n border: 2px solid #2980b9;\n}\n.x6-widget-selection-box {\n box-sizing: content-box !important;\n margin-top: -4px;\n margin-left: -4px;\n padding-right: 4px;\n padding-bottom: 4px;\n border: 2px dashed #feb663;\n box-shadow: 2px 2px 5px #d3d3d3;\n}\n.x6-widget-selection-inner {\n box-sizing: content-box !important;\n margin-top: -8px;\n margin-left: -8px;\n padding-right: 12px;\n padding-bottom: 12px;\n border: 2px solid #feb663;\n box-shadow: 2px 2px 5px #d3d3d3;\n}\n.x6-widget-selection-content {\n color: #fff;\n font-size: 10px;\n background-color: #6a6b8a;\n}\n`;\n//# sourceMappingURL=raw.js.map","import { Graph } from '@antv/x6';\nGraph.prototype.isSelectionEnabled = function () {\n const selection = this.getPlugin('selection');\n if (selection) {\n return selection.isEnabled();\n }\n return false;\n};\nGraph.prototype.enableSelection = function () {\n const selection = this.getPlugin('selection');\n if (selection) {\n selection.enable();\n }\n return this;\n};\nGraph.prototype.disableSelection = function () {\n const selection = this.getPlugin('selection');\n if (selection) {\n selection.disable();\n }\n return this;\n};\nGraph.prototype.toggleSelection = function (enabled) {\n const selection = this.getPlugin('selection');\n if (selection) {\n selection.toggleEnabled(enabled);\n }\n return this;\n};\nGraph.prototype.isMultipleSelection = function () {\n const selection = this.getPlugin('selection');\n if (selection) {\n return selection.isMultipleSelection();\n }\n return false;\n};\nGraph.prototype.enableMultipleSelection = function () {\n const selection = this.getPlugin('selection');\n if (selection) {\n selection.enableMultipleSelection();\n }\n return this;\n};\nGraph.prototype.disableMultipleSelection = function () {\n const selection = this.getPlugin('selection');\n if (selection) {\n selection.disableMultipleSelection();\n }\n return this;\n};\nGraph.prototype.toggleMultipleSelection = function (multiple) {\n const selection = this.getPlugin('selection');\n if (selection) {\n selection.toggleMultipleSelection(multiple);\n }\n return this;\n};\nGraph.prototype.isSelectionMovable = function () {\n const selection = this.getPlugin('selection');\n if (selection) {\n return selection.isSelectionMovable();\n }\n return false;\n};\nGraph.prototype.enableSelectionMovable = function () {\n const selection = this.getPlugin('selection');\n if (selection) {\n selection.enableSelectionMovable();\n }\n return this;\n};\nGraph.prototype.disableSelectionMovable = function () {\n const selection = this.getPlugin('selection');\n if (selection) {\n selection.disableSelectionMovable();\n }\n return this;\n};\nGraph.prototype.toggleSelectionMovable = function (movable) {\n const selection = this.getPlugin('selection');\n if (selection) {\n selection.toggleSelectionMovable(movable);\n }\n return this;\n};\nGraph.prototype.isRubberbandEnabled = function () {\n const selection = this.getPlugin('selection');\n if (selection) {\n return selection.isRubberbandEnabled();\n }\n return false;\n};\nGraph.prototype.enableRubberband = function () {\n const selection = this.getPlugin('selection');\n if (selection) {\n selection.enableRubberband();\n }\n return this;\n};\nGraph.prototype.disableRubberband = function () {\n const selection = this.getPlugin('selection');\n if (selection) {\n selection.disableRubberband();\n }\n return this;\n};\nGraph.prototype.toggleRubberband = function (enabled) {\n const selection = this.getPlugin('selection');\n if (selection) {\n selection.toggleRubberband(enabled);\n }\n return this;\n};\nGraph.prototype.isStrictRubberband = function () {\n const selection = this.getPlugin('selection');\n if (selection) {\n return selection.isStrictRubberband();\n }\n return false;\n};\nGraph.prototype.enableStrictRubberband = function () {\n const selection = this.getPlugin('selection');\n if (selection) {\n selection.enableStrictRubberband();\n }\n return this;\n};\nGraph.prototype.disableStrictRubberband = function () {\n const selection = this.getPlugin('selection');\n if (selection) {\n selection.disableStrictRubberband();\n }\n return this;\n};\nGraph.prototype.toggleStrictRubberband = function (strict) {\n const selection = this.getPlugin('selection');\n if (selection) {\n selection.toggleStrictRubberband(strict);\n }\n return this;\n};\nGraph.prototype.setRubberbandModifiers = function (modifiers) {\n const selection = this.getPlugin('selection');\n if (selection) {\n selection.setRubberbandModifiers(modifiers);\n }\n return this;\n};\nGraph.prototype.setSelectionFilter = function (filter) {\n const selection = this.getPlugin('selection');\n if (selection) {\n selection.setSelectionFilter(filter);\n }\n return this;\n};\nGraph.prototype.setSelectionDisplayContent = function (content) {\n const selection = this.getPlugin('selection');\n if (selection) {\n selection.setSelectionDisplayContent(content);\n }\n return this;\n};\nGraph.prototype.isSelectionEmpty = function () {\n const selection = this.getPlugin('selection');\n if (selection) {\n return selection.isEmpty();\n }\n return true;\n};\nGraph.prototype.cleanSelection = function (options) {\n const selection = this.getPlugin('selection');\n if (selection) {\n selection.clean(options);\n }\n return this;\n};\nGraph.prototype.resetSelection = function (cells, options) {\n const selection = this.getPlugin('selection');\n if (selection) {\n selection.reset(cells, options);\n }\n return this;\n};\nGraph.prototype.getSelectedCells = function () {\n const selection = this.getPlugin('selection');\n if (selection) {\n return selection.getSelectedCells();\n }\n return [];\n};\nGraph.prototype.getSelectedCellCount = function () {\n const selection = this.getPlugin('selection');\n if (selection) {\n return selection.getSelectedCellCount();\n }\n return 0;\n};\nGraph.prototype.isSelected = function (cell) {\n const selection = this.getPlugin('selection');\n if (selection) {\n return selection.isSelected(cell);\n }\n return false;\n};\nGraph.prototype.select = function (cells, options) {\n const selection = this.getPlugin('selection');\n if (selection) {\n selection.select(cells, options);\n }\n return this;\n};\nGraph.prototype.unselect = function (cells, options) {\n const selection = this.getPlugin('selection');\n if (selection) {\n return selection.unselect(cells, options);\n }\n return this;\n};\n//# sourceMappingURL=api.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Basecoat, ModifierKey, CssLoader, ObjectExt, } from '@antv/x6';\nimport { SelectionImpl } from './selection';\nimport { content } from './style/raw';\nimport './api';\nexport class Selection extends Basecoat {\n get rubberbandDisabled() {\n return this.options.enabled !== true || this.options.rubberband !== true;\n }\n get disabled() {\n return this.options.enabled !== true;\n }\n get length() {\n return this.selectionImpl.length;\n }\n get cells() {\n return this.selectionImpl.cells;\n }\n constructor(options = {}) {\n super();\n this.name = 'selection';\n this.movedMap = new WeakMap();\n this.unselectMap = new WeakMap();\n this.options = ObjectExt.merge({ enabled: true }, Selection.defaultOptions, options);\n CssLoader.ensure(this.name, content);\n }\n init(graph) {\n this.graph = graph;\n this.selectionImpl = new SelectionImpl(Object.assign(Object.assign({}, this.options), { graph }));\n this.setup();\n this.startListening();\n }\n // #region api\n isEnabled() {\n return !this.disabled;\n }\n enable() {\n if (this.disabled) {\n this.options.enabled = true;\n }\n }\n disable() {\n if (!this.disabled) {\n this.options.enabled = false;\n }\n }\n toggleEnabled(enabled) {\n if (enabled != null) {\n if (enabled !== this.isEnabled()) {\n if (enabled) {\n this.enable();\n }\n else {\n this.disable();\n }\n }\n }\n else if (this.isEnabled()) {\n this.disable();\n }\n else {\n this.enable();\n }\n return this;\n }\n isMultipleSelection() {\n return this.isMultiple();\n }\n enableMultipleSelection() {\n this.enableMultiple();\n return this;\n }\n disableMultipleSelection() {\n this.disableMultiple();\n return this;\n }\n toggleMultipleSelection(multiple) {\n if (multiple != null) {\n if (multiple !== this.isMultipleSelection()) {\n if (multiple) {\n this.enableMultipleSelection();\n }\n else {\n this.disableMultipleSelection();\n }\n }\n }\n else if (this.isMultipleSelection()) {\n this.disableMultipleSelection();\n }\n else {\n this.enableMultipleSelection();\n }\n return this;\n }\n isSelectionMovable() {\n return this.options.movable !== false;\n }\n enableSelectionMovable() {\n this.selectionImpl.options.movable = true;\n return this;\n }\n disableSelectionMovable() {\n this.selectionImpl.options.movable = false;\n return this;\n }\n toggleSelectionMovable(movable) {\n if (movable != null) {\n if (movable !== this.isSelectionMovable()) {\n if (movable) {\n this.enableSelectionMovable();\n }\n else {\n this.disableSelectionMovable();\n }\n }\n }\n else if (this.isSelectionMovable()) {\n this.disableSelectionMovable();\n }\n else {\n this.enableSelectionMovable();\n }\n return this;\n }\n isRubberbandEnabled() {\n return !this.rubberbandDisabled;\n }\n enableRubberband() {\n if (this.rubberbandDisabled) {\n this.options.rubberband = true;\n }\n return this;\n }\n disableRubberband() {\n if (!this.rubberbandDisabled) {\n this.options.rubberband = false;\n }\n return this;\n }\n toggleRubberband(enabled) {\n if (enabled != null) {\n if (enabled !== this.isRubberbandEnabled()) {\n if (enabled) {\n this.enableRubberband();\n }\n else {\n this.disableRubberband();\n }\n }\n }\n else if (this.isRubberbandEnabled()) {\n this.disableRubberband();\n }\n else {\n this.enableRubberband();\n }\n return this;\n }\n isStrictRubberband() {\n return this.selectionImpl.options.strict === true;\n }\n enableStrictRubberband() {\n this.selectionImpl.options.strict = true;\n return this;\n }\n disableStrictRubberband() {\n this.selectionImpl.options.strict = false;\n return this;\n }\n toggleStrictRubberband(strict) {\n if (strict != null) {\n if (strict !== this.isStrictRubberband()) {\n if (strict) {\n this.enableStrictRubberband();\n }\n else {\n this.disableStrictRubberband();\n }\n }\n }\n else if (this.isStrictRubberband()) {\n this.disableStrictRubberband();\n }\n else {\n this.enableStrictRubberband();\n }\n return this;\n }\n setRubberbandModifiers(modifiers) {\n this.setModifiers(modifiers);\n }\n setSelectionFilter(filter) {\n this.setFilter(filter);\n return this;\n }\n setSelectionDisplayContent(content) {\n this.setContent(content);\n return this;\n }\n isEmpty() {\n return this.length <= 0;\n }\n clean(options = {}) {\n this.selectionImpl.clean(options);\n return this;\n }\n reset(cells, options = {}) {\n this.selectionImpl.reset(cells ? this.getCells(cells) : [], options);\n return this;\n }\n getSelectedCells() {\n return this.cells;\n }\n getSelectedCellCount() {\n return this.length;\n }\n isSelected(cell) {\n return this.selectionImpl.isSelected(cell);\n }\n select(cells, options = {}) {\n const selected = this.getCells(cells);\n if (selected.length) {\n if (this.isMultiple()) {\n this.selectionImpl.select(selected, options);\n }\n else {\n this.reset(selected.slice(0, 1), options);\n }\n }\n return this;\n }\n unselect(cells, options = {}) {\n this.selectionImpl.unselect(this.getCells(cells), options);\n return this;\n }\n // #endregion\n setup() {\n this.selectionImpl.on('*', (name, args) => {\n this.trigger(name, args);\n this.graph.trigger(name, args);\n });\n }\n startListening() {\n this.graph.on('blank:mousedown', this.onBlankMouseDown, this);\n this.graph.on('blank:click', this.onBlankClick, this);\n this.graph.on('cell:mousemove', this.onCellMouseMove, this);\n this.graph.on('cell:mouseup', this.onCellMouseUp, this);\n this.selectionImpl.on('box:mousedown', this.onBoxMouseDown, this);\n }\n stopListening() {\n this.graph.off('blank:mousedown', this.onBlankMouseDown, this);\n this.graph.off('blank:click', this.onBlankClick, this);\n this.graph.off('cell:mousemove', this.onCellMouseMove, this);\n this.graph.off('cell:mouseup', this.onCellMouseUp, this);\n this.selectionImpl.off('box:mousedown', this.onBoxMouseDown, this);\n }\n onBlankMouseDown({ e }) {\n const allowGraphPanning = this.graph.panning.allowPanning(e, true);\n const scroller = this.graph.getPlugin('scroller');\n const allowScrollerPanning = scroller && scroller.allowPanning(e, true);\n if (this.allowRubberband(e, true) ||\n (this.allowRubberband(e) && !allowScrollerPanning && !allowGraphPanning)) {\n this.startRubberband(e);\n }\n }\n onBlankClick() {\n this.clean();\n }\n allowRubberband(e, strict) {\n return (!this.rubberbandDisabled &&\n ModifierKey.isMatch(e, this.options.modifiers, strict));\n }\n allowMultipleSelection(e) {\n return (this.isMultiple() &&\n ModifierKey.isMatch(e, this.options.multipleSelectionModifiers));\n }\n onCellMouseMove({ cell }) {\n this.movedMap.set(cell, true);\n }\n onCellMouseUp({ e, cell }) {\n const options = this.options;\n let disabled = this.disabled;\n if (!disabled && this.movedMap.has(cell)) {\n disabled = options.selectCellOnMoved === false;\n if (!disabled) {\n disabled = options.selectNodeOnMoved === false && cell.isNode();\n }\n if (!disabled) {\n disabled = options.selectEdgeOnMoved === false && cell.isEdge();\n }\n }\n if (!disabled) {\n if (!this.allowMultipleSelection(e)) {\n this.reset(cell);\n }\n else if (this.unselectMap.has(cell)) {\n this.unselectMap.delete(cell);\n }\n else if (this.isSelected(cell)) {\n this.unselect(cell);\n }\n else {\n this.select(cell);\n }\n }\n this.movedMap.delete(cell);\n }\n onBoxMouseDown({ e, cell, }) {\n if (!this.disabled) {\n if (this.allowMultipleSelection(e)) {\n this.unselect(cell);\n this.unselectMap.set(cell, true);\n }\n }\n }\n getCells(cells) {\n return (Array.isArray(cells) ? cells : [cells])\n .map((cell) => typeof cell === 'string' ? this.graph.getCellById(cell) : cell)\n .filter((cell) => cell != null);\n }\n startRubberband(e) {\n if (!this.rubberbandDisabled) {\n this.selectionImpl.startSelecting(e);\n }\n return this;\n }\n isMultiple() {\n return this.options.multiple !== false;\n }\n enableMultiple() {\n this.options.multiple = true;\n return this;\n }\n disableMultiple() {\n this.options.multiple = false;\n return this;\n }\n setModifiers(modifiers) {\n this.options.modifiers = modifiers;\n return this;\n }\n setContent(content) {\n this.selectionImpl.setContent(content);\n return this;\n }\n setFilter(filter) {\n this.selectionImpl.setFilter(filter);\n return this;\n }\n dispose() {\n this.stopListening();\n this.off();\n this.selectionImpl.dispose();\n CssLoader.clean(this.name);\n }\n}\n__decorate([\n Basecoat.dispose()\n], Selection.prototype, \"dispose\", null);\n(function (Selection) {\n Selection.defaultOptions = {\n rubberband: false,\n rubberNode: true,\n rubberEdge: false,\n pointerEvents: 'auto',\n multiple: true,\n multipleSelectionModifiers: ['ctrl', 'meta'],\n movable: true,\n strict: false,\n selectCellOnMoved: false,\n selectNodeOnMoved: false,\n selectEdgeOnMoved: false,\n following: true,\n content: null,\n };\n})(Selection || (Selection = {}));\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Platform, NumberExt, ObjectExt, Dom, FunctionExt, Point, Rectangle, View, GraphView, BackgroundManager, Util, } from '@antv/x6';\nexport class ScrollerImpl extends View {\n get graph() {\n return this.options.graph;\n }\n get model() {\n return this.graph.model;\n }\n constructor(options) {\n super();\n this.padding = { left: 0, top: 0, right: 0, bottom: 0 };\n this.options = ScrollerImpl.getOptions(options);\n this.onUpdate = FunctionExt.debounce(this.onUpdate, 200);\n const scale = this.graph.transform.getScale();\n this.sx = scale.sx;\n this.sy = scale.sy;\n const width = this.options.width || this.graph.options.width;\n const height = this.options.height || this.graph.options.height;\n this.container = document.createElement('div');\n Dom.addClass(this.container, this.prefixClassName(ScrollerImpl.containerClass));\n Dom.css(this.container, { width, height });\n if (this.options.pageVisible) {\n Dom.addClass(this.container, this.prefixClassName(ScrollerImpl.pagedClass));\n }\n if (this.options.className) {\n Dom.addClass(this.container, this.options.className);\n }\n const graphContainer = this.graph.container;\n if (graphContainer.parentNode) {\n Dom.before(graphContainer, this.container);\n }\n this.content = document.createElement('div');\n Dom.addClass(this.content, this.prefixClassName(ScrollerImpl.contentClass));\n Dom.css(this.content, {\n width: this.graph.options.width,\n height: this.graph.options.height,\n });\n // custom background\n this.background = document.createElement('div');\n Dom.addClass(this.background, this.prefixClassName(ScrollerImpl.backgroundClass));\n Dom.append(this.content, this.background);\n if (!this.options.pageVisible) {\n Dom.append(this.content, this.graph.view.grid);\n }\n Dom.append(this.content, graphContainer);\n Dom.appendTo(this.content, this.container);\n this.startListening();\n if (!this.options.pageVisible) {\n this.graph.grid.update();\n }\n this.backgroundManager = new ScrollerImpl.Background(this);\n if (!this.options.autoResize) {\n this.update();\n }\n }\n startListening() {\n const graph = this.graph;\n const model = this.model;\n graph.on('scale', this.onScale, this);\n graph.on('resize', this.onResize, this);\n graph.on('before:print', this.storeScrollPosition, this);\n graph.on('before:export', this.storeScrollPosition, this);\n graph.on('after:print', this.restoreScrollPosition, this);\n graph.on('after:export', this.restoreScrollPosition, this);\n model.on('reseted', this.onUpdate, this);\n model.on('cell:added', this.onUpdate, this);\n model.on('cell:removed', this.onUpdate, this);\n model.on('cell:changed', this.onUpdate, this);\n this.delegateBackgroundEvents();\n }\n stopListening() {\n const graph = this.graph;\n const model = this.model;\n graph.off('scale', this.onScale, this);\n graph.off('resize', this.onResize, this);\n graph.off('beforeprint', this.storeScrollPosition, this);\n graph.off('beforeexport', this.storeScrollPosition, this);\n graph.off('afterprint', this.restoreScrollPosition, this);\n graph.off('afterexport', this.restoreScrollPosition, this);\n model.off('reseted', this.onUpdate, this);\n model.off('cell:added', this.onUpdate, this);\n model.off('cell:removed', this.onUpdate, this);\n model.off('cell:changed', this.onUpdate, this);\n this.undelegateBackgroundEvents();\n }\n enableAutoResize() {\n this.options.autoResize = true;\n }\n disableAutoResize() {\n this.options.autoResize = false;\n }\n onUpdate() {\n if (this.options.autoResize) {\n this.update();\n }\n }\n delegateBackgroundEvents(events) {\n const evts = events || GraphView.events;\n this.delegatedHandlers = Object.keys(evts).reduce((memo, name) => {\n const handler = evts[name];\n if (name.indexOf(' ') === -1) {\n if (typeof handler === 'function') {\n memo[name] = handler;\n }\n else {\n let method = this.graph.view[handler];\n if (typeof method === 'function') {\n method = method.bind(this.graph.view);\n memo[name] = method;\n }\n }\n }\n return memo;\n }, {});\n this.onBackgroundEvent = this.onBackgroundEvent.bind(this);\n Object.keys(this.delegatedHandlers).forEach((name) => {\n this.delegateEvent(name, {\n guarded: false,\n }, this.onBackgroundEvent);\n });\n }\n undelegateBackgroundEvents() {\n Object.keys(this.delegatedHandlers).forEach((name) => {\n this.undelegateEvent(name, this.onBackgroundEvent);\n });\n }\n onBackgroundEvent(e) {\n let valid = false;\n const target = e.target;\n if (!this.options.pageVisible) {\n const view = this.graph.view;\n valid = view.background === target || view.grid === target;\n }\n else if (this.options.background) {\n valid = this.background === target;\n }\n else {\n valid = this.content === target;\n }\n if (valid) {\n const handler = this.delegatedHandlers[e.type];\n if (typeof handler === 'function') {\n handler.apply(this.graph, arguments); // eslint-disable-line\n }\n }\n }\n onResize() {\n if (this.cachedCenterPoint) {\n this.centerPoint(this.cachedCenterPoint.x, this.cachedCenterPoint.y);\n this.updatePageBreak();\n }\n }\n onScale({ sx, sy, ox, oy }) {\n this.updateScale(sx, sy);\n if (ox || oy) {\n this.centerPoint(ox, oy);\n this.updatePageBreak();\n }\n const autoResizeOptions = this.options.autoResizeOptions;\n if (typeof autoResizeOptions === 'function') {\n this.update();\n }\n }\n storeScrollPosition() {\n this.cachedScrollLeft = this.container.scrollLeft;\n this.cachedScrollTop = this.container.scrollTop;\n }\n restoreScrollPosition() {\n this.container.scrollLeft = this.cachedScrollLeft;\n this.container.scrollTop = this.cachedScrollTop;\n this.cachedScrollLeft = null;\n this.cachedScrollTop = null;\n }\n storeClientSize() {\n this.cachedClientSize = {\n width: this.container.clientWidth,\n height: this.container.clientHeight,\n };\n }\n restoreClientSize() {\n this.cachedClientSize = null;\n }\n beforeManipulation() {\n if (Platform.IS_IE || Platform.IS_EDGE) {\n Dom.css(this.container, { visibility: 'hidden' });\n }\n }\n afterManipulation() {\n if (Platform.IS_IE || Platform.IS_EDGE) {\n Dom.css(this.container, { visibility: 'visible' });\n }\n }\n updatePageSize(width, height) {\n if (width != null) {\n this.options.pageWidth = width;\n }\n if (height != null) {\n this.options.pageHeight = height;\n }\n this.updatePageBreak();\n }\n updatePageBreak() {\n if (this.pageBreak && this.pageBreak.parentNode) {\n this.pageBreak.parentNode.removeChild(this.pageBreak);\n }\n this.pageBreak = null;\n if (this.options.pageVisible && this.options.pageBreak) {\n const graphWidth = this.graph.options.width;\n const graphHeight = this.graph.options.height;\n const pageWidth = this.options.pageWidth * this.sx;\n const pageHeight = this.options.pageHeight * this.sy;\n if (pageWidth === 0 || pageHeight === 0) {\n return;\n }\n if (graphWidth > pageWidth || graphHeight > pageHeight) {\n let hasPageBreak = false;\n const container = document.createElement('div');\n for (let i = 1, l = Math.floor(graphWidth / pageWidth); i < l; i += 1) {\n const div = document.createElement('div');\n Dom.addClass(div, this.prefixClassName(`graph-pagebreak-vertical`));\n Dom.css(div, { left: i * pageWidth });\n Dom.appendTo(div, container);\n hasPageBreak = true;\n }\n for (let i = 1, l = Math.floor(graphHeight / pageHeight); i < l; i += 1) {\n const div = document.createElement('div');\n Dom.addClass(div, this.prefixClassName(`graph-pagebreak-horizontal`));\n Dom.css(div, { top: i * pageHeight });\n Dom.appendTo(div, container);\n hasPageBreak = true;\n }\n if (hasPageBreak) {\n Dom.addClass(container, this.prefixClassName('graph-pagebreak'));\n Dom.after(this.graph.view.grid, container);\n this.pageBreak = container;\n }\n }\n }\n }\n update() {\n const size = this.getClientSize();\n this.cachedCenterPoint = this.clientToLocalPoint(size.width / 2, size.height / 2);\n let resizeOptions = this.options.autoResizeOptions;\n if (typeof resizeOptions === 'function') {\n resizeOptions = FunctionExt.call(resizeOptions, this, this);\n }\n const options = Object.assign({ gridWidth: this.options.pageWidth, gridHeight: this.options.pageHeight, allowNewOrigin: 'negative' }, resizeOptions);\n this.graph.fitToContent(this.getFitToContentOptions(options));\n }\n getFitToContentOptions(options) {\n const sx = this.sx;\n const sy = this.sy;\n options.gridWidth && (options.gridWidth *= sx);\n options.gridHeight && (options.gridHeight *= sy);\n options.minWidth && (options.minWidth *= sx);\n options.minHeight && (options.minHeight *= sy);\n if (typeof options.padding === 'object') {\n options.padding = {\n left: (options.padding.left || 0) * sx,\n right: (options.padding.right || 0) * sx,\n top: (options.padding.top || 0) * sy,\n bottom: (options.padding.bottom || 0) * sy,\n };\n }\n else if (typeof options.padding === 'number') {\n options.padding *= sx;\n }\n if (!this.options.autoResize) {\n options.contentArea = Rectangle.create();\n }\n return options;\n }\n updateScale(sx, sy) {\n const options = this.graph.options;\n const dx = sx / this.sx;\n const dy = sy / this.sy;\n this.sx = sx;\n this.sy = sy;\n this.graph.translate(options.x * dx, options.y * dy);\n this.graph.transform.resize(options.width * dx, options.height * dy);\n }\n scrollbarPosition(left, top) {\n if (left == null && top == null) {\n return {\n left: this.container.scrollLeft,\n top: this.container.scrollTop,\n };\n }\n const prop = {};\n if (typeof left === 'number') {\n prop.scrollLeft = left;\n }\n if (typeof top === 'number') {\n prop.scrollTop = top;\n }\n Dom.prop(this.container, prop);\n return this;\n }\n /**\n * Try to scroll to ensure that the position (x,y) on the graph (in local\n * coordinates) is at the center of the viewport. If only one of the\n * coordinates is specified, only scroll in the specified dimension and\n * keep the other coordinate unchanged.\n */\n scrollToPoint(x, y) {\n const size = this.getClientSize();\n const ctm = this.graph.matrix();\n const prop = {};\n if (typeof x === 'number') {\n prop.scrollLeft = x - size.width / 2 + ctm.e + (this.padding.left || 0);\n }\n if (typeof y === 'number') {\n prop.scrollTop = y - size.height / 2 + ctm.f + (this.padding.top || 0);\n }\n Dom.prop(this.container, prop);\n return this;\n }\n /**\n * Try to scroll to ensure that the center of graph content is at the\n * center of the viewport.\n */\n scrollToContent() {\n const sx = this.sx;\n const sy = this.sy;\n const center = this.graph.getContentArea().getCenter();\n return this.scrollToPoint(center.x * sx, center.y * sy);\n }\n /**\n * Try to scroll to ensure that the center of cell is at the center of\n * the viewport.\n */\n scrollToCell(cell) {\n const sx = this.sx;\n const sy = this.sy;\n const center = cell.getBBox().getCenter();\n return this.scrollToPoint(center.x * sx, center.y * sy);\n }\n /**\n * The center methods are more aggressive than the scroll methods. These\n * methods position the graph so that a specific point on the graph lies\n * at the center of the viewport, adding paddings around the paper if\n * necessary (e.g. if the requested point lies in a corner of the paper).\n * This means that the requested point will always move into the center\n * of the viewport. (Use the scroll functions to avoid adding paddings\n * and only scroll the viewport as far as the graph boundary.)\n */\n /**\n * Position the center of graph to the center of the viewport.\n */\n center(optons) {\n return this.centerPoint(optons);\n }\n centerPoint(x, y, options) {\n const ctm = this.graph.matrix();\n const sx = ctm.a;\n const sy = ctm.d;\n const tx = -ctm.e;\n const ty = -ctm.f;\n const tWidth = tx + this.graph.options.width;\n const tHeight = ty + this.graph.options.height;\n let localOptions;\n this.storeClientSize(); // avoid multilple reflow\n if (typeof x === 'number' || typeof y === 'number') {\n localOptions = options;\n const visibleCenter = this.getVisibleArea().getCenter();\n if (typeof x === 'number') {\n x *= sx; // eslint-disable-line\n }\n else {\n x = visibleCenter.x; // eslint-disable-line\n }\n if (typeof y === 'number') {\n y *= sy; // eslint-disable-line\n }\n else {\n y = visibleCenter.y; // eslint-disable-line\n }\n }\n else {\n localOptions = x;\n x = (tx + tWidth) / 2; // eslint-disable-line\n y = (ty + tHeight) / 2; // eslint-disable-line\n }\n if (localOptions && localOptions.padding) {\n return this.positionPoint({ x, y }, '50%', '50%', localOptions);\n }\n const padding = this.getPadding();\n const clientSize = this.getClientSize();\n const cx = clientSize.width / 2;\n const cy = clientSize.height / 2;\n const left = cx - padding.left - x + tx;\n const right = cx - padding.right + x - tWidth;\n const top = cy - padding.top - y + ty;\n const bottom = cy - padding.bottom + y - tHeight;\n this.addPadding(Math.max(left, 0), Math.max(right, 0), Math.max(top, 0), Math.max(bottom, 0));\n const result = this.scrollToPoint(x, y);\n this.restoreClientSize();\n return result;\n }\n centerContent(options) {\n return this.positionContent('center', options);\n }\n centerCell(cell, options) {\n return this.positionCell(cell, 'center', options);\n }\n /**\n * The position methods are a more general version of the center methods.\n * They position the graph so that a specific point on the graph lies at\n * requested coordinates inside the viewport.\n */\n /**\n *\n */\n positionContent(pos, options) {\n const rect = this.graph.getContentArea(options);\n return this.positionRect(rect, pos, options);\n }\n positionCell(cell, pos, options) {\n const bbox = cell.getBBox();\n return this.positionRect(bbox, pos, options);\n }\n positionRect(rect, pos, options) {\n const bbox = Rectangle.create(rect);\n switch (pos) {\n case 'center':\n return this.positionPoint(bbox.getCenter(), '50%', '50%', options);\n case 'top':\n return this.positionPoint(bbox.getTopCenter(), '50%', 0, options);\n case 'top-right':\n return this.positionPoint(bbox.getTopRight(), '100%', 0, options);\n case 'right':\n return this.positionPoint(bbox.getRightMiddle(), '100%', '50%', options);\n case 'bottom-right':\n return this.positionPoint(bbox.getBottomRight(), '100%', '100%', options);\n case 'bottom':\n return this.positionPoint(bbox.getBottomCenter(), '50%', '100%', options);\n case 'bottom-left':\n return this.positionPoint(bbox.getBottomLeft(), 0, '100%', options);\n case 'left':\n return this.positionPoint(bbox.getLeftMiddle(), 0, '50%', options);\n case 'top-left':\n return this.positionPoint(bbox.getTopLeft(), 0, 0, options);\n default:\n return this;\n }\n }\n positionPoint(point, x, y, options = {}) {\n const { padding: pad } = options, localOptions = __rest(options, [\"padding\"]);\n const padding = NumberExt.normalizeSides(pad);\n const clientRect = Rectangle.fromSize(this.getClientSize());\n const targetRect = clientRect.clone().moveAndExpand({\n x: padding.left,\n y: padding.top,\n width: -padding.right - padding.left,\n height: -padding.top - padding.bottom,\n });\n // eslint-disable-next-line\n x = NumberExt.normalizePercentage(x, Math.max(0, targetRect.width));\n if (x < 0) {\n x = targetRect.width + x; // eslint-disable-line\n }\n // eslint-disable-next-line\n y = NumberExt.normalizePercentage(y, Math.max(0, targetRect.height));\n if (y < 0) {\n y = targetRect.height + y; // eslint-disable-line\n }\n const origin = targetRect.getTopLeft().translate(x, y);\n const diff = clientRect.getCenter().diff(origin);\n const scale = this.zoom();\n const rawDiff = diff.scale(1 / scale, 1 / scale);\n const result = Point.create(point).translate(rawDiff);\n return this.centerPoint(result.x, result.y, localOptions);\n }\n zoom(factor, options) {\n if (factor == null) {\n return this.sx;\n }\n options = options || {}; // eslint-disable-line\n let cx;\n let cy;\n const clientSize = this.getClientSize();\n const center = this.clientToLocalPoint(clientSize.width / 2, clientSize.height / 2);\n let sx = factor;\n let sy = factor;\n if (!options.absolute) {\n sx += this.sx;\n sy += this.sy;\n }\n if (options.scaleGrid) {\n sx = Math.round(sx / options.scaleGrid) * options.scaleGrid;\n sy = Math.round(sy / options.scaleGrid) * options.scaleGrid;\n }\n if (options.maxScale) {\n sx = Math.min(options.maxScale, sx);\n sy = Math.min(options.maxScale, sy);\n }\n if (options.minScale) {\n sx = Math.max(options.minScale, sx);\n sy = Math.max(options.minScale, sy);\n }\n sx = this.graph.transform.clampScale(sx);\n sy = this.graph.transform.clampScale(sy);\n if (options.center) {\n const fx = sx / this.sx;\n const fy = sy / this.sy;\n cx = options.center.x - (options.center.x - center.x) / fx;\n cy = options.center.y - (options.center.y - center.y) / fy;\n }\n else {\n cx = center.x;\n cy = center.y;\n }\n this.beforeManipulation();\n this.graph.transform.scale(sx, sy);\n this.centerPoint(cx, cy);\n this.afterManipulation();\n return this;\n }\n zoomToRect(rect, options = {}) {\n const area = Rectangle.create(rect);\n const graph = this.graph;\n options.contentArea = area;\n if (options.viewportArea == null) {\n const bound = this.container.getBoundingClientRect();\n options.viewportArea = {\n x: graph.options.x,\n y: graph.options.y,\n width: bound.width,\n height: bound.height,\n };\n }\n this.beforeManipulation();\n graph.transform.scaleContentToFitImpl(options, false);\n const center = area.getCenter();\n this.centerPoint(center.x, center.y);\n this.afterManipulation();\n return this;\n }\n zoomToFit(options = {}) {\n return this.zoomToRect(this.graph.getContentArea(options), options);\n }\n transitionToPoint(x, y, options) {\n if (typeof x === 'object') {\n options = y; // eslint-disable-line\n y = x.y; // eslint-disable-line\n x = x.x; // eslint-disable-line\n }\n else {\n y = y; // eslint-disable-line\n }\n if (options == null) {\n options = {}; // eslint-disable-line\n }\n let transform;\n let transformOrigin;\n const scale = this.sx;\n const targetScale = Math.max(options.scale || scale, 0.000001);\n const clientSize = this.getClientSize();\n const targetPoint = new Point(x, y);\n const localPoint = this.clientToLocalPoint(clientSize.width / 2, clientSize.height / 2);\n if (scale === targetScale) {\n const translate = localPoint.diff(targetPoint).scale(scale, scale).round();\n transform = `translate(${translate.x}px,${translate.y}px)`;\n }\n else {\n const delta = (targetScale / (scale - targetScale)) * targetPoint.distance(localPoint);\n const range = localPoint.clone().move(targetPoint, delta);\n const origin = this.localToBackgroundPoint(range).round();\n transform = `scale(${targetScale / scale})`;\n transformOrigin = `${origin.x}px ${origin.y}px`;\n }\n const onTransitionEnd = options.onTransitionEnd;\n Dom.addClass(this.container, ScrollerImpl.transitionClassName);\n Dom.Event.off(this.content, ScrollerImpl.transitionEventName);\n Dom.Event.on(this.content, ScrollerImpl.transitionEventName, (e) => {\n this.syncTransition(targetScale, { x: x, y: y });\n if (typeof onTransitionEnd === 'function') {\n FunctionExt.call(onTransitionEnd, this, e.originalEvent);\n }\n });\n Dom.css(this.content, {\n transform,\n transformOrigin,\n transition: 'transform',\n transitionDuration: options.duration || '1s',\n transitionDelay: options.delay,\n transitionTimingFunction: options.timing,\n });\n return this;\n }\n syncTransition(scale, p) {\n this.beforeManipulation();\n this.graph.scale(scale);\n this.removeTransition();\n this.centerPoint(p.x, p.y);\n this.afterManipulation();\n return this;\n }\n removeTransition() {\n Dom.removeClass(this.container, ScrollerImpl.transitionClassName);\n Dom.Event.off(this.content, ScrollerImpl.transitionEventName);\n Dom.css(this.content, {\n transform: '',\n transformOrigin: '',\n transition: '',\n transitionDuration: '',\n transitionDelay: '',\n transitionTimingFunction: '',\n });\n return this;\n }\n transitionToRect(rectangle, options = {}) {\n const rect = Rectangle.create(rectangle);\n const maxScale = options.maxScale || Infinity;\n const minScale = options.minScale || Number.MIN_VALUE;\n const scaleGrid = options.scaleGrid || null;\n const PIXEL_SIZE = options.visibility || 1;\n const center = options.center\n ? Point.create(options.center)\n : rect.getCenter();\n const clientSize = this.getClientSize();\n const w = clientSize.width * PIXEL_SIZE;\n const h = clientSize.height * PIXEL_SIZE;\n let scale = new Rectangle(center.x - w / 2, center.y - h / 2, w, h).getMaxUniformScaleToFit(rect, center);\n scale = Math.min(scale, maxScale);\n if (scaleGrid) {\n scale = Math.floor(scale / scaleGrid) * scaleGrid;\n }\n scale = Math.max(minScale, scale);\n return this.transitionToPoint(center, Object.assign({ scale }, options));\n }\n startPanning(evt) {\n const e = this.normalizeEvent(evt);\n this.clientX = e.clientX;\n this.clientY = e.clientY;\n this.trigger('pan:start', { e });\n Dom.Event.on(document.body, {\n 'mousemove.panning touchmove.panning': this.pan.bind(this),\n 'mouseup.panning touchend.panning': this.stopPanning.bind(this),\n 'mouseleave.panning': this.stopPanning.bind(this),\n });\n Dom.Event.on(window, 'mouseup.panning', this.stopPanning.bind(this));\n }\n pan(evt) {\n const e = this.normalizeEvent(evt);\n const dx = e.clientX - this.clientX;\n const dy = e.clientY - this.clientY;\n this.container.scrollTop -= dy;\n this.container.scrollLeft -= dx;\n this.clientX = e.clientX;\n this.clientY = e.clientY;\n this.trigger('panning', { e });\n }\n stopPanning(e) {\n Dom.Event.off(document.body, '.panning');\n Dom.Event.off(window, '.panning');\n this.trigger('pan:stop', { e });\n }\n clientToLocalPoint(a, b) {\n let x = typeof a === 'object' ? a.x : a;\n let y = typeof a === 'object' ? a.y : b;\n const ctm = this.graph.matrix();\n x += this.container.scrollLeft - this.padding.left - ctm.e;\n y += this.container.scrollTop - this.padding.top - ctm.f;\n return new Point(x / ctm.a, y / ctm.d);\n }\n localToBackgroundPoint(x, y) {\n const p = typeof x === 'object' ? Point.create(x) : new Point(x, y);\n const ctm = this.graph.matrix();\n const padding = this.padding;\n return Util.transformPoint(p, ctm).translate(padding.left, padding.top);\n }\n resize(width, height) {\n let w = width != null ? width : this.container.offsetWidth;\n let h = height != null ? height : this.container.offsetHeight;\n if (typeof w === 'number') {\n w = Math.round(w);\n }\n if (typeof h === 'number') {\n h = Math.round(h);\n }\n this.options.width = w;\n this.options.height = h;\n Dom.css(this.container, { width: w, height: h });\n this.update();\n }\n getClientSize() {\n if (this.cachedClientSize) {\n return this.cachedClientSize;\n }\n return {\n width: this.container.clientWidth,\n height: this.container.clientHeight,\n };\n }\n autoScroll(clientX, clientY) {\n const buffer = 10;\n const container = this.container;\n const rect = container.getBoundingClientRect();\n let dx = 0;\n let dy = 0;\n if (clientX <= rect.left + buffer) {\n dx = -buffer;\n }\n if (clientY <= rect.top + buffer) {\n dy = -buffer;\n }\n if (clientX >= rect.right - buffer) {\n dx = buffer;\n }\n if (clientY >= rect.bottom - buffer) {\n dy = buffer;\n }\n if (dx !== 0) {\n container.scrollLeft += dx;\n }\n if (dy !== 0) {\n container.scrollTop += dy;\n }\n return {\n scrollerX: dx,\n scrollerY: dy,\n };\n }\n addPadding(left, right, top, bottom) {\n let padding = this.getPadding();\n this.padding = {\n left: Math.round(padding.left + (left || 0)),\n top: Math.round(padding.top + (top || 0)),\n bottom: Math.round(padding.bottom + (bottom || 0)),\n right: Math.round(padding.right + (right || 0)),\n };\n padding = this.padding;\n Dom.css(this.content, {\n width: padding.left + this.graph.options.width + padding.right,\n height: padding.top + this.graph.options.height + padding.bottom,\n });\n const container = this.graph.container;\n container.style.left = `${this.padding.left}px`;\n container.style.top = `${this.padding.top}px`;\n return this;\n }\n getPadding() {\n const padding = this.options.padding;\n if (typeof padding === 'function') {\n return NumberExt.normalizeSides(FunctionExt.call(padding, this, this));\n }\n return NumberExt.normalizeSides(padding);\n }\n /**\n * Returns the untransformed size and origin of the current viewport.\n */\n getVisibleArea() {\n const ctm = this.graph.matrix();\n const size = this.getClientSize();\n const box = {\n x: this.container.scrollLeft || 0,\n y: this.container.scrollTop || 0,\n width: size.width,\n height: size.height,\n };\n const area = Util.transformRectangle(box, ctm.inverse());\n area.x -= (this.padding.left || 0) / this.sx;\n area.y -= (this.padding.top || 0) / this.sy;\n return area;\n }\n isCellVisible(cell, options = {}) {\n const bbox = cell.getBBox();\n const area = this.getVisibleArea();\n return options.strict\n ? area.containsRect(bbox)\n : area.isIntersectWithRect(bbox);\n }\n isPointVisible(point) {\n return this.getVisibleArea().containsPoint(point);\n }\n /**\n * Lock the current viewport by disabling user scrolling.\n */\n lock() {\n Dom.css(this.container, { overflow: 'hidden' });\n return this;\n }\n /**\n * Enable user scrolling if previously locked.\n */\n unlock() {\n Dom.css(this.container, { overflow: 'scroll' });\n return this;\n }\n onRemove() {\n this.stopListening();\n }\n dispose() {\n Dom.before(this.container, this.graph.container);\n this.remove();\n }\n}\n__decorate([\n View.dispose()\n], ScrollerImpl.prototype, \"dispose\", null);\n(function (ScrollerImpl) {\n class Background extends BackgroundManager {\n get elem() {\n return this.scroller.background;\n }\n constructor(scroller) {\n super(scroller.graph);\n this.scroller = scroller;\n if (scroller.options.background) {\n this.draw(scroller.options.background);\n }\n }\n init() {\n this.graph.on('scale', this.update, this);\n this.graph.on('translate', this.update, this);\n }\n updateBackgroundOptions(options) {\n this.scroller.options.background = options;\n }\n }\n ScrollerImpl.Background = Background;\n})(ScrollerImpl || (ScrollerImpl = {}));\n(function (ScrollerImpl) {\n ScrollerImpl.containerClass = 'graph-scroller';\n ScrollerImpl.panningClass = `${ScrollerImpl.containerClass}-panning`;\n ScrollerImpl.pannableClass = `${ScrollerImpl.containerClass}-pannable`;\n ScrollerImpl.pagedClass = `${ScrollerImpl.containerClass}-paged`;\n ScrollerImpl.contentClass = `${ScrollerImpl.containerClass}-content`;\n ScrollerImpl.backgroundClass = `${ScrollerImpl.containerClass}-background`;\n ScrollerImpl.transitionClassName = 'transition-in-progress';\n ScrollerImpl.transitionEventName = 'transitionend.graph-scroller-transition';\n ScrollerImpl.defaultOptions = {\n padding() {\n const size = this.getClientSize();\n const minWidth = Math.max(this.options.minVisibleWidth || 0, 1) || 1;\n const minHeight = Math.max(this.options.minVisibleHeight || 0, 1) || 1;\n const left = Math.max(size.width - minWidth, 0);\n const top = Math.max(size.height - minHeight, 0);\n return { left, top, right: left, bottom: top };\n },\n minVisibleWidth: 50,\n minVisibleHeight: 50,\n pageVisible: false,\n pageBreak: false,\n autoResize: true,\n };\n function getOptions(options) {\n const result = ObjectExt.merge({}, ScrollerImpl.defaultOptions, options);\n if (result.pageWidth == null) {\n result.pageWidth = options.graph.options.width;\n }\n if (result.pageHeight == null) {\n result.pageHeight = options.graph.options.height;\n }\n const graphOptions = options.graph.options;\n if (graphOptions.background &&\n result.enabled &&\n result.background == null) {\n result.background = graphOptions.background;\n options.graph.background.clear();\n }\n return result;\n }\n ScrollerImpl.getOptions = getOptions;\n})(ScrollerImpl || (ScrollerImpl = {}));\n//# sourceMappingURL=scroller.js.map","/* eslint-disable */\n/**\n * Auto generated file, do not modify it!\n */\nexport const content = `.x6-graph-scroller {\n position: relative;\n box-sizing: border-box;\n overflow: scroll;\n outline: none;\n}\n.x6-graph-scroller-content {\n position: relative;\n}\n.x6-graph-scroller-background {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n.x6-graph-scroller .x6-graph {\n position: absolute;\n display: inline-block;\n margin: 0;\n box-shadow: none;\n}\n.x6-graph-scroller .x6-graph > svg {\n display: block;\n}\n.x6-graph-scroller.x6-graph-scroller-paged .x6-graph {\n box-shadow: 0 0 4px 0 #eee;\n}\n.x6-graph-scroller.x6-graph-scroller-pannable[data-panning='false'] {\n cursor: grab;\n}\n.x6-graph-scroller.x6-graph-scroller-pannable[data-panning='true'] {\n cursor: grabbing;\n user-select: none;\n}\n.x6-graph-pagebreak {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n.x6-graph-pagebreak-vertical {\n position: absolute;\n top: 0;\n bottom: 0;\n box-sizing: border-box;\n width: 1px;\n border-left: 1px dashed #bdbdbd;\n}\n.x6-graph-pagebreak-horizontal {\n position: absolute;\n right: 0;\n left: 0;\n box-sizing: border-box;\n height: 1px;\n border-top: 1px dashed #bdbdbd;\n}\n`;\n//# sourceMappingURL=raw.js.map","import { Graph } from '@antv/x6';\nGraph.prototype.lockScroller = function () {\n const scroller = this.getPlugin('scroller');\n if (scroller) {\n scroller.lockScroller();\n }\n return this;\n};\nGraph.prototype.unlockScroller = function () {\n const scroller = this.getPlugin('scroller');\n if (scroller) {\n scroller.unlockScroller();\n }\n return this;\n};\nGraph.prototype.updateScroller = function () {\n const scroller = this.getPlugin('scroller');\n if (scroller) {\n scroller.updateScroller();\n }\n return this;\n};\nGraph.prototype.getScrollbarPosition = function () {\n const scroller = this.getPlugin('scroller');\n if (scroller) {\n return scroller.getScrollbarPosition();\n }\n return {\n left: 0,\n top: 0,\n };\n};\nGraph.prototype.setScrollbarPosition = function (left, top) {\n const scroller = this.getPlugin('scroller');\n if (scroller) {\n scroller.setScrollbarPosition(left, top);\n }\n return this;\n};\n//# sourceMappingURL=api.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Dom, ModifierKey, Basecoat, CssLoader, Config, } from '@antv/x6';\nimport { ScrollerImpl } from './scroller';\nimport { content } from './style/raw';\nimport './api';\nexport class Scroller extends Basecoat {\n get pannable() {\n if (this.options) {\n if (typeof this.options.pannable === 'object') {\n return this.options.pannable.enabled;\n }\n return !!this.options.pannable;\n }\n return false;\n }\n get container() {\n return this.scrollerImpl.container;\n }\n constructor(options = {}) {\n super();\n this.name = 'scroller';\n this.options = options;\n CssLoader.ensure(this.name, content);\n }\n init(graph) {\n this.graph = graph;\n const options = ScrollerImpl.getOptions(Object.assign(Object.assign({ enabled: true }, this.options), { graph }));\n this.options = options;\n this.scrollerImpl = new ScrollerImpl(options);\n this.setup();\n this.startListening();\n this.updateClassName();\n this.scrollerImpl.center();\n }\n // #region api\n resize(width, height) {\n this.scrollerImpl.resize(width, height);\n }\n resizePage(width, height) {\n this.scrollerImpl.updatePageSize(width, height);\n }\n zoom(factor, options) {\n if (typeof factor === 'undefined') {\n return this.scrollerImpl.zoom();\n }\n this.scrollerImpl.zoom(factor, options);\n return this;\n }\n zoomTo(factor, options = {}) {\n this.scrollerImpl.zoom(factor, Object.assign(Object.assign({}, options), { absolute: true }));\n return this;\n }\n zoomToRect(rect, options = {}) {\n this.scrollerImpl.zoomToRect(rect, options);\n return this;\n }\n zoomToFit(options = {}) {\n this.scrollerImpl.zoomToFit(options);\n return this;\n }\n center(optons) {\n return this.centerPoint(optons);\n }\n centerPoint(x, y, options) {\n this.scrollerImpl.centerPoint(x, y, options);\n return this;\n }\n centerContent(options) {\n this.scrollerImpl.centerContent(options);\n return this;\n }\n centerCell(cell, options) {\n this.scrollerImpl.centerCell(cell, options);\n return this;\n }\n positionPoint(point, x, y, options = {}) {\n this.scrollerImpl.positionPoint(point, x, y, options);\n return this;\n }\n positionRect(rect, direction, options) {\n this.scrollerImpl.positionRect(rect, direction, options);\n return this;\n }\n positionCell(cell, direction, options) {\n this.scrollerImpl.positionCell(cell, direction, options);\n return this;\n }\n positionContent(pos, options) {\n this.scrollerImpl.positionContent(pos, options);\n return this;\n }\n drawBackground(options, onGraph) {\n if (this.graph.options.background == null || !onGraph) {\n this.scrollerImpl.backgroundManager.draw(options);\n }\n return this;\n }\n clearBackground(onGraph) {\n if (this.graph.options.background == null || !onGraph) {\n this.scrollerImpl.backgroundManager.clear();\n }\n return this;\n }\n isPannable() {\n return this.pannable;\n }\n enablePanning() {\n if (!this.pannable) {\n this.options.pannable = true;\n this.updateClassName();\n }\n }\n disablePanning() {\n if (this.pannable) {\n this.options.pannable = false;\n this.updateClassName();\n }\n }\n togglePanning(pannable) {\n if (pannable == null) {\n if (this.isPannable()) {\n this.disablePanning();\n }\n else {\n this.enablePanning();\n }\n }\n else if (pannable !== this.isPannable()) {\n if (pannable) {\n this.enablePanning();\n }\n else {\n this.disablePanning();\n }\n }\n return this;\n }\n lockScroller() {\n this.scrollerImpl.lock();\n return this;\n }\n unlockScroller() {\n this.scrollerImpl.unlock();\n return this;\n }\n updateScroller() {\n this.scrollerImpl.update();\n return this;\n }\n getScrollbarPosition() {\n return this.scrollerImpl.scrollbarPosition();\n }\n setScrollbarPosition(left, top) {\n this.scrollerImpl.scrollbarPosition(left, top);\n return this;\n }\n scrollToPoint(x, y) {\n this.scrollerImpl.scrollToPoint(x, y);\n return this;\n }\n scrollToContent() {\n this.scrollerImpl.scrollToContent();\n return this;\n }\n scrollToCell(cell) {\n this.scrollerImpl.scrollToCell(cell);\n return this;\n }\n transitionToPoint(x, y, options) {\n this.scrollerImpl.transitionToPoint(x, y, options);\n return this;\n }\n transitionToRect(rect, options = {}) {\n this.scrollerImpl.transitionToRect(rect, options);\n return this;\n }\n enableAutoResize() {\n this.scrollerImpl.enableAutoResize();\n }\n disableAutoResize() {\n this.scrollerImpl.disableAutoResize();\n }\n autoScroll(clientX, clientY) {\n return this.scrollerImpl.autoScroll(clientX, clientY);\n }\n clientToLocalPoint(x, y) {\n return this.scrollerImpl.clientToLocalPoint(x, y);\n }\n // #endregion\n setup() {\n this.scrollerImpl.on('*', (name, args) => {\n this.trigger(name, args);\n });\n }\n startListening() {\n let eventTypes = [];\n const pannable = this.options.pannable;\n if (typeof pannable === 'object') {\n eventTypes = pannable.eventTypes || [];\n }\n else {\n eventTypes = ['leftMouseDown'];\n }\n if (eventTypes.includes('leftMouseDown')) {\n this.graph.on('blank:mousedown', this.preparePanning, this);\n this.graph.on('node:unhandled:mousedown', this.preparePanning, this);\n this.graph.on('edge:unhandled:mousedown', this.preparePanning, this);\n }\n if (eventTypes.includes('rightMouseDown')) {\n this.onRightMouseDown = this.onRightMouseDown.bind(this);\n Dom.Event.on(this.scrollerImpl.container, 'mousedown', this.onRightMouseDown);\n }\n }\n stopListening() {\n let eventTypes = [];\n const pannable = this.options.pannable;\n if (typeof pannable === 'object') {\n eventTypes = pannable.eventTypes || [];\n }\n else {\n eventTypes = ['leftMouseDown'];\n }\n if (eventTypes.includes('leftMouseDown')) {\n this.graph.off('blank:mousedown', this.preparePanning, this);\n this.graph.off('node:unhandled:mousedown', this.preparePanning, this);\n this.graph.off('edge:unhandled:mousedown', this.preparePanning, this);\n }\n if (eventTypes.includes('rightMouseDown')) {\n Dom.Event.off(this.scrollerImpl.container, 'mousedown', this.onRightMouseDown);\n }\n }\n onRightMouseDown(e) {\n if (e.button === 2 && this.allowPanning(e, true)) {\n this.updateClassName(true);\n this.scrollerImpl.startPanning(e);\n this.scrollerImpl.once('pan:stop', () => this.updateClassName(false));\n }\n }\n preparePanning({ e }) {\n const allowPanning = this.allowPanning(e, true);\n const selection = this.graph.getPlugin('selection');\n const allowRubberband = selection && selection.allowRubberband(e, true);\n if (allowPanning || (this.allowPanning(e) && !allowRubberband)) {\n this.updateClassName(true);\n this.scrollerImpl.startPanning(e);\n this.scrollerImpl.once('pan:stop', () => this.updateClassName(false));\n }\n }\n allowPanning(e, strict) {\n return (this.pannable && ModifierKey.isMatch(e, this.options.modifiers, strict));\n }\n updateClassName(isPanning) {\n const container = this.scrollerImpl.container;\n const pannable = Config.prefix('graph-scroller-pannable');\n if (this.pannable) {\n Dom.addClass(container, pannable);\n container.dataset.panning = (!!isPanning).toString(); // Use dataset to control scroller panning style to avoid reflow caused by changing classList\n }\n else {\n Dom.removeClass(container, pannable);\n }\n }\n dispose() {\n this.scrollerImpl.dispose();\n this.stopListening();\n this.off();\n CssLoader.clean(this.name);\n }\n}\n__decorate([\n Basecoat.dispose()\n], Scroller.prototype, \"dispose\", null);\n//# sourceMappingURL=index.js.map","/* eslint-disable */\n/**\n * Auto generated file, do not modify it!\n */\nexport const content = `.x6-widget-minimap {\n position: relative;\n display: table-cell;\n box-sizing: border-box;\n overflow: hidden;\n text-align: center;\n vertical-align: middle;\n background-color: #fff;\n user-select: none;\n}\n.x6-widget-minimap .x6-graph {\n display: inline-block;\n box-shadow: 0 0 4px 0 #eee;\n cursor: pointer;\n}\n.x6-widget-minimap .x6-graph > svg {\n pointer-events: none;\n shape-rendering: optimizespeed;\n}\n.x6-widget-minimap .x6-graph .x6-node * {\n /* stylelint-disable-next-line */\n vector-effect: initial;\n}\n.x6-widget-minimap-viewport {\n position: absolute;\n box-sizing: content-box !important;\n margin: -2px 0 0 -2px;\n border: 2px solid #31d0c6;\n cursor: move;\n}\n.x6-widget-minimap-viewport-zoom {\n position: absolute;\n right: 0;\n bottom: 0;\n box-sizing: border-box;\n width: 12px;\n height: 12px;\n margin: 0 -6px -6px 0;\n background-color: #fff;\n border: 2px solid #31d0c6;\n border-radius: 50%;\n cursor: nwse-resize;\n}\n`;\n//# sourceMappingURL=raw.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { FunctionExt, CssLoader, Dom, View, Graph, Model, } from '@antv/x6';\nimport { content } from './style/raw';\nexport class MiniMap extends View {\n get scroller() {\n return this.graph.getPlugin('scroller');\n }\n get graphContainer() {\n if (this.scroller) {\n return this.scroller.container;\n }\n return this.graph.container;\n }\n constructor(options) {\n super();\n this.name = 'minimap';\n this.options = Object.assign(Object.assign({}, Util.defaultOptions), options);\n CssLoader.ensure(this.name, content);\n }\n init(graph) {\n this.graph = graph;\n this.updateViewport = FunctionExt.debounce(this.updateViewport.bind(this), 0);\n this.container = document.createElement('div');\n Dom.addClass(this.container, this.prefixClassName(ClassName.root));\n const graphContainer = document.createElement('div');\n this.container.appendChild(graphContainer);\n this.viewport = document.createElement('div');\n Dom.addClass(this.viewport, this.prefixClassName(ClassName.viewport));\n if (this.options.scalable) {\n this.zoomHandle = document.createElement('div');\n Dom.addClass(this.zoomHandle, this.prefixClassName(ClassName.zoom));\n Dom.appendTo(this.zoomHandle, this.viewport);\n }\n Dom.append(this.container, this.viewport);\n Dom.css(this.container, {\n width: this.options.width,\n height: this.options.height,\n padding: this.options.padding,\n });\n if (this.options.container) {\n this.options.container.appendChild(this.container);\n }\n this.sourceGraph = this.graph;\n const targetGraphOptions = Object.assign(Object.assign({}, this.options.graphOptions), { container: graphContainer, model: this.sourceGraph.model, interacting: false, grid: false, background: false, embedding: false });\n this.targetGraph = this.options.createGraph\n ? this.options.createGraph(targetGraphOptions)\n : new Graph(targetGraphOptions);\n this.updatePaper(this.sourceGraph.options.width, this.sourceGraph.options.height);\n this.startListening();\n }\n startListening() {\n if (this.scroller) {\n Dom.Event.on(this.graphContainer, `scroll${this.getEventNamespace()}`, this.updateViewport);\n }\n else {\n this.sourceGraph.on('translate', this.onTransform, this);\n this.sourceGraph.on('scale', this.onTransform, this);\n this.sourceGraph.on('model:updated', this.onModelUpdated, this);\n }\n this.sourceGraph.on('resize', this.updatePaper, this);\n this.delegateEvents({\n mousedown: 'startAction',\n touchstart: 'startAction',\n [`mousedown .${this.prefixClassName('graph')}`]: 'scrollTo',\n [`touchstart .${this.prefixClassName('graph')}`]: 'scrollTo',\n });\n }\n stopListening() {\n if (this.scroller) {\n Dom.Event.off(this.graphContainer, this.getEventNamespace());\n }\n else {\n this.sourceGraph.off('translate', this.onTransform, this);\n this.sourceGraph.off('scale', this.onTransform, this);\n this.sourceGraph.off('model:updated', this.onModelUpdated, this);\n }\n this.sourceGraph.off('resize', this.updatePaper, this);\n this.undelegateEvents();\n }\n onRemove() {\n this.stopListening();\n this.targetGraph.model = new Model();\n this.targetGraph.dispose();\n }\n onTransform(options) {\n if (options.ui || this.targetGraphTransforming) {\n this.updateViewport();\n }\n }\n onModelUpdated() {\n this.targetGraph.zoomToFit();\n }\n updatePaper(w, h) {\n let width;\n let height;\n if (typeof w === 'object') {\n width = w.width;\n height = w.height;\n }\n else {\n width = w;\n height = h;\n }\n const origin = this.sourceGraph.options;\n const scale = this.sourceGraph.transform.getScale();\n const maxWidth = this.options.width - 2 * this.options.padding;\n const maxHeight = this.options.height - 2 * this.options.padding;\n width /= scale.sx; // eslint-disable-line\n height /= scale.sy; // eslint-disable-line\n this.ratio = Math.min(maxWidth / width, maxHeight / height);\n const ratio = this.ratio;\n const x = (origin.x * ratio) / scale.sx;\n const y = (origin.y * ratio) / scale.sy;\n width *= ratio; // eslint-disable-line\n height *= ratio; // eslint-disable-line\n this.targetGraph.resize(width, height);\n this.targetGraph.translate(x, y);\n if (this.scroller) {\n this.targetGraph.scale(ratio, ratio);\n }\n else {\n this.targetGraph.zoomToFit();\n }\n this.updateViewport();\n return this;\n }\n updateViewport() {\n const sourceGraphScale = this.sourceGraph.transform.getScale();\n const targetGraphScale = this.targetGraph.transform.getScale();\n let origin = null;\n if (this.scroller) {\n origin = this.scroller.clientToLocalPoint(0, 0);\n }\n else {\n origin = this.graph.graphToLocal(0, 0);\n }\n const position = Dom.position(this.targetGraph.container);\n const translation = this.targetGraph.translate();\n translation.ty = translation.ty || 0;\n this.geometry = {\n top: position.top + origin.y * targetGraphScale.sy + translation.ty,\n left: position.left + origin.x * targetGraphScale.sx + translation.tx,\n width: (this.graphContainer.clientWidth * targetGraphScale.sx) /\n sourceGraphScale.sx,\n height: (this.graphContainer.clientHeight * targetGraphScale.sy) /\n sourceGraphScale.sy,\n };\n Dom.css(this.viewport, this.geometry);\n }\n startAction(evt) {\n const e = this.normalizeEvent(evt);\n const action = e.target === this.zoomHandle ? 'zooming' : 'panning';\n const { tx, ty } = this.sourceGraph.translate();\n const eventData = {\n action,\n clientX: e.clientX,\n clientY: e.clientY,\n scrollLeft: this.graphContainer.scrollLeft,\n scrollTop: this.graphContainer.scrollTop,\n zoom: this.sourceGraph.zoom(),\n scale: this.sourceGraph.transform.getScale(),\n geometry: this.geometry,\n translateX: tx,\n translateY: ty,\n };\n this.targetGraphTransforming = true;\n this.delegateDocumentEvents(Util.documentEvents, eventData);\n }\n doAction(evt) {\n const e = this.normalizeEvent(evt);\n const clientX = e.clientX;\n const clientY = e.clientY;\n const data = e.data;\n switch (data.action) {\n case 'panning': {\n const scale = this.sourceGraph.transform.getScale();\n const rx = (clientX - data.clientX) * scale.sx;\n const ry = (clientY - data.clientY) * scale.sy;\n if (this.scroller) {\n this.graphContainer.scrollLeft = data.scrollLeft + rx / this.ratio;\n this.graphContainer.scrollTop = data.scrollTop + ry / this.ratio;\n }\n else {\n this.sourceGraph.translate(data.translateX - rx / this.ratio, data.translateY - ry / this.ratio);\n }\n break;\n }\n case 'zooming': {\n const startScale = data.scale;\n const startGeometry = data.geometry;\n const delta = 1 + (data.clientX - clientX) / startGeometry.width / startScale.sx;\n if (data.frameId) {\n cancelAnimationFrame(data.frameId);\n }\n data.frameId = requestAnimationFrame(() => {\n this.sourceGraph.zoom(delta * data.zoom, {\n absolute: true,\n minScale: this.options.minScale,\n maxScale: this.options.maxScale,\n });\n });\n break;\n }\n default:\n break;\n }\n }\n stopAction() {\n this.undelegateDocumentEvents();\n this.targetGraphTransforming = false;\n }\n scrollTo(evt) {\n const e = this.normalizeEvent(evt);\n let x;\n let y;\n const ts = this.targetGraph.translate();\n ts.ty = ts.ty || 0;\n if (e.offsetX == null) {\n const offset = Dom.offset(this.targetGraph.container);\n x = e.pageX - offset.left;\n y = e.pageY - offset.top;\n }\n else {\n x = e.offsetX;\n y = e.offsetY;\n }\n const cx = (x - ts.tx) / this.ratio;\n const cy = (y - ts.ty) / this.ratio;\n this.sourceGraph.centerPoint(cx, cy);\n }\n dispose() {\n this.remove();\n CssLoader.clean(this.name);\n }\n}\n__decorate([\n View.dispose()\n], MiniMap.prototype, \"dispose\", null);\nvar ClassName;\n(function (ClassName) {\n ClassName.root = 'widget-minimap';\n ClassName.viewport = `${ClassName.root}-viewport`;\n ClassName.zoom = `${ClassName.viewport}-zoom`;\n})(ClassName || (ClassName = {}));\nvar Util;\n(function (Util) {\n Util.defaultOptions = {\n width: 300,\n height: 200,\n padding: 10,\n scalable: true,\n minScale: 0.01,\n maxScale: 16,\n graphOptions: {},\n createGraph: (options) => new Graph(options),\n };\n Util.documentEvents = {\n mousemove: 'doAction',\n touchmove: 'doAction',\n mouseup: 'stopAction',\n touchend: 'stopAction',\n };\n})(Util || (Util = {}));\n//# sourceMappingURL=index.js.map","/* eslint-disable */\n/**\n * Auto generated file, do not modify it!\n */\nexport const content = `.x6-widget-dnd {\n position: absolute;\n top: -10000px;\n left: -10000px;\n z-index: 999999;\n display: none;\n cursor: move;\n opacity: 0.7;\n pointer-events: 'cursor';\n}\n.x6-widget-dnd.dragging {\n display: inline-block;\n}\n.x6-widget-dnd.dragging * {\n pointer-events: none !important;\n}\n.x6-widget-dnd .x6-graph {\n background: transparent;\n box-shadow: none;\n}\n`;\n//# sourceMappingURL=raw.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { GeometryUtil, Rectangle, FunctionExt, Dom, CssLoader, View, Graph, } from '@antv/x6';\nimport { content } from './style/raw';\nexport class Dnd extends View {\n get targetScroller() {\n const target = this.options.target;\n const scroller = target.getPlugin('scroller');\n return scroller;\n }\n get targetGraph() {\n return this.options.target;\n }\n get targetModel() {\n return this.targetGraph.model;\n }\n get snapline() {\n const target = this.options.target;\n const snapline = target.getPlugin('snapline');\n return snapline;\n }\n constructor(options) {\n super();\n this.name = 'dnd';\n this.options = Object.assign(Object.assign({}, Dnd.defaults), options);\n this.init();\n }\n init() {\n CssLoader.ensure(this.name, content);\n this.container = document.createElement('div');\n Dom.addClass(this.container, this.prefixClassName('widget-dnd'));\n this.draggingGraph = new Graph(Object.assign(Object.assign({}, this.options.delegateGraphOptions), { container: document.createElement('div'), width: 1, height: 1, async: false }));\n Dom.append(this.container, this.draggingGraph.container);\n }\n start(node, evt) {\n const e = evt;\n e.preventDefault();\n this.targetModel.startBatch('dnd');\n Dom.addClass(this.container, 'dragging');\n Dom.appendTo(this.container, this.options.draggingContainer || document.body);\n this.sourceNode = node;\n this.prepareDragging(node, e.clientX, e.clientY);\n const local = this.updateNodePosition(e.clientX, e.clientY);\n if (this.isSnaplineEnabled()) {\n this.snapline.captureCursorOffset({\n e,\n node,\n cell: node,\n view: this.draggingView,\n x: local.x,\n y: local.y,\n });\n this.draggingNode.on('change:position', this.snap, this);\n }\n this.delegateDocumentEvents(Dnd.documentEvents, e.data);\n }\n isSnaplineEnabled() {\n return this.snapline && this.snapline.isEnabled();\n }\n prepareDragging(sourceNode, clientX, clientY) {\n const draggingGraph = this.draggingGraph;\n const draggingModel = draggingGraph.model;\n const draggingNode = this.options.getDragNode(sourceNode, {\n sourceNode,\n draggingGraph,\n targetGraph: this.targetGraph,\n });\n draggingNode.position(0, 0);\n let padding = 5;\n if (this.isSnaplineEnabled()) {\n padding += this.snapline.options.tolerance || 0;\n }\n if (this.isSnaplineEnabled() || this.options.scaled) {\n const scale = this.targetGraph.transform.getScale();\n draggingGraph.scale(scale.sx, scale.sy);\n padding *= Math.max(scale.sx, scale.sy);\n }\n else {\n draggingGraph.scale(1, 1);\n }\n this.clearDragging();\n // if (this.options.animation) {\n // this.$container.stop(true, true)\n // }\n draggingModel.resetCells([draggingNode]);\n const delegateView = draggingGraph.findViewByCell(draggingNode);\n delegateView.undelegateEvents();\n delegateView.cell.off('changed');\n draggingGraph.fitToContent({\n padding,\n allowNewOrigin: 'any',\n useCellGeometry: false,\n });\n const bbox = delegateView.getBBox();\n this.geometryBBox = delegateView.getBBox({ useCellGeometry: true });\n this.delta = this.geometryBBox.getTopLeft().diff(bbox.getTopLeft());\n this.draggingNode = draggingNode;\n this.draggingView = delegateView;\n this.draggingBBox = draggingNode.getBBox();\n this.padding = padding;\n this.originOffset = this.updateGraphPosition(clientX, clientY);\n }\n updateGraphPosition(clientX, clientY) {\n const scrollTop = document.body.scrollTop || document.documentElement.scrollTop;\n const delta = this.delta;\n const nodeBBox = this.geometryBBox;\n const padding = this.padding || 5;\n const offset = {\n left: clientX - delta.x - nodeBBox.width / 2 - padding,\n top: clientY - delta.y - nodeBBox.height / 2 - padding + scrollTop,\n };\n if (this.draggingGraph) {\n Dom.css(this.container, {\n left: `${offset.left}px`,\n top: `${offset.top}px`,\n });\n }\n return offset;\n }\n updateNodePosition(x, y) {\n const local = this.targetGraph.clientToLocal(x, y);\n const bbox = this.draggingBBox;\n local.x -= bbox.width / 2;\n local.y -= bbox.height / 2;\n this.draggingNode.position(local.x, local.y);\n return local;\n }\n snap({ cell, current, options, }) {\n const node = cell;\n if (options.snapped) {\n const bbox = this.draggingBBox;\n node.position(bbox.x + options.tx, bbox.y + options.ty, { silent: true });\n this.draggingView.translate();\n node.position(current.x, current.y, { silent: true });\n this.snapOffset = {\n x: options.tx,\n y: options.ty,\n };\n }\n else {\n this.snapOffset = null;\n }\n }\n onDragging(evt) {\n const draggingView = this.draggingView;\n if (draggingView) {\n evt.preventDefault();\n const e = this.normalizeEvent(evt);\n const clientX = e.clientX;\n const clientY = e.clientY;\n this.updateGraphPosition(clientX, clientY);\n const local = this.updateNodePosition(clientX, clientY);\n const embeddingMode = this.targetGraph.options.embedding.enabled;\n const isValidArea = (embeddingMode || this.isSnaplineEnabled()) &&\n this.isInsideValidArea({\n x: clientX,\n y: clientY,\n });\n if (embeddingMode) {\n draggingView.setEventData(e, {\n graph: this.targetGraph,\n candidateEmbedView: this.candidateEmbedView,\n });\n const data = draggingView.getEventData(e);\n if (isValidArea) {\n draggingView.processEmbedding(e, data);\n }\n else {\n draggingView.clearEmbedding(data);\n }\n this.candidateEmbedView = data.candidateEmbedView;\n }\n // update snapline\n if (this.isSnaplineEnabled()) {\n if (isValidArea) {\n this.snapline.snapOnMoving({\n e,\n view: draggingView,\n x: local.x,\n y: local.y,\n });\n }\n else {\n this.snapline.hide();\n }\n }\n }\n }\n onDragEnd(evt) {\n const draggingNode = this.draggingNode;\n if (draggingNode) {\n const e = this.normalizeEvent(evt);\n const draggingView = this.draggingView;\n const draggingBBox = this.draggingBBox;\n const snapOffset = this.snapOffset;\n let x = draggingBBox.x;\n let y = draggingBBox.y;\n if (snapOffset) {\n x += snapOffset.x;\n y += snapOffset.y;\n }\n draggingNode.position(x, y, { silent: true });\n const ret = this.drop(draggingNode, { x: e.clientX, y: e.clientY });\n const callback = (node) => {\n if (node) {\n this.onDropped(draggingNode);\n if (this.targetGraph.options.embedding.enabled && draggingView) {\n draggingView.setEventData(e, {\n cell: node,\n graph: this.targetGraph,\n candidateEmbedView: this.candidateEmbedView,\n });\n draggingView.finalizeEmbedding(e, draggingView.getEventData(e));\n }\n }\n else {\n this.onDropInvalid();\n }\n this.candidateEmbedView = null;\n this.targetModel.stopBatch('dnd');\n };\n if (FunctionExt.isAsync(ret)) {\n // stop dragging\n this.undelegateDocumentEvents();\n ret.then(callback); // eslint-disable-line\n }\n else {\n callback(ret);\n }\n }\n }\n clearDragging() {\n if (this.draggingNode) {\n this.sourceNode = null;\n this.draggingNode.remove();\n this.draggingNode = null;\n this.draggingView = null;\n this.delta = null;\n this.padding = null;\n this.snapOffset = null;\n this.originOffset = null;\n this.undelegateDocumentEvents();\n }\n }\n onDropped(draggingNode) {\n if (this.draggingNode === draggingNode) {\n this.clearDragging();\n Dom.removeClass(this.container, 'dragging');\n Dom.remove(this.container);\n }\n }\n onDropInvalid() {\n const draggingNode = this.draggingNode;\n if (draggingNode) {\n this.onDropped(draggingNode);\n // todo\n // const anim = this.options.animation\n // if (anim) {\n // const duration = (typeof anim === 'object' && anim.duration) || 150\n // const easing = (typeof anim === 'object' && anim.easing) || 'swing'\n // this.draggingView = null\n // this.$container.animate(this.originOffset!, duration, easing, () =>\n // this.onDropped(draggingNode),\n // )\n // } else {\n // this.onDropped(draggingNode)\n // }\n }\n }\n isInsideValidArea(p) {\n let targetRect;\n let dndRect = null;\n const targetGraph = this.targetGraph;\n const targetScroller = this.targetScroller;\n if (this.options.dndContainer) {\n dndRect = this.getDropArea(this.options.dndContainer);\n }\n const isInsideDndRect = dndRect && dndRect.containsPoint(p);\n if (targetScroller) {\n if (targetScroller.options.autoResize) {\n targetRect = this.getDropArea(targetScroller.container);\n }\n else {\n const outter = this.getDropArea(targetScroller.container);\n targetRect = this.getDropArea(targetGraph.container).intersectsWithRect(outter);\n }\n }\n else {\n targetRect = this.getDropArea(targetGraph.container);\n }\n return !isInsideDndRect && targetRect && targetRect.containsPoint(p);\n }\n getDropArea(elem) {\n const offset = Dom.offset(elem);\n const scrollTop = document.body.scrollTop || document.documentElement.scrollTop;\n const scrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;\n return Rectangle.create({\n x: offset.left +\n parseInt(Dom.css(elem, 'border-left-width'), 10) -\n scrollLeft,\n y: offset.top +\n parseInt(Dom.css(elem, 'border-top-width'), 10) -\n scrollTop,\n width: elem.clientWidth,\n height: elem.clientHeight,\n });\n }\n drop(draggingNode, pos) {\n if (this.isInsideValidArea(pos)) {\n const targetGraph = this.targetGraph;\n const targetModel = targetGraph.model;\n const local = targetGraph.clientToLocal(pos);\n const sourceNode = this.sourceNode;\n const droppingNode = this.options.getDropNode(draggingNode, {\n sourceNode,\n draggingNode,\n targetGraph: this.targetGraph,\n draggingGraph: this.draggingGraph,\n });\n const bbox = droppingNode.getBBox();\n local.x += bbox.x - bbox.width / 2;\n local.y += bbox.y - bbox.height / 2;\n const gridSize = this.snapOffset ? 1 : targetGraph.getGridSize();\n droppingNode.position(GeometryUtil.snapToGrid(local.x, gridSize), GeometryUtil.snapToGrid(local.y, gridSize));\n droppingNode.removeZIndex();\n const validateNode = this.options.validateNode;\n const ret = validateNode\n ? validateNode(droppingNode, {\n sourceNode,\n draggingNode,\n droppingNode,\n targetGraph,\n draggingGraph: this.draggingGraph,\n })\n : true;\n if (typeof ret === 'boolean') {\n if (ret) {\n targetModel.addCell(droppingNode, { stencil: this.cid });\n return droppingNode;\n }\n return null;\n }\n return FunctionExt.toDeferredBoolean(ret).then((valid) => {\n if (valid) {\n targetModel.addCell(droppingNode, { stencil: this.cid });\n return droppingNode;\n }\n return null;\n });\n }\n return null;\n }\n onRemove() {\n if (this.draggingGraph) {\n this.draggingGraph.view.remove();\n this.draggingGraph.dispose();\n }\n }\n dispose() {\n this.remove();\n CssLoader.clean(this.name);\n }\n}\n__decorate([\n View.dispose()\n], Dnd.prototype, \"dispose\", null);\n(function (Dnd) {\n Dnd.defaults = {\n // animation: false,\n getDragNode: (sourceNode) => sourceNode.clone(),\n getDropNode: (draggingNode) => draggingNode.clone(),\n };\n Dnd.documentEvents = {\n mousemove: 'onDragging',\n touchmove: 'onDragging',\n mouseup: 'onDragEnd',\n touchend: 'onDragEnd',\n touchcancel: 'onDragEnd',\n };\n})(Dnd || (Dnd = {}));\n//# sourceMappingURL=index.js.map","import { Model } from '@antv/x6';\nexport function grid(cells, options = {}) {\n const model = Model.isModel(cells)\n ? cells\n : new Model().resetCells(cells, {\n sort: false,\n dryrun: true,\n });\n const nodes = model.getNodes();\n const columns = options.columns || 1;\n const rows = Math.ceil(nodes.length / columns);\n const dx = options.dx || 0;\n const dy = options.dy || 0;\n const centre = options.center !== false;\n const resizeToFit = options.resizeToFit === true;\n const marginX = options.marginX || 0;\n const marginY = options.marginY || 0;\n const columnWidths = [];\n let columnWidth = options.columnWidth;\n if (columnWidth === 'compact') {\n for (let j = 0; j < columns; j += 1) {\n const items = GridLayout.getNodesInColumn(nodes, j, columns);\n columnWidths.push(GridLayout.getMaxDim(items, 'width') + dx);\n }\n }\n else {\n if (columnWidth == null || columnWidth === 'auto') {\n columnWidth = GridLayout.getMaxDim(nodes, 'width') + dx;\n }\n for (let i = 0; i < columns; i += 1) {\n columnWidths.push(columnWidth);\n }\n }\n const columnLefts = GridLayout.accumulate(columnWidths, marginX);\n const rowHeights = [];\n let rowHeight = options.rowHeight;\n if (rowHeight === 'compact') {\n for (let i = 0; i < rows; i += 1) {\n const items = GridLayout.getNodesInRow(nodes, i, columns);\n rowHeights.push(GridLayout.getMaxDim(items, 'height') + dy);\n }\n }\n else {\n if (rowHeight == null || rowHeight === 'auto') {\n rowHeight = GridLayout.getMaxDim(nodes, 'height') + dy;\n }\n for (let i = 0; i < rows; i += 1) {\n rowHeights.push(rowHeight);\n }\n }\n const rowTops = GridLayout.accumulate(rowHeights, marginY);\n model.startBatch('layout');\n nodes.forEach((node, index) => {\n const rowIndex = index % columns;\n const columnIndex = Math.floor(index / columns);\n const columnWidth = columnWidths[rowIndex];\n const rowHeight = rowHeights[columnIndex];\n let cx = 0;\n let cy = 0;\n let size = node.getSize();\n if (resizeToFit) {\n let width = columnWidth - 2 * dx;\n let height = rowHeight - 2 * dy;\n const calcHeight = size.height * (size.width ? width / size.width : 1);\n const calcWidth = size.width * (size.height ? height / size.height : 1);\n if (rowHeight < calcHeight) {\n width = calcWidth;\n }\n else {\n height = calcHeight;\n }\n size = {\n width,\n height,\n };\n node.setSize(size, options);\n }\n if (centre) {\n cx = (columnWidth - size.width) / 2;\n cy = (rowHeight - size.height) / 2;\n }\n node.position(columnLefts[rowIndex] + dx + cx, rowTops[columnIndex] + dy + cy, options);\n });\n model.stopBatch('layout');\n}\nvar GridLayout;\n(function (GridLayout) {\n function getMaxDim(nodes, name) {\n return nodes.reduce((memo, node) => Math.max(node === null || node === void 0 ? void 0 : node.getSize()[name], memo), 0);\n }\n GridLayout.getMaxDim = getMaxDim;\n function getNodesInRow(nodes, rowIndex, columnCount) {\n const res = [];\n for (let i = columnCount * rowIndex, ii = i + columnCount; i < ii; i += 1) {\n if (nodes[i])\n res.push(nodes[i]);\n }\n return res;\n }\n GridLayout.getNodesInRow = getNodesInRow;\n function getNodesInColumn(nodes, columnIndex, columnCount) {\n const res = [];\n for (let i = columnIndex, ii = nodes.length; i < ii; i += columnCount) {\n if (nodes[i])\n res.push(nodes[i]);\n }\n return res;\n }\n GridLayout.getNodesInColumn = getNodesInColumn;\n function accumulate(items, start) {\n return items.reduce((memo, item, i) => {\n memo.push(memo[i] + item);\n return memo;\n }, [start || 0]);\n }\n GridLayout.accumulate = accumulate;\n})(GridLayout || (GridLayout = {}));\n//# sourceMappingURL=grid.js.map","/* eslint-disable */\n/**\n * Auto generated file, do not modify it!\n */\nexport const content = `.x6-widget-dnd {\n position: absolute;\n top: -10000px;\n left: -10000px;\n z-index: 999999;\n display: none;\n cursor: move;\n opacity: 0.7;\n pointer-events: 'cursor';\n}\n.x6-widget-dnd.dragging {\n display: inline-block;\n}\n.x6-widget-dnd.dragging * {\n pointer-events: none !important;\n}\n.x6-widget-dnd .x6-graph {\n background: transparent;\n box-shadow: none;\n}\n.x6-widget-stencil {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n.x6-widget-stencil::after {\n position: absolute;\n top: 0;\n display: block;\n width: 100%;\n height: 20px;\n padding: 8px 0;\n line-height: 20px;\n text-align: center;\n opacity: 0;\n transition: top 0.1s linear, opacity 0.1s linear;\n content: ' ';\n pointer-events: none;\n}\n.x6-widget-stencil-content {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: auto;\n overflow-x: hidden;\n overflow-y: auto;\n}\n.x6-widget-stencil .x6-node [magnet]:not([magnet='passive']) {\n pointer-events: none;\n}\n.x6-widget-stencil-group {\n padding: 0;\n padding-bottom: 8px;\n overflow: hidden;\n user-select: none;\n}\n.x6-widget-stencil-group.collapsed {\n height: auto;\n padding-bottom: 0;\n}\n.x6-widget-stencil-group-title {\n position: relative;\n margin-top: 0;\n margin-bottom: 0;\n padding: 4px;\n cursor: pointer;\n}\n.x6-widget-stencil-title,\n.x6-widget-stencil-group > .x6-widget-stencil-group-title {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n user-select: none;\n}\n.x6-widget-stencil .unmatched {\n opacity: 0.3;\n}\n.x6-widget-stencil .x6-node.unmatched {\n display: none;\n}\n.x6-widget-stencil-group.unmatched {\n display: none;\n}\n.x6-widget-stencil-search-text {\n position: relative;\n z-index: 1;\n box-sizing: border-box;\n width: 100%;\n height: 30px;\n max-height: 30px;\n line-height: 30px;\n outline: 0;\n}\n.x6-widget-stencil.not-found::after {\n opacity: 1;\n content: attr(data-not-found-text);\n}\n.x6-widget-stencil.not-found.searchable::after {\n top: 30px;\n}\n.x6-widget-stencil.not-found.searchable.collapsable::after {\n top: 50px;\n}\n.x6-widget-stencil {\n color: #333;\n background: #f5f5f5;\n}\n.x6-widget-stencil-content {\n position: absolute;\n}\n.x6-widget-stencil.collapsable > .x6-widget-stencil-content {\n top: 32px;\n}\n.x6-widget-stencil.searchable > .x6-widget-stencil-content {\n top: 80px;\n}\n.x6-widget-stencil.not-found::after {\n position: absolute;\n}\n.x6-widget-stencil.not-found.searchable.collapsable::after {\n top: 80px;\n}\n.x6-widget-stencil.not-found.searchable::after {\n top: 60px;\n}\n.x6-widget-stencil-group {\n height: auto;\n margin-bottom: 1px;\n padding: 0;\n transition: none;\n}\n.x6-widget-stencil-group .x6-graph {\n background: transparent;\n box-shadow: none;\n}\n.x6-widget-stencil-group.collapsed {\n height: auto;\n max-height: 31px;\n}\n.x6-widget-stencil-title,\n.x6-widget-stencil-group > .x6-widget-stencil-group-title {\n position: relative;\n left: 0;\n box-sizing: border-box;\n width: 100%;\n height: 32px;\n padding: 0 5px 0 8px;\n color: #666;\n font-weight: 700;\n font-size: 12px;\n line-height: 32px;\n cursor: default;\n transition: all 0.3;\n}\n.x6-widget-stencil-title:hover,\n.x6-widget-stencil-group > .x6-widget-stencil-group-title:hover {\n color: #444;\n}\n.x6-widget-stencil-title {\n background: #e9e9e9;\n}\n.x6-widget-stencil-group > .x6-widget-stencil-group-title {\n background: #ededed;\n}\n.x6-widget-stencil.collapsable > .x6-widget-stencil-title,\n.x6-widget-stencil-group.collapsable > .x6-widget-stencil-group-title {\n padding-left: 32px;\n cursor: pointer;\n}\n.x6-widget-stencil.collapsable > .x6-widget-stencil-title::before,\n.x6-widget-stencil-group.collapsable > .x6-widget-stencil-group-title::before {\n position: absolute;\n top: 6px;\n left: 8px;\n display: block;\n width: 18px;\n height: 18px;\n margin: 0;\n padding: 0;\n background-color: transparent;\n background-repeat: no-repeat;\n background-position: 0 0;\n border: none;\n content: ' ';\n}\n.x6-widget-stencil.collapsable > .x6-widget-stencil-title::before,\n.x6-widget-stencil-group.collapsable > .x6-widget-stencil-group-title::before {\n background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJub256ZXJvIj48cGF0aCBkPSJNOS4zNzUuNUM0LjY4Ny41Ljg3NSA0LjMxMy44NzUgOWMwIDQuNjg4IDMuODEyIDguNSA4LjUgOC41IDQuNjg3IDAgOC41LTMuODEyIDguNS04LjUgMC00LjY4Ny0zLjgxMy04LjUtOC41LTguNXptMCAxNS44ODZDNS4zMDMgMTYuMzg2IDEuOTkgMTMuMDcyIDEuOTkgOXMzLjMxMi03LjM4NSA3LjM4NS03LjM4NVMxNi43NiA0LjkyOCAxNi43NiA5YzAgNC4wNzItMy4zMTMgNy4zODYtNy4zODUgNy4zODZ6Ii8+PHBhdGggZD0iTTEyLjc1MyA4LjQ0M0g1Ljk5N2EuNTU4LjU1OCAwIDAwMCAxLjExNmg2Ljc1NmEuNTU4LjU1OCAwIDAwMC0xLjExNnoiLz48L2c+PC9zdmc+');\n opacity: 0.4;\n transition: all 0.3s;\n}\n.x6-widget-stencil.collapsable > .x6-widget-stencil-title:hover::before,\n.x6-widget-stencil-group.collapsable > .x6-widget-stencil-group-title:hover::before {\n opacity: 0.6;\n}\n.x6-widget-stencil.collapsable.collapsed > .x6-widget-stencil-title::before,\n.x6-widget-stencil-group.collapsable.collapsed > .x6-widget-stencil-group-title::before {\n background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJub256ZXJvIj48cGF0aCBkPSJNOS4zNzUuNUM0LjY4Ny41Ljg3NSA0LjMxMy44NzUgOWMwIDQuNjg4IDMuODEyIDguNSA4LjUgOC41IDQuNjg3IDAgOC41LTMuODEyIDguNS04LjUgMC00LjY4Ny0zLjgxMy04LjUtOC41LTguNXptMCAxNS44ODZDNS4zMDMgMTYuMzg2IDEuOTkgMTMuMDcyIDEuOTkgOXMzLjMxMi03LjM4NSA3LjM4NS03LjM4NVMxNi43NiA0LjkyOCAxNi43NiA5YzAgNC4wNzItMy4zMTMgNy4zODYtNy4zODUgNy4zODZ6Ii8+PHBhdGggZD0iTTEyLjc1MyA4LjQ0M0g1Ljk5N2EuNTU4LjU1OCAwIDAwMCAxLjExNmg2Ljc1NmEuNTU4LjU1OCAwIDAwMC0xLjExNnoiLz48cGF0aCBkPSJNOC44MTcgNS42MjN2Ni43NTZhLjU1OC41NTggMCAwMDEuMTE2IDBWNS42MjNhLjU1OC41NTggMCAxMC0xLjExNiAweiIvPjwvZz48L3N2Zz4=');\n opacity: 0.4;\n}\n.x6-widget-stencil.collapsable.collapsed > .x6-widget-stencil-title:hover::before,\n.x6-widget-stencil-group.collapsable.collapsed > .x6-widget-stencil-group-title:hover::before {\n opacity: 0.6;\n}\n.x6-widget-stencil input[type='search'] {\n appearance: textfield;\n}\n.x6-widget-stencil input[type='search']::-webkit-search-cancel-button,\n.x6-widget-stencil input[type='search']::-webkit-search-decoration {\n appearance: none;\n}\n.x6-widget-stencil-search-text {\n display: block;\n width: 90%;\n margin: 8px 5%;\n padding-left: 8px;\n color: #333;\n background: #fff;\n border: 1px solid #e9e9e9;\n border-radius: 12px;\n outline: 0;\n}\n.x6-widget-stencil-search-text:focus {\n outline: 0;\n}\n.x6-widget-stencil::after {\n color: #808080;\n font-weight: 600;\n font-size: 12px;\n background: 0 0;\n}\n`;\n//# sourceMappingURL=raw.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Dom, FunctionExt, CssLoader, Node, Model, View, Graph, } from '@antv/x6';\nimport { Dnd } from '@antv/x6-plugin-dnd';\nimport { grid } from './grid';\nimport { content } from './style/raw';\nexport class Stencil extends View {\n get targetScroller() {\n const target = this.options.target;\n const scroller = target.getPlugin('scroller');\n return scroller;\n }\n get targetGraph() {\n return this.options.target;\n }\n get targetModel() {\n return this.targetGraph.model;\n }\n constructor(options = {}) {\n super();\n this.name = 'stencil';\n CssLoader.ensure(this.name, content);\n this.graphs = {};\n this.groups = {};\n this.options = Object.assign(Object.assign({}, Stencil.defaultOptions), options);\n this.init();\n }\n init() {\n this.dnd = new Dnd(this.options);\n this.onSearch = FunctionExt.debounce(this.onSearch, 200);\n this.initContainer();\n this.initSearch();\n this.initContent();\n this.initGroups();\n this.setTitle();\n this.startListening();\n }\n load(data, groupName) {\n if (Array.isArray(data)) {\n this.loadGroup(data, groupName);\n }\n else if (this.options.groups) {\n Object.keys(this.options.groups).forEach((groupName) => {\n if (data[groupName]) {\n this.loadGroup(data[groupName], groupName);\n }\n });\n }\n return this;\n }\n unload(data, groupName) {\n if (Array.isArray(data)) {\n this.loadGroup(data, groupName, true);\n }\n else if (this.options.groups) {\n Object.keys(this.options.groups).forEach((groupName) => {\n if (data[groupName]) {\n this.loadGroup(data[groupName], groupName, true);\n }\n });\n }\n return this;\n }\n toggleGroup(groupName) {\n if (this.isGroupCollapsed(groupName)) {\n this.expandGroup(groupName);\n }\n else {\n this.collapseGroup(groupName);\n }\n return this;\n }\n collapseGroup(groupName) {\n if (this.isGroupCollapsable(groupName)) {\n const group = this.groups[groupName];\n if (group && !this.isGroupCollapsed(groupName)) {\n this.trigger('group:collapse', { name: groupName });\n Dom.addClass(group, 'collapsed');\n }\n }\n return this;\n }\n expandGroup(groupName) {\n if (this.isGroupCollapsable(groupName)) {\n const group = this.groups[groupName];\n if (group && this.isGroupCollapsed(groupName)) {\n this.trigger('group:expand', { name: groupName });\n Dom.removeClass(group, 'collapsed');\n }\n }\n return this;\n }\n isGroupCollapsable(groupName) {\n const group = this.groups[groupName];\n return Dom.hasClass(group, 'collapsable');\n }\n isGroupCollapsed(groupName) {\n const group = this.groups[groupName];\n return group && Dom.hasClass(group, 'collapsed');\n }\n collapseGroups() {\n Object.keys(this.groups).forEach((groupName) => this.collapseGroup(groupName));\n return this;\n }\n expandGroups() {\n Object.keys(this.groups).forEach((groupName) => this.expandGroup(groupName));\n return this;\n }\n resizeGroup(groupName, size) {\n const graph = this.graphs[groupName];\n if (graph) {\n graph.resize(size.width, size.height);\n }\n return this;\n }\n addGroup(group) {\n const groups = Array.isArray(group) ? group : [group];\n if (this.options.groups) {\n this.options.groups.push(...groups);\n }\n else {\n this.options.groups = groups;\n }\n groups.forEach((group) => this.initGroup(group));\n }\n removeGroup(groupName) {\n const groupNames = Array.isArray(groupName) ? groupName : [groupName];\n if (this.options.groups) {\n this.options.groups = this.options.groups.filter((group) => !groupNames.includes(group.name));\n groupNames.forEach((groupName) => {\n const graph = this.graphs[groupName];\n graph.dispose();\n delete this.graphs[groupName];\n const elem = this.groups[groupName];\n Dom.remove(elem);\n delete this.groups[groupName];\n });\n }\n }\n // #endregion\n initContainer() {\n this.container = document.createElement('div');\n Dom.addClass(this.container, this.prefixClassName(ClassNames.base));\n Dom.attr(this.container, 'data-not-found-text', this.options.notFoundText || 'No matches found');\n }\n initContent() {\n this.content = document.createElement('div');\n Dom.addClass(this.content, this.prefixClassName(ClassNames.content));\n Dom.appendTo(this.content, this.container);\n }\n initSearch() {\n if (this.options.search) {\n Dom.addClass(this.container, 'searchable');\n Dom.append(this.container, this.renderSearch());\n }\n }\n initGroup(group) {\n const globalGraphOptions = this.options.stencilGraphOptions || {};\n const groupElem = document.createElement('div');\n Dom.addClass(groupElem, this.prefixClassName(ClassNames.group));\n Dom.attr(groupElem, 'data-name', group.name);\n if ((group.collapsable == null && this.options.collapsable) ||\n group.collapsable !== false) {\n Dom.addClass(groupElem, 'collapsable');\n }\n Dom.toggleClass(groupElem, 'collapsed', group.collapsed === true);\n const title = document.createElement('h3');\n Dom.addClass(title, this.prefixClassName(ClassNames.groupTitle));\n title.innerHTML = group.title || group.name;\n const content = document.createElement('div');\n Dom.addClass(content, this.prefixClassName(ClassNames.groupContent));\n const graphOptionsInGroup = group.graphOptions;\n const graph = new Graph(Object.assign(Object.assign(Object.assign({}, globalGraphOptions), graphOptionsInGroup), { container: document.createElement('div'), model: globalGraphOptions.model || new Model(), width: group.graphWidth || this.options.stencilGraphWidth, height: group.graphHeight || this.options.stencilGraphHeight, interacting: false, preventDefaultBlankAction: false }));\n Dom.append(content, graph.container);\n Dom.append(groupElem, [title, content]);\n Dom.appendTo(groupElem, this.content);\n this.groups[group.name] = groupElem;\n this.graphs[group.name] = graph;\n }\n initGroups() {\n this.clearGroups();\n this.setCollapsableState();\n if (this.options.groups && this.options.groups.length) {\n this.options.groups.forEach((group) => {\n this.initGroup(group);\n });\n }\n else {\n const globalGraphOptions = this.options.stencilGraphOptions || {};\n const graph = new Graph(Object.assign(Object.assign({}, globalGraphOptions), { container: document.createElement('div'), model: globalGraphOptions.model || new Model(), width: this.options.stencilGraphWidth, height: this.options.stencilGraphHeight, interacting: false, preventDefaultBlankAction: false }));\n Dom.append(this.content, graph.container);\n this.graphs[Private.defaultGroupName] = graph;\n }\n }\n setCollapsableState() {\n this.options.collapsable =\n this.options.collapsable &&\n this.options.groups &&\n this.options.groups.some((group) => group.collapsable !== false);\n if (this.options.collapsable) {\n Dom.addClass(this.container, 'collapsable');\n const collapsed = this.options.groups &&\n this.options.groups.every((group) => group.collapsed || group.collapsable === false);\n if (collapsed) {\n Dom.addClass(this.container, 'collapsed');\n }\n else {\n Dom.removeClass(this.container, 'collapsed');\n }\n }\n else {\n Dom.removeClass(this.container, 'collapsable');\n }\n }\n setTitle() {\n const title = document.createElement('div');\n Dom.addClass(title, this.prefixClassName(ClassNames.title));\n title.innerHTML = this.options.title;\n Dom.appendTo(title, this.container);\n }\n renderSearch() {\n const elem = document.createElement('div');\n Dom.addClass(elem, this.prefixClassName(ClassNames.search));\n const input = document.createElement('input');\n Dom.attr(input, {\n type: 'search',\n placeholder: this.options.placeholder || 'Search',\n });\n Dom.addClass(input, this.prefixClassName(ClassNames.searchText));\n Dom.append(elem, input);\n return elem;\n }\n startListening() {\n const title = this.prefixClassName(ClassNames.title);\n const searchText = this.prefixClassName(ClassNames.searchText);\n const groupTitle = this.prefixClassName(ClassNames.groupTitle);\n this.delegateEvents({\n [`click .${title}`]: 'onTitleClick',\n [`touchstart .${title}`]: 'onTitleClick',\n [`click .${groupTitle}`]: 'onGroupTitleClick',\n [`touchstart .${groupTitle}`]: 'onGroupTitleClick',\n [`input .${searchText}`]: 'onSearch',\n [`focusin .${searchText}`]: 'onSearchFocusIn',\n [`focusout .${searchText}`]: 'onSearchFocusOut',\n });\n Object.keys(this.graphs).forEach((groupName) => {\n const graph = this.graphs[groupName];\n graph.on('cell:mousedown', this.onDragStart, this);\n });\n }\n stopListening() {\n this.undelegateEvents();\n Object.keys(this.graphs).forEach((groupName) => {\n const graph = this.graphs[groupName];\n graph.off('cell:mousedown', this.onDragStart, this);\n });\n }\n loadGroup(cells, groupName, reverse) {\n const model = this.getModel(groupName);\n if (model) {\n const nodes = cells.map((cell) => Node.isNode(cell) ? cell : Node.create(cell));\n if (reverse === true) {\n model.removeCells(nodes);\n }\n else {\n model.resetCells(nodes);\n }\n }\n const group = this.getGroup(groupName);\n let height = this.options.stencilGraphHeight;\n if (group && group.graphHeight != null) {\n height = group.graphHeight;\n }\n const layout = (group && group.layout) || this.options.layout;\n if (layout && model) {\n FunctionExt.call(layout, this, model, group);\n }\n if (!height) {\n const graph = this.getGraph(groupName);\n graph.fitToContent({\n minWidth: graph.options.width,\n gridHeight: 1,\n padding: (group && group.graphPadding) ||\n this.options.stencilGraphPadding ||\n 10,\n });\n }\n return this;\n }\n onDragStart(args) {\n const { e, node } = args;\n const group = this.getGroupByNode(node);\n if (group && group.nodeMovable === false) {\n return;\n }\n this.dnd.start(node, e);\n }\n filter(keyword, filter) {\n const found = Object.keys(this.graphs).reduce((memo, groupName) => {\n const graph = this.graphs[groupName];\n const name = groupName === Private.defaultGroupName ? null : groupName;\n const items = graph.model.getNodes().filter((cell) => {\n let matched = false;\n if (typeof filter === 'function') {\n matched = FunctionExt.call(filter, this, cell, keyword, name, this);\n }\n else if (typeof filter === 'boolean') {\n matched = filter;\n }\n else {\n matched = this.isCellMatched(cell, keyword, filter, keyword.toLowerCase() !== keyword);\n }\n const view = graph.renderer.findViewByCell(cell);\n if (view) {\n Dom.toggleClass(view.container, 'unmatched', !matched);\n }\n return matched;\n });\n const found = items.length > 0;\n const options = this.options;\n const model = new Model();\n model.resetCells(items);\n if (options.layout) {\n FunctionExt.call(options.layout, this, model, this.getGroup(groupName));\n }\n if (this.groups[groupName]) {\n Dom.toggleClass(this.groups[groupName], 'unmatched', !found);\n }\n graph.fitToContent({\n gridWidth: 1,\n gridHeight: 1,\n padding: options.stencilGraphPadding || 10,\n });\n return memo || found;\n }, false);\n Dom.toggleClass(this.container, 'not-found', !found);\n }\n isCellMatched(cell, keyword, filters, ignoreCase) {\n if (keyword && filters) {\n return Object.keys(filters).some((shape) => {\n if (shape === '*' || cell.shape === shape) {\n const filter = filters[shape];\n if (typeof filter === 'boolean') {\n return filter;\n }\n const paths = Array.isArray(filter) ? filter : [filter];\n return paths.some((path) => {\n let val = cell.getPropByPath(path);\n if (val != null) {\n val = `${val}`;\n if (!ignoreCase) {\n val = val.toLowerCase();\n }\n return val.indexOf(keyword) >= 0;\n }\n return false;\n });\n }\n return false;\n });\n }\n return true;\n }\n onSearch(evt) {\n this.filter(evt.target.value, this.options.search);\n }\n onSearchFocusIn() {\n Dom.addClass(this.container, 'is-focused');\n }\n onSearchFocusOut() {\n Dom.removeClass(this.container, 'is-focused');\n }\n onTitleClick() {\n if (this.options.collapsable) {\n Dom.toggleClass(this.container, 'collapsed');\n if (Dom.hasClass(this.container, 'collapsed')) {\n this.collapseGroups();\n }\n else {\n this.expandGroups();\n }\n }\n }\n onGroupTitleClick(evt) {\n const group = evt.target.closest(`.${this.prefixClassName(ClassNames.group)}`);\n if (group) {\n this.toggleGroup(Dom.attr(group, 'data-name') || '');\n }\n const allCollapsed = Object.keys(this.groups).every((name) => {\n const group = this.getGroup(name);\n const groupElem = this.groups[name];\n return ((group && group.collapsable === false) ||\n Dom.hasClass(groupElem, 'collapsed'));\n });\n Dom.toggleClass(this.container, 'collapsed', allCollapsed);\n }\n getModel(groupName) {\n const graph = this.getGraph(groupName);\n return graph ? graph.model : null;\n }\n getGraph(groupName) {\n return this.graphs[groupName || Private.defaultGroupName];\n }\n getGroup(groupName) {\n const groups = this.options.groups;\n if (groupName != null && groups && groups.length) {\n return groups.find((group) => group.name === groupName);\n }\n return null;\n }\n getGroupByNode(node) {\n const groups = this.options.groups;\n if (groups) {\n return groups.find((group) => {\n const model = this.getModel(group.name);\n if (model) {\n return model.has(node.id);\n }\n return false;\n });\n }\n return null;\n }\n clearGroups() {\n Object.keys(this.graphs).forEach((groupName) => {\n const graph = this.graphs[groupName];\n graph.dispose();\n });\n Object.keys(this.groups).forEach((groupName) => {\n const elem = this.groups[groupName];\n Dom.remove(elem);\n });\n this.graphs = {};\n this.groups = {};\n }\n onRemove() {\n this.clearGroups();\n this.dnd.remove();\n this.stopListening();\n this.undelegateDocumentEvents();\n }\n dispose() {\n this.remove();\n CssLoader.clean(this.name);\n }\n}\n__decorate([\n View.dispose()\n], Stencil.prototype, \"dispose\", null);\n(function (Stencil) {\n Stencil.defaultOptions = Object.assign({ stencilGraphWidth: 200, stencilGraphHeight: 800, title: 'Stencil', collapsable: false, placeholder: 'Search', notFoundText: 'No matches found', layout(model, group) {\n const options = {\n columnWidth: this.options.stencilGraphWidth / 2 - 10,\n columns: 2,\n rowHeight: 80,\n resizeToFit: false,\n dx: 10,\n dy: 10,\n };\n grid(model, Object.assign(Object.assign(Object.assign({}, options), this.options.layoutOptions), (group ? group.layoutOptions : {})));\n } }, Dnd.defaults);\n})(Stencil || (Stencil = {}));\nvar ClassNames;\n(function (ClassNames) {\n ClassNames.base = 'widget-stencil';\n ClassNames.title = `${ClassNames.base}-title`;\n ClassNames.search = `${ClassNames.base}-search`;\n ClassNames.searchText = `${ClassNames.search}-text`;\n ClassNames.content = `${ClassNames.base}-content`;\n ClassNames.group = `${ClassNames.base}-group`;\n ClassNames.groupTitle = `${ClassNames.group}-title`;\n ClassNames.groupContent = `${ClassNames.group}-content`;\n})(ClassNames || (ClassNames = {}));\nvar Private;\n(function (Private) {\n Private.defaultGroupName = '__default__';\n})(Private || (Private = {}));\n//# sourceMappingURL=index.js.map","// 画布初始化配置\r\nexport const InitGraphInfo = {\r\n autoResize: false,\r\n magnetThreshold: 3,//鼠标移动多少次后才触发连线,或者设置为 'onleave' 时表示鼠标移出元素时才触发连线,默认为 0\r\n panning: {//画布是否可以拖拽平移\r\n enabled: true,\r\n modifiers: 'alt',\r\n }, // 普通画布(未开启 scroller 模式)通过开启 panning 选项来支持拖拽平移。\r\n mousewheel: { // 鼠标滚轮缩放\r\n enabled: true,\r\n // 是否为全局事件,设置为 true 时滚轮事件绑定在 document 上,否则绑定在画布容器上。默认为 false。\r\n global: true,\r\n modifiers: ['ctrl']\r\n },\r\n grid: {\r\n size: 10, // 网格大小 10px\r\n visible: true, // 绘制网格,默认绘制 dot 类型网格\r\n args: {\r\n color: '#a0a0a0', // 网格线/点颜色\r\n thickness: 1, // 网格线宽度/网格点大小\r\n }\r\n },\r\n highlighting: {\r\n // 连线过程中,节点可以被链接时被使用\r\n // nodeAvailable: {},\r\n // 拖动节点进行嵌入操作过程中,节点可以被嵌入时被使用\r\n embedding: {\r\n name: 'stroke',\r\n args: {\r\n attrs: {\r\n fill: '#fff',\r\n stroke: '#47C769',\r\n },\r\n },\r\n },\r\n // 连线过程中,链接桩可以被链接时被使用\r\n magnetAvailable: { // 高亮\r\n name: 'stroke',\r\n args: {\r\n attrs: {\r\n fill: '#fff',\r\n stroke: '#47C769',\r\n },\r\n },\r\n },\r\n // 连线过程中,自动吸附到链接桩时被使用\r\n magnetAdsorbed: {\r\n name: 'stroke',\r\n args: {\r\n attrs: {\r\n fill: 'red',\r\n stroke: 'bluesky',\r\n },\r\n },\r\n },\r\n },\r\n}\r\nexport const GraphSizeOptions = [\r\n {\r\n value: '1920*1080',\r\n label: '1920*1080'\r\n },\r\n {\r\n value: '1060*520',\r\n label: '1060*520'\r\n },\r\n {\r\n value: '1440*900',\r\n label: '1440*900'\r\n },\r\n {\r\n value: '1366*768',\r\n label: '1366*768'\r\n },\r\n {\r\n value: '999',\r\n label: '自定义'\r\n }\r\n]\r\nexport const GraphGridTypes = [\r\n {\r\n value: 'dot',\r\n label: 'dot'\r\n },\r\n {\r\n value: 'fixedDot',\r\n label: 'fixedDot'\r\n },\r\n {\r\n value: 'mesh',\r\n label: 'mesh'\r\n },\r\n {\r\n value: 'doubleMesh',\r\n label: 'doubleMesh'\r\n }\r\n]\r\nexport const InitConnecting = {\r\n router: {\r\n name: 'orth',\r\n args: {\r\n padding: 1\r\n }\r\n },\r\n connector: {\r\n name: 'jumpover',\r\n args: {\r\n type: 'arc',\r\n radius: 1,\r\n size: 0\r\n }\r\n },\r\n anchor: 'center',\r\n connectionPoint: 'anchor',\r\n snap: true\r\n}\r\nexport const GraphBgImageRepeatOptions = [\r\n {\r\n value: 'no-repeat',\r\n label: 'no repeat'\r\n },\r\n {\r\n value: 'repeat',\r\n label: 'repeat'\r\n },\r\n {\r\n value: 'repeat-x',\r\n label: 'repeat x'\r\n },\r\n {\r\n value: 'repeat-y',\r\n label: 'repeat y'\r\n },\r\n {\r\n value: 'round',\r\n label: 'round'\r\n },\r\n {\r\n value: 'space',\r\n label: 'space'\r\n },\r\n {\r\n value: 'flipX',\r\n label: 'flip x'\r\n },\r\n {\r\n value: 'flipY',\r\n label: 'flip y'\r\n },\r\n {\r\n value: 'flipXY',\r\n label: 'flip xy'\r\n },\r\n {\r\n value: 'watermark',\r\n label: 'watermark'\r\n }\r\n]\r\n\r\nexport const GraphBgImagePositionOptions = [\r\n {\r\n value: 'center',\r\n label: 'center'\r\n },\r\n {\r\n value: 'left',\r\n label: 'left'\r\n },\r\n {\r\n value: 'right',\r\n label: 'right'\r\n },\r\n {\r\n value: 'top',\r\n label: 'top'\r\n },\r\n {\r\n value: 'bottom',\r\n label: 'bottom'\r\n }\r\n]\r\n\r\nexport const GraphBgImageSizeOptions = [\r\n {\r\n value: 'auto auto',\r\n label: 'auto auto'\r\n },\r\n {\r\n value: 'cover',\r\n label: 'cover'\r\n },\r\n {\r\n value: 'contain',\r\n label: 'contain'\r\n },\r\n {\r\n value: '100% 100%',\r\n label: '100% 100%'\r\n }\r\n]","// 节点初始化配置\r\nexport const FontFamilyOptions = [\r\n {\r\n value: '微软雅黑',\r\n label: '微软雅黑'\r\n },\r\n {\r\n value: '宋体',\r\n label: '宋体'\r\n },\r\n {\r\n value: '新宋体',\r\n label: '新宋体'\r\n },\r\n {\r\n value: '隶书',\r\n label: '隶书'\r\n },\r\n {\r\n value: '幼圆',\r\n label: '幼圆'\r\n },\r\n {\r\n value: '黑体',\r\n label: '黑体'\r\n },\r\n {\r\n value: '仿宋',\r\n label: '仿宋'\r\n },\r\n {\r\n value: '楷体',\r\n label: '楷体'\r\n },\r\n {\r\n value: 'Helvetica',\r\n label: 'Helvetica'\r\n },\r\n {\r\n value: 'Verdana',\r\n label: 'Verdana'\r\n },\r\n {\r\n value: 'Times New Roman',\r\n label: 'Times New Roman'\r\n },\r\n {\r\n value: 'Garamond',\r\n label: 'Garamond'\r\n },\r\n {\r\n value: 'Comic Sans MS',\r\n label: 'Comic Sans MS'\r\n },\r\n {\r\n value: 'Courier New',\r\n label: 'Courier New'\r\n },\r\n {\r\n value: 'Georgia',\r\n label: 'Georgia'\r\n },\r\n {\r\n value: 'Lucida Console',\r\n label: 'Lucida Console'\r\n },\r\n {\r\n value: 'Tahoma',\r\n label: 'Tahoma'\r\n }\r\n]\r\n","//快捷键\r\nexport const SetKeyBoard = (graph) => {\r\n //复制\r\n graph.bindKey('ctrl+c', () => {\r\n const cells = graph.getSelectedCells()\r\n if (cells.length) {\r\n graph.copy(cells)\r\n }\r\n return false\r\n })\r\n //剪切\r\n graph.bindKey('ctrl+x', () => {\r\n const cells = graph.getSelectedCells()\r\n if (cells.length) {\r\n graph.cut(cells)\r\n }\r\n return false\r\n })\r\n //删除\r\n graph.bindKey(['ctrl+d', 'delete'], () => {\r\n const cells = graph.getSelectedCells()\r\n if (cells.length) {\r\n graph.removeCells(cells)\r\n }\r\n return false\r\n })\r\n //粘贴\r\n graph.bindKey('ctrl+v', () => {\r\n if (!graph.isClipboardEmpty()) {\r\n const cells = graph.paste({ offset: { dx: 0, dy: 30 } })\r\n // graph.cleanSelection()\r\n graph.resetSelection(cells)\r\n }\r\n return false\r\n })\r\n //撤销\r\n graph.bindKey('ctrl+z', () => {\r\n graph.undo()\r\n return false\r\n })\r\n //重做\r\n graph.bindKey('ctrl+y', () => {\r\n graph.redo()\r\n return false\r\n })\r\n //上移\r\n graph.bindKey('ctrl+up', () => {\r\n graph.startBatch('rename')\r\n let cells = graph.getSelectedCells()\r\n if (cells.length > 0) {\r\n for (let i = 0; i < cells.length; i++) {\r\n let position = cells[i].position()\r\n if (i == cells.length - 1) cells[i].position(position.x, position.y - 1)\r\n else cells[i].position(position.x, position.y - 1)\r\n }\r\n }\r\n graph.stopBatch('rename')\r\n return false\r\n })\r\n //下移\r\n graph.bindKey('ctrl+down', () => {\r\n let cells = graph.getSelectedCells()\r\n if (cells.length > 0) {\r\n cells.forEach((cell) => {\r\n let position = cell.position()\r\n cell.position(position.x, position.y + 1)\r\n })\r\n }\r\n return false\r\n })\r\n //左移\r\n graph.bindKey('ctrl+left', () => {\r\n let cells = graph.getSelectedCells()\r\n if (cells.length > 0) {\r\n cells.forEach((cell) => {\r\n let position = cell.position()\r\n cell.position(position.x - 1, position.y)\r\n })\r\n }\r\n return false\r\n })\r\n //右移\r\n graph.bindKey('ctrl+right', () => {\r\n let cells = graph.getSelectedCells()\r\n if (cells.length > 0) {\r\n cells.forEach((cell) => {\r\n let position = cell.position()\r\n cell.position(position.x + 1, position.y)\r\n })\r\n }\r\n return false\r\n })\r\n graph.bindKey('ctrl+shift+up', () => {\r\n graph.startBatch('rename')\r\n\r\n let cells = graph.getSelectedCells()\r\n if (cells.length > 0) {\r\n for (let i = 0; i < cells.length; i++) {\r\n let position = cells[i].position()\r\n cells[i].position(position.x, position.y - 10)\r\n }\r\n }\r\n\r\n graph.stopBatch('rename')\r\n\r\n return false\r\n })\r\n graph.bindKey('ctrl+shift+down', () => {\r\n let cells = graph.getSelectedCells()\r\n if (cells.length > 0) {\r\n cells.forEach((cell) => {\r\n let position = cell.position()\r\n cell.position(position.x, position.y + 10)\r\n })\r\n }\r\n return false\r\n })\r\n graph.bindKey('ctrl+shift+left', () => {\r\n let cells = graph.getSelectedCells()\r\n if (cells.length > 0) {\r\n cells.forEach((cell) => {\r\n let position = cell.position()\r\n cell.position(position.x - 10, position.y)\r\n })\r\n }\r\n return false\r\n })\r\n graph.bindKey('ctrl+shift+right', () => {\r\n let cells = graph.getSelectedCells()\r\n if (cells.length > 0) {\r\n cells.forEach((cell) => {\r\n let position = cell.position()\r\n cell.position(position.x + 10, position.y)\r\n })\r\n }\r\n return false\r\n })\r\n}","export const EdgeMarkerOptions = [\r\n {\r\n value: '',\r\n label: '无'\r\n },\r\n {\r\n value: 'block',\r\n label: '实心箭头'\r\n },\r\n {\r\n value: 'classic',\r\n label: '经典箭头'\r\n },\r\n {\r\n value: 'diamond',\r\n label: '菱形箭头'\r\n },\r\n {\r\n value: 'cross',\r\n label: '交叉箭头'\r\n },\r\n {\r\n value: 'circle',\r\n label: '圆形箭头'\r\n },\r\n {\r\n value: 'ellipse',\r\n label: '椭圆箭头'\r\n }\r\n]\r\nexport const EdgeConnectorOptions = [\r\n {\r\n value: 'normal',\r\n label: '简单连接器'\r\n },\r\n {\r\n value: 'jumpover',\r\n label: '跳线连接器'\r\n },\r\n {\r\n value: 'rounded',\r\n label: '圆角连接器'\r\n }\r\n]","// 组件初始化配置\r\nexport const InitStencilInfo = {\r\n title: '元件库',\r\n // search: true,\r\n // placeholder: '搜索',\r\n // notFoundText: '无匹配元件',\r\n collapsable: true,\r\n stencilGraphWidth: 200,\r\n stencilGraphHeight: 0,\r\n}\r\n//连接桩\r\nexport const InitPortsInfo = {\r\n groups: {\r\n top: {\r\n position: 'top',\r\n attrs: {\r\n circle: {\r\n r: 4,\r\n magnet: true,\r\n stroke: '#5F95FF',\r\n strokeWidth: 1,\r\n fill: '#fff',\r\n style: {\r\n visibility: 'hidden'\r\n }\r\n }\r\n }\r\n },\r\n right: {\r\n position: 'right',\r\n attrs: {\r\n circle: {\r\n r: 4,\r\n magnet: true,\r\n stroke: '#5F95FF',\r\n strokeWidth: 1,\r\n fill: '#fff',\r\n style: {\r\n visibility: 'hidden'\r\n }\r\n }\r\n }\r\n },\r\n bottom: {\r\n position: 'bottom',\r\n attrs: {\r\n circle: {\r\n r: 4,\r\n magnet: true,\r\n stroke: '#5F95FF',\r\n strokeWidth: 1,\r\n fill: '#fff',\r\n style: {\r\n visibility: 'hidden'\r\n }\r\n }\r\n }\r\n },\r\n left: {\r\n position: 'left',\r\n attrs: {\r\n circle: {\r\n r: 4,\r\n magnet: true,\r\n stroke: '#5F95FF',\r\n strokeWidth: 1,\r\n fill: '#fff',\r\n style: {\r\n visibility: 'hidden'\r\n }\r\n }\r\n }\r\n }\r\n },\r\n items: [\r\n {\r\n group: 'top'\r\n },\r\n {\r\n group: 'right'\r\n },\r\n {\r\n group: 'bottom'\r\n },\r\n {\r\n group: 'left'\r\n }\r\n ]\r\n}\r\n\r\n","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 确认\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import script from \"./actionRuleDialog.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./actionRuleDialog.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 添加规则\r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 确认\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import script from \"./actionDialog.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./actionDialog.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./actionDialog.vue?vue&type=style&index=0&id=3d4b8685&lang=scss&scoped=true\"\n\nimport exportComponent from \"E:\\\\LC.ENERGY\\\\LC.ENERGY\\\\LC.ENERGY.UI\\\\lc.energy.ui\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3d4b8685\"]])\n\nexport default __exports__","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n =\" prop=\"minValue\">\r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 确认\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import script from \"./responseRuleDialog.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./responseRuleDialog.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n \r\n \r\n 添加规则\r\n \r\n \r\n \r\n \r\n \r\n \r\n =\" />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 确认\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import script from \"./responseDialog.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./responseDialog.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./responseDialog.vue?vue&type=style&index=0&id=7a87e17a&lang=scss&scoped=true\"\n\nimport exportComponent from \"E:\\\\LC.ENERGY\\\\LC.ENERGY\\\\LC.ENERGY.UI\\\\lc.energy.ui\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7a87e17a\"]])\n\nexport default __exports__","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 确认\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import script from \"./bindDialog.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./bindDialog.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import script from \"./bgImageDialog.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./bgImageDialog.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./bgImageDialog.vue?vue&type=style&index=0&id=dfa93a36&lang=scss&scoped=true\"\n\nimport exportComponent from \"E:\\\\LC.ENERGY\\\\LC.ENERGY\\\\LC.ENERGY.UI\\\\lc.energy.ui\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-dfa93a36\"]])\n\nexport default __exports__","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n =\" prop=\"minValue\">\r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 确认\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import script from \"./changeColorRuleDialog.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./changeColorRuleDialog.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n \r\n \r\n 添加规则\r\n \r\n \r\n \r\n \r\n \r\n \r\n =\" />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 确认\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import script from \"./changeColorDialog.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./changeColorDialog.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./changeColorDialog.vue?vue&type=style&index=0&id=88b34016&lang=scss&scoped=true\"\n\nimport exportComponent from \"E:\\\\LC.ENERGY\\\\LC.ENERGY\\\\LC.ENERGY.UI\\\\lc.energy.ui\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-88b34016\"]])\n\nexport default __exports__","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 确认\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import script from \"./changeWHRuleDialog.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./changeWHRuleDialog.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n \r\n \r\n 添加规则\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 确认\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import script from \"./changeWHDialog.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./changeWHDialog.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./changeWHDialog.vue?vue&type=style&index=0&id=62c82fd3&lang=scss&scoped=true\"\n\nimport exportComponent from \"E:\\\\LC.ENERGY\\\\LC.ENERGY\\\\LC.ENERGY.UI\\\\lc.energy.ui\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-62c82fd3\"]])\n\nexport default __exports__","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n =\" prop=\"minValue\">\r\n \r\n \r\n \r\n \r\n 当前值以###代替\r\n \r\n \r\n \r\n \r\n 取消\r\n 确认\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import script from \"./tipRuleDialog.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./tipRuleDialog.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n \r\n \r\n 添加规则\r\n \r\n \r\n \r\n \r\n \r\n \r\n =\" />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 确认\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import script from \"./tipDialog.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./tipDialog.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./tipDialog.vue?vue&type=style&index=0&id=169b56c7&lang=scss&scoped=true\"\n\nimport exportComponent from \"E:\\\\LC.ENERGY\\\\LC.ENERGY\\\\LC.ENERGY.UI\\\\lc.energy.ui\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-169b56c7\"]])\n\nexport default __exports__","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n =\" prop=\"minValue\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 确认\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import script from \"./graphDialogRuleDialog.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./graphDialogRuleDialog.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n \r\n \r\n 窗体信息\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 添加规则\r\n \r\n \r\n \r\n \r\n \r\n =\" />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 确认\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import script from \"./graphDialog.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./graphDialog.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./graphDialog.vue?vue&type=style&index=0&id=5c144693&lang=scss&scoped=true\"\n\nimport exportComponent from \"E:\\\\LC.ENERGY\\\\LC.ENERGY\\\\LC.ENERGY.UI\\\\lc.energy.ui\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5c144693\"]])\n\nexport default __exports__","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 确认\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import script from \"./deviceListDialog.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./deviceListDialog.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","\r\n \r\n \r\n 组态管理/组态设计\r\n {{ scenceName }}\r\n \r\n 左侧\r\n 居中\r\n 右侧\r\n \r\n 顶部\r\n 中部\r\n 底部\r\n \r\n {{\r\n showCode ? '设计' : '源码'\r\n }}\r\n 保存\r\n 预览\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 画布:\r\n \r\n \r\n 内容:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 画布设置\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 宽度:\r\n \r\n \r\n \r\n \r\n 高度:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 背景色:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 本地图片\r\n \r\n \r\n \r\n 系统图片\r\n \r\n \r\n \r\n 位置:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 大小:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 重复:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 透明:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 颜色:\r\n \r\n \r\n \r\n \r\n \r\n 类型:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 大小:\r\n \r\n \r\n \r\n \r\n \r\n 粗细:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 节点设置\r\n \r\n \r\n \r\n \r\n \r\n \r\n W:H:\r\n \r\n \r\n X:Y:\r\n \r\n \r\n A:\r\n \r\n \r\n \r\n \r\n 背景色:\r\n \r\n 边框色:\r\n \r\n \r\n \r\n 边宽:\r\n \r\n \r\n \r\n \r\n \r\n 层级:\r\n \r\n \r\n \r\n \r\n \r\n 字体:\r\n \r\n \r\n \r\n {{\r\n item.label\r\n }}\r\n \r\n \r\n \r\n \r\n \r\n 字号:\r\n \r\n \r\n \r\n \r\n \r\n 样式:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 字色:\r\n \r\n \r\n \r\n \r\n \r\n 水平:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 垂直:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 连线设置\r\n \r\n \r\n \r\n \r\n \r\n \r\n 开始箭头:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 结束箭头:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 虚线间隔:\r\n \r\n \r\n \r\n \r\n \r\n 显示层级:\r\n \r\n \r\n \r\n \r\n \r\n 线段粗细:\r\n \r\n \r\n \r\n \r\n \r\n 填充颜色:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 跳线类型:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 跳线大小:\r\n \r\n \r\n \r\n \r\n \r\n 倒角半径:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 设置\r\n \r\n \r\n \r\n 取消\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import script from \"./index.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"@/styles/elementReset.scss?vue&type=style&index=0&id=00eae6c8&lang=scss&scoped=true\"\nimport \"./assets/index.scss?vue&type=style&index=1&id=00eae6c8&lang=scss&scoped=true\"\n\nimport exportComponent from \"E:\\\\LC.ENERGY\\\\LC.ENERGY\\\\LC.ENERGY.UI\\\\lc.energy.ui\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-00eae6c8\"]])\n\nexport default __exports__","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./responseDialog.vue?vue&type=style&index=0&id=7a87e17a&lang=scss&scoped=true\"","import $http from '@/utitls/request'\r\n\r\n/**\r\n * 获取点位类型枚举\r\n */\r\nexport const GetNodeTypes = () => {\r\n return $http.get('/api/EnumInfo/GetNodeTypes')\r\n}\r\n/**\r\n * 获取动效规则类型枚举\r\n */\r\nexport const GetResponseRuleTypes = (data) => {\r\n return $http.get('/api/EnumInfo/GetResponseRuleTypes', { params: data })\r\n}\r\n/**\r\n * 获取场景类型枚举\r\n */\r\nexport const GetSceneTypes = () => {\r\n return $http.get('/api/EnumInfo/GetSceneTypes')\r\n}\r\n/**\r\n * 获取场景用途枚举\r\n */\r\nexport const GetSceneUses = () => {\r\n return $http.get('/api/EnumInfo/GetSceneUses')\r\n}","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n$({ global: true }, { Reflect: {} });\n\n// Reflect[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-reflect-@@tostringtag\nsetToStringTag(global.Reflect, 'Reflect', true);\n"],"sourceRoot":""}