{"version":3,"file":"g3.js","sources":["../../src/graph/CONSTANT.js","../../src/utils/select.js","../../src/graph/render.js","../../src/utils/toArray.js","../../src/utils/getStrLen.js","../../src/utils/attr.js","../../src/graph/node/attributes.js","../../src/graph/node/nudge.js","../../src/graph/node/getConnectedLinks.js","../../src/graph/node/remove.js","../../src/graph/node/index.js","../../src/graph/link/hasST.js","../../src/utils/getOffsetCoordinate.js","../../src/graph/link/display.js","../../src/graph/link/attributes.js","../../src/graph/link/remove.js","../../src/graph/link/getHomoLinks.js","../../src/graph/link/index.js","../../src/graph/draw/drawCanvasNode_.js","../../src/graph/data.js","../../src/utils/getIds.js","../../src/utils/filterBy.js","../../src/graph/Selection/attr.js","../../src/graph/Selection/data.js","../../src/graph/Selection/index.js","../../src/graph/getNodes.js","../../src/graph/getLinks.js","../../src/graph/init/appendPreDefs.js","../../src/graph/init/appendPreElement.js","../../src/graph/init/zoom.js","../../src/graph/init/brush.js","../../src/graph/init/dragNodes.js","../../src/graph/init/init.js","../../src/utils/getAbsUrl.js","../../src/graph/draw/drawNodesSvg.js","../../src/utils/unique.js","../../src/graph/draw/drawLinksSvg.js","../../src/graph/draw/drawArrow.js","../../src/graph/draw/drawCanvasLink.js","../../src/graph/draw/findPoint.js","../../src/graph/draw/convertCor.js","../../src/graph/draw/findLink.js","../../src/graph/draw/drawCache.js","../../src/graph/draw/redrawCanvasNode.js","../../src/graph/draw/drawCanvas.js","../../src/graph/draw/index.js","../../src/graph/zoomed.js","../../src/graph/transform.js","../../src/graph/keyboard.js","../../src/graph/draged.js","../../src/utils/assign.js","../../src/graph/config.js","../../src/graph/draw/updateDOM.js","../../src/graph/index.js","../../src/utils/filterById.js","../../src/utils/parseHTML.js","../../src/utils/deriveDirection.js","../../src/utils/safeExecute.js","../../src/utils/index.js"],"sourcesContent":["const DIRECTION = {\n NONE: 0,\n S2D: 1,\n D2S: 2,\n DOUBLE: 3\n};\nconst COLOR = '#00a';\n\nconst FONT = {\n \"fa-500px\": \"f26e\",\n \"fa-adjust\": \"f042\",\n \"fa-adn\": \"f170\",\n \"fa-align-center\": \"f037\",\n \"fa-align-justify\": \"f039\",\n \"fa-align-left\": \"f036\",\n \"fa-align-right\": \"f038\",\n \"fa-amazon\": \"f270\",\n \"fa-ambulance\": \"f0f9\",\n \"fa-anchor\": \"f13d\",\n \"fa-android\": \"f17b\",\n \"fa-angellist\": \"f209\",\n \"fa-angle-double-down\": \"f103\",\n \"fa-angle-double-left\": \"f100\",\n \"fa-angle-double-right\": \"f101\",\n \"fa-angle-double-up\": \"f102\",\n \"fa-angle-down\": \"f107\",\n \"fa-angle-left\": \"f104\",\n \"fa-angle-right\": \"f105\",\n \"fa-angle-up\": \"f106\",\n \"fa-apple\": \"f179\",\n \"fa-archive\": \"f187\",\n \"fa-area-chart\": \"f1fe\",\n \"fa-arrow-circle-down\": \"f0ab\",\n \"fa-arrow-circle-left\": \"f0a8\",\n \"fa-arrow-circle-o-down\": \"f01a\",\n \"fa-arrow-circle-o-left\": \"f190\",\n \"fa-arrow-circle-o-right\": \"f18e\",\n \"fa-arrow-circle-o-up\": \"f01b\",\n \"fa-arrow-circle-right\": \"f0a9\",\n \"fa-arrow-circle-up\": \"f0aa\",\n \"fa-arrow-down\": \"f063\",\n \"fa-arrow-left\": \"f060\",\n \"fa-arrow-right\": \"f061\",\n \"fa-arrow-up\": \"f062\",\n \"fa-arrows\": \"f047\",\n \"fa-arrows-alt\": \"f0b2\",\n \"fa-arrows-h\": \"f07e\",\n \"fa-arrows-v\": \"f07d\",\n \"fa-asterisk\": \"f069\",\n \"fa-at\": \"f1fa\",\n \"fa-backward\": \"f04a\",\n \"fa-balance-scale\": \"f24e\",\n \"fa-ban\": \"f05e\",\n \"fa-bar-chart\": \"f080\",\n \"fa-barcode\": \"f02a\",\n \"fa-bars\": \"f0c9\",\n \"fa-battery-empty\": \"f244\",\n \"fa-battery-full\": \"f240\",\n \"fa-battery-half\": \"f242\",\n \"fa-battery-quarter\": \"f243\",\n \"fa-battery-three-quarters\": \"f241\",\n \"fa-bed\": \"f236\",\n \"fa-beer\": \"f0fc\",\n \"fa-behance\": \"f1b4\",\n \"fa-behance-square\": \"f1b5\",\n \"fa-bell\": \"f0f3\",\n \"fa-bell-o\": \"f0a2\",\n \"fa-bell-slash\": \"f1f6\",\n \"fa-bell-slash-o\": \"f1f7\",\n \"fa-bicycle\": \"f206\",\n \"fa-binoculars\": \"f1e5\",\n \"fa-birthday-cake\": \"f1fd\",\n \"fa-bitbucket\": \"f171\",\n \"fa-bitbucket-square\": \"f172\",\n \"fa-black-tie\": \"f27e\",\n \"fa-bold\": \"f032\",\n \"fa-bolt\": \"f0e7\",\n \"fa-bomb\": \"f1e2\",\n \"fa-book\": \"f02d\",\n \"fa-bookmark\": \"f02e\",\n \"fa-bookmark-o\": \"f097\",\n \"fa-briefcase\": \"f0b1\",\n \"fa-btc\": \"f15a\",\n \"fa-bug\": \"f188\",\n \"fa-building\": \"f1ad\",\n \"fa-building-o\": \"f0f7\",\n \"fa-bullhorn\": \"f0a1\",\n \"fa-bullseye\": \"f140\",\n \"fa-bus\": \"f207\",\n \"fa-buysellads\": \"f20d\",\n \"fa-calculator\": \"f1ec\",\n \"fa-calendar\": \"f073\",\n \"fa-calendar-check-o\": \"f274\",\n \"fa-calendar-minus-o\": \"f272\",\n \"fa-calendar-o\": \"f133\",\n \"fa-calendar-plus-o\": \"f271\",\n \"fa-calendar-times-o\": \"f273\",\n \"fa-camera\": \"f030\",\n \"fa-camera-retro\": \"f083\",\n \"fa-car\": \"f1b9\",\n \"fa-caret-down\": \"f0d7\",\n \"fa-caret-left\": \"f0d9\",\n \"fa-caret-right\": \"f0da\",\n \"fa-caret-square-o-down\": \"f150\",\n \"fa-caret-square-o-left\": \"f191\",\n \"fa-caret-square-o-right\": \"f152\",\n \"fa-caret-square-o-up\": \"f151\",\n \"fa-caret-up\": \"f0d8\",\n \"fa-cart-arrow-down\": \"f218\",\n \"fa-cart-plus\": \"f217\",\n \"fa-cc\": \"f20a\",\n \"fa-cc-amex\": \"f1f3\",\n \"fa-cc-diners-club\": \"f24c\",\n \"fa-cc-discover\": \"f1f2\",\n \"fa-cc-jcb\": \"f24b\",\n \"fa-cc-mastercard\": \"f1f1\",\n \"fa-cc-paypal\": \"f1f4\",\n \"fa-cc-stripe\": \"f1f5\",\n \"fa-cc-visa\": \"f1f0\",\n \"fa-certificate\": \"f0a3\",\n \"fa-chain-broken\": \"f127\",\n \"fa-check\": \"f00c\",\n \"fa-check-circle\": \"f058\",\n \"fa-check-circle-o\": \"f05d\",\n \"fa-check-square\": \"f14a\",\n \"fa-check-square-o\": \"f046\",\n \"fa-chevron-circle-down\": \"f13a\",\n \"fa-chevron-circle-left\": \"f137\",\n \"fa-chevron-circle-right\": \"f138\",\n \"fa-chevron-circle-up\": \"f139\",\n \"fa-chevron-down\": \"f078\",\n \"fa-chevron-left\": \"f053\",\n \"fa-chevron-right\": \"f054\",\n \"fa-chevron-up\": \"f077\",\n \"fa-child\": \"f1ae\",\n \"fa-chrome\": \"f268\",\n \"fa-circle\": \"f111\",\n \"fa-circle-o\": \"f10c\",\n \"fa-circle-o-notch\": \"f1ce\",\n \"fa-circle-thin\": \"f1db\",\n \"fa-clipboard\": \"f0ea\",\n \"fa-clock-o\": \"f017\",\n \"fa-clone\": \"f24d\",\n \"fa-cloud\": \"f0c2\",\n \"fa-cloud-download\": \"f0ed\",\n \"fa-cloud-upload\": \"f0ee\",\n \"fa-code\": \"f121\",\n \"fa-code-fork\": \"f126\",\n \"fa-codepen\": \"f1cb\",\n \"fa-coffee\": \"f0f4\",\n \"fa-cog\": \"f013\",\n \"fa-cogs\": \"f085\",\n \"fa-columns\": \"f0db\",\n \"fa-comment\": \"f075\",\n \"fa-comment-o\": \"f0e5\",\n \"fa-commenting\": \"f27a\",\n \"fa-commenting-o\": \"f27b\",\n \"fa-comments\": \"f086\",\n \"fa-comments-o\": \"f0e6\",\n \"fa-compass\": \"f14e\",\n \"fa-compress\": \"f066\",\n \"fa-connectdevelop\": \"f20e\",\n \"fa-contao\": \"f26d\",\n \"fa-copyright\": \"f1f9\",\n \"fa-creative-commons\": \"f25e\",\n \"fa-credit-card\": \"f09d\",\n \"fa-crop\": \"f125\",\n \"fa-crosshairs\": \"f05b\",\n \"fa-css3\": \"f13c\",\n \"fa-cube\": \"f1b2\",\n \"fa-cubes\": \"f1b3\",\n \"fa-cutlery\": \"f0f5\",\n \"fa-dashcube\": \"f210\",\n \"fa-database\": \"f1c0\",\n \"fa-delicious\": \"f1a5\",\n \"fa-desktop\": \"f108\",\n \"fa-deviantart\": \"f1bd\",\n \"fa-diamond\": \"f219\",\n \"fa-digg\": \"f1a6\",\n \"fa-dot-circle-o\": \"f192\",\n \"fa-download\": \"f019\",\n \"fa-dribbble\": \"f17d\",\n \"fa-dropbox\": \"f16b\",\n \"fa-drupal\": \"f1a9\",\n \"fa-eject\": \"f052\",\n \"fa-ellipsis-h\": \"f141\",\n \"fa-ellipsis-v\": \"f142\",\n \"fa-empire\": \"f1d1\",\n \"fa-envelope\": \"f0e0\",\n \"fa-envelope-o\": \"f003\",\n \"fa-envelope-square\": \"f199\",\n \"fa-eraser\": \"f12d\",\n \"fa-eur\": \"f153\",\n \"fa-exchange\": \"f0ec\",\n \"fa-exclamation\": \"f12a\",\n \"fa-exclamation-circle\": \"f06a\",\n \"fa-exclamation-triangle\": \"f071\",\n \"fa-expand\": \"f065\",\n \"fa-expeditedssl\": \"f23e\",\n \"fa-external-link\": \"f08e\",\n \"fa-external-link-square\": \"f14c\",\n \"fa-eye\": \"f06e\",\n \"fa-eye-slash\": \"f070\",\n \"fa-eyedropper\": \"f1fb\",\n \"fa-facebook\": \"f09a\",\n \"fa-facebook-official\": \"f230\",\n \"fa-facebook-square\": \"f082\",\n \"fa-fast-backward\": \"f049\",\n \"fa-fast-forward\": \"f050\",\n \"fa-fax\": \"f1ac\",\n \"fa-female\": \"f182\",\n \"fa-fighter-jet\": \"f0fb\",\n \"fa-file\": \"f15b\",\n \"fa-file-archive-o\": \"f1c6\",\n \"fa-file-audio-o\": \"f1c7\",\n \"fa-file-code-o\": \"f1c9\",\n \"fa-file-excel-o\": \"f1c3\",\n \"fa-file-image-o\": \"f1c5\",\n \"fa-file-o\": \"f016\",\n \"fa-file-pdf-o\": \"f1c1\",\n \"fa-file-powerpoint-o\": \"f1c4\",\n \"fa-file-text\": \"f15c\",\n \"fa-file-text-o\": \"f0f6\",\n \"fa-file-video-o\": \"f1c8\",\n \"fa-file-word-o\": \"f1c2\",\n \"fa-files-o\": \"f0c5\",\n \"fa-film\": \"f008\",\n \"fa-filter\": \"f0b0\",\n \"fa-fire\": \"f06d\",\n \"fa-fire-extinguisher\": \"f134\",\n \"fa-firefox\": \"f269\",\n \"fa-flag\": \"f024\",\n \"fa-flag-checkered\": \"f11e\",\n \"fa-flag-o\": \"f11d\",\n \"fa-flask\": \"f0c3\",\n \"fa-flickr\": \"f16e\",\n \"fa-floppy-o\": \"f0c7\",\n \"fa-folder\": \"f07b\",\n \"fa-folder-o\": \"f114\",\n \"fa-folder-open\": \"f07c\",\n \"fa-folder-open-o\": \"f115\",\n \"fa-font\": \"f031\",\n \"fa-fonticons\": \"f280\",\n \"fa-forumbee\": \"f211\",\n \"fa-forward\": \"f04e\",\n \"fa-foursquare\": \"f180\",\n \"fa-frown-o\": \"f119\",\n \"fa-futbol-o\": \"f1e3\",\n \"fa-gamepad\": \"f11b\",\n \"fa-gavel\": \"f0e3\",\n \"fa-gbp\": \"f154\",\n \"fa-genderless\": \"f22d\",\n \"fa-get-pocket\": \"f265\",\n \"fa-gg\": \"f260\",\n \"fa-gg-circle\": \"f261\",\n \"fa-gift\": \"f06b\",\n \"fa-git\": \"f1d3\",\n \"fa-git-square\": \"f1d2\",\n \"fa-github\": \"f09b\",\n \"fa-github-alt\": \"f113\",\n \"fa-github-square\": \"f092\",\n \"fa-glass\": \"f000\",\n \"fa-globe\": \"f0ac\",\n \"fa-google\": \"f1a0\",\n \"fa-google-plus\": \"f0d5\",\n \"fa-google-plus-square\": \"f0d4\",\n \"fa-google-wallet\": \"f1ee\",\n \"fa-graduation-cap\": \"f19d\",\n \"fa-gratipay\": \"f184\",\n \"fa-h-square\": \"f0fd\",\n \"fa-hacker-news\": \"f1d4\",\n \"fa-hand-lizard-o\": \"f258\",\n \"fa-hand-o-down\": \"f0a7\",\n \"fa-hand-o-left\": \"f0a5\",\n \"fa-hand-o-right\": \"f0a4\",\n \"fa-hand-o-up\": \"f0a6\",\n \"fa-hand-paper-o\": \"f256\",\n \"fa-hand-peace-o\": \"f25b\",\n \"fa-hand-pointer-o\": \"f25a\",\n \"fa-hand-rock-o\": \"f255\",\n \"fa-hand-scissors-o\": \"f257\",\n \"fa-hand-spock-o\": \"f259\",\n \"fa-hdd-o\": \"f0a0\",\n \"fa-header\": \"f1dc\",\n \"fa-headphones\": \"f025\",\n \"fa-heart\": \"f004\",\n \"fa-heart-o\": \"f08a\",\n \"fa-heartbeat\": \"f21e\",\n \"fa-history\": \"f1da\",\n \"fa-home\": \"f015\",\n \"fa-hospital-o\": \"f0f8\",\n \"fa-hourglass\": \"f254\",\n \"fa-hourglass-end\": \"f253\",\n \"fa-hourglass-half\": \"f252\",\n \"fa-hourglass-o\": \"f250\",\n \"fa-hourglass-start\": \"f251\",\n \"fa-houzz\": \"f27c\",\n \"fa-html5\": \"f13b\",\n \"fa-i-cursor\": \"f246\",\n \"fa-ils\": \"f20b\",\n \"fa-inbox\": \"f01c\",\n \"fa-indent\": \"f03c\",\n \"fa-industry\": \"f275\",\n \"fa-info\": \"f129\",\n \"fa-info-circle\": \"f05a\",\n \"fa-inr\": \"f156\",\n \"fa-instagram\": \"f16d\",\n \"fa-internet-explorer\": \"f26b\",\n \"fa-ioxhost\": \"f208\",\n \"fa-italic\": \"f033\",\n \"fa-joomla\": \"f1aa\",\n \"fa-jpy\": \"f157\",\n \"fa-jsfiddle\": \"f1cc\",\n \"fa-key\": \"f084\",\n \"fa-keyboard-o\": \"f11c\",\n \"fa-krw\": \"f159\",\n \"fa-language\": \"f1ab\",\n \"fa-laptop\": \"f109\",\n \"fa-lastfm\": \"f202\",\n \"fa-lastfm-square\": \"f203\",\n \"fa-leaf\": \"f06c\",\n \"fa-leanpub\": \"f212\",\n \"fa-lemon-o\": \"f094\",\n \"fa-level-down\": \"f149\",\n \"fa-level-up\": \"f148\",\n \"fa-life-ring\": \"f1cd\",\n \"fa-lightbulb-o\": \"f0eb\",\n \"fa-line-chart\": \"f201\",\n \"fa-link\": \"f0c1\",\n \"fa-linkedin\": \"f0e1\",\n \"fa-linkedin-square\": \"f08c\",\n \"fa-linux\": \"f17c\",\n \"fa-list\": \"f03a\",\n \"fa-list-alt\": \"f022\",\n \"fa-list-ol\": \"f0cb\",\n \"fa-list-ul\": \"f0ca\",\n \"fa-location-arrow\": \"f124\",\n \"fa-lock\": \"f023\",\n \"fa-long-arrow-down\": \"f175\",\n \"fa-long-arrow-left\": \"f177\",\n \"fa-long-arrow-right\": \"f178\",\n \"fa-long-arrow-up\": \"f176\",\n \"fa-magic\": \"f0d0\",\n \"fa-magnet\": \"f076\",\n \"fa-male\": \"f183\",\n \"fa-map\": \"f279\",\n \"fa-map-marker\": \"f041\",\n \"fa-map-o\": \"f278\",\n \"fa-map-pin\": \"f276\",\n \"fa-map-signs\": \"f277\",\n \"fa-mars\": \"f222\",\n \"fa-mars-double\": \"f227\",\n \"fa-mars-stroke\": \"f229\",\n \"fa-mars-stroke-h\": \"f22b\",\n \"fa-mars-stroke-v\": \"f22a\",\n \"fa-maxcdn\": \"f136\",\n \"fa-meanpath\": \"f20c\",\n \"fa-medium\": \"f23a\",\n \"fa-medkit\": \"f0fa\",\n \"fa-meh-o\": \"f11a\",\n \"fa-mercury\": \"f223\",\n \"fa-microphone\": \"f130\",\n \"fa-microphone-slash\": \"f131\",\n \"fa-minus\": \"f068\",\n \"fa-minus-circle\": \"f056\",\n \"fa-minus-square\": \"f146\",\n \"fa-minus-square-o\": \"f147\",\n \"fa-mobile\": \"f10b\",\n \"fa-money\": \"f0d6\",\n \"fa-moon-o\": \"f186\",\n \"fa-motorcycle\": \"f21c\",\n \"fa-mouse-pointer\": \"f245\",\n \"fa-music\": \"f001\",\n \"fa-neuter\": \"f22c\",\n \"fa-newspaper-o\": \"f1ea\",\n \"fa-object-group\": \"f247\",\n \"fa-object-ungroup\": \"f248\",\n \"fa-odnoklassniki\": \"f263\",\n \"fa-odnoklassniki-square\": \"f264\",\n \"fa-opencart\": \"f23d\",\n \"fa-openid\": \"f19b\",\n \"fa-opera\": \"f26a\",\n \"fa-optin-monster\": \"f23c\",\n \"fa-outdent\": \"f03b\",\n \"fa-pagelines\": \"f18c\",\n \"fa-paint-brush\": \"f1fc\",\n \"fa-paper-plane\": \"f1d8\",\n \"fa-paper-plane-o\": \"f1d9\",\n \"fa-paperclip\": \"f0c6\",\n \"fa-paragraph\": \"f1dd\",\n \"fa-pause\": \"f04c\",\n \"fa-paw\": \"f1b0\",\n \"fa-paypal\": \"f1ed\",\n \"fa-pencil\": \"f040\",\n \"fa-pencil-square\": \"f14b\",\n \"fa-pencil-square-o\": \"f044\",\n \"fa-phone\": \"f095\",\n \"fa-phone-square\": \"f098\",\n \"fa-picture-o\": \"f03e\",\n \"fa-pie-chart\": \"f200\",\n \"fa-pied-piper\": \"f1a7\",\n \"fa-pied-piper-alt\": \"f1a8\",\n \"fa-pinterest\": \"f0d2\",\n \"fa-pinterest-p\": \"f231\",\n \"fa-pinterest-square\": \"f0d3\",\n \"fa-plane\": \"f072\",\n \"fa-play\": \"f04b\",\n \"fa-play-circle\": \"f144\",\n \"fa-play-circle-o\": \"f01d\",\n \"fa-plug\": \"f1e6\",\n \"fa-plus\": \"f067\",\n \"fa-plus-circle\": \"f055\",\n \"fa-plus-square\": \"f0fe\",\n \"fa-plus-square-o\": \"f196\",\n \"fa-power-off\": \"f011\",\n \"fa-print\": \"f02f\",\n \"fa-puzzle-piece\": \"f12e\",\n \"fa-qq\": \"f1d6\",\n \"fa-qrcode\": \"f029\",\n \"fa-question\": \"f128\",\n \"fa-question-circle\": \"f059\",\n \"fa-quote-left\": \"f10d\",\n \"fa-quote-right\": \"f10e\",\n \"fa-random\": \"f074\",\n \"fa-rebel\": \"f1d0\",\n \"fa-recycle\": \"f1b8\",\n \"fa-reddit\": \"f1a1\",\n \"fa-reddit-square\": \"f1a2\",\n \"fa-refresh\": \"f021\",\n \"fa-registered\": \"f25d\",\n \"fa-renren\": \"f18b\",\n \"fa-repeat\": \"f01e\",\n \"fa-reply\": \"f112\",\n \"fa-reply-all\": \"f122\",\n \"fa-retweet\": \"f079\",\n \"fa-road\": \"f018\",\n \"fa-rocket\": \"f135\",\n \"fa-rss\": \"f09e\",\n \"fa-rss-square\": \"f143\",\n \"fa-rub\": \"f158\",\n \"fa-safari\": \"f267\",\n \"fa-scissors\": \"f0c4\",\n \"fa-search\": \"f002\",\n \"fa-search-minus\": \"f010\",\n \"fa-search-plus\": \"f00e\",\n \"fa-sellsy\": \"f213\",\n \"fa-server\": \"f233\",\n \"fa-share\": \"f064\",\n \"fa-share-alt\": \"f1e0\",\n \"fa-share-alt-square\": \"f1e1\",\n \"fa-share-square\": \"f14d\",\n \"fa-share-square-o\": \"f045\",\n \"fa-shield\": \"f132\",\n \"fa-ship\": \"f21a\",\n \"fa-shirtsinbulk\": \"f214\",\n \"fa-shopping-cart\": \"f07a\",\n \"fa-sign-in\": \"f090\",\n \"fa-sign-out\": \"f08b\",\n \"fa-signal\": \"f012\",\n \"fa-simplybuilt\": \"f215\",\n \"fa-sitemap\": \"f0e8\",\n \"fa-skyatlas\": \"f216\",\n \"fa-skype\": \"f17e\",\n \"fa-slack\": \"f198\",\n \"fa-sliders\": \"f1de\",\n \"fa-slideshare\": \"f1e7\",\n \"fa-smile-o\": \"f118\",\n \"fa-sort\": \"f0dc\",\n \"fa-sort-alpha-asc\": \"f15d\",\n \"fa-sort-alpha-desc\": \"f15e\",\n \"fa-sort-amount-asc\": \"f160\",\n \"fa-sort-amount-desc\": \"f161\",\n \"fa-sort-asc\": \"f0de\",\n \"fa-sort-desc\": \"f0dd\",\n \"fa-sort-numeric-asc\": \"f162\",\n \"fa-sort-numeric-desc\": \"f163\",\n \"fa-soundcloud\": \"f1be\",\n \"fa-space-shuttle\": \"f197\",\n \"fa-spinner\": \"f110\",\n \"fa-spoon\": \"f1b1\",\n \"fa-spotify\": \"f1bc\",\n \"fa-square\": \"f0c8\",\n \"fa-square-o\": \"f096\",\n \"fa-stack-exchange\": \"f18d\",\n \"fa-stack-overflow\": \"f16c\",\n \"fa-star\": \"f005\",\n \"fa-star-half\": \"f089\",\n \"fa-star-half-o\": \"f123\",\n \"fa-star-o\": \"f006\",\n \"fa-steam\": \"f1b6\",\n \"fa-steam-square\": \"f1b7\",\n \"fa-step-backward\": \"f048\",\n \"fa-step-forward\": \"f051\",\n \"fa-stethoscope\": \"f0f1\",\n \"fa-sticky-note\": \"f249\",\n \"fa-sticky-note-o\": \"f24a\",\n \"fa-stop\": \"f04d\",\n \"fa-street-view\": \"f21d\",\n \"fa-strikethrough\": \"f0cc\",\n \"fa-stumbleupon\": \"f1a4\",\n \"fa-stumbleupon-circle\": \"f1a3\",\n \"fa-subscript\": \"f12c\",\n \"fa-subway\": \"f239\",\n \"fa-suitcase\": \"f0f2\",\n \"fa-sun-o\": \"f185\",\n \"fa-superscript\": \"f12b\",\n \"fa-table\": \"f0ce\",\n \"fa-tablet\": \"f10a\",\n \"fa-tachometer\": \"f0e4\",\n \"fa-tag\": \"f02b\",\n \"fa-tags\": \"f02c\",\n \"fa-tasks\": \"f0ae\",\n \"fa-taxi\": \"f1ba\",\n \"fa-television\": \"f26c\",\n \"fa-tencent-weibo\": \"f1d5\",\n \"fa-terminal\": \"f120\",\n \"fa-text-height\": \"f034\",\n \"fa-text-width\": \"f035\",\n \"fa-th\": \"f00a\",\n \"fa-th-large\": \"f009\",\n \"fa-th-list\": \"f00b\",\n \"fa-thumb-tack\": \"f08d\",\n \"fa-thumbs-down\": \"f165\",\n \"fa-thumbs-o-down\": \"f088\",\n \"fa-thumbs-o-up\": \"f087\",\n \"fa-thumbs-up\": \"f164\",\n \"fa-ticket\": \"f145\",\n \"fa-times\": \"f00d\",\n \"fa-times-circle\": \"f057\",\n \"fa-times-circle-o\": \"f05c\",\n \"fa-tint\": \"f043\",\n \"fa-toggle-off\": \"f204\",\n \"fa-toggle-on\": \"f205\",\n \"fa-trademark\": \"f25c\",\n \"fa-train\": \"f238\",\n \"fa-transgender\": \"f224\",\n \"fa-transgender-alt\": \"f225\",\n \"fa-trash\": \"f1f8\",\n \"fa-trash-o\": \"f014\",\n \"fa-tree\": \"f1bb\",\n \"fa-trello\": \"f181\",\n \"fa-tripadvisor\": \"f262\",\n \"fa-trophy\": \"f091\",\n \"fa-truck\": \"f0d1\",\n \"fa-try\": \"f195\",\n \"fa-tty\": \"f1e4\",\n \"fa-tumblr\": \"f173\",\n \"fa-tumblr-square\": \"f174\",\n \"fa-twitch\": \"f1e8\",\n \"fa-twitter\": \"f099\",\n \"fa-twitter-square\": \"f081\",\n \"fa-umbrella\": \"f0e9\",\n \"fa-underline\": \"f0cd\",\n \"fa-undo\": \"f0e2\",\n \"fa-university\": \"f19c\",\n \"fa-unlock\": \"f09c\",\n \"fa-unlock-alt\": \"f13e\",\n \"fa-upload\": \"f093\",\n \"fa-usd\": \"f155\",\n \"fa-user\": \"f007\",\n \"fa-user-md\": \"f0f0\",\n \"fa-user-plus\": \"f234\",\n \"fa-user-secret\": \"f21b\",\n \"fa-user-times\": \"f235\",\n \"fa-users\": \"f0c0\",\n \"fa-venus\": \"f221\",\n \"fa-venus-double\": \"f226\",\n \"fa-venus-mars\": \"f228\",\n \"fa-viacoin\": \"f237\",\n \"fa-video-camera\": \"f03d\",\n \"fa-vimeo\": \"f27d\",\n \"fa-vimeo-square\": \"f194\",\n \"fa-vine\": \"f1ca\",\n \"fa-vk\": \"f189\",\n \"fa-volume-down\": \"f027\",\n \"fa-volume-off\": \"f026\",\n \"fa-volume-up\": \"f028\",\n \"fa-weibo\": \"f18a\",\n \"fa-weixin\": \"f1d7\",\n \"fa-whatsapp\": \"f232\",\n \"fa-wheelchair\": \"f193\",\n \"fa-wifi\": \"f1eb\",\n \"fa-wikipedia-w\": \"f266\",\n \"fa-windows\": \"f17a\",\n \"fa-wordpress\": \"f19a\",\n \"fa-wrench\": \"f0ad\",\n \"fa-xing\": \"f168\",\n \"fa-xing-square\": \"f169\",\n \"fa-y-combinator\": \"f23b\",\n \"fa-yahoo\": \"f19e\",\n \"fa-yelp\": \"f1e9\",\n \"fa-youtube\": \"f167\",\n \"fa-youtube-play\": \"f16a\",\n \"fa-youtube-square\": \"f166\"\n};\n\nconst LINE_TEXT_MARGIN = 2;\nconst LINE_HEIGHT = 20;\nconst NODE_TEXT_HEIGHT = 10;// half of node text height in css.\n\nconst LINK_REMOVE_TYPE = {\n UNMERGE: 1,\n L2N: 2\n};\nconst REMOVE_TYPE = {\n UNGROUP: 1\n};\n\nconst BUILD_REF_TYPE = {\n NODE: 1,\n LINK: 2\n};\n\nconst RENDER_TYPE = {\n SELECT: \"SELECT\",\n NUDGE: \"NUDGE\",\n IMMEDIATELY: \"IMMEDIATELY\",\n ZOOM: \"ZOOM\"\n};\n\nexport {LINE_TEXT_MARGIN, LINE_HEIGHT, NODE_TEXT_HEIGHT, DIRECTION, LINK_REMOVE_TYPE, REMOVE_TYPE, BUILD_REF_TYPE, RENDER_TYPE,COLOR,FONT};\n","export default function (selector) {\n return typeof selector === \"string\"? document.querySelector(selector): selector;\n}","import {RENDER_TYPE} from \"./CONSTANT\";\nimport select from \"../utils/select\";\n\nfunction delayRender(Obj, renderType){\n this.updateDOM.addObj(Obj, renderType);\n this._render(renderType);\n return this;\n}\n\nfunction render(renderType){\n this._render(renderType || RENDER_TYPE.IMMEDIATELY);\n return this;\n}\n\nfunction _render(renderType) {\n var self = this;\n \n this.element = select(this._selector);\n \n if(!this.element) return this;\n if(!this._config.ifRender) return this;\n var canvasType = this.element.nodeName;\n if(canvasType === 'svg'){ this._init();}\n \n if(renderType === RENDER_TYPE.IMMEDIATELY || renderType === RENDER_TYPE.ZOOM){\n draw(renderType);\n }\n else{\n cancelAnimationFrame(this._renderDelay);\n this._renderDelay = requestAnimationFrame(function timeoutDraw(){draw(renderType)}, 0);\n }\n \n return this;\n \n function draw(renderType){\n self._draw(renderType, canvasType);\n }\n}\n\nexport {_render, delayRender, render};","export default function (maybeArr) {\n if(!Array.isArray(maybeArr)) maybeArr = [maybeArr];\n return maybeArr;\n}","//中文为2长度,非中文为1\n\nexport default function (str) {\n var len = 0;\n if (typeof str !== \"string\") {\n str = str.toString();\n }\n for (var i = 0; i < str.length; i++) {\n if (str.charAt(i) > '~') {\n len += 2;\n } else {\n len++;\n }\n }\n return len;\n};","export default function (prop, val){\n if(val === undefined) return this[prop];\n \n val = val instanceof Function? val(this): val;\n if(val === this[prop]) return;\n this[prop] = val;\n \n this.graph.delayRender(this);\n //this.graph.render(this);\n\n return this;\n}\n","import attr from \"../../utils/attr\";\n\nfunction getX() {\n return this.x || 0;\n}\n\nfunction getY() {\n return this.y || 0;\n}\n\nexport {attr, getX, getY};","export default function (nudgeX, nudgeY) {\n if(!this.graph._config.dragable) return;\n \n this.x += nudgeX;\n this.y += nudgeY;\n \n return this;\n}","export default function (grouped) {\n var connectedLinks = this.graph._links.filter(function (Link) {\n return (Link.source === this) || (Link.target === this);\n }, this);\n \n if(grouped){\n var separated = {};\n\n connectedLinks.forEach(function(Link){\n var separatedId = Link.getSourceId() === this.id? Link.getTargetId(): Link.getSourceId();\n if(separated[separatedId] === undefined) separated[separatedId] = [];\n separated[separatedId].push(Link);\n },this);\n\n connectedLinks = [];\n for (var k in separated){\n connectedLinks.push(separated[k]);\n }\n }\n\n return connectedLinks;\n}\n","import {REMOVE_TYPE} from \"../CONSTANT\";\n\nexport default function (removeType) {\n delete this.graph._nodesHash[this.id];\n this.graph._nodes.splice(this.graph._nodes.indexOf(this), 1);\n \n if(this.groupedBy && (removeType !== REMOVE_TYPE.UNGROUP) ) this.groupedBy.remove();\n}\n","import getStrLen from \"../../utils/getStrLen\";\nimport {attr, getX, getY} from \"./attributes\";\nimport nudge from \"./nudge\";\nimport getConnectedLinks from \"./getConnectedLinks\";\nimport remove from \"./remove\";\n\n\n//data: data obj, graph: graphInstance\nexport default function Node(data, graph) {\n this.graph = graph;\n this.id = data.id;\n this.label = data.label || \"\";\n this.x = data.x;\n this.y = data.y;\n this.disabled = data.disabled || false;\n this.radius = data.radius || graph._config.radius;\n this.color = data.color || graph._config.color;\n this.icon = data.icon || graph._config.icon;\n this.mugshot = data.mugshot || graph._config.mugshot;\n this.selected = data.selected || false;\n \n for (var prop in data) {\n if (data.hasOwnProperty(prop) && this[prop] === undefined) this[prop] = data[prop];\n }\n}\n\nNode.prototype = {\n constructor: Node,\n _nudge: nudge,\n attr: attr,\n getX: getX,\n getY: getY,\n remove: remove,\n getConnectedLinks: getConnectedLinks\n};\n","//Link has source and target Node in _nodes\nexport default function () {\n return (this.source !== undefined) && (this.target !== undefined);\n}","export default function (Sx, Sy, Tx, Ty, offsetS, offsetT) {\n var l = Math.sqrt((Tx - Sx) * (Tx - Sx) + (Ty - Sy) * (Ty - Sy));\n if(l === 0) l = 1;\n\n var sin = (Ty - Sy) / l;\n var cos = (Tx - Sx) / l;\n \n return {\n Sx: Sx + offsetS * cos,\n Sy: Sy + offsetS * sin,\n Tx: Tx - offsetT * cos,\n Ty: Ty - offsetT * sin\n }\n}","import {DIRECTION, LINE_TEXT_MARGIN} from \"../CONSTANT\";\nimport getOffsetCoordinate from \"../../utils/getOffsetCoordinate\";\n\nvar absUrl = window.location.href.split('#')[0];\n\nfunction getStartArrow() {\n if(this.attr(\"selected\")) var status = \"-selected\";\n else status = \"-\" + this.attr(\"color\");\n \n if(this.attr(\"direction\") === DIRECTION.D2S || this.attr(\"direction\") === DIRECTION.DOUBLE)\n return \"url(\" + absUrl + \"#start-arrow\"+ status +\")\";\n else\n return \"\";\n}\n\nfunction getEndArrow () {\n if(this.attr(\"selected\")) var status = \"-selected\";\n else status = \"-\" + this.attr(\"color\");\n \n if(this.attr(\"direction\") === DIRECTION.S2D || this.attr(\"direction\") === DIRECTION.DOUBLE)\n return \"url(\" + absUrl + \"#end-arrow\"+ status +\")\";\n else\n return \"\";\n}\n\nfunction LineWidth(scale){\n var c = this.getCoordination(true);\n var x = c.Tx - c.Sx;\n var y = c.Ty - c.Sy;\n var z = Math.sqrt(x*x + y*y) * scale;\n \n return z;\n}\n\nfunction LineHeight(scale) {\n return this.attr(\"width\") * scale;\n}\n\nfunction getLinkInfoTransform(scale) {\n var c = this.getCoordination(true);\n var rx = (c.Sx + c.Tx) / 2;\n var ry = (c.Sy + c.Ty) / 2;\n \n var x = c.Tx - c.Sx;\n var y = c.Ty - c.Sy;\n\n var radians = Math.atan2(y, x) || 0;\n if (radians < 0) radians += 2 * Math.PI;\n var degrees = radians * 180 / Math.PI;\n if(degrees > 90 && degrees < 270) degrees -= 180;\n \n var transform = 'rotate('+ degrees +' '+ rx +' '+ ry +') translate(' + rx + ' ' + ry + ') scale(' + 1 / scale + ')' + '';\n \n var offsetX = - this.LineWidth(scale) / 2;\n var offsetY = this.LineHeight(scale) / 2 + LINE_TEXT_MARGIN;\n transform += ' translate('+ offsetX +' '+ offsetY +')';\n \n return transform;\n}\n\n//Link coordination is Node center's coordination or coordination where arrow placed, if any.\nfunction getCoordination(forText) {\n \n var sourceOffset = this.source.attr(\"radius\");\n var targetOffset = this.target.attr(\"radius\");\n var arrowLength = this.attr(\"width\") * 3;\n \n var Sx = this.source.getX(),\n Sy = this.source.getY(),\n Tx = this.target.getX(),\n Ty = this.target.getY();\n \n \n if(this.hasSourceArrow()) sourceOffset += arrowLength;\n if(this.hasTargetArrow()) targetOffset += arrowLength;\n \n var offset = getOffsetCoordinate(Sx, Sy, Tx, Ty, sourceOffset, targetOffset);\n \n if(this.hasSourceArrow()){\n Sx = offset.Sx;\n Sy = offset.Sy;\n }\n if(this.hasTargetArrow()){\n Tx = offset.Tx;\n Ty = offset.Ty;\n }\n \n if(forText){\n Sx = offset.Sx;\n Sy = offset.Sy;\n Tx = offset.Tx;\n Ty = offset.Ty;\n }\n \n return {\n Sx: Sx,\n Sy: Sy,\n Tx: Tx,\n Ty: Ty\n };\n}\n\nexport {getStartArrow, LineWidth, LineHeight, getEndArrow, getLinkInfoTransform, getCoordination};","import Node from \"../node/index\";\nimport attr from \"../../utils/attr\";\n\n\nfunction changeSource(source){\n if(source instanceof Node) this.source = source;\n \n this.graph.delayRender(this);\n \n return this;\n}\n\nfunction changeTarget(target){\n if(target instanceof Node) this.target = target;\n \n this.graph.delayRender(this);\n \n return this;\n}\n\nfunction getSourceId(){\n return this.source.id;\n}\n\nfunction getTargetId(){\n return this.target.id;\n}\n\nexport {attr, getSourceId, getTargetId, changeSource, changeTarget};\n","import {LINK_REMOVE_TYPE} from \"../CONSTANT\";\n\nexport default function (type) {\n delete this.graph._linksHash[this.id];\n this.graph._links.splice(this.graph._links.indexOf(this), 1);\n\n this.graph._render();\n \n if(this.mergedBy && (type !== LINK_REMOVE_TYPE.UNMERGE) ) this.mergedBy.remove();\n if(this.transformedBy && (type !== LINK_REMOVE_TYPE.L2N)) this.transformedBy.remove();\n\n return this;\n}","export default function () {\n return this.graph._links.filter(function(Link){\n return (Link.source === this.source || Link.source === this.target) &&\n (Link.target === this.source || Link.target === this.target);\n }, this) || [];\n}","import hasST from \"./hasST\";\nimport {getStartArrow, getEndArrow, LineWidth, LineHeight, getLinkInfoTransform, getCoordination} from \"./display\";\nimport {attr, getSourceId, getTargetId, changeSource, changeTarget} from \"./attributes\";\nimport {DIRECTION} from \"../CONSTANT\";\nimport remove from \"./remove\";\nimport getHomoLinks from \"./getHomoLinks\";\n\nexport default function Link(data, graph) {\n this.graph = graph;\n this.id = data.id;\n this.label = data.label || \"\";\n this.width = data.width || (graph && graph._config.linkWidth);\n this.color = data.color || (graph && graph._config.linkColor);\n this.icon = data.icon || graph._config.icon;\n this.mugshot = data.mugshot || graph._config.mugshot;\n this.selected = data.selected || false;\n this.direction = data.direction === undefined? 1: data.direction;//0: none, 1: from, 2: to, 3 double\n this.disabled = data.disabled || false;\n this.hide = data.hide || false;\n\n this.source = graph && this.graph._nodesHash[data.src];\n this.target = graph && this.graph._nodesHash[data.dst];\n \n for (var prop in data) {\n if (data.hasOwnProperty(prop) && this[prop] === undefined) this[prop] = data[prop];\n }\n}\n\nLink.prototype = {\n constructor: Link,\n hasST: hasST,\n getCoordination: getCoordination,\n getStartArrow: getStartArrow,\n getEndArrow: getEndArrow,\n LineWidth: LineWidth,\n LineHeight: LineHeight,\n getLinkInfoTransform: getLinkInfoTransform,\n attr: attr,\n remove: remove,\n getSourceId: getSourceId,\n getTargetId: getTargetId,\n changeSource: changeSource,\n changeTarget: changeTarget,\n getHomoLinks: getHomoLinks,\n hasSourceArrow: function(){\n return this.attr(\"direction\") === DIRECTION.D2S || this.attr(\"direction\") === DIRECTION.DOUBLE;\n },\n hasTargetArrow: function(){\n return this.attr(\"direction\") === DIRECTION.S2D || this.attr(\"direction\") === DIRECTION.DOUBLE;\n }\n};\n","\n/**\n * Created by lcx on 2016/11/1.\n * 利用canvas 画点 \n */\nimport {COLOR,FONT} from \"../CONSTANT\";\nexport default function (canvasObj) {\n var nodes = this.getRenderedNodes();\n // var context = canvasObj.context;\n //对node 进行分类 按颜色进行分类 不同的颜色画在不同的画布上,但是所有点的总共的颜色不宜过多 否则在点线多的情况下会影响整体效率\n var colorList = [];\n var nodeDepartList = [];\n var selectedNodeDepartList = [];\n var cache = [];\n var selectedNodes = this.getSelectedNodes();\n for(var j=0;j0){\n //绘制选中状态的点\n context.beginPath();\n context.lineWidth=10;\n context.strokeStyle = '#f65565';\n context.fillStyle = colorList[i];\n for(var m=0;m8){\n label = Node.label.slice(0,8)+'...';\n }else{\n label = Node.label;\n }\n context.fillText(label,x+r,y+r);\n\n }\n }\n\n this.nodesCache = cache;\n this.colorList = colorList;\n this.nodesDepartList = nodeDepartList;\n return this;\n\n\n\n\n\n\n\n\n\n\n /* //分开渲染,先渲染选中状态的node\n if(selectedNodes.length>0){\n context.beginPath();\n context.lineWidth=10;\n context.strokeStyle = '#f65565';\n for(var m=0;m8){\n label = Node.label.slice(0,8)+'...';\n }else{\n label = Node.label;\n }\n }\n context.fillText(label,x+r,y+r);\n }*/\n\n}","import toArray from \"../utils/toArray\";\nimport Node from \"./node/index\";\nimport Link from \"./link/index\";\n// import drawCanvasLink from './draw/drawCanvasLink2';\nimport drawCanvasNode from './draw/drawCanvasNode_';\n\nfunction clearNodes() {\n this._nodes = [];\n}\n\nfunction clearLinks() {\n this._links = [];\n}\n\nfunction hasNode(obj) {\n return Boolean(this._nodesHash[obj.id]);\n}\n\nfunction hasLink(obj) {\n return Boolean(this._linksHash[obj.id]);\n}\n\nfunction addNode(obj) {\n var node = new Node(obj, this);\n if(!this.hasNode(node)){\n this._nodesHash[node.id] = node;\n this._nodes.push(node);\n }\n return node;\n}\n\nfunction addLink(obj) {\n var link = new Link(obj, this);\n if(!this.hasLink(link) && link.hasST()){\n this._linksHash[link.id] = link;\n this._links.push(link);\n }\n \n return link;\n}\n\nfunction removeNodes(filter) {\n this.getNodes(filter).forEach(function(Node){\n //remove links first\n this._removeLinksOfNode(Node);\n Node.remove();\n }, this);\n \n this._render();\n}\n\nfunction removeLinks(filter) {\n this.getLinks(filter).forEach(function(Link){\n Link.remove();\n }, this);\n \n this._render();\n}\n\nfunction removeLinksOfNode(Node) {\n Node.getConnectedLinks().map(function (Link) {\n Link.remove();\n }, this);\n}\n\nfunction nodes(nodes, cover) {\n nodes = toArray(nodes);\n\n if(!arguments.length) return this._nodes;\n if(cover) this.clearNodes();\n\n nodes.forEach(function(v){ this._addNode(v);},this);\n this._render();\n // if(this.element.nodeName === 'CANVAS'){\n // //初始化\n // drawCanvasNode.call(this);\n // /* var nodes = this.getRenderedNodes();\n // var nodesCache = [];\n // for(var i=0;itMinx ? tMinx : minx;\n maxx = maxxtMiny ? tMiny : miny;\n maxy = maxy' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '';\n\n //this.element.insertAdjacentHTML(\"afterbegin\", str);\n \n var def = document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n def.innerHTML = str;\n this.element.appendChild(def);\n \n d3.select(\"#start-arrow path\").call(arrowAttr);\n d3.select(\"#end-arrow path\").call(arrowAttr);\n \n function arrowAttr(selection){\n selection.style('fill', self._config.linkColor);\n }\n}","export default function () {\n var svg = this.svgSelection();\n this._brushSelection = svg.append(\"g\").attr(\"class\", \"brush\");\n\n var graphGroup = this.graphGroup = svg.append('g').attr('class', 'graph-group');\n \n graphGroup.append(\"g\").attr(\"class\", \"links\");\n graphGroup.append(\"g\").attr(\"class\", \"nodes\");\n}","export default function() {\n var self = this;\n var downPosition = null;\n return d3.zoom().scaleExtent([this._config.minScale, this._config.maxScale])\n .on('start.g3Default', function () {\n if(!d3.event.sourceEvent) return;\n downPosition = [d3.event.sourceEvent.x, d3.event.sourceEvent.y];\n })\n .on(\"zoom.g3Default\", this._zoomed.bind(this))\n .on('end.g3Default', function () {\n if(!d3.event.sourceEvent) return;\n if(downPosition[0] === d3.event.sourceEvent.x && downPosition[1] === d3.event.sourceEvent.y && d3.event.sourceEvent.target.nodeName === 'svg'){\n d3.event.sourceEvent.target.dispatchEvent(new Event('click'));\n }\n });\n}\n\n","export default function () {\n var self = this;\n var brush = d3.brush()\n .extent([[0, 0], [3840, 2400]])\n .on('start.g3Default', function () {\n if (!d3.event.selection) return; // Ignore empty selections.\n \n self.nodesSelection().each(function (Node) {\n Node.pselected = d3.event.sourceEvent.ctrlKey && Node.attr(\"selected\");\n });\n })\n .on('brush.g3Default', function () {\n if (!d3.event.selection) return; // Ignore empty selections.\n\n var extent = d3.event.selection;\n var t = self.currentTransform();\n\n self.nodesSelection().each(function(Node){\n Node.attr(\"selected\", !Node.attr('disabled') && Boolean(Node.pselected ^ ( (extent[0][0] - t.x) / t.k <= Node.getX() && Node.getX() < (extent[1][0] - t.x) / t.k && (extent[0][1] - t.y) / t.k <= Node.getY() && Node.getY() < (extent[1][1] - t.y) / t.k )));\n });\n })\n .on('end.g3Default', function () {\n if (!d3.event.selection) return; // Ignore empty selections.\n self.brushSelection()\n .call(brush.move, null);\n });\n\n brush.show = function(){\n self.brushSelection().style('display', 'block');\n };\n brush.hide = function(){\n self.brushSelection().style('display', 'none');\n };\n\n return brush;\n}","export default function () {\n var self = this;\n var drag = d3.drag()\n .on(\"start.g3Default\", function (Node) {\n d3.event.sourceEvent.stopPropagation();\n })\n .on(\"drag.g3Default\", this.draged.bind(this))\n .on(\"end.g3Default\", function (Node) {\n\n });\n return drag;\n}","import appendPreDefs from \"./appendPreDefs\";\nimport appendPreElement from \"./appendPreElement\";\nimport Zoom from \"./zoom\";\nimport Brush from \"./brush\";\nimport dragNode from \"./dragNodes\";\n\nexport default function () {\n //init trigger only once a graph\n if(this._hasInit) return;\n\n var self = this;\n\n //add predefined DOM\n appendPreDefs.call(this);\n appendPreElement.call(this);\n\n\n this.svgSelection()\n .classed(\"graph\", true)\n .style(\"background\", this._config.background)\n .call(this._config.bindGraphEvent)\n .on(\"click.deselect\", function () {\n if (d3.event.target.nodeName !== 'svg') return;\n self.getNodesOP().attr('selected', false);\n self.getLinksOP().attr('selected', false);\n }, true);\n\n //bind listener to page for keyboard shortCuts and mouse events\n d3.select(document.body)\n .on(\"keydown.brush\", this._keydowned.bind(this))\n .on(\"keyup.brush\", this._keyupped.bind(this));\n\n //add zoom instance to graph\n this.zoom = Zoom.call(this);\n this.svgSelection()\n .call(this.zoom);\n\n //add brush instance to graph\n this.brush = Brush.call(this);\n this.brushSelection()\n .call(this.brush);\n\n \n //new drag instance for bind to nodes\n this.drag = dragNode.call(this);\n\n this._hasInit = true;\n}\n","export default function (url) {\n return (url || window.location.href).split('#')[0];\n}","import getAbsUrl from \"../../utils/getAbsUrl\";\nimport getStrLen from \"../../utils/getStrLen\";\n\nimport {RENDER_TYPE, NODE_TEXT_HEIGHT} from \"../CONSTANT\";\n\nexport default function (renderType) {\n \n var self = this;\n var nodes = this.nodesSelection().data(this.getRenderedNodes(), function (Node) { return Node.id;});\n\n var g = nodes.enter().append('g')\n .each(function(Node){ Node.element = this })//reference element to Node\n .classed('node', true)\n .on('mousedown.select', function(Node, i){\n if(!d3.event.ctrlKey){\n if(Node.attr(\"selected\")) return;\n self.getNodesOP().attr(\"selected\", false);\n }\n self.getLinksOP().attr(\"selected\", false);\n Node.attr(\"selected\",!Node.attr(\"selected\"));\n })\n .call(this._config.bindNodeEvent)\n .call(this.drag);\n \n g.append(\"circle\")\n .attr('class', 'circle')\n .attr(\"filter\", \"url(\" + getAbsUrl() + \"#shadow)\");\n g.append('svg:foreignObject')\n .attr('class', 'text-group')\n .append(\"xhtml:div\")\n .attr('class', 'text');\n \n var avatar = g.append('svg:foreignObject').attr('class', 'avatar');\n avatar.append('xhtml:span').attr('class', 'icon');\n avatar.append('xhtml:img').attr('class', 'mugshot');\n \n g.call(this._config.insertNode);\n g.call(updateAttr);\n \n //update elements\n if(renderType === RENDER_TYPE.IMMEDIATELY || renderType === RENDER_TYPE.ZOOM) var updateNodes = this.nodesSelection();\n else updateNodes = d3.selectAll(this.updateDOM.getNodesEle());\n \n //update attributes\n if(renderType === RENDER_TYPE.ZOOM) var updated = updateZoom;\n else updated = updateAttr;\n \n updateNodes.call(updated);\n \n \n this.updateDOM.clearUpdateNodes();\n nodes.exit().remove();\n \n \n function updateZoom(selection){\n var scale = self.currentTransform().k;\n selection.attr(\"transform\", function (Node) { return \"translate(\" + Node.getX() + \",\" + Node.getY() + \")\";});\n\n selection.select('.text-group')\n .style('display', function(Node){\n return (scale < self._config.scaleOfHideNodeLabel)? 'none': 'block';\n })\n .attr(\"transform\", function(Node){ return \"translate(\" + (1 + Node.attr(\"radius\")) + \", \"+ (-NODE_TEXT_HEIGHT / scale) +\") scale(\" + 1 / scale + \")\"; })\n \n selection.selectAll('.avatar')\n .attr(\"transform\", function(Node){ return \"translate(\" + -Node.attr(\"radius\") + \", \"+ -Node.attr(\"radius\") +\")\"; })\n .attr(\"width\", function(Node){return Node.attr(\"radius\")*2;})\n .attr(\"height\", function(Node){return Node.attr(\"radius\")*2;});\n \n selection.call(self._config.updateNode, scale);\n }\n \n function updateAttr(selection){\n var scale = self.currentTransform().k;\n selection.attr(\"transform\", function (Node) { return \"translate(\" + Node.getX() + \",\" + Node.getY() + \")\";})\n .classed(\"selected\", function(Node){return Node.attr(\"selected\")})\n .classed(\"disabled\", function(Node){return Node.attr(\"disabled\")});\n \n selection.select('circle')\n .attr(\"r\", function(Node){ return Node.attr(\"radius\");})\n .style(\"fill\", function(Node){ return Node.attr(\"color\"); });\n \n var avatar = selection.selectAll('.avatar')\n .attr(\"transform\", function(Node){ return \"translate(\" + -Node.attr(\"radius\") + \", \"+ -Node.attr(\"radius\") +\")\"; })\n .attr(\"width\", function(Node){return Node.attr(\"radius\")*2;})\n .attr(\"height\", function(Node){return Node.attr(\"radius\")*2;});\n \n avatar.select('.icon')\n .attr('class', function(Node){ return \"icon \" + self._config.iconPrefix + Node.attr(\"icon\");})\n .style(\"line-height\", function(Node){return Node.attr(\"radius\")*2 + \"px\";})\n .style('display', function(Node){return Node.attr(\"icon\")? \"block\": \"none\";});\n \n avatar.select('.mugshot')\n .attr('src', function(Node){return Node.attr(\"mugshot\")? self._config.mugshotPrefix + Node.attr(\"mugshot\"): \"\";})\n .style('display', function(Node){return Node.attr(\"mugshot\")? \"block\": \"none\";});\n \n selection.select('.text-group')\n .style('display', function(Node){\n return (scale < self._config.scaleOfHideNodeLabel)? 'none': 'block';\n })\n .attr(\"width\", function(Node){\n return Node.selected? getStrLen(Node.label) * 9 :self._config.nodeLabelClipWidth;\n })\n .attr('height', NODE_TEXT_HEIGHT * 2)\n .attr(\"transform\", function(Node){ return \"translate(\" + (1 + Node.attr(\"radius\")) + \", \"+ (-NODE_TEXT_HEIGHT / scale) +\") scale(\" + 1 / scale + \")\"; })\n \n .select('.text')\n .text(function (Node) { return Node.attr(\"label\"); });\n \n selection.call(self._config.updateNode, scale);\n }\n}","export default function (array) {\n var n = [];\n for (var i = 0; i < array.length; i++) {\n if (n.indexOf(array[i]) == -1) n.push(array[i]);\n }\n return n;\n}","import {RENDER_TYPE, LINE_HEIGHT} from \"../CONSTANT\";\nimport unique from \"../../utils/unique\";\n\nexport default function (renderType) {\n var self = this;\n var scale = self.currentTransform().k;\n \n addArrowByColor();\n \n var links = this.linksSelection().data(this.getRenderedLinks(), function (Link) { return Link.id });\n\n var link = links.enter()\n .append('g')\n .each(function(Link){ Link.element = this })\n .classed('link', true)\n .call(this._config.bindLinkEvent);\n \n link.append('path')\n .classed('link-path', true)\n .attr('id', function(Link){ return \"link-path\" + Link.id});\n \n \n var info = link\n .append('svg:foreignObject')\n .classed('link-info', true);\n \n info.append('xhtml:span').attr('class', 'icon');\n info.append('xhtml:span').attr('class', 'text');\n \n \n link.call(updateAttr);\n \n \n //update elements\n if(renderType === RENDER_TYPE.IMMEDIATELY || renderType === RENDER_TYPE.ZOOM){\n var updateLinks = this.linksSelection();\n }else if(renderType === RENDER_TYPE.NUDGE){\n updateLinks = d3.selectAll(this.getRelatedLinks(this.getSelectedNodes()).map(function(Link){return Link.element;}));\n }else{\n updateLinks = d3.selectAll(this.updateDOM.getLinksEle());\n }\n \n //update attributes\n if(renderType === RENDER_TYPE.ZOOM) var updated = updateZoom;\n else updated = updateAttr;\n updateLinks.call(updated);\n \n \n this.updateDOM.clearUpdateLinks();\n links.exit().remove();\n \n \n function updateZoom(selection){\n selection\n .select('.link-info')\n .attr('transform', function(Link){\n return Link.getLinkInfoTransform(scale);\n })\n .style('display', function(Link){\n return (scale < self._config.scaleOfHideLinkLabel)? 'none': 'block';\n })\n .attr('width', function (Link) {return Link.LineWidth(scale)});\n }\n \n function updateAttr(selection){\n // if(renderType === RENDER_TYPE.NUDGE){\n // selection\n // .select('path')\n // .attr('d', function (Link) { var c = Link.getCoordination(); return 'M ' + c.Sx + ' ' + c.Sy + ' L ' + c.Tx + ' ' + c.Ty; });\n // return;\n // }\n selection.classed(\"disabled\", function(Link){return Link.attr(\"disabled\")});\n \n selection\n .select('path')\n .attr('d', function (Link) { var c = Link.getCoordination(); return 'M ' + c.Sx + ' ' + c.Sy + ' L ' + c.Tx + ' ' + c.Ty; })\n .classed(\"selected\", function(Link){return Link.attr(\"selected\")})\n .style('marker-start', function (Link) { return Link.getStartArrow(); })\n .style('marker-end', function (Link) { return Link.getEndArrow(); })\n .style('stroke-width', function(Link){ return Link.attr(\"width\"); })\n .style('stroke', function(Link){ return Link.attr(\"color\"); });\n \n // if(renderType === RENDER_TYPE.NUDGE){\n // selection\n // .attr('dx', function(Link){return Link.getTextOffset(); })\n // .attr('transform', function(Link){ return Link.getLinkLabelTransform(scale); });\n // return;\n // }\n \n var info = selection\n .select('.link-info')\n .attr('transform', function(Link){\n return Link.getLinkInfoTransform(scale);\n })\n .style('display', function(Link){\n return (scale < self._config.scaleOfHideLinkLabel)? 'none': 'block';\n })\n .attr('width', function (Link) {return Link.LineWidth(scale)})\n .attr('height', LINE_HEIGHT);\n \n info.select('.text')\n .text(function (Link) {return Link.attr(\"label\");});\n \n info.select('.icon')\n .attr('class', function(Link){ return self._config.iconPrefix + Link.attr(\"icon\");})\n }\n \n function addArrowByColor(){\n var uniqueColor = unique(self.getRenderedLinks().map(function(Link){return Link.color;}));\n var startArrow = self.svgSelection().select('defs').selectAll('marker.color-start-arrow').data(uniqueColor, function(v){return v;});\n var endArrow = self.svgSelection().select('defs').selectAll('marker.color-end-arrow').data(uniqueColor, function(v){return v;});\n \n startArrow.enter()\n .append(\"svg:marker\")\n .attr(\"id\", function(v){ return \"start-arrow-\"+ v; })\n .classed('color-start-arrow', true)\n .attr(\"refX\", 10)\n .call(arrowAttr)\n .append(\"svg:path\")\n .attr(\"d\", \"M10,-5L0,0L10,5\")\n .call(arrowPathAttr);\n \n endArrow.enter()\n .append(\"svg:marker\")\n .attr(\"id\", function(v){ return \"end-arrow-\"+ v; })\n .attr(\"refX\", 0)\n .classed('color-end-arrow', true)\n .call(arrowAttr)\n .append(\"svg:path\")\n .attr(\"d\", \"M0,-5L10,0L0,5\")\n .call(arrowPathAttr);\n \n function arrowAttr(selection){\n selection\n .attr(\"viewBox\", \"0 -5 10 10\")\n .attr(\"markerWidth\", 3)\n .attr(\"markerHeight\", 3)\n .attr(\"orient\", \"auto\");\n }\n function arrowPathAttr(selection){\n selection\n .style(\"fill\", function(v){return v});\n }\n }\n}\n","/**\r\n * Created by lcx on 2016/11/2.\r\n */\r\nexport default\r\nfunction(ctx,link,lineWidth,x,y) {\r\n var targetLink = false;//标记当前link 是否为点击选中的link\r\n var s1 = link.source.getX();\r\n var e1 = link.source.getY();\r\n var s2 = link.target.getX();\r\n var e2 = link.target.getY();\r\n var r ,r1;\r\n function draw(e1, s1, e2, s2,tag) {\r\n var l = Math.sqrt((s2-s1)*(s2-s1) + (e2-e1)*(e2-e1));\r\n var sin = (e2-e1)/l;\r\n var cos = (s2-s1)/l;\r\n\r\n var dx = (r+lineWidth)*cos;\r\n var dy = (r+lineWidth)*sin;\r\n\r\n var sdx = (r1+lineWidth)*cos;\r\n var sdy = (r1+lineWidth)*sin;\r\n var res = {\r\n tag:tag\r\n };\r\n\r\n var x2,y2,x1,y1;\r\n x2 = s2-dx;\r\n y2 = e2-dy;\r\n x1 = s1+sdx;\r\n y1 = e1+sdy;\r\n\r\n /*var arrX1,arrY1,arrX2,arrY2;\r\n arrX2 = s2-(r+lineWidth*3)*cos;\r\n arrY2 = e2-(r+lineWidth*3)*sin;\r\n arrX1 = s1+(r1+lineWidth*3)*cos;\r\n arrY1 = e1+(r1+lineWidth*3)*sin;*/\r\n var targetArrow = calcArrow(x1,y1,x2,y2);\r\n var sourceArrow = calcArrow(x2,y2,x1,y1);\r\n x1 = round(x1);\r\n x2 = round(x2);\r\n y1 = round(y1);\r\n y2 = round(y2);\r\n targetArrow.a1 = round(targetArrow.a1);\r\n targetArrow.b1 = round(targetArrow.b1);\r\n targetArrow.a2 = round(targetArrow.a2);\r\n targetArrow.b2 = round(targetArrow.b2);\r\n sourceArrow.a1 = round(sourceArrow.a1);\r\n sourceArrow.b1 = round(sourceArrow.b1);\r\n sourceArrow.a2 = round(sourceArrow.a2);\r\n sourceArrow.b2 = round(sourceArrow.b2);\r\n ctx.moveTo(x1,y1);\r\n ctx.lineTo(x2,y2);\r\n if(tag == 'double'){\r\n ctx.moveTo(targetArrow.a1,targetArrow.b1);\r\n ctx.lineTo(x2,y2);\r\n ctx.lineTo(targetArrow.a2,targetArrow.b2);\r\n\r\n ctx.moveTo(sourceArrow.a1,sourceArrow.b1);\r\n ctx.lineTo(x1,y1);\r\n ctx.lineTo(sourceArrow.a2,sourceArrow.b2);\r\n }else if(tag == 'source'){\r\n var sourceArrow = calcArrow(x1,y1,x2,y2);\r\n sourceArrow.a1 = round(sourceArrow.a1);\r\n sourceArrow.b1 = round(sourceArrow.b1);\r\n sourceArrow.a2 = round(sourceArrow.a2);\r\n sourceArrow.b2 = round(sourceArrow.b2);\r\n ctx.moveTo(sourceArrow.a1,sourceArrow.b1);\r\n ctx.lineTo(x2,y2);\r\n ctx.lineTo(sourceArrow.a2,sourceArrow.b2);\r\n }else if(tag == 'target'){\r\n ctx.moveTo(targetArrow.a1,targetArrow.b1);\r\n ctx.lineTo(x2,y2);\r\n ctx.lineTo(targetArrow.a2,targetArrow.b2);\r\n }\r\n return res;\r\n }\r\n\r\n if(link.hasSourceArrow() && link.hasTargetArrow()){\r\n //双箭头\r\n r = link.target.radius;\r\n r1 = link.source.radius;\r\n return draw(e1,s1,e2,s2,'double');\r\n }else if(link.hasSourceArrow()){\r\n r = link.source.radius;\r\n r1 = link.target.radius;\r\n //箭头指向source\r\n return draw(e2,s2,e1,s1,'source');\r\n }else if(link.hasTargetArrow()){\r\n r = link.target.radius;\r\n r1 = link.source.radius;\r\n //箭头指向target\r\n return draw(e1,s1,e2,s2,'target');\r\n }else{\r\n r = link.target.radius;\r\n r1 = link.source.radius;\r\n return draw(e1,s1,e2,s2,'none');\r\n }\r\n\r\n function round(somenum) {\r\n var rounded;\r\n rounded = (0.5 + somenum) | 0;\r\n rounded = ~~ (0.5 + somenum);\r\n rounded = (0.5 + somenum) << 0;\r\n return rounded;\r\n }\r\n\r\n function calcArrow(x1, y1, x2, y2) {\r\n //进行箭头的绘制\r\n var angle = Math.abs(Math.atan((x2 - x1) / (y2 - y1))); //倾斜角余角\r\n var length = 10; //箭头斜线长度\r\n var degree = Math.PI / 6; //箭头倾斜角\r\n var theta = 0;\r\n var altha = 0;\r\n var a1 = 0;\r\n var b1 = 0;\r\n var a2 = 0;\r\n var b2 = 0;\r\n //a1,b1 求箭头的坐标\r\n\r\n if (angle >= degree && angle <= Math.PI / 2 - degree) {\r\n theta = angle - degree;\r\n altha = Math.PI / 2 - 2 * degree - theta;\r\n if (x2 >= x1) {\r\n a1 = x2 - length * Math.sin(theta);\r\n a2 = x2 - length * Math.cos(altha);\r\n } else {\r\n a1 = x2 + length * Math.sin(theta);\r\n a2 = x2 + length * Math.cos(altha);\r\n }\r\n if (y2 >= y1) {\r\n b1 = y2 - length * Math.cos(theta);\r\n b2 = y2 - length * Math.sin(altha);\r\n } else {\r\n b1 = y2 + length * Math.cos(theta);\r\n b2 = y2 + length * Math.sin(altha);\r\n }\r\n } else {\r\n theta = angle - degree;\r\n altha = theta + 2 * degree - Math.PI / 2;\r\n if (x2 >= x1 && y2 >= y1) {\r\n a1 = x2 - length * Math.sin(theta);\r\n b1 = y2 - length * Math.cos(theta);\r\n a2 = x2 - length * Math.cos(altha);\r\n b2 = y2 + length * Math.sin(altha);\r\n } else if (x2 >= x1 && y2 < y1) {\r\n a1 = x2 - length * Math.sin(theta);\r\n b1 = y2 + length * Math.cos(theta);\r\n a2 = x2 - length * Math.cos(altha);\r\n b2 = y2 - length * Math.sin(altha);\r\n } else if (x2 < x1 && y2 < y1) {\r\n a1 = x2 + length * Math.sin(theta);\r\n b1 = y2 + length * Math.cos(theta);\r\n a2 = x2 + length * Math.cos(altha);\r\n b2 = y2 - length * Math.sin(altha);\r\n } else {\r\n a1 = x2 + length * Math.sin(theta);\r\n b1 = y2 - length * Math.cos(theta);\r\n a2 = x2 + length * Math.cos(altha);\r\n b2 = y2 + length * Math.sin(altha);\r\n }\r\n }\r\n return {\r\n a1:a1,\r\n b1:b1,\r\n a2:a2,\r\n b2:b2\r\n };\r\n }\r\n\r\n\r\n}","/**\n * Created by lcx on 2016/11/1.\n * 利用canvas 画线\n */\nimport drawArrow from './drawArrow';\nexport default function (canvasObj,tag,target) {\n //取得经过计算之后的links 数据\n var links = canvasObj.links;\n var nodes = canvasObj.nodes;\n var cacheCtx = canvasObj.context;\n var width = canvasObj.canvas.width;\n var height = canvasObj.canvas.height;\n\n //进行绘制\n // context.strokeStyle = \"#ccc\";\n var targetLink = null;\n // var lineList = [];\n // var pointList = [];\n var selectedLinks = this.getSelectedLinks();\n\n\n\n if(tag == 'dragStart'){\n var departLinks = getDepartLinks(links,target);\n var selectedDepart = getDepartLinks(selectedLinks,target);\n var targetLinks = departLinks.targetLinks;\n var otherLinks = departLinks.otherLinks;\n var selectedTargetLinks = selectedDepart.targetLinks;\n var selectedOtherLinks = selectedDepart.otherLinks;\n //drag 操作,需要分成两张画布进行渲染 和target 相连的线+target 单独绘制在一张画布上面\n var targetCanvas = document.createElement('canvas');\n targetCanvas.width = width;\n targetCanvas.height = height;\n var targetContext = targetCanvas.getContext('2d');\n targetContext.save();\n\n targetContext.translate(canvasObj.transform.x, canvasObj.transform.y);\n targetContext.scale(canvasObj.transform.k, canvasObj.transform.k);\n\n var otherCanvas = document.createElement('canvas');\n otherCanvas.width = canvasObj.canvas.width;\n otherCanvas.height = canvasObj.canvas.height;\n var otherContext = otherCanvas.getContext('2d');\n otherContext.save();\n\n otherContext.translate(canvasObj.transform.x, canvasObj.transform.y);\n otherContext.scale(canvasObj.transform.k, canvasObj.transform.k);\n\n\n\n\n\n //先绘制其他\n otherContext.lineWidth=3;\n if(selectedOtherLinks.length>0){\n otherContext.beginPath();\n otherContext.strokeStyle = '#f00';\n for(var m=0;m0){\n targetContext.beginPath();\n targetContext.strokeStyle = '#f00';\n for(var m=0;m0){\n targetContext.beginPath();\n targetContext.strokeStyle = '#f00';\n for(var m=0;m0){\n context.beginPath();\n context.strokeStyle = '#f00';\n for(var m=0;m=1){\n context.strokeWidth = 0;\n context.fillStyle = '#555';\n context.font=\"16px 微软雅黑\";\n for(var k=0;k= 0; --i) {\n var r = nodes[i].radius;\n var point = nodes[i];\n var xx = point.x;\n var yy = point.y;\n\n // var xx = transform.applyX(point.x);\n // var yy = transform.applyY(point.y);\n\n dx = x - xx;\n dy = y - yy;\n if (dx * dx + dy * dy < r*r) {\n return point;\n }\n }\n}","/**\n * Created by lcx on 2016/11/1.\n */\nexport default function(canvas,x, y) {\n // var canvas = this._canvas;\n var res = {};\n var cBox = canvas.getBoundingClientRect();\n var cx = cBox.left;\n var cy = cBox.top;\n res.x = x - cx;\n res.y = y - cy;\n return res;\n}","/**\n * Created by lcx on 2016/11/7.\n */\nimport drawCanvasLink from './drawCanvasLink';\nimport drawCanvasNode from './drawCanvasNode';\nimport drawArrow from './drawArrow';\nexport default function (canvasObj, x, y,lineWidth) {\n // console.log(links);\n var context = canvasObj.context;\n var target = null;\n var targets = [];\n var lineWidth = lineWidth || 10;\n //判断是否选中线 采用计算的方法,不使用isPointInPath 方法\n var links = canvasObj.links;\n for(var i=0;i=-lineWidth && dy <= lineWidth){\n targetLink = true;\n }else if(dx>=-lineWidth && dx <= lineWidth){\n targetLink = true;\n }\n return targetLink;\n }else{\n return false;\n }\n\n\n\n }\n \n function isInArea(x,minx,maxx) {\n var x1 = x-5;\n var x2 = x+5;\n if(minx == maxx){\n return true;\n }\n\n if(x>=minx && x<=maxx){\n return true;\n }else if(x1>=minx && x1<=maxx){\n return true;\n }else if(x2>=minx && x2<=maxx){\n return true;\n }else{\n return false;\n }\n }\n\n\n\n\n\n\n\n\n\n\n\n\n /* function render(x,y) {\n context.clearRect(0, 0, canvasObj.canvas.width, canvasObj.canvas.height);\n context.save();\n context.translate(canvasObj.transform.x, canvasObj.transform.y);\n context.scale(canvasObj.transform.k, canvasObj.transform.k);\n target = drawCanvasLink(canvasObj,x,y);\n drawCanvasNode(canvasObj);\n context.restore();\n }\n render(x,y);\n return target;*/\n\n}\n","/**\n * Created by lcx on 2016/12/8.\n */\nexport default function (canvasObj,keyWord,target) {\n var cache = this.nodesCache;\n var context = this.element.getContext('2d');\n for(var i=0;i0){\n //绘制选中状态的点\n context.beginPath();\n context.lineWidth=10;\n context.strokeStyle = '#f65565';\n context.fillStyle = colorList[i];\n for(var m=0;m=1){\n//画字\n context.beginPath();\n context.strokeWidth = 1;\n context.font=\"16px 微软雅黑\";\n context.textAlign='left';\n context.textBaseline='hanging';\n for(var k=0;k=1) {\n context.beginPath();\n context.strokeWidth = 1;\n context.font=\"16px 微软雅黑\";\n context.textAlign='left';\n context.textBaseline='hanging';\n context.fillStyle = '#555';\n for(var a=0;a8){\n label = Node.label.slice(0,8)+'...';\n }else{\n label = Node.label;\n }\n context.fillText(label,x+r,y+r);\n\n }\n }\n\n context.restore();\n }else{\n //zoom 操作,需要全部重新渲染\n for(var i=0;i0){\n //绘制选中状态的点\n context.beginPath();\n context.lineWidth=10;\n context.strokeStyle = '#f65565';\n context.fillStyle = colorList[i];\n for(var m=0;m=1){\n//画字\n context.strokeWidth = 1;\n context.font=\"16px 微软雅黑\";\n context.textAlign='left';\n context.textBaseline='hanging';\n for(var k=0;k=1) {\n context.beginPath();\n context.strokeWidth = 1;\n context.font=\"14px 微软雅黑\";\n context.textAlign='left';\n context.textBaseline='hanging';\n context.fillStyle = '#555';\n for(var a=0;a8){\n label = Node.label.slice(0,8)+'...';\n }else{\n label = Node.label;\n }\n context.fillText(label,x+r,y+r);\n\n context.font=\"14px fontawesome\";\n context.fillText(String.fromCharCode(parseInt(icon,16)),x,y);\n\n\n }\n }\n\n context.restore();\n }\n }\n\n\n\n\n\n\n this.nodesCache = cache;\n this.colorList = colorList;\n return this;\n\n\n\n\n\n\n\n\n\n\n /* //分开渲染,先渲染选中状态的node\n if(selectedNodes.length>0){\n context.beginPath();\n context.lineWidth=10;\n context.strokeStyle = '#f65565';\n for(var m=0;m8){\n label = Node.label.slice(0,8)+'...';\n }else{\n label = Node.label;\n }\n }\n context.fillText(label,x+r,y+r);\n }*/\n\n}","import drawNodeCanvas from './drawCanvasNode_';\nimport drawLinkCanvas from './drawCanvasLink';\nimport findPoint from './findPoint';\nimport convertToCanvasCor from './convertCor';\nimport findLinks from './findLink';\nimport drawCache from './drawCache';\nimport redrawNodeCanvas from './redrawCanvasNode';\n\nexport default function () {\n var that = this;\n var context = this.element.getContext(\"2d\");\n // console.log(that._getCurrentTransform());\n //绘制的canvas 对象,在优化的时候可以对nodes 和 links 的数据进行相应的分组优化\n\n var canvas = {\n canvas:that.element,\n context:context,\n nodes:this.getRenderedNodes(),\n links:this.getRenderedLinks(),\n transform:that.currentTransform(),\n nodesCache:that.nodesCache,//离屏缓存canvas\n linksCache:that.linksCache,\n zoomCache:null\n\n };\n\n // d3.json('../src/graph/canvas/font-awesome-data.json',function (data) {\n // console.log(data);\n // canvas.fontAwesome = data;\n // });\n\n var nodeCanvas = document.createElement('canvas');\n nodeCanvas.width = that.element.width;\n nodeCanvas.height = that.element.height;\n canvas.nodeCanvas = nodeCanvas;\n\n //进行事件绑定,canvas 在进行事件绑定的时候没有对应的dom 结构,所以要进行相应的计算来判断事件的目标对象时哪个点或者边\n render();\n //绘制\n //canvas 事件绑定\n d3.select(this.element)\n // .on('mousedown',_click)\n // .on('click',_click)\n .on('dblclick',_dblClick)\n .on('mousemove',_mousemove)\n .call(d3.drag()\n .container(that.element)\n .subject(dragsubject)\n .on(\"start\", dragstarted)\n .on(\"drag\", dragged)\n .on(\"end\", dragended))\n .call( d3.zoom().scaleExtent([0.5, 8])\n .on('zoom', zoomed)\n .on('end',function () {\n // render('zoom');\n })\n )\n // .on(\"mousedown.zoom\", null)\n .on(\"dblclick.zoom\", null);//取消双击时zoom 事件的触发\n // that._hasInit = true;\n\n\n //若x,y 有值,则为单击时的重新渲染\n function render(keyWord,target) {\n\n canvas.nodes = that.getRenderedNodes();\n canvas.links = that.getRenderedLinks();\n context.clearRect(0, 0, that.element.width, that.element.height);\n context.save();\n\n\n if(keyWord == 'dragStart'){\n canvas.doubleCanvas = drawLinkCanvas.call(that,canvas,keyWord,target);\n // canvas.doubleNodeCanvas = drawCache(canvas,keyWord,target);\n }else if(keyWord == 'drag'){\n canvas.doubleCanvas = drawLinkCanvas.call(that,canvas,keyWord,target);\n redrawNodeCanvas.call(that,canvas,target);\n drawCache.call(that,canvas);\n\n // canvas.doubleNodeCanvas = drawCache(canvas,keyWord,target);\n /*var nodeCanvas = canvas.nodeCanvas;\n var nodeContext = nodeCanvas.getContext('2d');\n nodeContext.clearRect(0,0,that.element.width,that.element.height);\n nodeContext.save();\n nodeContext.translate(canvas.transform.x, canvas.transform.y);\n nodeContext.scale(canvas.transform.k, canvas.transform.k);\n var nodes = canvas.nodes;\n for(var j=0;j= hideScale && currentScale <= hideScale) this.render(RENDER_TYPE.ZOOM);\n //panning don't need re-render, render only after zooming\n if(currentScale !== previousScale && currentScale > hideScale) this.render(RENDER_TYPE.ZOOM);\n}","function transform(k, x, y, duration) {\n var transformed = d3.zoomIdentity;\n if(typeof k === \"number\") transformed = transformed.scale(k);\n if(typeof x === \"number\" && typeof y === \"number\") transformed = transformed.translate(x, y);\n this.svgSelection(duration).call(this.zoom.transform, transformed);\n \n return this;\n}\n\nfunction focus(filter, duration){\n setTimeout(function(){\n var Nodes = this.getNodes(filter);\n if(!Nodes.length) return;\n \n var xAccessor = function(Node){return Node.x}, yAccessor = function(Node){return Node.y};\n var minX = d3.min(Nodes, xAccessor), maxX = d3.max(Nodes, xAccessor), minY = d3.min(Nodes, yAccessor), maxY = d3.max(Nodes, yAccessor);\n var xSpan = maxX - minX, ySpan = maxY - minY;\n var xCenter = (maxX + minX) / 2, yCenter = (maxY + minY) / 2;\n var canvasW = this.element.getBoundingClientRect().width,\n canvasH = this.element.getBoundingClientRect().height;\n \n var xScale = canvasW / xSpan,\n yScale = canvasH / ySpan;\n \n var scale = d3.min([xScale, yScale]);\n if(scale > this._config.maxScale) scale = this._config.maxScale;\n scale = scale === Infinity? 1: scale;\n scale -= scale/5;\n \n var transformed = d3.zoomIdentity\n .translate(canvasW / 2, canvasH / 2)\n .scale(scale)\n .translate(-xCenter, -yCenter);\n\n\n this.svgSelection(duration || 100).call(this.zoom.transform, transformed);\n }.bind(this), 0)\n}\n\nexport {transform, focus};","function keydowned() {\n if (!d3.event.metaKey) {\n switch (d3.event.keyCode) {\n //shift alt and space is used by d3 brush\n case 90:\n this.brush.show();\n break;\n }\n }\n}\n\nfunction keyupped() {\n if (!d3.event.metaKey) {\n switch (d3.event.keyCode) {\n case 90:\n this.brush.hide();\n break;\n }\n }\n}\n\nexport {keydowned, keyupped};","import {RENDER_TYPE} from \"./CONSTANT\";\n\nexport default function (currentNode) {\n var nudgedNodes = this.getSelectedNodes();\n for(var i = nudgedNodes.length; i--;){\n nudgedNodes[i]._nudge(d3.event.dx, d3.event.dy, true);\n this.updateDOM.addObj(nudgedNodes[i]);\n }\n this.delayRender(null, RENDER_TYPE.NUDGE);\n}","export default function assign(target, varArgs) { // .length of function is 2\n 'use strict';\n if (target == null) { // TypeError if undefined or null\n throw new TypeError('Cannot convert undefined or null to object');\n }\n \n var to = Object(target);\n \n for (var index = 1; index < arguments.length; index++) {\n var nextSource = arguments[index];\n \n if (nextSource != null) { // Skip over if undefined or null\n for (var nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n};","import assign from \"../utils/assign\";\n\nconst DEFAULT_CONFIG = {\n radius: 15,\n linkWidth: 3,\n zoomable: true,\n dragable: true,\n ifRender: true,\n color: \"#123456\",\n nodeLabelClipWidth: 500,\n linkColor: \"#a1a1a1\",\n background: \"#f1f1f1\",\n minScale: 0.1,\n maxScale: 3.0,\n scaleOfHideNodeLabel: 0.8,\n scaleOfHideLinkLabel: 0.8,\n icon: \"\",\n iconPrefix: \"\",\n mugshot: \"\",\n mugshotPrefix: \"\",\n \n insertNode: function(){},\n updateNode: function(){},\n \n bindGraphEvent: function(){},\n bindNodeEvent: function(){},\n bindLinkEvent: function(){},\n radiusFunc: null\n};\n\n\nfunction config(config) {\n if(!arguments.length) return this._config;\n \n this._config = assign({}, DEFAULT_CONFIG, this._config || {}, config || {});\n return this;\n}\n\nfunction selector(selector){\n if(!arguments.length) return this._selector;\n \n this._selector = selector;\n return this;\n}\n\nexport {selector, config}","import Node from \"../node/index\";\nimport Link from \"../link/index\";\nimport {RENDER_TYPE} from \"../CONSTANT\";\n\nexport default function UpdateDOM(graph){\n this.graph = graph;\n this._updateNodes = [];\n this._updateLinks = [];\n};\n\nUpdateDOM.prototype = {\n constructor: UpdateDOM,\n addObj: addObj,\n _addNode: addNode,\n _addLink: addLink,\n getNodesEle: getNodesEle,\n getLinksEle: getLinksEle,\n clearUpdateNodes: clearUpdateNodes,\n clearUpdateLinks: clearUpdateLinks\n \n};\n\nfunction addObj(Obj, renderType){\n if(Obj instanceof Node){\n this._addNode(Obj);\n if(renderType === RENDER_TYPE.NUDGE){\n var selectedNodes = this.graph.getSelectedNodes();\n var relatedLinks = this.graph.getRelatedLinks(selectedNodes);\n relatedLinks.forEach(function(Link){\n this._addLink(Link);\n }, this);\n \n }\n }\n if(Obj instanceof Link) this._addLink(Obj);\n}\n\nfunction addNode(Node){\n if(this._updateNodes.indexOf(Node) === -1) this._updateNodes.push(Node);\n}\n\nfunction addLink(Link){\n if(this._updateLinks.indexOf(Link) === -1) this._updateLinks.push(Link);\n}\n\nfunction getNodesEle(){\n return this._updateNodes.map(function(Node){return Node.element;});\n}\n\nfunction getLinksEle(){\n return this._updateLinks.map(function(Link){return Link.element;});\n}\n\nfunction clearUpdateNodes(){\n this._updateNodes = [];\n}\n\nfunction clearUpdateLinks(){\n this._updateLinks = [];\n}","import {_render, delayRender, render} from \"./render\";\nimport {clearNodes, clearLinks, hasNode, hasLink, addNode, addLink, removeNodes, removeLinks, removeLinksOfNode, nodes, links} from \"./data\";\nimport {getNodesOP, getNodes, getRenderedNodes, getSelectedNodes} from \"./getNodes\";\nimport {getLinksOP, getLinks, getSelectedLinks, getContainLinks, getAttachedLinks, getRelatedLinks, getRenderedLinks} from \"./getLinks\";\nimport init from \"./init/init\";\nimport draw from \"./draw/index\";\nimport zoomed from \"./zoomed\";\nimport {transform, focus} from \"./transform\";\nimport {keyupped, keydowned} from \"./keyboard\";\nimport draged from \"./draged\";\nimport {selector, config} from \"./config\";\nimport updateDOM from \"./draw/updateDOM\";\n\nfunction Graph(selector, config) {\n \n this.selector(selector);\n this.config(config);\n \n this._hasInit = false; //init only once\n \n this._nodes = [];\n this._nodesHash = {};\n this._links = [];\n this._linksHash = {};\n \n this.updateDOM = new updateDOM(this);\n}\n\nGraph.prototype = {\n constructor: Graph,\n selector: selector,\n config: config,\n _render: _render,\n delayRender: delayRender,\n render: render,\n nodes: nodes,\n getNodesOP: getNodesOP,\n getNodes: getNodes,\n getSelectedNodes: getSelectedNodes,\n getRenderedNodes: getRenderedNodes,\n _addNode: addNode,\n removeNodes: removeNodes,\n clearNodes: clearNodes,\n hasNode: hasNode,\n links: links,\n getLinks: getLinks,\n getLinksOP: getLinksOP,\n getSelectedLinks: getSelectedLinks,\n getRenderedLinks: getRenderedLinks,\n getContainLinks: getContainLinks,\n getAttachedLinks: getAttachedLinks,\n getRelatedLinks: getRelatedLinks,\n _addLink: addLink,\n hasLink: hasLink,\n removeLinks: removeLinks,\n _removeLinksOfNode: removeLinksOfNode,\n clearLinks: clearLinks,\n transform: transform,\n focus: focus,\n draged: draged,\n _keydowned: keydowned,\n _keyupped: keyupped,\n _init: init,\n _draw: draw,\n _zoomed: zoomed,\n currentTransform: function(){\n if(!this.element) return;\n return d3.zoomTransform(this.element);\n },\n brushSelection: function () {\n return this.svgSelection().select('g.brush');\n },\n svgSelection: function(duration){\n var svgSelection = d3.select(this.element);\n\n if(duration) svgSelection = svgSelection.transition(Math.random()).duration(duration);\n\n return svgSelection;\n },\n nodesSelection: function(){\n return this.svgSelection().select('.nodes').selectAll(\"g.node\");\n },\n linksSelection: function(){\n return this.svgSelection().select('g.links').selectAll(\".link\");\n }\n};\n\nexport default function (selector, config) {\n return new Graph(selector, config);\n}\n","export default function (id, Nodes) {\n return Nodes.filter(function(Node){\n return Node.id === id;\n })[0];\n}","export default function (str) {\n var tmp = document.implementation.createHTMLDocument();\n tmp.body.innerHTML = str;\n return tmp.body.children[0];\n}","import {DIRECTION} from \"../graph/CONSTANT\";\n\nexport default function direction(Links){\n var src = Links[0].getSourceId();\n var dst = Links[0].getTargetId();\n \n return Links.reduce(function(p, Link){\n if(p === DIRECTION.NONE) return Link.attr(\"direction\");\n if(Link.attr(\"direction\") === DIRECTION.NONE) return p;\n if(p === DIRECTION.DOUBLE || Link.attr(\"direction\") === DIRECTION.DOUBLE) return DIRECTION.DOUBLE;\n \n if(Link.getSourceId() === src){\n if((p === DIRECTION.S2D && Link.attr(\"direction\") === DIRECTION.D2S) || (p === DIRECTION.D2S && Link.attr(\"direction\") === DIRECTION.S2D)) return DIRECTION.DOUBLE;\n else return p;\n }else{\n if((p === DIRECTION.S2D && Link.attr(\"direction\") === DIRECTION.S2D) || (p === DIRECTION.D2S && Link.attr(\"direction\") === DIRECTION.D2S)) return DIRECTION.DOUBLE;\n else return p;\n }\n \n if(p === Link.attr(\"direction\")) return p;\n }, DIRECTION.NONE);\n}","export default function (maybeFunction) {\n return (maybeFunction instanceof Function)? maybeFunction(): maybeFunction;\n}","import filterBy from \"./filterBy\";\nimport filterById from \"./filterById\";\nimport getIds from \"./getIds\";\nimport toArray from \"./toArray\";\nimport getStrLen from \"./getStrLen\";\nimport getOffsetCoordinate from \"./getOffsetCoordinate\";\nimport getAbsUrl from \"./getAbsUrl\";\nimport parseHTML from \"./parseHTML\";\nimport direction from \"./deriveDirection\";\nimport safeExecute from \"./safeExecute\";\n\nvar utils = {\n filterBy: filterBy,\n filterById: filterById,\n getIds: getIds,\n getAbsUrl: getAbsUrl,\n toArray: toArray,\n getStrLen: getStrLen,\n getOffsetCoordinate: getOffsetCoordinate,\n parseHTML: parseHTML,\n direction: direction,\n safeExecute: safeExecute\n};\n\nexport default utils;\n"],"names":["remove","attr","addLink","addNode","updateDOM"],"mappings":"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"}