@gingkoo/pandora-explorer 0.0.1-alpha.5 → 0.0.1-alpha.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.min.js","sources":["../../node_modules/style-inject/dist/style-inject.es.js","../../src/enum.ts","../../src/store.tsx","../../src/components/icons/index.tsx","../../src/css.ts","../../src/components/Draggable/index.tsx","../../src/components/Dropdown/index.tsx","../../src/layout/components/explorer-head/index.tsx","../../src/components/tree/components/contextTypes.ts","../../src/components/tree/components/Indent.tsx","../../src/components/tree/components/utils/keyUtil.ts","../../src/components/tree/components/utils/treeUtil.ts","../../src/components/tree/components/TreeNode.tsx","../../src/components/tree/components/MotionTreeNode.tsx","../../src/components/tree/components/useUnmount.ts","../../src/components/tree/components/utils/diffUtil.ts","../../src/components/tree/components/NodeList.tsx","../../src/components/tree/components/util.tsx","../../src/components/tree/components/utils/conductUtil.ts","../../src/components/tree/components/Tree.tsx","../../src/components/tree/components/DropIndicator.tsx","../../src/components/menu/menulist.tsx","../../src/components/menu/index.tsx","../../src/components/tree/tree-item-table.tsx","../../src/components/tree/tree-item.tsx","../../src/components/tree/index.tsx","../../src/layout/components/explorer-menu/index.tsx","../../src/components/virtualScroll/index.tsx","../../src/components/tile/index.tsx","../../src/components/select-box/index.tsx","../../src/components/columns/index.tsx","../../src/components/modal/index.tsx","../../src/components/modal/modal-tab.tsx","../../src/layout/components/explorer-main/index.tsx","../../src/layout/components/explorer-info/index.tsx","../../src/layout/index.tsx","../../src/explorer.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","export const enum fileType {\n 'folder' = 'folder',\n 'file' = 'file',\n}\n\n// 接口状态\nexport enum ApiStatusEnum {\n READY = 1,\n LOADING,\n ERROR,\n EMPTY,\n SUCCESS,\n}\n","import React, { createContext } from 'react';\nimport { ApiStatusEnum } from './enum';\nimport { ExplorerItem, ExplorerProps, ColumnsProps } from './types';\n\ninterface ExampleContextProps extends ExplorerProps {\n pathDisplay: string;\n menutype: 'tile' | 'table' | 'column';\n menuSize: number;\n infoshow: boolean;\n curlist: ExplorerItem[];\n log?: string[];\n loading?: ApiStatusEnum;\n curInfo?: ExplorerItem | null;\n dataMap: { [key: string]: ExplorerItem } | null;\n\n columns?: ColumnsProps[];\n\n getIcons: (v: ExplorerItem, className: string, style?: any) => JSX.Element;\n\n setLog: React.Dispatch<React.SetStateAction<string[]>>;\n setCurInfo: React.Dispatch<React.SetStateAction<ExplorerItem | null>>;\n setMenuSize: React.Dispatch<React.SetStateAction<number>>;\n setCurList: React.Dispatch<React.SetStateAction<ExplorerItem[]>>;\n setInfoShow: React.Dispatch<React.SetStateAction<boolean>>;\n setLoading: React.Dispatch<React.SetStateAction<ApiStatusEnum>>;\n setPathDisplay: React.Dispatch<React.SetStateAction<string>>;\n setMenutype: React.Dispatch<React.SetStateAction<'tile' | 'table' | 'column'>>;\n}\n\nexport const ExampleContext: React.Context<ExampleContextProps> =\n createContext<ExampleContextProps>(null);\n","import './index.less';\nimport cx from 'classnames';\n\n//文件\nexport function FavoriteSvg() {\n return (\n <svg className='svg-icon' viewBox='0 0 1024 1024'>\n <path\n d='M640 211.2l41.6 89.6 249.6 38.4c25.6 6.4 48 22.4 54.4 44.8 9.6 25.6 3.2 54.4-16 70.4l-182.4 188.8 44.8 262.4c3.2 25.6-6.4 54.4-28.8 67.2-12.8 6.4-25.6 12.8-38.4 12.8-12.8 0-22.4-3.2-35.2-9.6L512 857.6l-108.8 60.8c-76.8-121.6-96-284.8-60.8-409.6 41.6-153.6 147.2-262.4 297.6-297.6z'\n fill='#FFECB3'\n ></path>\n <path\n d='M531.2 112l105.6 227.2c3.2 12.8 16 19.2 28.8 22.4l243.2 35.2c9.6 0 19.2 3.2 22.4 9.6 3.2 6.4-3.2 19.2-9.6 25.6L742.4 608c-9.6 9.6-12.8 22.4-12.8 35.2l44.8 256c3.2 6.4 3.2 19.2-6.4 28.8-9.6 6.4-25.6 0-28.8-3.2l-208-118.4c-9.6-3.2-12.8-6.4-19.2-6.4-6.4 0-12.8 3.2-19.2 6.4l-211.2 118.4c-3.2 3.2-19.2 9.6-28.8 3.2-9.6-9.6-6.4-16-6.4-25.6l41.6-256c6.4-16 0-32-9.6-38.4L96 432c-3.2-6.4-12.8-16-9.6-25.6 3.2-9.6 12.8-12.8 22.4-16l246.4-38.4c12.8-3.2 25.6-9.6 32-22.4l105.6-220.8c3.2-6.4 9.6-22.4 19.2-22.4 6.4 6.4 12.8 9.6 19.2 25.6zM512 28.8c-28.8 0-51.2 16-60.8 41.6l-108.8 233.6-249.6 38.4c-25.6 6.4-48 22.4-54.4 44.8-9.6 25.6-3.2 54.4 16 70.4l182.4 188.8L192 908.8c-3.2 25.6 6.4 54.4 28.8 67.2 12.8 6.4 25.6 12.8 38.4 12.8 12.8 0 22.4-3.2 35.2-9.6l217.6-121.6 217.6 121.6c12.8 6.4 22.4 9.6 35.2 9.6 12.8 0 28.8-6.4 38.4-12.8 19.2-16 32-41.6 28.8-67.2l-44.8-262.4 182.4-188.8c19.2-19.2 25.6-44.8 16-70.4-9.6-25.6-28.8-44.8-54.4-44.8l-249.6-38.4-108.8-233.6c-19.2-25.6-32-41.6-60.8-41.6z'\n fill='#FFC107'\n ></path>\n </svg>\n );\n}\n//个人空间\nexport function SpaceSvg() {\n return (\n <svg className='svg-icon' viewBox='0 0 1024 1024'>\n <path\n d='M155.75222656 382.06612461V849.50070312a37.49976563 37.49976563 0 0 0 37.49976563 37.49976563h637.49601562a37.49976563 37.49976563 0 0 0 37.49976563-37.49976563V382.06612461L512 144.58010908 155.75222656 382.06612461z m-58.31213554-51.26217979l393.74753906-262.49835937a37.49976563 37.49976563 0 0 1 41.62473984 0l393.74753906 262.49835937A37.49976563 37.49976563 0 0 1 943.24730469 362.00375v487.49695313a112.49929687 112.49929687 0 0 1-112.49929688 112.49929687H193.25199219a112.49929687 112.49929687 0 0 1-112.49929688-112.49929687V362.00375a37.49976563 37.49976563 0 0 1 16.68739571-31.19980518z'\n fill='#ffac33'\n ></path>\n <path\n d='M736.99859375 718.25152344m-224.99859375 0a224.99859375 224.99859375 0 1 0 449.9971875 0 224.99859375 224.99859375 0 1 0-449.9971875 0Z'\n fill='#ffdcb3'\n ></path>\n <path\n d='M437.00046875 924.50023437a37.49976563 37.49976563 0 1 1-74.99953125 1e-8V708.87658203c0-78.43076016 67.85582607-140.62412109 149.9990625-140.62412109s149.9990625 62.19336094 149.9990625 140.62412109V924.50023437a37.49976563 37.49976563 0 1 1-74.99953125 1e-8V708.87658203c0-35.47477793-32.88729463-65.62458984-74.99953125-65.62458984s-74.99953125 30.14981192-74.99953125 65.62458984V924.50023437z'\n fill='#ffac33'\n ></path>\n </svg>\n );\n}\n//网盘\nexport function NetdiskSvg() {\n return (\n <svg className='svg-icon' viewBox='0 0 1024 1024'>\n <path\n d='M950.66666667 263C941.66666667 254 930.41666667 249.5 919.16666667 249.5H476.66666667L377.66666667 150.5c-3.75-3.75-9-7.5-14.25-9.75-6-2.25-11.25-3.75-17.25-3.75H109.16666667c-11.25 0-23.25 4.5-31.5 13.5S64.16666667 170.75 64.16666667 182v262.5h900V294.5c0-11.25-4.5-23.25-13.5-31.5z'\n fill='#FFD766'\n ></path>\n <path\n d='M919.16666667 894.5H109.16666667c-24.75 0-45-20.25-45-45V369.5h900v480c0 24.75-20.25 45-45 45z'\n fill='#FFAC33'\n ></path>\n <path\n d='M709.16666667 790.25c0 9.75-7.5 17.25-17.25 17.25H351.41666667c-9.75 0-17.25-7.5-17.25-17.25 0 0 0-63.75 46.5-87 30-15 18-3 54.75-18 36-15 45-20.25 45-20.25v-34.5s-13.5-10.5-18-42.75c-8.25 2.25-11.25-9.75-12-18-0.75-7.5-5.25-31.5 5.25-29.25-2.25-15.75-3.75-30.75-3-38.25 2.25-27 28.5-54.75 68.25-57 46.5 2.25 65.25 30 68.25 57 0.75 7.5-0.75 21.75-3 38.25 10.5-2.25 6 21.75 5.25 29.25-0.75 8.25-3 20.25-12 18-4.5 33-18 42.75-18 42.75v34.5s8.25 5.25 45 20.25c36 15 24.75 3.75 54.75 18.75 48 21.75 48 86.25 48 86.25z'\n fill='#FFDCB3'\n ></path>\n </svg>\n );\n}\n\n//相册\nexport function AlbumSvg() {\n return (\n <svg className='svg-icon' viewBox='0 0 1024 1024'>\n <path\n d='M892.5344 179.0336H131.46666667a47.568 47.568 0 0 0-47.56906667 47.568v459.80586667h856.20053333V226.60266667a47.568 47.568 0 0 0-47.56266666-47.568z'\n fill='#98DCF0'\n ></path>\n <path\n d='M616.4096 495.9872l-165.27573333 190.42133333h330.5248l-165.248-190.42133333z'\n fill='#699B54'\n ></path>\n <path\n d='M587.80373333 686.4128L367.49866667 432.57066667 147.18933333 686.4128h-63.2928v110.98026667a47.568 47.568 0 0 0 47.56906667 47.57333333h761.06346667c26.2688 0 47.568-21.2992 47.568-47.57333333V686.40746667l-352.29333334 0.00533333z'\n fill='#80BB67'\n ></path>\n <path\n d='M718.11626667 337.5872c-0.016 35.02293333 28.36586667 63.4272 63.3952 63.44426667 35.02293333 0.01066667 63.42826667-28.37226667 63.44426666-63.40053334v-0.04373333c0.01066667-35.02933333-28.3712-63.43466667-63.3952-63.44533333-35.02933333-0.01066667-63.4336 28.37226667-63.44533333 63.39626666v0.04906667z'\n fill='#FFE68E'\n ></path>\n </svg>\n );\n}\n\n//回收站\nexport function RecycleSvg() {\n return (\n <svg className='svg-icon' viewBox='0 0 1024 1024'>\n <path d='M314.2 128h418.5v115.6H314.2z' fill='#92C4FF'></path>\n <path\n d='M608.4 767.7c-17.7 0-32-14.3-32-31.9V384c0-17.7 14.3-32 32-32s32 14.3 32 32v351.7c0 17.7-14.3 32-32 32 0.1 0 0 0 0 0z m-191.9 0c-17.6 0-31.9-14.3-31.9-31.9V384c0-17.6 14.3-32 31.9-32 17.6 0 32 14.3 32 31.9v351.8c0.1 17.7-14.2 32-32 32 0.1 0 0.1 0 0 0z m511.7-543.6H768.3v-63.9c0-52.9-42.7-95.9-95.2-95.9H352.6c-53 0.1-95.9 43-95.9 95.9v64H96.8c-17.6 0-31.9 14.3-31.9 32s14.3 31.9 31.9 31.9h831.4c17.7 0 32-14.3 32-32s-14.3-32-32-32z m-607.6-63.9c0-17.6 14.4-32 32-32h320.5c17.5 0 31.3 14.1 31.3 32v64H320.6v-64z'\n fill='#4383DB'\n ></path>\n <path\n d='M736.5 959.6H288.7c-52.9-0.1-95.9-43-95.9-95.9V383.5c-0.6-17.7 13.2-32.5 30.8-33.1 17.7-0.6 32.5 13.2 33.1 30.8V863.6c0 17.6 14.3 31.9 32 31.9h447.7c17.6 0 31.9-14.3 31.9-31.9V384.8c-0.6-17.7 13.2-32.5 30.8-33.1 17.7-0.6 32.5 13.2 33.1 30.8v481.1c0.1 53-42.8 95.9-95.7 96z'\n fill='#4383DB'\n ></path>\n </svg>\n );\n}\n\n//最近访问\nexport function RecentlySvg() {\n return (\n <svg className='svg-icon' viewBox='0 0 1024 1024'>\n <path\n d='M512 512m-469.333333 0a469.333333 469.333333 0 1 0 938.666666 0 469.333333 469.333333 0 1 0-938.666666 0Z'\n fill='#2070E5'\n ></path>\n <path\n d='M512 133.333333c-212.074667 0-384 171.925333-384 384s171.925333 384 384 384 384-171.925333 384-384-171.925333-384-384-384z m39.616 496.042667h-89.152c-11.733333 0-21.333333-9.6-21.333333-21.333333v-51.114667-235.413333c0-11.733333 9.6-21.333333 21.333333-21.333334h12.224c11.733333 0 21.333333 9.6 21.333333 21.333334v231.616c0 11.733333 9.6 21.333333 21.333334 21.333333h231.594666c11.733333 0 21.333333 9.6 21.333334 21.333333v12.224c0 11.733333-9.6 21.333333-21.333334 21.333334h-197.333333z'\n fill='#FFFFFF'\n ></path>\n </svg>\n );\n}\n\n//我的协作\nexport function LinkSvg() {\n return (\n <svg className='svg-icon' viewBox='0 0 1024 1024'>\n <path\n d='M832.85333333 675.84L407.3244448 512l425.52888853-163.84c34.13333333-13.65333333 52.33777813-52.33777813 38.6844448-88.74666667-13.65333333-34.13333333-52.33777813-52.33777813-88.74666666-38.6844448l-591.6444448 227.55555627C166.1155552 457.38666667 147.91111147 484.69333333 147.91111147 512s18.2044448 54.61333333 43.2355552 63.7155552l591.6444448 227.55555627c9.10222187 2.2755552 15.92888853 4.55111147 25.0311104 4.5511104 27.30666667 0 52.33777813-15.92888853 63.71555626-43.2355552 13.65333333-36.40888853-4.55111147-75.09333333-38.6844448-88.74666667z'\n fill='#92c4ff'\n ></path>\n <path\n d='M216.17777813 512m-159.2888896 0a159.28888853 159.28888853 0 1 0 318.57777814 0 159.28888853 159.28888853 0 1 0-318.57777814 0Z'\n fill='#2070e5'\n ></path>\n <path\n d='M807.82222187 284.4444448m-159.28888854 0a159.28888853 159.28888853 0 1 0 318.57777814 0 159.28888853 159.28888853 0 1 0-318.57777814 0Z'\n fill='#2070e5'\n ></path>\n <path\n d='M807.82222187 739.5555552m-159.28888854 0a159.28888853 159.28888853 0 1 0 318.57777814 0 159.28888853 159.28888853 0 1 0-318.57777814 0Z'\n fill='#2070e5'\n ></path>\n </svg>\n );\n}\n\n//\nexport function TextSvg() {\n return (\n <svg className='svg-icon' viewBox='0 0 1024 1024'>\n <path\n d='M725.333 375.467H298.667a17.067 17.067 0 1 0 0 34.133h426.666a17.067 17.067 0 1 0 0-34.133z m-426.666-102.4h170.666a17.067 17.067 0 1 0 0-34.134H298.667a17.067 17.067 0 1 0 0 34.134zM725.333 512H298.667a17.067 17.067 0 1 0 0 34.133h426.666a17.067 17.067 0 1 0 0-34.133z m0 136.533H298.667a17.067 17.067 0 1 0 0 34.134h426.666a17.067 17.067 0 1 0 0-34.134z m0 136.534H298.667a17.067 17.067 0 1 0 0 34.133h426.666a17.067 17.067 0 1 0 0-34.133z'\n fill='#92c4ff'\n ></path>\n <path\n d='M664.132 0H110.933v1024h802.134V248.934L664.132 0z m10.001 58.266l180.668 180.667H674.133V58.266z m-529.066 931.6V34.134H640v238.934h238.933v716.8H145.067z'\n fill='#bfbfbf'\n ></path>\n </svg>\n );\n}\n\n//属性\nexport function InfoSvg() {\n return (\n <svg className='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg'>\n <path d='M512 64C264.576 64 64 264.576 64 512c0 247.424 200.576 448 448 448s448-200.576 448-448C960 264.576 759.424 64 512 64zM512 848c-185.536 0-336-150.464-336-336S326.464 176 512 176 848 326.464 848 512 697.536 848 512 848zM512 400c-30.912 0-56 25.088-56 56l0 224C456 710.912 481.088 736 512 736s56-25.088 56-56l0-224C568 425.088 542.912 400 512 400zM512 232c-30.912 0-56 25.088-56 56S481.088 344 512 344 568 318.912 568 288 542.912 232 512 232z'></path>\n </svg>\n );\n}\n\n//放大\nexport function ZoomUpSvg() {\n return (\n <svg className='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg'>\n <path d='M448.2 184c70.6 0 136.9 27.5 186.8 77.4s77.4 116.2 77.4 186.8S684.9 585.1 635 635s-116.2 77.4-186.8 77.4-136.9-27.5-186.8-77.4S184 518.7 184 448.2c0-70.6 27.5-136.9 77.4-186.8S377.6 184 448.2 184m0-88c-90.1 0-180.3 34.4-249 103.2-137.5 137.5-137.5 360.5 0 498.1 68.8 68.8 158.9 103.2 249 103.2s180.3-34.4 249-103.2c137.5-137.5 137.5-360.5 0-498.1C628.4 130.4 538.3 96 448.2 96z'></path>\n <path d='M697.2 653.2c-11.3 0-22.5 4.3-31.1 12.9-17.2 17.2-17.2 45.1 0 62.3l186.8 186.8c8.6 8.6 19.9 12.9 31.1 12.9 11.3 0 22.5-4.3 31.1-12.9 17.2-17.2 17.2-45.1 0-62.3L728.3 666.1c-8.6-8.6-19.8-12.9-31.1-12.9zM567.3 417.1c-8-8-19-12.9-31.1-12.9h-176c-24.3 0-44.1 19.7-44.1 44.1 0 12.2 4.9 23.2 12.9 31.1 8 8 19 12.9 31.1 12.9h176.1c24.3 0 44.1-19.7 44.1-44.1 0-12.1-5-23.2-13-31.1z'></path>\n <path d='M479.3 329c-8-8-19-12.9-31.1-12.9-24.3 0-44.1 19.7-44.1 44.1v176.1c0 12.2 4.9 23.2 12.9 31.1 8 8 19 12.9 31.1 12.9 24.3 0 44.1-19.7 44.1-44.1l0.1-176c-0.1-12.2-5-23.2-13-31.2z'></path>\n </svg>\n );\n}\n\n//收藏文件夹\nexport function FavSvg() {\n return (\n <svg className='icon' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'>\n <path d='M928.891803 415.759306c-4.862772-14.704022-18.294016-25.021413-35.998232-27.56697L655.722604 354.079209 549.658066 141.429964c-7.909044-15.885669-21.976165-25.384918-37.634515-25.384918s-29.737759 9.499249-37.634515 25.362391L368.313235 354.079209 131.141244 388.192336c-17.726743 2.545557-31.180514 12.862948-36.009496 27.589497-4.841269 14.726549-0.057342 30.908142 12.738025 43.247848L279.510565 624.578952l-40.52105 233.762214c-2.420634 13.95551 0.670692 26.818458 8.693395 36.226574 7.260879 8.545945 18.055434 13.409741 29.6241 13.409741 7.499461 0 15.090054-1.95371 22.578252-5.864202L512.023551 791.754266l212.127027 110.359013c19.022049 9.907808 40.226151 6.500079 52.202352-7.545539 8.043182-9.408117 11.089454-22.271065 8.682131-36.226574l-40.498523-233.762214L916.165041 459.029681C928.982935 446.643897 933.710544 430.485856 928.891803 415.759306zM690.719406 592.580296c-7.13698 6.909662-10.409547 16.81747-8.726162 26.591139l36.77132 212.263213-192.607334-100.221839c-8.861324-4.635453-19.408081-4.635453-28.270429 0l-192.627814 100.221839 36.793847-212.263213c1.692601-9.77367-1.568702-19.681477-8.726162-26.591139l-155.846254-150.32303 215.365803-30.975723c9.885281-1.431492 18.431226-7.568066 22.862912-16.431438l96.314419-193.104978 96.315443 193.104978c4.430662 8.863372 12.976607 14.998922 22.861888 16.431438l215.37809 30.975723L690.719406 592.580296z'></path>\n </svg>\n );\n}\n\n//分享\nexport function ShareSvg() {\n return (\n <svg className='icon' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'>\n <path\n d='M506.8 107.1C286 107.1 107.1 286 107.1 506.8S286 906.5 506.8 906.5s399.7-178.9 399.7-399.7c0.1-220.7-178.9-399.7-399.7-399.7z m243.7 404.2L538.9 668.9c-3.7 2.9-8.4 4.6-13.5 4.6-11.8 0-21.4-9.1-22.2-20.6v-77.7h-59c-73.3 0-139.6 28.4-188.9 74.8-1.6 1.2-3.5 2-5.7 2-5.1 0-9.3-4.1-9.3-9.2 0-0.5 0.1-1 0.1-1.5 24.7-121.4 134.2-213.5 262.8-218.6v-78.4c0.9-11.5 10.4-20.6 22.2-20.6 4.8 0 9.4 1.6 13 4.3l212.3 158.1c3.5 3.1 5.8 7.6 5.8 12.5 0.1 5.1-2.3 9.6-6 12.7z'\n fill='#31dc48'\n ></path>\n </svg>\n );\n}\n//收藏标签\nexport function FavTagSvg() {\n return (\n <svg className='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg'>\n <path d='M768 42.666667a128 128 0 0 1 128 128v768a42.666667 42.666667 0 0 1-57.642667 39.936l-326.4-122.368-326.314666 122.368a42.666667 42.666667 0 0 1-57.386667-35.072L128 938.666667V170.666667a128 128 0 0 1 128-128z m0 85.333333H256a42.666667 42.666667 0 0 0-42.666667 42.666667v706.389333l283.690667-106.325333a42.666667 42.666667 0 0 1 24.064-1.749334l5.888 1.706667L810.666667 877.098667V170.666667a42.666667 42.666667 0 0 0-37.674667-42.368L768 128z m-235.178667 119.765333a36.693333 36.693333 0 0 1 9.386667 9.386667l21.632 31.36a42.666667 42.666667 0 0 0 22.954667 16.682667l36.522666 10.88a36.693333 36.693333 0 0 1 18.688 57.429333l-23.210666 30.293333a42.666667 42.666667 0 0 0-8.746667 26.965334l0.938667 38.144a36.693333 36.693333 0 0 1-48.810667 35.456l-35.968-12.672a42.666667 42.666667 0 0 0-28.416 0l-35.968 12.672a36.693333 36.693333 0 0 1-48.810667-35.456l0.938667-38.144a42.666667 42.666667 0 0 0-8.746667-26.965334l-23.210666-30.293333a36.693333 36.693333 0 0 1 18.688-57.429333l36.522666-10.88a42.666667 42.666667 0 0 0 22.954667-16.64l21.674667-31.445334a36.693333 36.693333 0 0 1 50.986666-9.386666z'></path>\n </svg>\n );\n}\n\nexport function ArrowDown() {\n return (\n <svg className='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg'>\n <path d='M862.485 481.154H234.126l203.3-203.3c12.497-12.497 12.497-32.758 0-45.255s-32.758-12.497-45.255 0L135.397 489.373c-12.497 12.497-12.497 32.758 0 45.254l256.774 256.775c6.249 6.248 14.438 9.372 22.627 9.372s16.379-3.124 22.627-9.372c12.497-12.497 12.497-32.759 0-45.255l-203.3-203.301h628.36c17.036 0 30.846-13.81 30.846-30.846s-13.81-30.846-30.846-30.846z'></path>\n </svg>\n );\n}\n\nexport function LoadingSvg() {\n return (\n <svg className='icon' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'>\n <path\n d='M512 42.666667c-25.6 0-42.666667 17.066667-42.666667 42.666666v170.666667c0 25.6 17.066667 42.666667 42.666667 42.666667s42.666667-17.066667 42.666667-42.666667V85.333333c0-25.6-17.066667-42.666667-42.666667-42.666666z m0 682.666666c-25.6 0-42.666667 17.066667-42.666667 42.666667v170.666667c0 25.6 17.066667 42.666667 42.666667 42.666666s42.666667-17.066667 42.666667-42.666666v-170.666667c0-25.6-17.066667-42.666667-42.666667-42.666667zM238.933333 179.2c-17.066667-17.066667-42.666667-12.8-59.733333 4.266667-17.066667 17.066667-17.066667 42.666667 0 59.733333L298.666667 362.666667c17.066667 17.066667 42.666667 17.066667 59.733333 4.266666 17.066667-17.066667 17.066667-42.666667 4.266667-59.733333l-4.266667-4.266667-119.466667-123.733333zM725.333333 661.333333c-17.066667-17.066667-42.666667-12.8-59.733333 4.266667-17.066667 17.066667-17.066667 42.666667 0 59.733333l119.466667 119.466667c17.066667 17.066667 42.666667 17.066667 59.733333 4.266667s17.066667-42.666667 4.266667-59.733334l-4.266667-4.266666-119.466667-123.733334zM298.666667 512c0-25.6-17.066667-42.666667-42.666667-42.666667H85.333333c-25.6 0-42.666667 17.066667-42.666666 42.666667s17.066667 42.666667 42.666666 42.666667h170.666667c25.6 0 42.666667-17.066667 42.666667-42.666667z m640-42.666667h-170.666667c-25.6 0-42.666667 17.066667-42.666667 42.666667s17.066667 42.666667 42.666667 42.666667h170.666667c25.6 0 42.666667-17.066667 42.666666-42.666667s-17.066667-42.666667-42.666666-42.666667zM302.933333 661.333333l-119.466666 119.466667c-17.066667 17.066667-17.066667 42.666667-4.266667 59.733333s42.666667 17.066667 59.733333 4.266667l4.266667-4.266667 119.466667-119.466666c17.066667-17.066667 17.066667-42.666667 4.266666-59.733334s-46.933333-17.066667-64 0z m388.266667-285.866666c12.8 0 21.333333-4.266667 29.866667-12.8l119.466666-119.466667c17.066667-17.066667 17.066667-42.666667 4.266667-59.733333-17.066667-17.066667-42.666667-17.066667-59.733333-4.266667l-4.266667 4.266667-119.466667 119.466666c-17.066667 17.066667-17.066667 42.666667 0 59.733334 8.533333 8.533333 21.333333 12.8 29.866667 12.8z'\n p-id='22183'\n ></path>\n </svg>\n );\n}\n//箭头向左\nexport function ArrowLeftSvg() {\n return (\n <svg className='icon' viewBox='0 0 1000 1000' version='1.1' xmlns='http://www.w3.org/2000/svg'>\n <path d='M439.312 227.986l-257.492 257.492c-20.11 20.11-20.11 52.709 0 72.819l257.492 257.492c20.11 20.11 52.709 20.11 72.819 0s20.11-52.709 0-72.819l-169.585-169.585h493.664c28.453 0 51.499-23.046 51.499-51.499s-23.046-51.499-51.499-51.499h-493.664l169.585-169.585c10.043-10.042 15.089-23.226 15.089-36.41s-5.021-26.367-15.089-36.41c-20.11-20.11-52.709-20.11-72.819 0z'></path>\n </svg>\n );\n}\n\n//搜索\nexport function SearchSvg() {\n return (\n <svg className='icon' viewBox='0 0 1109 1024' version='1.1' xmlns='http://www.w3.org/2000/svg'>\n <path\n d='M176.213333 139.605333c-166.656 166.656-169.301333 434.090667-5.973333 597.333334 158.890667 159.061333 416.682667 160.682667 583.936 6.826666l3.242667-2.986666 223.146666 223.232c14.848 14.933333 38.4 16.213333 54.698667 5.12l5.802667-4.864a42.837333 42.837333 0 0 0-0.170667-60.586667L813.738667 676.522667c119.210667-166.144 106.325333-396.458667-40.106667-542.976-163.328-163.242667-430.762667-160.597333-597.418667 6.058666z m60.330667 60.330667C370.090667 66.389333 583.509333 64.256 713.216 193.962667c111.104 111.018667 126.634667 285.866667 40.789333 418.730666l-9.557333 14.08-20.138667 28.16-27.904 26.026667c-134.4 123.562667-340.053333 121.514667-465.92-4.266667-129.706667-129.706667-127.488-343.210667 6.058667-476.757333z'\n fill='#666666'\n ></path>\n </svg>\n );\n}\n\nexport function ArrowRightSvg() {\n return (\n <svg className='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg'>\n <path d='M862.485 481.154H234.126l203.3-203.3c12.497-12.497 12.497-32.758 0-45.255s-32.758-12.497-45.255 0L135.397 489.373c-12.497 12.497-12.497 32.758 0 45.254l256.774 256.775c6.249 6.248 14.438 9.372 22.627 9.372s16.379-3.124 22.627-9.372c12.497-12.497 12.497-32.759 0-45.255l-203.3-203.301h628.36c17.036 0 30.846-13.81 30.846-30.846s-13.81-30.846-30.846-30.846z'></path>\n </svg>\n );\n}\nexport function ArrowTopSvg() {\n return (\n <svg className='icon' viewBox='0 0 1000 1000' version='1.1' xmlns='http://www.w3.org/2000/svg'>\n <path d='M796.014 439.312l-257.492-257.492c-20.11-20.11-52.709-20.11-72.819 0l-257.492 257.492c-20.11 20.11-20.11 52.709 0 72.819s52.709 20.11 72.819 0l169.585-169.585v493.664c0 28.453 23.046 51.499 51.499 51.499s51.499-23.046 51.499-51.499v-493.664l169.585 169.585c10.042 10.043 23.226 15.089 36.41 15.089s26.367-5.021 36.41-15.089c20.11-20.11 20.11-52.709 0-72.819z'></path>\n </svg>\n );\n}\n\nexport function AngleRightSvg() {\n return (\n <svg className='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg'>\n <path d='M761.055557 532.128047c0.512619-0.992555 1.343475-1.823411 1.792447-2.848649 8.800538-18.304636 5.919204-40.703346-9.664077-55.424808L399.935923 139.743798c-19.264507-18.208305-49.631179-17.344765-67.872168 1.888778-18.208305 19.264507-17.375729 49.631179 1.888778 67.872168l316.960409 299.839269L335.199677 813.631716c-19.071845 18.399247-19.648112 48.767639-1.247144 67.872168 9.407768 9.791372 21.984142 14.688778 34.560516 14.688778 12.000108 0 24.000215-4.479398 33.311652-13.439914l350.048434-337.375729c0.672598-0.672598 0.927187-1.599785 1.599785-2.303346 0.512619-0.479935 1.056202-0.832576 1.567101-1.343475C757.759656 538.879828 759.199462 535.391265 761.055557 532.128047z'></path>\n </svg>\n );\n}\n\nexport function OutdentSvg() {\n return (\n <svg className='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg'>\n <path d='M64 128c0-35.4 28.6-64 64-64h768c35.4 0 64 28.6 64 64s-28.6 64-64 64H128C92.6 192 64 163.4 64 128z m384 256c0-35.4 28.6-64 64-64h384c35.4 0 64 28.6 64 64s-28.6 64-64 64H512c-35.4 0-64-28.6-64-64z m64 192h384c35.4 0 64 28.6 64 64s-28.6 64-64 64H512c-35.4 0-64-28.6-64-64s28.6-64 64-64zM64 896c0-35.4 28.6-64 64-64h768c35.4 0 64 28.6 64 64s-28.6 64-64 64H128c-35.4 0-64-28.6-64-64z m0.4-358.8c-16.4-12.8-16.4-37.8 0-50.6L268.2 328c21-16.4 51.6-1.4 51.6 25.2v317.4c0 26.6-30.6 41.6-51.6 25.2L64.4 537.2z'></path>\n </svg>\n );\n}\n\nexport function CaretRight() {\n return (\n <svg className='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg'>\n <path d='M159.24 128.8v766.4c0 80.38 92.44 125.62 156 76.3l512.18-398.12a96.62 96.62 0 0 0-2.88-154.74L312.28 50.34C248.36 4.38 159.24 50 159.24 128.8z'></path>\n </svg>\n );\n}\n\nexport function CircleCheckSvg() {\n return (\n <svg className='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg'>\n <path d='M512 981.333333C252.8 981.333333 42.666667 771.2 42.666667 512S252.8 42.666667 512 42.666667s469.333333 210.133333 469.333333 469.333333-210.133333 469.333333-469.333333 469.333333z m0-85.333333a384 384 0 1 0 0-768 384 384 0 0 0 0 768z m-85.333333-316.330667l225.834666-225.834666 60.330667 60.330666L426.666667 700.330667l-158.165334-158.165334 60.330667-60.330666L426.666667 579.669333z'></path>\n </svg>\n );\n}\n\n//分享链接\nexport function ShareLinkSvg() {\n return (\n <svg className='svg-icon' viewBox='0 0 1024 1024'>\n <path\n d='M832.85333333 675.84L407.3244448 512l425.52888853-163.84c34.13333333-13.65333333 52.33777813-52.33777813 38.6844448-88.74666667-13.65333333-34.13333333-52.33777813-52.33777813-88.74666666-38.6844448l-591.6444448 227.55555627C166.1155552 457.38666667 147.91111147 484.69333333 147.91111147 512s18.2044448 54.61333333 43.2355552 63.7155552l591.6444448 227.55555627c9.10222187 2.2755552 15.92888853 4.55111147 25.0311104 4.5511104 27.30666667 0 52.33777813-15.92888853 63.71555626-43.2355552 13.65333333-36.40888853-4.55111147-75.09333333-38.6844448-88.74666667z'\n fill='#92c4ff'\n ></path>\n <path\n d='M216.17777813 512m-159.2888896 0a159.28888853 159.28888853 0 1 0 318.57777814 0 159.28888853 159.28888853 0 1 0-318.57777814 0Z'\n fill='#2070e5'\n ></path>\n <path\n d='M807.82222187 284.4444448m-159.28888854 0a159.28888853 159.28888853 0 1 0 318.57777814 0 159.28888853 159.28888853 0 1 0-318.57777814 0Z'\n fill='#2070e5'\n ></path>\n <path\n d='M807.82222187 739.5555552m-159.28888854 0a159.28888853 159.28888853 0 1 0 318.57777814 0 159.28888853 159.28888853 0 1 0-318.57777814 0Z'\n fill='#2070e5'\n ></path>\n </svg>\n );\n}\n\nexport function UpdateSvg() {\n return (\n <svg className='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg'>\n <path d='M512 919.552c-224.768 0-407.552-182.784-407.552-407.552 0-8.704 0.512-17.408 1.024-26.112l71.68 4.608c-0.512 7.168-0.512 14.336-0.512 21.504 0 185.344 150.528 335.872 335.872 335.872 86.528 0 168.448-32.768 230.912-92.16l49.152 52.224C716.288 880.128 616.96 919.552 512 919.552zM919.552 512h-71.68c0-11.776-0.512-23.552-2.048-35.328-17.92-171.52-161.28-300.544-334.336-300.544-67.584 0-132.096 19.968-187.904 57.344L284.16 174.08c67.072-45.568 145.92-69.632 227.84-69.632 209.408 0 384 156.672 405.504 365.056 1.536 13.824 2.048 28.16 2.048 42.496z'></path>\n <path d='M140.288 290.816L28.16 491.52c-3.072 5.12 1.024 11.776 6.656 11.776H258.56c6.144 0 9.728-6.144 6.656-11.776L153.6 290.816c-3.072-5.632-10.752-5.632-13.312 0zM870.4 675.84L758.272 475.136c-3.072-5.12 1.024-11.776 6.656-11.776h223.744c6.144 0 9.728 6.144 6.656 11.776L883.712 675.84c-2.56 5.12-10.24 5.12-13.312 0zM270.336 202.24a35.84 35.84 0 1 0 71.68 0 35.84 35.84 0 1 0-71.68 0zM728.576 784.896a35.84 35.84 0 1 0 71.68 0 35.84 35.84 0 1 0-71.68 0z'></path>\n </svg>\n );\n}\n\n//空数据\nexport function NullDataSvg() {\n return (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n xmlnsXlink='http://www.w3.org/1999/xlink'\n viewBox='0 0 512 512'\n >\n <defs>\n <linearGradient\n gradientUnits='userSpaceOnUse'\n y2='181.12'\n x2='1'\n y1='91.35'\n x1='1'\n id='color_line_26'\n >\n <stop stopColor='#81cfff' offset='0' />\n <stop stopOpacity='0' stopColor='#5ecfff' offset='1' />\n </linearGradient>\n <linearGradient\n xlinkHref='#color_line_26'\n y2='161.88'\n x2='455.01'\n y1='72.11'\n x1='455.01'\n id='color_line_26-2'\n />\n <linearGradient\n xlinkHref='#color_line_26'\n y2='199.51'\n x2='40.9'\n y1='143.88'\n x1='40.9'\n id='color_line_26-3'\n />\n <linearGradient\n xlinkHref='#color_line_26'\n y2='123.17'\n x2='64.97'\n y1='95.36'\n x1='64.97'\n id='color_line_26-4'\n />\n <linearGradient\n xlinkHref='#color_line_26'\n y2='132.02'\n x2='397.23'\n y1='104.2'\n x1='397.23'\n id='color_line_26-5'\n />\n <linearGradient\n xlinkHref='#color_line_26'\n y2='189.13'\n x2='424.75'\n y1='133.49'\n x1='424.75'\n id='color_line_26-6'\n />\n <linearGradient\n xlinkHref='#color_line_26'\n y2='262.12'\n x2='232.75'\n y1='224.43'\n x1='232.75'\n id='color_line_26-7'\n />\n <linearGradient\n xlinkHref='#color_line_26'\n y2='204.03'\n x2='349.36'\n y1='26.68'\n x1='349.36'\n id='color_line_26-8'\n />\n <linearGradient\n xlinkHref='#color_line_26'\n y2='204.03'\n x2='201.45'\n y1='55.61'\n x1='201.45'\n id='color_line_26-9'\n />\n <linearGradient\n xlinkHref='#color_line_26'\n y2='204.03'\n x2='122.98'\n y1='26.68'\n x1='122.98'\n id='color_line_26-10'\n />\n <linearGradient\n xlinkHref='#color_line_26'\n y2='209.54'\n x2='273.51'\n y1='0'\n x1='273.51'\n id='color_line_26-11'\n />\n </defs>\n <title>暂无历史数据</title>\n <g>\n <path\n id='svg_7'\n fill='url(#color_line_26-7)'\n opacity='0.4'\n d='m412.28,262.12c-23,-23 -61,-37.69 -179.53,-37.69s-156.51,14.67 -179.54,37.69l359.07,0z'\n className='cls-7'\n />\n <g id='svg_57'>\n <line\n id='svg_1'\n stroke='url(#color_line_26)'\n strokeWidth='2px'\n strokeMiterlimit='10'\n fill='none'\n y2='167.12'\n x2='1'\n y1='77.35'\n x1='1'\n className='cls-1'\n />\n <line\n id='svg_2'\n stroke='url(#color_line_26-2)'\n strokeWidth='2px'\n strokeMiterlimit='10'\n fill='none'\n y2='147.88'\n x2='455.01'\n y1='58.11'\n x1='455.01'\n className='cls-2'\n />\n <line\n id='svg_3'\n stroke='url(#color_line_26-3)'\n strokeWidth='2px'\n strokeMiterlimit='10'\n fill='none'\n y2='185.51'\n x2='40.9'\n y1='129.88'\n x1='40.9'\n className='cls-3'\n />\n <line\n id='svg_4'\n stroke='url(#color_line_26-4)'\n strokeWidth='2px'\n strokeMiterlimit='10'\n fill='none'\n y2='109.17'\n x2='64.97'\n y1='81.36'\n x1='64.97'\n className='cls-4'\n />\n <line\n id='svg_5'\n stroke='url(#color_line_26-5)'\n strokeWidth='2px'\n strokeMiterlimit='10'\n fill='none'\n y2='118.02'\n x2='397.23'\n y1='90.2'\n x1='397.23'\n className='cls-5'\n />\n <line\n id='svg_6'\n stroke='url(#color_line_26-6)'\n strokeWidth='2px'\n strokeMiterlimit='10'\n fill='none'\n y2='175.13'\n x2='424.75'\n y1='119.49'\n x1='424.75'\n className='cls-6'\n />\n <g id='svg_8' opacity='0.7' className='cls-8'>\n <path\n id='svg_9'\n fill='url(#color_line_26-8)'\n opacity='0.4'\n d='m381.66,33.68l-62.59,0a2.71,2.71 0 0 0 -2.82,2.59l0,172.17a2.71,2.71 0 0 0 2.82,2.59l62.59,0a2.72,2.72 0 0 0 2.82,-2.59l0,-172.17a2.72,2.72 0 0 0 -2.82,-2.59zm-52.36,120.32a0.9,0.9 0 0 1 -0.95,0.87l-3.6,0a0.9,0.9 0 0 1 -0.95,-0.87l0,-19.73a0.91,0.91 0 0 1 0.95,-0.87l3.6,0a0.91,0.91 0 0 1 0.95,0.87l0,19.73zm0,-30.23a0.91,0.91 0 0 1 -0.95,0.87l-3.6,0a0.91,0.91 0 0 1 -0.95,-0.87l0,-19.77a0.91,0.91 0 0 1 0.95,-0.87l3.6,0a0.91,0.91 0 0 1 0.95,0.87l0,19.77zm0,-30.24a0.91,0.91 0 0 1 -0.95,0.87l-3.6,0a0.91,0.91 0 0 1 -0.95,-0.87l0,-19.73a0.91,0.91 0 0 1 0.95,-0.87l3.6,0a0.91,0.91 0 0 1 0.95,0.87l0,19.73zm0,-30.24a0.91,0.91 0 0 1 -0.95,0.87l-3.6,0a0.91,0.91 0 0 1 -0.95,-0.87l0,-19.73a0.91,0.91 0 0 1 0.95,-0.87l3.6,0a0.91,0.91 0 0 1 0.95,0.87l0,19.73zm11.7,90.71a0.9,0.9 0 0 1 -0.94,0.87l-3.61,0a0.91,0.91 0 0 1 -0.95,-0.87l0,-19.73a0.92,0.92 0 0 1 0.95,-0.87l3.61,0a0.91,0.91 0 0 1 0.94,0.87l0,19.73zm0,-30.23a0.91,0.91 0 0 1 -0.94,0.87l-3.61,0a0.92,0.92 0 0 1 -0.95,-0.87l0,-19.77a0.92,0.92 0 0 1 0.95,-0.87l3.61,0a0.91,0.91 0 0 1 0.94,0.87l0,19.77zm0,-30.24a0.91,0.91 0 0 1 -0.94,0.87l-3.61,0a0.92,0.92 0 0 1 -0.95,-0.87l0,-19.73a0.92,0.92 0 0 1 0.95,-0.87l3.61,0a0.91,0.91 0 0 1 0.94,0.87l0,19.73zm0,-30.24a0.91,0.91 0 0 1 -0.94,0.87l-3.61,0a0.92,0.92 0 0 1 -0.95,-0.87l0,-19.73a0.92,0.92 0 0 1 0.95,-0.87l3.61,0a0.91,0.91 0 0 1 0.94,0.87l0,19.73zm11.7,90.71a0.9,0.9 0 0 1 -0.94,0.87l-3.61,0a0.9,0.9 0 0 1 -0.94,-0.87l0,-19.73a0.91,0.91 0 0 1 0.94,-0.87l3.61,0a0.91,0.91 0 0 1 0.94,0.87l0,19.73zm0,-30.23a0.91,0.91 0 0 1 -0.94,0.87l-3.61,0a0.91,0.91 0 0 1 -0.94,-0.87l0,-19.77a0.91,0.91 0 0 1 0.94,-0.87l3.61,0a0.91,0.91 0 0 1 0.94,0.87l0,19.77zm0,-30.24a0.91,0.91 0 0 1 -0.94,0.87l-3.61,0a0.91,0.91 0 0 1 -0.94,-0.87l0,-19.73a0.91,0.91 0 0 1 0.94,-0.87l3.61,0a0.91,0.91 0 0 1 0.94,0.87l0,19.73zm0,-30.24a0.91,0.91 0 0 1 -0.94,0.87l-3.61,0a0.91,0.91 0 0 1 -0.94,-0.87l0,-19.73a0.91,0.91 0 0 1 0.94,-0.87l3.61,0a0.91,0.91 0 0 1 0.94,0.87l0,19.73zm11.7,90.71a0.9,0.9 0 0 1 -0.94,0.87l-3.61,0a0.9,0.9 0 0 1 -0.94,-0.87l0,-19.73a0.91,0.91 0 0 1 0.94,-0.87l3.61,0a0.91,0.91 0 0 1 0.94,0.87l0,19.73zm0,-30.23a0.91,0.91 0 0 1 -0.94,0.87l-3.61,0a0.91,0.91 0 0 1 -0.94,-0.87l0,-19.77a0.91,0.91 0 0 1 0.94,-0.87l3.61,0a0.91,0.91 0 0 1 0.94,0.87l0,19.77zm0,-30.24a0.91,0.91 0 0 1 -0.94,0.87l-3.61,0a0.91,0.91 0 0 1 -0.94,-0.87l0,-19.73a0.91,0.91 0 0 1 0.94,-0.87l3.61,0a0.91,0.91 0 0 1 0.94,0.87l0,19.73zm0,-30.24a0.91,0.91 0 0 1 -0.94,0.87l-3.61,0a0.91,0.91 0 0 1 -0.94,-0.87l0,-19.73a0.91,0.91 0 0 1 0.94,-0.87l3.61,0a0.91,0.91 0 0 1 0.94,0.87l0,19.73zm11.71,90.71a0.91,0.91 0 0 1 -0.95,0.87l-3.61,0a0.9,0.9 0 0 1 -0.94,-0.87l0,-19.73a0.91,0.91 0 0 1 0.94,-0.87l3.61,0a0.92,0.92 0 0 1 0.95,0.87l0,19.73zm0,-30.23a0.92,0.92 0 0 1 -0.95,0.87l-3.61,0a0.91,0.91 0 0 1 -0.94,-0.87l0,-19.77a0.91,0.91 0 0 1 0.94,-0.87l3.61,0a0.92,0.92 0 0 1 0.95,0.87l0,19.77zm0,-30.24a0.92,0.92 0 0 1 -0.95,0.87l-3.61,0a0.91,0.91 0 0 1 -0.94,-0.87l0,-19.73a0.91,0.91 0 0 1 0.94,-0.87l3.61,0a0.92,0.92 0 0 1 0.95,0.87l0,19.73zm0,-30.24a0.92,0.92 0 0 1 -0.95,0.87l-3.61,0a0.91,0.91 0 0 1 -0.94,-0.87l0,-19.73a0.91,0.91 0 0 1 0.94,-0.87l3.61,0a0.92,0.92 0 0 1 0.95,0.87l0,19.73z'\n className='cls-9'\n />\n <path\n id='svg_10'\n fill='url(#color_line_26-9)'\n opacity='0.4'\n d='m232.1,62.61l-59.3,0a2.71,2.71 0 0 0 -2.8,2.59l0,143.24a2.71,2.71 0 0 0 2.8,2.56l59.3,0a2.71,2.71 0 0 0 2.82,-2.59l0,-143.21a2.71,2.71 0 0 0 -2.82,-2.59zm-48.63,103.76a1.16,1.16 0 0 1 -1.2,1.11l-5.4,0a1.16,1.16 0 0 1 -1.2,-1.11l0,-5.22a1.15,1.15 0 0 1 1.2,-1.1l5.4,0a1.15,1.15 0 0 1 1.2,1.1l0,5.22zm0,-12.88a1.15,1.15 0 0 1 -1.2,1.1l-5.4,0a1.15,1.15 0 0 1 -1.2,-1.1l0,-5.22a1.16,1.16 0 0 1 1.2,-1.11l5.4,0a1.16,1.16 0 0 1 1.2,1.11l0,5.22zm0,-12.89a1.16,1.16 0 0 1 -1.2,1.11l-5.4,0a1.16,1.16 0 0 1 -1.2,-1.11l0,-5.22a1.15,1.15 0 0 1 1.2,-1.1l5.4,0a1.15,1.15 0 0 1 1.2,1.1l0,5.22zm0,-12.88a1.15,1.15 0 0 1 -1.2,1.1l-5.4,0a1.15,1.15 0 0 1 -1.2,-1.1l0,-5.22a1.16,1.16 0 0 1 1.2,-1.11l5.4,0a1.16,1.16 0 0 1 1.2,1.11l0,5.22zm0,-12.89a1.16,1.16 0 0 1 -1.2,1.11l-5.4,0a1.16,1.16 0 0 1 -1.2,-1.11l0,-5.21a1.15,1.15 0 0 1 1.2,-1.11l5.4,0a1.15,1.15 0 0 1 1.2,1.11l0,5.21zm0,-12.88a1.15,1.15 0 0 1 -1.2,1.1l-5.4,0a1.15,1.15 0 0 1 -1.2,-1.1l0,-5.22a1.16,1.16 0 0 1 1.2,-1.11l5.4,0a1.16,1.16 0 0 1 1.2,1.11l0,5.22zm0,-12.89a1.16,1.16 0 0 1 -1.2,1.11l-5.4,0a1.16,1.16 0 0 1 -1.2,-1.11l0,-5.21a1.15,1.15 0 0 1 1.2,-1.11l5.4,0a1.15,1.15 0 0 1 1.2,1.11l0,5.21zm0,-12.88a1.15,1.15 0 0 1 -1.2,1.1l-5.4,0a1.15,1.15 0 0 1 -1.2,-1.1l0,-5.18a1.16,1.16 0 0 1 1.2,-1.11l5.4,0a1.16,1.16 0 0 1 1.2,1.11l0,5.18zm10.08,90.19a1.16,1.16 0 0 1 -1.2,1.11l-5.35,0a1.16,1.16 0 0 1 -1.21,-1.11l0,-5.22a1.16,1.16 0 0 1 1.21,-1.1l5.4,0a1.15,1.15 0 0 1 1.2,1.1l-0.05,5.22zm0,-12.88a1.15,1.15 0 0 1 -1.2,1.1l-5.35,0a1.16,1.16 0 0 1 -1.21,-1.1l0,-5.22a1.16,1.16 0 0 1 1.21,-1.11l5.4,0a1.16,1.16 0 0 1 1.2,1.11l-0.05,5.22zm0,-12.89a1.16,1.16 0 0 1 -1.2,1.11l-5.35,0a1.16,1.16 0 0 1 -1.21,-1.11l0,-5.22a1.16,1.16 0 0 1 1.21,-1.1l5.4,0a1.15,1.15 0 0 1 1.2,1.1l-0.05,5.22zm0,-12.88a1.15,1.15 0 0 1 -1.2,1.1l-5.35,0a1.16,1.16 0 0 1 -1.21,-1.1l0,-5.22a1.16,1.16 0 0 1 1.21,-1.11l5.4,0a1.16,1.16 0 0 1 1.2,1.11l-0.05,5.22zm0,-12.89a1.16,1.16 0 0 1 -1.2,1.11l-5.35,0a1.16,1.16 0 0 1 -1.21,-1.11l0,-5.21a1.16,1.16 0 0 1 1.21,-1.11l5.4,0a1.15,1.15 0 0 1 1.2,1.11l-0.05,5.21zm0,-12.88a1.15,1.15 0 0 1 -1.2,1.1l-5.35,0a1.16,1.16 0 0 1 -1.21,-1.1l0,-5.22a1.16,1.16 0 0 1 1.21,-1.11l5.4,0a1.16,1.16 0 0 1 1.2,1.11l-0.05,5.22zm0,-12.89a1.16,1.16 0 0 1 -1.2,1.11l-5.35,0a1.16,1.16 0 0 1 -1.21,-1.11l0,-5.21a1.16,1.16 0 0 1 1.21,-1.11l5.4,0a1.15,1.15 0 0 1 1.2,1.11l-0.05,5.21zm0,-12.88a1.15,1.15 0 0 1 -1.2,1.1l-5.35,0a1.16,1.16 0 0 1 -1.21,-1.1l0,-5.18a1.16,1.16 0 0 1 1.21,-1.15l5.4,0a1.16,1.16 0 0 1 1.2,1.11l-0.05,5.22zm10.08,90.19a1.16,1.16 0 0 1 -1.21,1.11l-5.42,0a1.16,1.16 0 0 1 -1.2,-1.11l0,-5.22a1.15,1.15 0 0 1 1.2,-1.1l5.4,0a1.16,1.16 0 0 1 1.21,1.1l0.02,5.22zm0,-12.88a1.16,1.16 0 0 1 -1.21,1.1l-5.42,0a1.15,1.15 0 0 1 -1.2,-1.1l0,-5.22a1.16,1.16 0 0 1 1.2,-1.11l5.4,0a1.16,1.16 0 0 1 1.21,1.11l0.02,5.22zm0,-12.89a1.16,1.16 0 0 1 -1.21,1.11l-5.42,0a1.16,1.16 0 0 1 -1.2,-1.11l0,-5.22a1.15,1.15 0 0 1 1.2,-1.1l5.4,0a1.16,1.16 0 0 1 1.21,1.1l0.02,5.22zm0,-12.88a1.16,1.16 0 0 1 -1.21,1.1l-5.42,0a1.15,1.15 0 0 1 -1.2,-1.1l0,-5.22a1.16,1.16 0 0 1 1.2,-1.11l5.4,0a1.16,1.16 0 0 1 1.21,1.11l0.02,5.22zm0,-12.89a1.16,1.16 0 0 1 -1.21,1.11l-5.42,0a1.16,1.16 0 0 1 -1.2,-1.11l0,-5.21a1.15,1.15 0 0 1 1.2,-1.11l5.4,0a1.16,1.16 0 0 1 1.21,1.11l0.02,5.21zm0,-12.88a1.16,1.16 0 0 1 -1.21,1.1l-5.42,0a1.15,1.15 0 0 1 -1.2,-1.1l0,-5.22a1.16,1.16 0 0 1 1.2,-1.11l5.4,0a1.16,1.16 0 0 1 1.21,1.11l0.02,5.22zm0,-12.89a1.16,1.16 0 0 1 -1.21,1.11l-5.42,0a1.16,1.16 0 0 1 -1.2,-1.11l0,-5.21a1.15,1.15 0 0 1 1.2,-1.11l5.4,0a1.16,1.16 0 0 1 1.21,1.11l0.02,5.21zm0,-12.88a1.16,1.16 0 0 1 -1.21,1.1l-5.42,0a1.15,1.15 0 0 1 -1.2,-1.1l0,-5.18a1.16,1.16 0 0 1 1.2,-1.11l5.4,0a1.16,1.16 0 0 1 1.23,1.11l0,5.18zm25.21,90.19a1.16,1.16 0 0 1 -1.2,1.11l-20.54,0a1.16,1.16 0 0 1 -1.2,-1.11l0,-5.22a1.15,1.15 0 0 1 1.2,-1.1l20.54,0a1.15,1.15 0 0 1 1.2,1.1l0,5.22zm0,-12.88a1.15,1.15 0 0 1 -1.2,1.1l-20.54,0a1.15,1.15 0 0 1 -1.2,-1.1l0,-5.22a1.16,1.16 0 0 1 1.2,-1.11l20.54,0a1.16,1.16 0 0 1 1.2,1.11l0,5.22zm0,-12.89a1.16,1.16 0 0 1 -1.2,1.11l-20.54,0a1.16,1.16 0 0 1 -1.2,-1.11l0,-5.22a1.15,1.15 0 0 1 1.2,-1.1l20.54,0a1.15,1.15 0 0 1 1.2,1.1l0,5.22zm0,-12.88a1.15,1.15 0 0 1 -1.2,1.1l-20.54,0a1.15,1.15 0 0 1 -1.2,-1.1l0,-5.22a1.16,1.16 0 0 1 1.2,-1.11l20.54,0a1.16,1.16 0 0 1 1.2,1.11l0,5.22zm0,-12.89a1.16,1.16 0 0 1 -1.2,1.11l-20.54,0a1.16,1.16 0 0 1 -1.2,-1.11l0,-5.21a1.15,1.15 0 0 1 1.2,-1.11l20.54,0a1.15,1.15 0 0 1 1.2,1.11l0,5.21zm0,-12.88a1.15,1.15 0 0 1 -1.2,1.1l-20.54,0a1.15,1.15 0 0 1 -1.2,-1.1l0,-5.22a1.16,1.16 0 0 1 1.2,-1.11l20.54,0a1.16,1.16 0 0 1 1.2,1.11l0,5.22zm0,-12.89a1.16,1.16 0 0 1 -1.2,1.11l-20.54,0a1.16,1.16 0 0 1 -1.2,-1.11l0,-5.21a1.15,1.15 0 0 1 1.2,-1.11l20.54,0a1.15,1.15 0 0 1 1.2,1.11l0,5.21zm0,-12.88a1.15,1.15 0 0 1 -1.2,1.1l-20.54,0a1.15,1.15 0 0 1 -1.2,-1.1l0,-5.18a1.16,1.16 0 0 1 1.2,-1.11l20.54,0a1.16,1.16 0 0 1 1.2,1.11l0,5.18z'\n className='cls-10'\n />\n <path\n id='svg_11'\n fill='url(#color_line_26-10)'\n opacity='0.4'\n d='m162.13,33.68l-76.3,0a2.71,2.71 0 0 0 -2.83,2.59l0,172.17a2.71,2.71 0 0 0 2.83,2.56l76.3,0a2.71,2.71 0 0 0 2.82,-2.59l0,-172.14a2.71,2.71 0 0 0 -2.82,-2.59zm-6.79,134.32a1.16,1.16 0 0 1 -1.2,1.11l-60.31,0a1.16,1.16 0 0 1 -1.21,-1.11l0,-5.21a1.16,1.16 0 0 1 1.21,-1.11l60.31,0a1.15,1.15 0 0 1 1.2,1.11l0,5.21zm0,-14.67a1.15,1.15 0 0 1 -1.2,1.1l-60.31,0a1.16,1.16 0 0 1 -1.21,-1.1l0,-5.22a1.16,1.16 0 0 1 1.21,-1.11l60.31,0a1.16,1.16 0 0 1 1.2,1.11l0,5.22zm0,-14.68a1.16,1.16 0 0 1 -1.2,1.11l-60.31,0a1.16,1.16 0 0 1 -1.21,-1.11l0,-5.22a1.16,1.16 0 0 1 1.21,-1.1l60.31,0a1.15,1.15 0 0 1 1.2,1.1l0,5.22zm0,-14.68a1.16,1.16 0 0 1 -1.2,1.11l-60.31,0a1.16,1.16 0 0 1 -1.21,-1.11l0,-5.21a1.16,1.16 0 0 1 1.21,-1.11l60.31,0a1.15,1.15 0 0 1 1.2,1.11l0,5.21zm0,-14.67a1.15,1.15 0 0 1 -1.2,1.1l-60.31,0a1.16,1.16 0 0 1 -1.21,-1.1l0,-5.3a1.16,1.16 0 0 1 1.21,-1.11l60.31,0a1.16,1.16 0 0 1 1.2,1.11l0,5.3zm0,-14.68a1.16,1.16 0 0 1 -1.2,1.11l-60.31,0a1.16,1.16 0 0 1 -1.21,-1.11l0,-5.27a1.16,1.16 0 0 1 1.21,-1.1l60.31,0a1.15,1.15 0 0 1 1.2,1.1l0,5.27zm0,-14.68a1.16,1.16 0 0 1 -1.2,1.11l-60.31,0a1.16,1.16 0 0 1 -1.21,-1.11l0,-5.26a1.16,1.16 0 0 1 1.21,-1.11l60.31,0a1.15,1.15 0 0 1 1.2,1.11l0,5.26zm0,-14.67a1.15,1.15 0 0 1 -1.2,1.1l-60.31,0a1.16,1.16 0 0 1 -1.21,-1.1l0,-5.27a1.16,1.16 0 0 1 1.21,-1.11l60.31,0a1.16,1.16 0 0 1 1.2,1.11l0,5.27zm0,-14.68a1.16,1.16 0 0 1 -1.2,1.11l-60.31,0a1.16,1.16 0 0 1 -1.21,-1.11l0,-5.27a1.16,1.16 0 0 1 1.21,-1.1l60.31,0a1.15,1.15 0 0 1 1.2,1.1l0,5.27z'\n className='cls-11'\n />\n <path\n id='svg_12'\n fill='url(#color_line_26-11)'\n opacity='0.4'\n d='m307.21,7l-65.39,0a2.51,2.51 0 0 0 -2.42,2.59l0,204.35a2.51,2.51 0 0 0 2.42,2.6l65.39,0a2.51,2.51 0 0 0 2.41,-2.6l0,-204.35a2.51,2.51 0 0 0 -2.41,-2.59zm-5.82,134.28a1.06,1.06 0 0 1 -1,1.1l-51.72,0a1.06,1.06 0 0 1 -1,-1.1l0,-5.22a1.07,1.07 0 0 1 1,-1.11l51.69,0a1.07,1.07 0 0 1 1,1.11l0.03,5.22zm0,-14.68a1.07,1.07 0 0 1 -1,1.11l-51.72,0a1.07,1.07 0 0 1 -1,-1.11l0,-5.22a1.06,1.06 0 0 1 1,-1.1l51.69,0a1.06,1.06 0 0 1 1,1.1l0.03,5.22zm0,-14.68a1.07,1.07 0 0 1 -1,1.11l-51.72,0a1.07,1.07 0 0 1 -1,-1.11l0,-5.21a1.07,1.07 0 0 1 1,-1.11l51.69,0a1.07,1.07 0 0 1 1,1.11l0.03,5.21zm0,-14.67a1.06,1.06 0 0 1 -1,1.1l-51.72,0a1.06,1.06 0 0 1 -1,-1.1l0,-5.25a1.07,1.07 0 0 1 1,-1.11l51.69,0a1.07,1.07 0 0 1 1,1.11l0.03,5.25zm0,-14.68a1.07,1.07 0 0 1 -1,1.11l-51.72,0a1.07,1.07 0 0 1 -1,-1.11l0,-5.22a1.06,1.06 0 0 1 1,-1.1l51.69,0a1.06,1.06 0 0 1 1,1.1l0.03,5.22zm0,-14.68a1.07,1.07 0 0 1 -1,1.11l-51.72,0a1.07,1.07 0 0 1 -1,-1.11l0,-5.21a1.07,1.07 0 0 1 1,-1.11l51.69,0a1.07,1.07 0 0 1 1,1.11l0.03,5.21zm0,-14.67a1.06,1.06 0 0 1 -1,1.1l-51.72,0a1.06,1.06 0 0 1 -1,-1.1l0,-5.22a1.07,1.07 0 0 1 1,-1.11l51.69,0a1.07,1.07 0 0 1 1,1.11l0.03,5.22zm0,-14.68a1.07,1.07 0 0 1 -1,1.11l-51.72,0a1.07,1.07 0 0 1 -1,-1.11l0,-5.22a1.06,1.06 0 0 1 1,-1.1l51.69,0a1.06,1.06 0 0 1 1,1.1l0.03,5.22zm0,-14.68a1.07,1.07 0 0 1 -1,1.11l-51.72,0a1.07,1.07 0 0 1 -1,-1.11l0,-5.21a1.07,1.07 0 0 1 1,-1.11l51.69,0a1.07,1.07 0 0 1 1,1.11l0.03,5.21z'\n className='cls-12'\n />\n </g>\n </g>\n <g transform='rotate(-12 333.085 213.426)' id='svg_58'>\n <polygon\n id='svg_22'\n fill='#57b3f5'\n points='339.3399963378906,228.0500030517578 339.3399963378906,228.0399932861328 340.7200012207031,228.82000732421875 340.7200012207031,228.8300018310547 327.71002197265625,243.99000549316406 327.6399841308594,241.6699981689453 327.7699890136719,241.52000427246094 339.3399963378906,228.0500030517578 '\n className='cls-15'\n />\n <polygon\n id='svg_23'\n fill='#4899e3'\n points='337.3999938964844,226.9499969482422 339.3399963378906,228.0399932861328 339.3399963378906,228.0500030517578 327.7699890136719,241.52000427246094 326.010009765625,240.14999389648438 337.3999938964844,226.9499969482422 '\n className='cls-17'\n />\n <polygon\n id='svg_24'\n fill='#4888e3'\n points='336.010009765625,226.1699981689453 337.3999938964844,226.9499969482422 326.010009765625,240.14999389648438 325.94000244140625,237.8300018310547 336.010009765625,226.1699981689453 '\n className='cls-18'\n />\n <polygon\n id='svg_25'\n fill='#57b3f5'\n points='313.6399841308594,212.77999877929688 301.54998779296875,225.8300018310547 300.3999938964844,224.10000610351562 312.3900146484375,211.0399932861328 313.6399841308594,212.77999877929688 '\n className='cls-15'\n />\n <polygon\n id='svg_26'\n fill='#69bff5'\n points='314.55999755859375,214.07000732421875 300.9900207519531,228.8300018310547 300.91998291015625,226.50999450683594 301.54998779296875,225.8300018310547 313.6399841308594,212.77999877929688 314.55999755859375,214.05999755859375 314.55999755859375,214.07000732421875 '\n className='cls-14'\n />\n <polygon\n id='svg_27'\n fill='#69bff5'\n points='317.97998046875,210.16000366210938 314.57000732421875,214.0800018310547 314.55999755859375,214.07000732421875 314.55999755859375,214.05999755859375 313.6399841308594,212.77999877929688 312.3900146484375,211.0399932861328 315.83001708984375,207.02000427246094 317.97998046875,210.16000366210938 '\n className='cls-14'\n />\n <polygon\n id='svg_28'\n fill='#7dccf5'\n points='366.510009765625,189.3300018310547 372.25,198.19000244140625 368.04998779296875,195.8300018310547 364.0799865722656,190.27999877929688 366.510009765625,189.3300018310547 '\n className='cls-13'\n />\n <polygon\n id='svg_29'\n fill='#57b3f5'\n points='364.0799865722656,190.27999877929688 368.04998779296875,195.8300018310547 347.95001220703125,219 362.3399963378906,190.9600067138672 364.0799865722656,190.27999877929688 '\n className='cls-15'\n />\n <polygon\n id='svg_30'\n fill='#57b3f5'\n points='315.83001708984375,207.02000427246094 319.9700012207031,207.61000061035156 343.2799987792969,217.55999755859375 347.95001220703125,219 343.4100036621094,224.24000549316406 317.97998046875,210.16000366210938 315.83001708984375,207.02000427246094 '\n className='cls-15'\n />\n <polygon\n id='svg_31'\n fill='#8cd7ff'\n points='372.25,198.19000244140625 344.02001953125,230.67999267578125 340.7200012207031,228.82000732421875 339.3399963378906,228.0399932861328 337.3999938964844,226.9499969482422 336.010009765625,226.1699981689453 317.8399963378906,215.92999267578125 314.57000732421875,214.0800018310547 317.97998046875,210.16000366210938 343.4100036621094,224.24000549316406 347.95001220703125,219 368.04998779296875,195.8300018310547 372.25,198.19000244140625 '\n className='cls-16'\n />\n <polygon\n id='svg_32'\n fill='#8cd7ff'\n points='314.57000732421875,214.0800018310547 317.8399963378906,215.92999267578125 304.1099853515625,231.25999450683594 300.9900207519531,228.8300018310547 314.55999755859375,214.07000732421875 314.57000732421875,214.0800018310547 '\n className='cls-16'\n />\n <polygon\n id='svg_33'\n fill='#8cd7ff'\n points='344.02001953125,230.67999267578125 330.83001708984375,246.4199981689453 327.71002197265625,243.99000549316406 340.7200012207031,228.8300018310547 340.7200012207031,228.82000732421875 344.02001953125,230.67999267578125 '\n className='cls-16'\n />\n <path\n id='svg_34'\n fill='#ebfcff'\n d='m293.92,189.8c0.14,-0.42 0.87,-0.52 1.23,-0.31c-0.22,-0.08 -0.37,0.1 -0.32,0.41a18.89,18.89 0 0 0 2.57,8.21c0.26,0.72 0.42,2.62 0.72,3.6a1.28,1.28 0 0 0 1.17,1.07a1.28,1.28 0 0 1 -1.66,0.41c-0.73,-0.32 -1.24,-2.83 -1.35,-3.31s-1.24,-5.35 -1.58,-6a13.51,13.51 0 0 1 -0.78,-4.08z'\n className='cls-19'\n />\n <path\n id='svg_35'\n fill='#e49056'\n d='m301.27,201.87a11.25,11.25 0 0 1 -1.73,0.89l-0.25,0a1.28,1.28 0 0 1 -1.17,-1.07c-0.3,-1 -0.46,-2.88 -0.72,-3.6a18.89,18.89 0 0 1 -2.57,-8.21c-0.05,-0.31 0.1,-0.49 0.32,-0.41a21.68,21.68 0 0 1 2.71,3.15a9.11,9.11 0 0 0 3.8,3.88a1.67,1.67 0 0 1 0.14,0.53c0.07,0.63 -0.18,1.21 -0.54,1.26s-0.93,-0.19 -0.87,0.48a2,2 0 0 0 1,1.57c0.44,0.17 0.76,0.12 0.76,0.64a3.28,3.28 0 0 0 0,0.34c0,0.27 0.08,0.41 0,0.51s-0.54,-0.15 -0.88,0.04z'\n className='cls-20'\n />\n <path\n id='svg_36'\n strokeWidth='0.09px'\n stroke='#4986d9'\n strokeMiterlimit='10'\n fill='none'\n d='m295.15,189.49c-0.36,-0.21 -1.09,-0.11 -1.23,0.31a13.51,13.51 0 0 0 0.78,4c0.34,0.68 1.48,5.55 1.58,6s0.62,3 1.35,3.31a1.28,1.28 0 0 0 1.66,-0.41l0,0'\n className='cls-21'\n />\n <path\n id='svg_37'\n fill='#a4e5ff'\n d='m359,190.06a0.56,0.56 0 0 0 0.08,0.54a1.72,1.72 0 0 1 -0.61,-0.13l0.53,-0.41z'\n className='cls-22'\n />\n <path\n id='svg_38'\n d='m360.72,187.15c0.83,-2.68 -0.21,-5.38 -2.33,-6a4.15,4.15 0 0 0 -4.53,2a1.78,1.78 0 0 1 -0.78,-1.71c0.08,0.57 1,1.11 1.43,0.43a2.71,2.71 0 0 1 0.87,-0.68c1.11,-0.59 3,-1 4.28,0.11a5.06,5.06 0 0 1 1.49,2.27a6.1,6.1 0 0 1 0.11,3.45a1.8,1.8 0 0 1 -0.18,0.65a6.73,6.73 0 0 1 -1.56,1.71a6.18,6.18 0 0 0 1.2,-2.23z'\n />\n <path\n id='svg_39'\n fill='#257fba'\n d='m339.52,208.84c0,0.23 0,0.46 0.08,0.68l0,0l-1.69,1l-16.33,-9a3.33,3.33 0 0 0 -1,-0.33l-15.58,-2.4l19.33,-1.38a2.59,2.59 0 0 1 1.85,0.59l13.38,10.84l-0.04,0z'\n className='cls-23'\n />\n <path\n id='svg_40'\n fill='#398eed'\n d='m343.27,217.56l-3.69,2.24a3.64,3.64 0 0 1 -4.11,-0.23l-15.51,-12l-18.42,-2.57l0.39,-2.11l0.72,-3.9l0.1,-0.52l2.2,0.34l0,0l15.65,2.4a3.33,3.33 0 0 1 1,0.33l16.33,9l1.69,-1l0,0a13.71,13.71 0 0 0 3.65,8.02z'\n className='cls-24'\n />\n <path\n id='svg_41'\n fill='#ffb056'\n d='m351.69,185l0,0a2.9,2.9 0 0 1 1.36,-0.26a5.06,5.06 0 0 0 1.31,5.51a4.22,4.22 0 0 1 0,1.34c-0.45,0 -1.47,0 -1.22,1.35s3,1 3.53,0a2.49,2.49 0 0 1 0.91,-1.85l0.81,-0.62a1.72,1.72 0 0 0 0.61,0.13a0.56,0.56 0 0 1 -0.08,-0.54l2.46,-1.9a15.75,15.75 0 0 1 2.2,4a8.34,8.34 0 0 1 0.83,4.4a17,17 0 0 0 -7.27,6.42c-2.09,3.48 -7.29,14 -8.05,15.85c-1.56,0.18 -3.29,0.42 -3.29,0.42a7.42,7.42 0 0 1 -2.57,-1.72a13.71,13.71 0 0 1 -3.67,-8c0,-0.22 -0.06,-0.45 -0.08,-0.68s0,-0.28 0,-0.41c-0.2,-2.18 0.87,-1.09 1.56,-1.39s8.25,-12.5 8.61,-13.49a16.58,16.58 0 0 0 0.34,-7.44a4.11,4.11 0 0 1 1.7,-1.12z'\n className='cls-25'\n />\n <path\n id='svg_42'\n fill='#fae6d2'\n d='m353.08,181.4a1.78,1.78 0 0 0 0.78,1.71a6.3,6.3 0 0 0 -0.8,1.67a2.9,2.9 0 0 0 -1.36,0.26c0.23,-1 0.12,-3 1,-3.77s2.67,-0.12 2.67,-0.12a2.71,2.71 0 0 0 -0.87,0.68c-0.44,0.68 -1.34,0.17 -1.42,-0.43z'\n className='cls-26'\n />\n <path\n id='svg_43'\n fill='#ffeed2'\n d='m361.68,188l0,0l-0.6,-0.32a1.8,1.8 0 0 0 0.18,-0.65a6.1,6.1 0 0 0 -0.11,-3.45l6.33,2.76a1.08,1.08 0 0 1 0.32,1.76l-4.18,4.14a15.75,15.75 0 0 0 -2.2,-4l0.26,-0.24z'\n className='cls-27'\n />\n <path\n id='svg_44'\n fill='#ffeed2'\n d='m355.39,190.82a3.52,3.52 0 0 0 2.88,-0.42l0.16,0.07l-0.81,0.62a2.49,2.49 0 0 0 -0.91,1.85c-0.56,1 -3.27,1.43 -3.53,0s0.77,-1.31 1.22,-1.35a4.22,4.22 0 0 0 0,-1.34a3.3,3.3 0 0 0 0.99,0.57z'\n className='cls-27'\n />\n <path\n id='svg_45'\n fill='#ffeed2'\n d='m357.64,183.61a3.81,3.81 0 0 1 0.23,4.74c-0.89,1.12 -0.23,1.76 0.4,2.05a3.52,3.52 0 0 1 -2.88,0.42a3.3,3.3 0 0 1 -1,-0.53a5.06,5.06 0 0 1 -1.31,-5.51a6.3,6.3 0 0 1 0.8,-1.67a0.62,0.62 0 0 0 0.23,0.07c0.73,0.09 2.74,-0.35 3.53,0.43z'\n className='cls-27'\n />\n <polygon\n id='svg_46'\n fill='#ffeed2'\n points='302.6499938964844,198.97000122070312 301.92999267578125,202.8699951171875 300.1600036621094,202.16000366210938 300.54998779296875,198.39999389648438 302.6499938964844,198.97000122070312 '\n className='cls-27'\n />\n <path\n id='svg_47'\n strokeWidth='0.23px'\n stroke='#000'\n strokeMiterlimit='10'\n fill='none'\n d='m359.51,189.36c-0.11,0.13 -0.24,0.25 -0.36,0.37'\n className='cls-28'\n />\n <path\n id='svg_48'\n d='m361.27,183.49a5.25,5.25 0 0 0 -1.53,-2.31a3.91,3.91 0 0 0 -4.41,-0.13l0,0a2.86,2.86 0 0 0 -0.92,0.71a0.52,0.52 0 0 1 -0.59,0.25a0.8,0.8 0 0 1 -0.62,-0.62l-0.11,-0.77l-0.13,0.77a1.93,1.93 0 0 0 0.85,1.83a0.77,0.77 0 0 0 0.27,0.08a7.1,7.1 0 0 0 0.91,0c0.86,0 2,-0.12 2.57,0.41a3.72,3.72 0 0 1 0.22,4.58a1.58,1.58 0 0 0 -0.43,1.32a1.45,1.45 0 0 0 0.88,0.91a0.15,0.15 0 0 0 0.11,0l0,0l0.06,0a2.56,2.56 0 0 1 0.25,-0.16a0.78,0.78 0 0 0 0.35,-0.36s0,0 0.07,-0.08a0.79,0.79 0 0 0 0.14,-0.13a2.79,2.79 0 0 1 0.35,-0.37l0.31,-0.29a4.94,4.94 0 0 0 1.27,-1.46a1.9,1.9 0 0 0 0.2,-0.67a6.3,6.3 0 0 0 -0.07,-3.51z'\n />\n <path\n id='svg_49'\n opacity='0.2'\n stroke='#e55c5c'\n strokeWidth='0.23px'\n strokeMiterlimit='10'\n fill='none'\n d='m354.4,191.63c-0.05,0.28 -0.16,0.49 -0.35,0.51'\n className='cls-29'\n />\n <path\n id='svg_50'\n opacity='0.2'\n stroke='#e55c5c'\n strokeWidth='0.23px'\n strokeMiterlimit='10'\n fill='none'\n d='m361.42,188.16l0.26,-0.21l1.58,-1.22'\n className='cls-29'\n />\n <ellipse\n transform='rotate(-74.08 123.85 385)'\n id='svg_51'\n fill='#ffeed2'\n ry='0.8'\n rx='1.17'\n cy='556.35'\n cx='378.24'\n className='cls-27'\n />\n <ellipse\n id='svg_52'\n fill='#e55c5c'\n opacity='0.2'\n transform='matrix(0.27 -0.96 0.96 0.27 19.85 369)'\n ry='0.47'\n rx='0.68'\n cy='276.08604'\n cx='267.18035'\n className='cls-30'\n />\n <path\n id='svg_53'\n fill='#ebfcff'\n d='m300.56,188.35c0.34,-0.28 1,0 1.2,0.41c-0.14,-0.19 -0.37,-0.12 -0.49,0.16a19,19 0 0 0 -2.25,8.31c-0.17,0.75 -1.05,2.43 -1.34,3.42a1.28,1.28 0 0 0 0.42,1.53a1.27,1.27 0 0 1 -1.62,-0.54c-0.45,-0.67 0.47,-3.07 0.64,-3.52s1.83,-5.18 1.91,-5.94a13.54,13.54 0 0 1 1.53,-3.83z'\n className='cls-19'\n />\n <path\n id='svg_54'\n fill='#ffb056'\n d='m300.25,202.48a10.84,10.84 0 0 1 -1.93,-0.18a1.19,1.19 0 0 1 -0.22,-0.12a1.28,1.28 0 0 1 -0.42,-1.53c0.29,-1 1.17,-2.67 1.34,-3.42a19,19 0 0 1 2.25,-8.31c0.12,-0.28 0.35,-0.35 0.49,-0.16a21,21 0 0 1 0.59,4.1a9.09,9.09 0 0 0 1.12,5.32a1.83,1.83 0 0 1 -0.17,0.53c-0.28,0.56 -0.81,0.92 -1.13,0.76s-0.68,-0.66 -1,-0.06a2.05,2.05 0 0 0 0,1.86c0.28,0.38 0.57,0.51 0.3,0.95a2.25,2.25 0 0 0 -0.16,0.3c-0.13,0.25 -0.16,0.38 -0.33,0.4s-0.34,-0.42 -0.73,-0.44z'\n className='cls-25'\n />\n <path\n id='svg_55'\n strokeWidth='0.09px'\n stroke='#4986d9'\n strokeMiterlimit='10'\n fill='none'\n d='m301.76,188.76c-0.19,-0.38 -0.86,-0.69 -1.2,-0.41a13.54,13.54 0 0 0 -1.53,3.83c-0.08,0.76 -1.74,5.48 -1.91,5.94s-1.09,2.85 -0.64,3.52a1.27,1.27 0 0 0 1.62,0.54l0,0'\n className='cls-21'\n />\n </g>\n <g transform='rotate(-180 196.395 199.245)' opacity='0.88' id='svg_56'>\n <polygon\n id='svg_13'\n fill='#7dccf5'\n points='137.75,247.66000366210938 175.89999389648438,224.32000732421875 223.51998901367188,224.76998901367188 223.29000854492188,248.47000122070312 137.75,247.66000366210938 '\n className='cls-13'\n />\n <polygon\n id='svg_14'\n fill='#69bff5'\n points='223.29000854492188,248.47000122070312 223.51998901367188,224.76998901367188 261.44000244140625,225.13999938964844 223.29000854492188,248.47000122070312 '\n className='cls-14'\n />\n <polygon\n id='svg_15'\n fill='#57b3f5'\n points='261.44000244140625,225.13999938964844 268.75,198.07000732421875 286.5799865722656,187.16000366210938 261.44000244140625,225.13999938964844 '\n className='cls-15'\n />\n <polygon\n id='svg_16'\n fill='#8cd7ff'\n points='106.21000671386719,216.97000122070312 138.22000122070312,197.3699951171875 144.35000610351562,193.62998962402344 175.77999877929688,224.20999145507812 175.77999877929688,224.32000732421875 137.75,247.66000366210938 106.21000671386719,216.97000122070312 '\n className='cls-16'\n />\n <polygon\n id='svg_17'\n fill='#8cd7ff'\n points='268.75,198.07000732421875 261.44000244140625,225.13999938964844 223.51998901367188,224.76998901367188 175.89999389648438,224.32000732421875 184.4499969482422,192.58999633789062 261.739990234375,193.3300018310547 270,193.41000366210938 268.75,198.07000732421875 '\n className='cls-16'\n />\n <polygon\n id='svg_18'\n fill='#69bff5'\n points='138.22000122070312,197.3699951171875 138.4600067138672,173.36000061035156 176.49000549316406,150.02000427246094 175.77999877929688,224.20999145507812 144.35000610351562,193.62998962402344 138.22000122070312,197.3699951171875 '\n className='cls-14'\n />\n <polygon\n id='svg_19'\n fill='#7dccf5'\n points='175.77999877929688,224.20999145507812 176.49000549316406,150.02000427246094 176.61000061035156,150.02000427246094 262.1499938964844,150.83999633789062 261.739990234375,193.3300018310547 184.4499969482422,192.58999633789062 175.89999389648438,224.32000732421875 175.77999877929688,224.20999145507812 '\n className='cls-13'\n />\n <polygon\n id='svg_20'\n fill='#69bff5'\n points='261.7799987792969,189.30999755859375 182.7899932861328,189.30999755859375 175.89999389648438,224.32000732421875 184.4499969482422,192.58999633789062 261.739990234375,193.3300018310547 261.7799987792969,189.30999755859375 '\n className='cls-14'\n />\n <polygon\n id='svg_21'\n fill='#57b3f5'\n points='175.89999389648438,224.32000732421875 151.02999877929688,192.58999633789062 146.1300048828125,195.36000061035156 175.89999389648438,224.32000732421875 '\n className='cls-15'\n />\n </g>\n </g>\n </svg>\n );\n}\n\n//后缀\nexport function SuffixIcon({ className, suffix }: { className: string; suffix: string }) {\n return (\n <span\n className={cx(`explorer_icon x-${suffix}`, {\n [className || '']: className,\n })}\n ></span>\n );\n}\n","import createEmotion from '@emotion/css/create-instance';\n\nexport const {\n flush,\n hydrate,\n cx,\n merge,\n getRegisteredStyles,\n injectGlobal,\n keyframes,\n css,\n sheet,\n cache,\n} = createEmotion({ key: 'explorer' });\n","import './index.less';\nimport React, {\n useState,\n useRef,\n useEffect,\n useMemo,\n CSSProperties,\n useImperativeHandle,\n} from 'react';\nimport { cx } from '@emotion/css';\n\n/**\n * TODO.\n * - 嵌套使用\n * - 最多支持两个子元素 和无数个固定元素 固定元素不能在中间\n * - 目前子元素必须是两个\n */\n\nexport interface DraggableProps {\n ref?: any;\n style?: React.CSSProperties;\n className?: string;\n placement?: 'horizontal' | 'vertical'; // 布局方式 默认 horizontal\n poi?: Array<number | 'max'>; // 线的位置\n fix?: boolean[]; // 默认全不固定\n rang?: number[]; // 每个子元素最小宽度/最小高度 默认不填是 0\n children: React.ReactNode;\n}\n\nconst Draggable: React.FC<DraggableProps> = React.forwardRef(\n (\n {\n className,\n style,\n placement = 'horizontal',\n poi: _poi,\n fix = [false, false],\n rang = [0, 0],\n children,\n },\n ref,\n ) => {\n const boxRef = useRef<HTMLDivElement | null>(null);\n const clickInfoRef = useRef<{ x: number; i: number; w: number }>({ x: 0, i: 0, w: 0 });\n const sashPlacement = placement === 'horizontal' ? 'vertical' : 'horizontal';\n const [sashClicked, setSashClicked] = useState(-1); // 不等于 -1 代表点击了\n const [minimum, setMinimum] = useState(false);\n const [maximum, setMaximum] = useState(false);\n const [poi, setPoi] = useState(_poi);\n const [pSize, setParentSize] = useState({\n width: 0,\n height: 0,\n });\n\n useImperativeHandle(ref, () => {\n return {\n // 父组件宽高\n parentSize: pSize,\n\n // 组件是否最大化\n isMaximize: (index: number) => {\n let ps = placement === 'horizontal' ? pSize.width : pSize.height;\n\n if (index) {\n return poi[0] === 0;\n }\n\n return calcMax(poi[0]) === ps;\n },\n\n // 组件是否最小化\n isMinimize: (index: number) => {\n let ps = placement === 'horizontal' ? pSize.width : pSize.height;\n\n if (index) {\n return calcMax(poi[0]) === ps;\n }\n\n return poi[0] === 0;\n },\n\n // 组件最大化\n onMaximize,\n\n // 组件最小化\n onMinimize,\n // 设置组件大小\n setSize,\n };\n });\n\n useEffect(() => {\n // 监听元素大小改变\n const ob = resizeObserver();\n document.addEventListener('mouseleave', cancelDrag);\n\n return () => {\n ob && boxRef.current && ob.unobserve(boxRef.current!);\n document.removeEventListener('mouseleave', cancelDrag);\n };\n }, []);\n\n function resizeObserver() {\n const targetElement = boxRef.current!;\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const { width, height } = entry.contentRect;\n setParentSize({ width, height });\n }\n });\n\n resizeObserver.observe(targetElement);\n\n return resizeObserver;\n }\n\n function handleMouseMove(e: any) {\n if (~sashClicked) {\n let x = placement === 'horizontal' ? e.clientX || e.pageX : e.clientY || e.pageY;\n\n let $_width = x - clickInfoRef.current.x + clickInfoRef.current.w;\n let index = clickInfoRef.current.i;\n let min = rang[index];\n let max = (placement === 'horizontal' ? pSize.width : pSize.height) - rang.slice(-1)[0];\n\n setMinimum(false);\n setMaximum(false);\n\n if ($_width <= min) {\n $_width = min;\n setMinimum(true);\n } else if ($_width >= max) {\n $_width = max;\n setMaximum(true);\n }\n let $_w2 = placement === 'horizontal' ? pSize.width - $_width : pSize.height - $_width; //第二个模块宽或高\n setPoi([$_width, $_w2]); // TODO.先这么写\n }\n }\n\n function getElementRect(index: number) {\n let curPoi = !index ? 0 : calcMax(poi[index - 1]);\n\n let w = 0;\n if (placement === 'horizontal') {\n curPoi = Math.min(curPoi, pSize.width);\n\n if (index == poi.length - 1 && poi.length > 1) {\n if (fix[index] && poi.length > 1) {\n w = calcMax(poi[index] || 0);\n curPoi = Math.min(pSize.width - w, pSize.width);\n } else {\n w = pSize.width - curPoi;\n }\n } else if (poi[index] === void 0) {\n w = pSize.width - curPoi;\n } else {\n if (fix[index] && poi.length > 1) {\n w = Math.min(calcMax(poi[index] || 0), pSize.width);\n } else {\n if (poi.length > 1) {\n w = pSize.width - calcMax(poi[index + 1] || 0);\n } else {\n w = Math.min(calcMax(poi[index]), pSize.width) - curPoi;\n }\n }\n }\n }\n\n if (placement === 'vertical') {\n if (index == poi.length - 1 && poi.length > 1) {\n if (fix[index] && poi.length > 1) {\n w = calcMax(poi[index] || 0);\n curPoi = Math.min(pSize.height - w, pSize.height);\n } else {\n w = pSize.height - curPoi;\n }\n } else if (poi[index] === void 0) {\n w = pSize.height - curPoi;\n } else {\n if (fix[index] && poi.length > 1) {\n w = Math.min(calcMax(poi[index] || 0), pSize.height);\n } else {\n if (poi.length > 1) {\n w = pSize.height - calcMax(poi[index + 1] || 0);\n } else {\n w = Math.min(calcMax(poi[index]), pSize.height) - curPoi;\n }\n }\n }\n // curPoi = Math.min(curPoi, pSize.height);\n // if (poi[index] === void 0) {\n // // 最后一个\n // w = pSize.height - curPoi;\n // } else {\n // w = Math.min(calcMax(poi[index]), pSize.height) - curPoi;\n // }\n }\n return {\n p: curPoi,\n w,\n };\n }\n\n function handleMouseDown(e: any, index: number) {\n let x = placement === 'horizontal' ? e.clientX || e.pageX : e.clientY || e.pageY;\n clickInfoRef.current = {\n x,\n i: index,\n w: getElementRect(index).w,\n };\n setSashClicked(index);\n }\n\n function cancelDrag() {\n setSashClicked(-1);\n }\n\n function onMaximize(index: number) {\n // 最大化\n if (index) {\n setPoi([0]);\n } else {\n setPoi(['max']);\n }\n }\n\n function onMinimize(index: number) {\n // 最小化\n if (index) {\n setPoi(['max']);\n } else {\n setPoi([0]);\n }\n }\n\n function setSize(index: number, size: number) {\n // 设置大小\n let ps = placement === 'horizontal' ? pSize.width : pSize.height;\n\n let s = Math.min(size, ps);\n setPoi([index ? ps - s : s, index ? s : ps - s]);\n return s;\n }\n\n const childrenDom = useMemo(() => {\n return React.Children.map(children, (child: any, index) => {\n let style: CSSProperties = {};\n let { p, w } = getElementRect(index);\n\n let ps = pSize.height;\n let viewWidth = pSize.width;\n let viewHeight = pSize.height;\n if (placement === 'horizontal') {\n ps = pSize.width;\n style.left = p;\n style.height = '100%';\n style.width = viewWidth = w;\n }\n\n if (placement === 'vertical') {\n style.top = p;\n style.width = '100%';\n style.height = viewHeight = w;\n }\n let isMinimize = !w;\n let isMaximize = w === ps;\n if (!pSize.height || !pSize.width) return null;\n return (\n <div\n className={cx('split-view-view', { visible: !isMinimize })}\n key={index}\n style={style}\n >\n {typeof child?.type === 'string' || typeof child === 'string'\n ? child\n : React.cloneElement(child, {\n viewWidth,\n viewHeight,\n parentSize: pSize,\n isMaximize,\n isMinimize,\n onMaximize: () => {\n onMaximize(index);\n },\n onMinimize: () => {\n onMinimize(index);\n },\n setSize: (size: number) => {\n setSize(index, size);\n },\n })}\n </div>\n );\n });\n }, [placement, children, poi, pSize]);\n\n function calcMax(size: number | 'max'): number {\n return size === 'max' ? (placement === 'horizontal' ? pSize.width : pSize.height) : size;\n }\n\n const sashDom = useMemo(() => {\n // poi只有一个或有一个为0时\n let hasZero = poi.filter((v) => {\n return v === 0 || v === 'max';\n });\n if (hasZero.length > 0) return null;\n\n // poi需要配合固定时;\n if (poi.length > 1) {\n let style: CSSProperties = {};\n let it = calcMax(poi[0]);\n if (fix[1]) {\n it = calcMax(poi[1]);\n\n if (placement === 'horizontal') {\n it = pSize.width - it;\n style.left = it - 2.5;\n }\n if (placement === 'vertical') {\n it = pSize.height - it;\n style.top = it - 2.5;\n }\n } else {\n if (placement === 'horizontal') {\n it = Math.min(it, pSize.width);\n style.left = it - 2.5;\n }\n if (placement === 'vertical') {\n it = Math.min(it, pSize.height);\n style.top = it - 2.5;\n }\n }\n\n return (\n <div\n // key={index}\n className={cx('code-sash', sashPlacement, { active: sashClicked === 0 })}\n style={style}\n onMouseDown={(e) => handleMouseDown(e, 0)}\n onMouseUp={cancelDrag}\n ></div>\n );\n }\n\n return poi.map((it, index) => {\n it = calcMax(it);\n\n let style: CSSProperties = {};\n if (placement === 'horizontal') {\n it = Math.min(it, pSize.width);\n style.left = it - 2.5;\n }\n if (placement === 'vertical') {\n it = Math.min(it, pSize.height);\n style.top = it - 2.5;\n }\n return (\n <div\n key={index}\n className={cx('code-sash', sashPlacement, { active: sashClicked === index })}\n style={style}\n onMouseDown={(e) => handleMouseDown(e, index)}\n onMouseUp={cancelDrag}\n ></div>\n );\n });\n }, [placement, poi, pSize, sashClicked]);\n\n return (\n <div className={cx('Draggable', className, placement)} style={style}>\n <div className={cx('sash-container')}>\n <div\n className={cx('code-sash-mask', sashPlacement, {\n active: ~sashClicked,\n minimum,\n maximum,\n })}\n onMouseMove={handleMouseMove}\n onMouseUp={cancelDrag}\n ></div>\n {sashDom}\n </div>\n <div ref={boxRef} className={cx('split-view-container')}>\n {childrenDom}\n </div>\n </div>\n );\n },\n);\n\nexport default Draggable;\n","import React, { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport './index.less';\nimport cx from 'classnames';\ninterface DropdownProps {\n id?: string;\n children: any;\n trigger?: 'click' | 'hover' | 'contextMenu';\n placement?:\n | 'left'\n | 'top'\n | 'right'\n | 'bottom'\n | 'topLeft'\n | 'topRight'\n | 'bottomLeft'\n | 'bottomContent';\n dropdownRender?: any;\n zIndex?: number;\n className?: string;\n onExpand?: (val: boolean) => void;\n destroyPopupOnHide?: boolean; //关闭后是否销毁\n capture?: boolean;\n position?: { x?: number; y?: number };\n style?: any;\n}\n\nfunction returnDocument(element?: any): Document {\n if (element) {\n return element.ownerDocument;\n }\n return window.document;\n}\n\nexport default function Dropdown(props: DropdownProps) {\n let {\n children,\n dropdownRender,\n trigger = 'click',\n placement = 'left',\n className,\n id,\n zIndex,\n onExpand,\n destroyPopupOnHide = false,\n capture,\n position,\n style,\n } = props;\n const [expand, setExpand] = useState(false);\n const [newDiv, setNewDiv] = useState<any>(null);\n const menu = useRef<any>(null);\n const [mouse, setMouse] = useState<any>(null);\n const [root, setRoot] = useState<any>(null);\n const ref: any = useRef();\n const time: any = useRef(null);\n\n let [windowSize, setWindowSize] = useState(getSize());\n let [menuSize, setMenuSize] = useState({\n width: 0,\n height: 0,\n });\n\n useLayoutEffect(() => {\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n useLayoutEffect(() => {\n addEvent();\n return () => {\n delEvent();\n };\n }, []);\n\n function handleResize() {\n setWindowSize(getSize());\n }\n\n function getSize() {\n return {\n width: window?.innerWidth || 0,\n height: window?.innerHeight || 0,\n };\n }\n\n useEffect(() => {\n if (id) {\n let ids: any = document.querySelector(`._dropdown_${id}`);\n if (ids) {\n ids.onclick = () => {\n ids.remove();\n };\n }\n }\n }, []);\n\n //初始化创建弹框\n useEffect(() => {\n let content: any = null;\n let newDivs: any = null;\n if ((!newDiv && expand) || (destroyPopupOnHide && expand)) {\n let body = document.querySelector('body');\n newDivs = document.createElement('div');\n if (id) {\n newDivs.className = `_dropdown_${id}`;\n }\n content = document.createElement('div');\n setNewDiv(newDivs);\n menu.current = content;\n content.className = '_dropdown';\n content.style.position = 'absolute';\n content.onclick = onClick;\n newDivs.style.position = 'absolute';\n newDivs.style.top = '0px';\n newDivs.style.left = '0px';\n // newDivs.style.bottom = '0px';\n newDivs.style.width = '100%';\n newDivs.style.zIndex = zIndex ? zIndex + '' : '1002';\n newDivs.onclick = onClone;\n if (trigger == 'hover') {\n newDivs.onmouseleave = (e: any) => {\n time.current = setTimeout(() => {\n onClone();\n }, 300);\n };\n newDivs.onmouseenter = () => {\n if (time.current) clearTimeout(time.current);\n };\n }\n newDivs?.appendChild(content);\n body?.appendChild(newDivs);\n let root = createRoot(content);\n content?.setAttribute('class', `_dropdown_menu _dropdown-hidden`);\n root.render(\n typeof dropdownRender == 'function'\n ? dropdownRender({ onClone })\n : React.cloneElement(dropdownRender, { onClone }),\n );\n setTimeout(() => {\n content?.setAttribute('class', `_dropdown_menu _dropdown-${placement}`);\n lie(content, newDivs);\n }, 100);\n setRoot(root);\n }\n onExpand?.(expand);\n\n return () => {};\n }, [expand]);\n\n useEffect(() => {\n if (!newDiv || !menu) return;\n expand\n ? menu?.current?.setAttribute('class', `_dropdown_menu _dropdown-${placement}`)\n : menu?.current?.setAttribute('class', '_dropdown_menu _dropdown-hidden');\n if (!expand) {\n } else {\n returnDocument().removeEventListener('click', onClone);\n }\n if (!expand) {\n newDiv?.remove();\n setNewDiv(null);\n setMenuSize({\n width: 0,\n height: 0,\n });\n }\n\n expand ? lie(menu?.current, newDiv) : null;\n }, [expand, mouse, placement]);\n\n useEffect(() => {\n if (menu?.current && root) {\n root.render(\n typeof dropdownRender == 'function'\n ? dropdownRender({ onClone })\n : React.cloneElement(dropdownRender, { onClone }),\n );\n }\n }, [dropdownRender, root]);\n\n function lie(content: any, newDiv: any) {\n if (!content || !newDiv) {\n return;\n }\n let curX = mouse?.x;\n let curY = mouse?.y;\n let shiftX = position?.x || 0;\n let shiftY = position?.y || 0;\n let size = content.getBoundingClientRect();\n let box = ref.current.getBoundingClientRect();\n\n if (placement == 'left' && trigger != 'contextMenu') {\n curX = box?.left - size?.width - 5 + shiftX;\n curY = box?.top + 5;\n }\n\n if (placement == 'top') {\n curY = box?.top - size?.height - 10;\n }\n\n if (placement == 'topLeft') {\n curY = box?.top - size?.height - 10;\n curX = box?.left;\n }\n\n if (placement == 'topRight') {\n curY = box?.top - size?.height - 10;\n curX = box?.right - size.width + 10;\n }\n if (placement == 'bottom') {\n curY = box?.bottom + 10;\n }\n if (placement == 'bottomLeft') {\n curY = box?.bottom + 10;\n curX = box?.left;\n }\n if (placement == 'right') {\n curX = box?.right + 10 + shiftX;\n curY = box?.top;\n }\n\n if (placement == 'bottomContent') {\n curY = box?.bottom + 10;\n curX = box?.left - (size?.width || 0) / 2 + (box.width || 0) / 2;\n }\n\n if (windowSize.width - (curX || 0) - (size?.width || 0) < 0) {\n curX = Math.trunc(mouse?.x - size?.width) - 5;\n }\n if (windowSize.height - (curY || 0) - (size?.height || 0) < 0) {\n curY = Math.trunc(mouse?.y - size?.height) - 5;\n }\n content.style.top = `${curY || 0}px`;\n content.style.left = `${curX || 0}px`;\n }\n\n //处理点击和点击嵌套问题\n const addEvent = () => {\n returnDocument().body.addEventListener('click', onClone, false);\n returnDocument().body.addEventListener('click', documentClose, true);\n returnDocument().body.addEventListener('contextmenu', documentMenu, false);\n };\n\n const delEvent = () => {\n returnDocument().body.removeEventListener('click', onClone, false);\n returnDocument().body.removeEventListener('click', documentClose, true);\n returnDocument().body.removeEventListener('contextmenu', documentMenu, true);\n };\n\n function documentMenu(e: any) {\n if (!ref.current?.contains(e.target)) {\n onClone();\n }\n }\n\n function documentClose(e: any) {\n var container = document.querySelector('._dropdown_menu');\n if (container?.contains(e.target)) {\n if (menu.current !== container) {\n onClone();\n }\n } else {\n if (!ref.current?.contains(e.target)) {\n onClone();\n }\n }\n }\n\n useEffect(() => {\n if (!menu?.current) return;\n const resizeObserver = new ResizeObserver(() => {\n if (menu.current.offsetWidth !== menuSize.width) {\n }\n if (menu.current.offsetHeight) {\n setMenuSize({\n ...menuSize,\n height: menu.current.offsetHeight,\n });\n }\n });\n resizeObserver.observe(menu.current);\n return function cleanup() {\n resizeObserver.disconnect();\n };\n }, [menu?.current]);\n\n //如果内部组件,宽高发生变化从新计算高度\n useEffect(() => {\n if (menu?.current && root) {\n lie(menu?.current, newDiv);\n }\n }, [menuSize.height, menuSize.width]);\n\n function onClone() {\n setExpand(false);\n }\n\n function onClick(e: any) {\n e.stopPropagation();\n }\n\n return (\n <div\n ref={ref}\n className={cx('_dropdown', {\n [className || '']: className,\n })}\n style={{\n ...style,\n }}\n onMouseEnter={(e) => {\n e.preventDefault();\n if (trigger == 'hover') {\n setTimeout(() => {\n if (time.current) clearTimeout(time.current);\n });\n let x = 0 + (position?.x || 0);\n let y = 0 + (position?.y || 0);\n x = e.nativeEvent.clientX + 5;\n y = e.nativeEvent.clientY + 5;\n setMouse({ x, y });\n setExpand(true);\n }\n }}\n onMouseLeave={(e: any) => {\n if (trigger == 'hover') {\n time.current = setTimeout(() => {\n onClone();\n }, 300);\n }\n }}\n onContextMenu={(e) => {\n e.preventDefault();\n if (trigger == 'contextMenu') {\n let x = 0;\n let y = 0;\n x = e.nativeEvent.clientX + 5;\n y = e.nativeEvent.clientY + 5;\n setMouse({ x, y });\n setExpand(true);\n }\n }}\n onClick={(e) => {\n if (trigger == 'click') {\n e.stopPropagation();\n let x = 0;\n let y = 0;\n x = e.nativeEvent.clientX + 5;\n y = e.nativeEvent.clientY + 5;\n setMouse({ x, y });\n setExpand(!expand);\n } else {\n setExpand(false);\n }\n }}\n >\n {children}\n </div>\n );\n}\n","import './index.less';\nimport { cx, css } from '../../../css';\nimport classname from 'classnames';\n\nimport { useState, useRef, useEffect, useLayoutEffect, useMemo, useContext } from 'react';\nimport Dropdown from '../../../components/Dropdown';\n\nimport { ExampleContext } from '../../../store';\nimport {\n ArrowLeftSvg,\n FavSvg,\n SearchSvg,\n UpdateSvg,\n ZoomUpSvg,\n ArrowTopSvg,\n OutdentSvg,\n} from '../../../components/icons';\n\nconst menu = [\n {\n key: 'tile',\n title: '图标排列 (Alt+1)',\n icon: <i className='font-icon list-type-icon'></i>,\n },\n {\n key: 'table',\n title: '图标排列 (Alt+2)',\n icon: <i className='font-icon list-type-list'></i>,\n },\n {\n key: 'column',\n title: '图标排列 (Alt+3)',\n icon: <i className='font-icon list-type-split'></i>,\n },\n];\n\nconst ExplorerHead = () => {\n const store = useContext(ExampleContext);\n const pathInputRef = useRef<any>(null);\n const [path, setPath] = useState('');\n const [pathFocus, setFocus] = useState(false);\n useLayoutEffect(() => {\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, []);\n\n const handleKeyDown = (e: any) => {\n if (e.altKey && e.key === '3') {\n store?.setMenutype('column');\n }\n if (e.altKey && e.key === '2') {\n store?.setMenutype('table');\n }\n if (e.altKey && e.key === '1') {\n store?.setMenutype('tile');\n }\n };\n\n const Breadcrumb = useMemo(() => {\n let arr: any[] = [];\n if (typeof store?.pathDisplay == 'string') {\n arr = store?.pathDisplay.split('/');\n arr = arr.filter((v) => v);\n }\n\n return arr.map((v, i) => {\n if (!v) return <></>;\n return (\n <li\n key={i}\n className={cx('header-address-item', {\n first: i == 0,\n last: i == arr.length - 1,\n })}\n >\n <a\n title={v}\n className={css`\n z-index: ${arr.length + 1 - i};\n `}\n onClick={(e) => {\n e.stopPropagation();\n }}\n >\n <span className='title-name'>{v}</span>\n </a>\n </li>\n );\n });\n }, [store?.pathDisplay]);\n\n return (\n <>\n <div className='header-content'>\n <div className='header-left'>\n <div className='btn-group'>\n <button\n className={cx('btn history-back', { disable: false })}\n title='后退 (Alt+Left / Backspace)'\n >\n <ArrowLeftSvg />\n </button>\n <button\n className={cx('btn history-next', { disable: false })}\n title='前进 (Alt+Right / Ctrl+Backspace)'\n >\n <ArrowLeftSvg />\n </button>\n </div>\n </div>\n <div className='header-middle'>\n <button className={cx('btn', { disable: true })}>\n <ArrowTopSvg />\n </button>\n <div\n className={cx('header-address', { hidden: pathFocus })}\n title='点击进入编辑状态'\n onClick={() => {\n setFocus(true);\n setTimeout(() => {\n pathInputRef.current.focus();\n }, 100);\n }}\n >\n <ul className={'header-address-content'}>\n {Breadcrumb}\n <li className='clear'></li>\n </ul>\n </div>\n <div className={cx('header-address-input', { hidden: !pathFocus })}>\n <input\n ref={pathInputRef}\n type='text'\n name='path'\n value={path}\n onInput={(e: any) => {\n setPath(e.target.value);\n }}\n className='path'\n spellCheck='false'\n onBlur={() => {\n setFocus(false);\n }}\n />\n </div>\n <button className={cx('btn', { disable: false })}>\n <FavSvg />\n </button>\n <button className={cx('btn', { disable: false })}>\n <UpdateSvg></UpdateSvg>\n </button>\n </div>\n <div className='header-right'>\n <div className='search-box'>\n <input placeholder='请输入'></input>\n <button>\n <SearchSvg></SearchSvg>\n </button>\n </div>\n </div>\n </div>\n <div className='frame-right-main'>\n <div className='tools'>\n <div className='tools-left'>\n <button>\n <UpdateSvg></UpdateSvg> <span>刷新</span>\n </button>\n </div>\n <div className='tools-right'>\n <div className='btn-group'>\n {store?.menutype == 'tile' && (\n <Dropdown\n className='tool'\n trigger='click'\n placement='bottomContent'\n dropdownRender={() => {\n return (\n <Slider\n value={store.menuSize}\n max={360}\n min={40}\n onChange={(v: number) => {\n store.setMenuSize(v);\n }}\n ></Slider>\n );\n }}\n >\n <ZoomUpSvg></ZoomUpSvg>\n </Dropdown>\n )}\n\n {menu.map((v) => {\n return (\n <button\n key={v.key}\n title={v.title}\n className={classname('btn', {\n active: store?.menutype == v.key,\n })}\n onClick={() => {\n store?.setMenutype(v.key as any);\n }}\n >\n {v.icon}\n </button>\n );\n })}\n\n <button\n className={classname('btn panel-toggle', {\n active: store?.infoshow,\n })}\n title='属性信息 <code>]</code>'\n onClick={() => {\n store?.setInfoShow(!store?.infoshow);\n }}\n >\n <OutdentSvg />\n </button>\n </div>\n </div>\n </div>\n </div>\n </>\n );\n};\n\nexport default ExplorerHead;\n\nfunction Slider(props: any) {\n const { value, max, min, onChange } = props;\n const ref = useRef<any>(null);\n const [isdarg, setDarg] = useState(false);\n const [size, setSize] = useState<number | null>(null);\n\n useEffect(() => {\n if (!size) return;\n let d_value = max - min;\n let per = d_value / 100;\n onChange && onChange(Math.round(per * size) + min);\n }, [size]);\n\n useEffect(() => {\n let d_value = max - min;\n let data = value - min;\n setSize((data / d_value) * 100);\n }, [value]);\n\n return (\n <div\n className='_slider'\n ref={ref}\n onMouseOut={() => {\n setDarg(false);\n }}\n onMouseMove={(e: any) => {\n if (!isdarg) return;\n if (!ref.current) return;\n let dom = ref.current.getBoundingClientRect();\n let cur = dom.top + 15;\n let num = e.clientY - cur;\n num > 100 ? (num = 100) : null;\n num < 0 ? (num = 0) : null;\n setSize(num);\n }}\n >\n <div\n className='_slider-link'\n onClick={(e: any) => {\n let dom = ref.current.getBoundingClientRect();\n let cur = dom.top + 15;\n let num = e.clientY - cur;\n num > 100 ? (num = 100) : null;\n num < 0 ? (num = 0) : null;\n setSize(num);\n }}\n >\n <div\n style={{ top: size + 'px' }}\n className='_slider-drop'\n onMouseDown={() => {\n setDarg(true);\n }}\n onMouseUp={() => {\n setDarg(false);\n }}\n ></div>\n </div>\n </div>\n );\n}\n","/**\n * Webpack has bug for import loop, which is not the same behavior as ES module.\n * When util.js imports the TreeNode for tree generate will cause treeContextTypes be empty.\n */\nimport * as React from 'react';\nimport {\n BasicDataNode,\n DataNode,\n Direction,\n EventDataNode,\n IconType,\n Key,\n KeyEntities,\n NodeInstance,\n} from './interface';\nimport { DraggableConfig } from './Tree';\n\nexport type NodeMouseEventParams<\n TreeDataType extends BasicDataNode = DataNode,\n T = HTMLSpanElement,\n> = {\n event: React.MouseEvent<T>;\n node: EventDataNode<TreeDataType>;\n};\nexport type NodeDragEventParams<\n TreeDataType extends BasicDataNode = DataNode,\n T = HTMLDivElement,\n> = {\n event: React.DragEvent<T>;\n node: EventDataNode<TreeDataType>;\n};\n\nexport type NodeMouseEventHandler<\n TreeDataType extends BasicDataNode = DataNode,\n T = HTMLSpanElement,\n> = (e: React.MouseEvent<T>, node: EventDataNode<TreeDataType>) => void;\nexport type NodeDragEventHandler<\n TreeDataType extends BasicDataNode = DataNode,\n T = HTMLDivElement,\n> = (e: React.DragEvent<T>, node: NodeInstance<TreeDataType>, outsideTree?: boolean) => void;\n\nexport interface TreeContextProps<TreeDataType extends BasicDataNode = DataNode> {\n prefixCls: string;\n selectable: boolean;\n showIcon: boolean;\n icon: IconType;\n switcherIcon: IconType;\n draggable?: DraggableConfig;\n draggingNodeKey?: Key;\n checkable: boolean | React.ReactNode;\n checkStrictly: boolean;\n disabled: boolean;\n keyEntities: KeyEntities;\n // for details see comment in Tree.state (Tree.tsx)\n dropLevelOffset?: number;\n dropContainerKey: Key | null;\n dropTargetKey: Key | null;\n dropPosition: -1 | 0 | 1 | null;\n indent: number | null;\n indentWidth?: number;\n dropIndicatorRender: (props: {\n dropPosition: -1 | 0 | 1;\n dropLevelOffset: number;\n indent;\n prefixCls;\n direction: Direction;\n }) => React.ReactNode;\n dragOverNodeKey: Key | null;\n direction: Direction;\n\n loadData: (treeNode: EventDataNode<TreeDataType>) => Promise<void>;\n filterTreeNode: (treeNode: EventDataNode<TreeDataType>) => boolean;\n titleRender?: (node: any) => React.ReactNode;\n\n onNodeClick: NodeMouseEventHandler<TreeDataType>;\n onNodeDoubleClick: NodeMouseEventHandler<TreeDataType>;\n onNodeExpand: NodeMouseEventHandler<TreeDataType>;\n onNodeSelect: NodeMouseEventHandler<TreeDataType>;\n onNodeCheck: (\n e: React.MouseEvent<HTMLSpanElement>,\n treeNode: EventDataNode<TreeDataType>,\n checked: boolean,\n ) => void;\n onNodeLoad: (treeNode: EventDataNode<TreeDataType>) => void;\n onNodeMouseEnter: NodeMouseEventHandler<TreeDataType>;\n onNodeMouseLeave: NodeMouseEventHandler<TreeDataType>;\n onNodeContextMenu: NodeMouseEventHandler<TreeDataType>;\n onNodeDragStart: NodeDragEventHandler<any, any>;\n onNodeDragEnter: NodeDragEventHandler<any, any>;\n onNodeDragOver: NodeDragEventHandler<any, any>;\n onNodeDragLeave: NodeDragEventHandler<any, any>;\n onNodeDragEnd: NodeDragEventHandler<any, any>;\n onNodeDrop: NodeDragEventHandler<any, any>;\n}\n\nexport const TreeContext: React.Context<TreeContextProps<any> | null> = React.createContext(null);\n","import * as React from 'react';\nimport classNames from 'classnames';\n\ninterface IndentProps {\n prefixCls: string;\n level: number;\n isStart: boolean[];\n isEnd: boolean[];\n width?: number\n}\n\nconst Indent: React.FC<IndentProps> = ({ prefixCls, level, isStart, isEnd, width }) => {\n const widthStyle: React.CSSProperties = width >= 0 ? {\n width: width\n } : {}\n\n const baseClassName = `${prefixCls}-indent-unit`;\n const list: React.ReactElement[] = [];\n for (let i = 0; i < level; i += 1) {\n list.push(\n <span\n key={i}\n className={classNames(baseClassName, {\n [`${baseClassName}-start`]: isStart[i],\n [`${baseClassName}-end`]: isEnd[i],\n })}\n style={widthStyle}\n />,\n );\n }\n\n return (\n <span aria-hidden=\"true\" className={`${prefixCls}-indent`}>\n {list}\n </span>\n );\n};\n\nexport default React.memo(Indent);\n","import type { Key, KeyEntities, SafeKey } from '../interface';\n\nexport default function getEntity<T = any>(keyEntities: KeyEntities<T>, key: Key) {\n return keyEntities[key as SafeKey];\n}\n","import toArray from 'rc-util/lib/Children/toArray';\nimport omit from 'rc-util/lib/omit';\nimport warning from 'rc-util/lib/warning';\nimport * as React from 'react';\nimport {\n BasicDataNode,\n DataEntity,\n DataNode,\n EventDataNode,\n FieldNames,\n FlattenNode,\n GetKey,\n Key,\n KeyEntities,\n NodeElement,\n SafeKey,\n TreeNodeProps,\n} from '../interface';\nimport getEntity from './keyUtil';\n\nexport function getPosition(level: string | number, index: number) {\n return `${level}-${index}`;\n}\n\nexport function isTreeNode(node: NodeElement) {\n return node && node.type && node.type.isTreeNode;\n}\n\nexport function getKey(key: Key, pos: string) {\n if (key !== null && key !== undefined) {\n return key;\n }\n return pos;\n}\n\nexport function fillFieldNames(fieldNames?: FieldNames): Required<FieldNames> {\n const { title, _title, key, children } = fieldNames || {};\n const mergedTitle = title || 'title';\n\n return {\n title: mergedTitle,\n _title: _title || [mergedTitle],\n key: key || 'key',\n children: children || 'children',\n };\n}\n\n/**\n * Warning if TreeNode do not provides key\n */\nexport function warningWithoutKey(treeData: DataNode[], fieldNames: FieldNames) {\n const keys: Map<string, boolean> = new Map();\n\n function dig(list: DataNode[], path: string = '') {\n (list || []).forEach(treeNode => {\n const key = treeNode[fieldNames.key];\n const children = treeNode[fieldNames.children];\n warning(\n key !== null && key !== undefined,\n `Tree node must have a certain key: [${path}${key}]`,\n );\n\n const recordKey = String(key);\n warning(\n !keys.has(recordKey) || key === null || key === undefined,\n `Same 'key' exist in the Tree: ${recordKey}`,\n );\n keys.set(recordKey, true);\n\n dig(children, `${path}${recordKey} > `);\n });\n }\n\n dig(treeData);\n}\n\n/**\n * Convert `children` of Tree into `treeData` structure.\n */\nexport function convertTreeToData(rootNodes: React.ReactNode): DataNode[] {\n function dig(node: React.ReactNode): DataNode[] {\n const treeNodes = toArray(node) as NodeElement[];\n return treeNodes\n .map(treeNode => {\n // Filter invalidate node\n if (!isTreeNode(treeNode)) {\n warning(!treeNode, 'Tree/TreeNode can only accept TreeNode as children.');\n return null;\n }\n\n const { key } = treeNode;\n const { children, ...rest } = treeNode.props;\n\n const dataNode: DataNode = {\n key: key as Key,\n ...rest,\n };\n\n const parsedChildren = dig(children);\n if (parsedChildren.length) {\n dataNode.children = parsedChildren;\n }\n\n return dataNode;\n })\n .filter((dataNode: DataNode) => dataNode);\n }\n\n return dig(rootNodes);\n}\n\n/**\n * Flat nest tree data into flatten list. This is used for virtual list render.\n * @param treeNodeList Origin data node list\n * @param expandedKeys\n * need expanded keys, provides `true` means all expanded (used in `rc-tree-select`).\n */\nexport function flattenTreeData<TreeDataType extends BasicDataNode = DataNode>(\n treeNodeList: TreeDataType[],\n expandedKeys: Key[] | true,\n fieldNames: FieldNames,\n): FlattenNode<TreeDataType>[] {\n const {\n _title: fieldTitles,\n key: fieldKey,\n children: fieldChildren,\n } = fillFieldNames(fieldNames);\n\n const expandedKeySet = new Set(expandedKeys === true ? [] : expandedKeys);\n const flattenList: FlattenNode<TreeDataType>[] = [];\n\n function dig(\n list: TreeDataType[],\n parent: FlattenNode<TreeDataType> = null,\n ): FlattenNode<TreeDataType>[] {\n return list.map((treeNode, index) => {\n const pos: string = getPosition(parent ? parent.pos : '0', index);\n const mergedKey = getKey(treeNode[fieldKey], pos);\n\n // Pick matched title in field title list\n let mergedTitle: React.ReactNode;\n for (let i = 0; i < fieldTitles.length; i += 1) {\n const fieldTitle = fieldTitles[i];\n if (treeNode[fieldTitle] !== undefined) {\n mergedTitle = treeNode[fieldTitle];\n break;\n }\n }\n\n // Add FlattenDataNode into list\n const flattenNode: FlattenNode<TreeDataType> = {\n ...omit(treeNode, [...fieldTitles, fieldKey, fieldChildren] as any),\n title: mergedTitle,\n key: mergedKey,\n parent,\n pos,\n children: null,\n data: treeNode,\n isStart: [...(parent ? parent.isStart : []), index === 0],\n isEnd: [...(parent ? parent.isEnd : []), index === list.length - 1],\n };\n\n flattenList.push(flattenNode);\n\n // Loop treeNode children\n if (expandedKeys === true || expandedKeySet.has(mergedKey)) {\n flattenNode.children = dig(treeNode[fieldChildren] || [], flattenNode);\n } else {\n flattenNode.children = [];\n }\n\n return flattenNode;\n });\n }\n\n dig(treeNodeList);\n\n return flattenList;\n}\n\ntype ExternalGetKey = GetKey<DataNode> | string;\n\ninterface TraverseDataNodesConfig {\n childrenPropName?: string;\n externalGetKey?: ExternalGetKey;\n fieldNames?: FieldNames;\n}\n\n/**\n * Traverse all the data by `treeData`.\n * Please not use it out of the `rc-tree` since we may refactor this code.\n */\nexport function traverseDataNodes(\n dataNodes: DataNode[],\n callback: (data: {\n node: DataNode;\n index: number;\n pos: string;\n key: Key;\n parentPos: string | number;\n level: number;\n nodes: DataNode[];\n }) => void,\n // To avoid too many params, let use config instead of origin param\n config?: TraverseDataNodesConfig | string,\n) {\n let mergedConfig: TraverseDataNodesConfig = {};\n if (typeof config === 'object') {\n mergedConfig = config;\n } else {\n mergedConfig = { externalGetKey: config };\n }\n mergedConfig = mergedConfig || {};\n\n // Init config\n const { childrenPropName, externalGetKey, fieldNames } = mergedConfig;\n\n const { key: fieldKey, children: fieldChildren } = fillFieldNames(fieldNames);\n\n const mergeChildrenPropName = childrenPropName || fieldChildren;\n\n // Get keys\n let syntheticGetKey: (node: DataNode, pos?: string) => Key;\n if (externalGetKey) {\n if (typeof externalGetKey === 'string') {\n syntheticGetKey = (node: DataNode) => (node as any)[externalGetKey as string];\n } else if (typeof externalGetKey === 'function') {\n syntheticGetKey = (node: DataNode) => (externalGetKey as GetKey<DataNode>)(node);\n }\n } else {\n syntheticGetKey = (node, pos) => getKey(node[fieldKey], pos);\n }\n\n // Process\n function processNode(\n node: DataNode,\n index?: number,\n parent?: { node: DataNode; pos: string; level: number },\n pathNodes?: DataNode[],\n ) {\n const children = node ? node[mergeChildrenPropName] : dataNodes;\n const pos = node ? getPosition(parent.pos, index) : '0';\n const connectNodes = node ? [...pathNodes, node] : [];\n\n // Process node if is not root\n if (node) {\n const key: Key = syntheticGetKey(node, pos);\n const data = {\n node,\n index,\n pos,\n key,\n parentPos: parent.node ? parent.pos : null,\n level: parent.level + 1,\n nodes: connectNodes,\n };\n\n callback(data);\n }\n\n // Process children node\n if (children) {\n children.forEach((subNode, subIndex) => {\n processNode(\n subNode,\n subIndex,\n {\n node,\n pos,\n level: parent ? parent.level + 1 : -1,\n },\n connectNodes,\n );\n });\n }\n }\n\n processNode(null);\n}\n\ninterface Wrapper {\n posEntities: Record<string, DataEntity>;\n keyEntities: KeyEntities;\n}\n\n/**\n * Convert `treeData` into entity records.\n */\nexport function convertDataToEntities(\n dataNodes: DataNode[],\n {\n initWrapper,\n processEntity,\n onProcessFinished,\n externalGetKey,\n childrenPropName,\n fieldNames,\n }: {\n initWrapper?: (wrapper: Wrapper) => Wrapper;\n processEntity?: (entity: DataEntity, wrapper: Wrapper) => void;\n onProcessFinished?: (wrapper: Wrapper) => void;\n externalGetKey?: ExternalGetKey;\n childrenPropName?: string;\n fieldNames?: FieldNames;\n } = {},\n /** @deprecated Use `config.externalGetKey` instead */\n legacyExternalGetKey?: ExternalGetKey,\n) {\n // Init config\n const mergedExternalGetKey = externalGetKey || legacyExternalGetKey;\n\n const posEntities = {};\n const keyEntities = {};\n let wrapper: Wrapper = {\n posEntities,\n keyEntities,\n };\n\n if (initWrapper) {\n wrapper = initWrapper(wrapper) || wrapper;\n }\n\n traverseDataNodes(\n dataNodes,\n item => {\n const { node, index, pos, key, parentPos, level, nodes } = item;\n const entity: DataEntity = { node, nodes, index, key, pos, level };\n\n const mergedKey = getKey(key, pos);\n\n posEntities[pos] = entity;\n keyEntities[mergedKey as SafeKey] = entity;\n\n // Fill children\n entity.parent = posEntities[parentPos];\n if (entity.parent) {\n entity.parent.children = entity.parent.children || [];\n entity.parent.children.push(entity);\n }\n\n if (processEntity) {\n processEntity(entity, wrapper);\n }\n },\n { externalGetKey: mergedExternalGetKey, childrenPropName, fieldNames },\n );\n\n if (onProcessFinished) {\n onProcessFinished(wrapper);\n }\n\n return wrapper;\n}\n\nexport interface TreeNodeRequiredProps<TreeDataType extends BasicDataNode = DataNode> {\n expandedKeys: Key[];\n selectedKeys: Key[];\n loadedKeys: Key[];\n loadingKeys: Key[];\n checkedKeys: Key[];\n halfCheckedKeys: Key[];\n dragOverNodeKey: Key;\n dropPosition: number;\n keyEntities: KeyEntities<TreeDataType>;\n}\n\n/**\n * Get TreeNode props with Tree props.\n */\nexport function getTreeNodeProps<TreeDataType extends BasicDataNode = DataNode>(\n key: Key,\n {\n expandedKeys,\n selectedKeys,\n loadedKeys,\n loadingKeys,\n checkedKeys,\n halfCheckedKeys,\n dragOverNodeKey,\n dropPosition,\n keyEntities,\n }: TreeNodeRequiredProps<TreeDataType>,\n) {\n const entity = getEntity(keyEntities, key);\n\n const treeNodeProps = {\n eventKey: key,\n expanded: expandedKeys.indexOf(key) !== -1,\n selected: selectedKeys.indexOf(key) !== -1,\n loaded: loadedKeys.indexOf(key) !== -1,\n loading: loadingKeys.indexOf(key) !== -1,\n checked: checkedKeys.indexOf(key) !== -1,\n halfChecked: halfCheckedKeys.indexOf(key) !== -1,\n pos: String(entity ? entity.pos : ''),\n\n // [Legacy] Drag props\n // Since the interaction of drag is changed, the semantic of the props are\n // not accuracy, I think it should be finally removed\n dragOver: dragOverNodeKey === key && dropPosition === 0,\n dragOverGapTop: dragOverNodeKey === key && dropPosition === -1,\n dragOverGapBottom: dragOverNodeKey === key && dropPosition === 1,\n };\n\n return treeNodeProps;\n}\n\nexport function convertNodePropsToEventData<TreeDataType extends BasicDataNode = DataNode>(\n props: TreeNodeProps<TreeDataType>,\n): EventDataNode<TreeDataType> {\n const {\n data,\n expanded,\n selected,\n checked,\n loaded,\n loading,\n halfChecked,\n dragOver,\n dragOverGapTop,\n dragOverGapBottom,\n pos,\n active,\n eventKey,\n } = props;\n\n const eventData = {\n ...data,\n expanded,\n selected,\n checked,\n loaded,\n loading,\n halfChecked,\n dragOver,\n dragOverGapTop,\n dragOverGapBottom,\n pos,\n active,\n key: eventKey,\n };\n\n if (!('props' in eventData)) {\n Object.defineProperty(eventData, 'props', {\n get() {\n warning(\n false,\n 'Second param return from event is node data instead of TreeNode instance. Please read value directly instead of reading from `props`.',\n );\n return props;\n },\n });\n }\n\n return eventData;\n}\n","import classNames from 'classnames';\nimport pickAttrs from 'rc-util/lib/pickAttrs';\nimport * as React from 'react';\n// @ts-ignore\nimport { TreeContext, TreeContextProps } from './contextTypes';\nimport Indent from './Indent';\nimport { TreeNodeProps } from './interface';\nimport getEntity from './utils/keyUtil';\nimport { convertNodePropsToEventData } from './utils/treeUtil';\n\nconst ICON_OPEN = 'open';\nconst ICON_CLOSE = 'close';\n\nconst defaultTitle = '---';\n\nexport type { TreeNodeProps } from './interface';\n\nexport interface InternalTreeNodeProps extends TreeNodeProps {\n context?: TreeContextProps;\n}\n\nexport interface TreeNodeState {\n dragNodeHighlight: boolean;\n}\n\nclass InternalTreeNode extends React.Component<InternalTreeNodeProps, TreeNodeState> {\n public state = {\n dragNodeHighlight: false,\n };\n\n public selectHandle: HTMLSpanElement;\n\n cacheIndent: number;\n\n // Isomorphic needn't load data in server side\n componentDidMount() {\n this.syncLoadData(this.props);\n }\n\n componentDidUpdate() {\n this.syncLoadData(this.props);\n }\n\n onSelectorClick = (e: React.MouseEvent<HTMLSpanElement, MouseEvent>) => {\n // Click trigger before select/check operation\n const {\n context: { onNodeClick },\n } = this.props;\n onNodeClick(e, convertNodePropsToEventData(this.props));\n\n if (this.isSelectable()) {\n this.onSelect(e);\n } else {\n this.onCheck(e);\n }\n };\n\n onSelectorDoubleClick = (e: React.MouseEvent<HTMLSpanElement, MouseEvent>) => {\n const {\n context: { onNodeDoubleClick },\n } = this.props;\n onNodeDoubleClick(e, convertNodePropsToEventData(this.props));\n };\n\n onSelect = (e: React.MouseEvent<HTMLSpanElement, MouseEvent>) => {\n if (this.isDisabled()) return;\n\n const {\n context: { onNodeSelect },\n } = this.props;\n onNodeSelect(e, convertNodePropsToEventData(this.props));\n };\n\n onCheck = (e: React.MouseEvent<HTMLSpanElement, MouseEvent>) => {\n if (this.isDisabled()) return;\n\n const { disableCheckbox, checked } = this.props;\n const {\n context: { onNodeCheck },\n } = this.props;\n\n if (!this.isCheckable() || disableCheckbox) return;\n\n const targetChecked = !checked;\n onNodeCheck(e, convertNodePropsToEventData(this.props), targetChecked);\n };\n\n onMouseEnter = (e: React.MouseEvent<HTMLSpanElement, MouseEvent>) => {\n const {\n context: { onNodeMouseEnter },\n } = this.props;\n onNodeMouseEnter(e, convertNodePropsToEventData(this.props));\n };\n\n onMouseLeave = (e: React.MouseEvent<HTMLSpanElement, MouseEvent>) => {\n const {\n context: { onNodeMouseLeave },\n } = this.props;\n onNodeMouseLeave(e, convertNodePropsToEventData(this.props));\n };\n\n onContextMenu = (e: React.MouseEvent<HTMLSpanElement, MouseEvent>) => {\n const {\n context: { onNodeContextMenu },\n } = this.props;\n onNodeContextMenu(e, convertNodePropsToEventData(this.props));\n };\n\n onDragStart = (e: React.DragEvent<HTMLDivElement>) => {\n const {\n context: { onNodeDragStart },\n } = this.props;\n\n e.stopPropagation();\n this.setState({\n dragNodeHighlight: true,\n });\n onNodeDragStart(e, this);\n\n try {\n // ie throw error\n // firefox-need-it\n e.dataTransfer.setData('text/plain', '');\n } catch (error) {\n // empty\n }\n };\n\n onDragEnter = (e: React.DragEvent<HTMLDivElement>) => {\n const {\n context: { onNodeDragEnter },\n } = this.props;\n\n e.preventDefault();\n e.stopPropagation();\n onNodeDragEnter(e, this);\n };\n\n onDragOver = (e: React.DragEvent<HTMLDivElement>) => {\n const {\n context: { onNodeDragOver },\n } = this.props;\n\n e.preventDefault();\n e.stopPropagation();\n onNodeDragOver(e, this);\n };\n\n onDragLeave = (e: React.DragEvent<HTMLDivElement>) => {\n const {\n context: { onNodeDragLeave },\n } = this.props;\n\n e.stopPropagation();\n onNodeDragLeave(e, this);\n };\n\n onDragEnd = (e: React.DragEvent<HTMLDivElement>) => {\n const {\n context: { onNodeDragEnd },\n } = this.props;\n\n e.stopPropagation();\n this.setState({\n dragNodeHighlight: false,\n });\n onNodeDragEnd(e, this);\n };\n\n onDrop = (e: React.DragEvent<HTMLDivElement>) => {\n const {\n context: { onNodeDrop },\n } = this.props;\n\n e.preventDefault();\n e.stopPropagation();\n this.setState({\n dragNodeHighlight: false,\n });\n onNodeDrop(e, this);\n };\n\n // Disabled item still can be switch\n onExpand: React.MouseEventHandler<HTMLDivElement> = e => {\n const {\n loading,\n context: { onNodeExpand },\n } = this.props;\n if (loading) return;\n onNodeExpand(e, convertNodePropsToEventData(this.props));\n };\n\n // Drag usage\n setSelectHandle = node => {\n this.selectHandle = node;\n };\n\n getNodeState = () => {\n const { expanded } = this.props;\n\n if (this.isLeaf()) {\n return null;\n }\n\n return expanded ? ICON_OPEN : ICON_CLOSE;\n };\n\n hasChildren = () => {\n const { eventKey } = this.props;\n const {\n context: { keyEntities },\n } = this.props;\n const { children } = getEntity(keyEntities, eventKey) || {};\n\n return !!(children || []).length;\n };\n\n isLeaf = () => {\n const { isLeaf, loaded } = this.props;\n const {\n context: { loadData },\n } = this.props;\n\n const hasChildren = this.hasChildren();\n\n if (isLeaf === false) {\n return false;\n }\n\n return isLeaf || (!loadData && !hasChildren) || (loadData && loaded && !hasChildren);\n };\n\n isDisabled = () => {\n const { disabled } = this.props;\n const {\n context: { disabled: treeDisabled },\n } = this.props;\n\n return !!(treeDisabled || disabled);\n };\n\n isCheckable = () => {\n const { checkable } = this.props;\n const {\n context: { checkable: treeCheckable },\n } = this.props;\n\n // Return false if tree or treeNode is not checkable\n if (!treeCheckable || checkable === false) return false;\n return treeCheckable;\n };\n\n // Load data to avoid default expanded tree without data\n syncLoadData = props => {\n const { expanded, loading, loaded } = props;\n const {\n context: { loadData, onNodeLoad },\n } = this.props;\n\n if (loading) {\n return;\n }\n\n // read from state to avoid loadData at same time\n if (loadData && expanded && !this.isLeaf()) {\n // We needn't reload data when has children in sync logic\n // It's only needed in node expanded\n if (!this.hasChildren() && !loaded) {\n onNodeLoad(convertNodePropsToEventData(this.props));\n }\n }\n };\n\n isSelectable() {\n const { selectable } = this.props;\n const {\n context: { selectable: treeSelectable },\n } = this.props;\n\n // Ignore when selectable is undefined or null\n if (typeof selectable === 'boolean') {\n return selectable;\n }\n\n return treeSelectable;\n }\n\n isDraggable = () => {\n const {\n data,\n context: { draggable },\n } = this.props;\n\n return !!(draggable && (!draggable.nodeDraggable || draggable.nodeDraggable(data)));\n };\n\n // ==================== Render: Drag Handler ====================\n renderDragHandler = () => {\n const {\n context: { draggable, prefixCls },\n } = this.props;\n\n return draggable?.icon ? (\n <span className={`${prefixCls}-draggable-icon`}>{draggable.icon}</span>\n ) : null;\n };\n\n // ====================== Render: Switcher ======================\n renderSwitcherIconDom = (isLeaf: boolean) => {\n const { switcherIcon: switcherIconFromProps } = this.props;\n const {\n context: { switcherIcon: switcherIconFromCtx },\n } = this.props;\n\n const switcherIcon = switcherIconFromProps || switcherIconFromCtx;\n // if switcherIconDom is null, no render switcher span\n if (typeof switcherIcon === 'function') {\n return switcherIcon({ ...this.props, isLeaf });\n }\n return switcherIcon;\n };\n\n // Switcher\n renderSwitcher = () => {\n const { expanded } = this.props;\n const {\n context: { prefixCls },\n } = this.props;\n\n if (this.isLeaf()) {\n // if switcherIconDom is null, no render switcher span\n const switcherIconDom = this.renderSwitcherIconDom(true);\n\n return switcherIconDom !== false ? (\n <span className={classNames(`${prefixCls}-switcher`, `${prefixCls}-switcher-noop`)}>\n {switcherIconDom}\n </span>\n ) : null;\n }\n\n const switcherCls = classNames(\n `${prefixCls}-switcher`,\n `${prefixCls}-switcher_${expanded ? ICON_OPEN : ICON_CLOSE}`,\n );\n\n const switcherIconDom = this.renderSwitcherIconDom(false);\n\n return switcherIconDom !== false ? (\n <span onClick={this.onExpand} className={switcherCls}>\n {switcherIconDom}\n </span>\n ) : null;\n };\n\n // ====================== Render: Checkbox ======================\n // Checkbox\n renderCheckbox = () => {\n const { checked, halfChecked, disableCheckbox } = this.props;\n const {\n context: { prefixCls },\n } = this.props;\n const disabled = this.isDisabled();\n const checkable = this.isCheckable();\n\n if (!checkable) return null;\n\n // [Legacy] Custom element should be separate with `checkable` in future\n const $custom = typeof checkable !== 'boolean' ? checkable : null;\n\n return (\n <span\n className={classNames(\n `${prefixCls}-checkbox`,\n checked && `${prefixCls}-checkbox-checked`,\n !checked && halfChecked && `${prefixCls}-checkbox-indeterminate`,\n (disabled || disableCheckbox) && `${prefixCls}-checkbox-disabled`,\n )}\n onClick={this.onCheck}\n >\n {$custom}\n </span>\n );\n };\n\n // ==================== Render: Title + Icon ====================\n renderIcon = () => {\n const { loading } = this.props;\n const {\n context: { prefixCls },\n } = this.props;\n\n return (\n <span\n className={classNames(\n `${prefixCls}-iconEle`,\n `${prefixCls}-icon__${this.getNodeState() || 'docu'}`,\n loading && `${prefixCls}-icon_loading`,\n )}\n />\n );\n };\n\n // Icon + Title\n renderSelector = () => {\n const { dragNodeHighlight } = this.state;\n const { title = defaultTitle, selected, icon, loading, data } = this.props;\n const {\n context: { prefixCls, showIcon, icon: treeIcon, loadData, titleRender },\n } = this.props;\n const disabled = this.isDisabled();\n\n const wrapClass = `${prefixCls}-node-content-wrapper`;\n\n // Icon - Still show loading icon when loading without showIcon\n let $icon;\n\n if (showIcon) {\n const currentIcon = icon || treeIcon;\n\n $icon = currentIcon ? (\n <span className={classNames(`${prefixCls}-iconEle`, `${prefixCls}-icon__customize`)}>\n {typeof currentIcon === 'function' ? currentIcon(this.props) : currentIcon}\n </span>\n ) : (\n this.renderIcon()\n );\n } else if (loadData && loading) {\n $icon = this.renderIcon();\n }\n\n // Title\n let titleNode: React.ReactNode;\n if (typeof title === 'function') {\n titleNode = title(data);\n } else if (titleRender) {\n titleNode = titleRender(data);\n } else {\n titleNode = title;\n }\n\n const $title = <span className={`${prefixCls}-title`}>{titleNode}</span>;\n\n return (\n <span\n ref={this.setSelectHandle}\n title={typeof title === 'string' ? title : ''}\n className={classNames(\n `${wrapClass}`,\n `${wrapClass}-${this.getNodeState() || 'normal'}`,\n !disabled && (selected || dragNodeHighlight) && `${prefixCls}-node-selected`,\n )}\n onMouseEnter={this.onMouseEnter}\n onMouseLeave={this.onMouseLeave}\n onContextMenu={this.onContextMenu}\n onClick={this.onSelectorClick}\n onDoubleClick={this.onSelectorDoubleClick}\n >\n {$icon}\n {$title}\n {this.renderDropIndicator()}\n </span>\n );\n };\n\n // =================== Render: Drop Indicator ===================\n renderDropIndicator = () => {\n const { disabled, eventKey } = this.props;\n const {\n context: {\n draggable,\n dropLevelOffset,\n dropPosition,\n prefixCls,\n indent,\n dropIndicatorRender,\n dragOverNodeKey,\n direction,\n },\n } = this.props;\n const rootDraggable = !!draggable;\n // allowDrop is calculated in Tree.tsx, there is no need for calc it here\n const showIndicator = !disabled && rootDraggable && dragOverNodeKey === eventKey;\n\n // This is a hot fix which is already fixed in\n // https://github.com/react-component/tree/pull/743/files\n // But some case need break point so we hack on this\n // ref https://github.com/ant-design/ant-design/issues/43493\n const mergedIndent = indent ?? this.cacheIndent;\n this.cacheIndent = indent;\n\n return showIndicator\n ? dropIndicatorRender({\n dropPosition,\n dropLevelOffset,\n indent: mergedIndent,\n prefixCls,\n direction,\n })\n : null;\n };\n\n // =========================== Render ===========================\n render() {\n const {\n eventKey,\n className,\n style,\n dragOver,\n dragOverGapTop,\n dragOverGapBottom,\n isLeaf,\n isStart,\n isEnd,\n expanded,\n selected,\n checked,\n halfChecked,\n loading,\n domRef,\n active,\n data,\n onMouseMove,\n selectable,\n indentWidth,\n ...otherProps\n } = this.props;\n const {\n context: {\n prefixCls,\n filterTreeNode,\n keyEntities,\n dropContainerKey,\n dropTargetKey,\n draggingNodeKey,\n },\n } = this.props;\n const disabled = this.isDisabled();\n const dataOrAriaAttributeProps = pickAttrs(otherProps, { aria: true, data: true });\n const { level } = getEntity(keyEntities, eventKey) || {};\n const isEndNode = isEnd[isEnd.length - 1];\n\n const mergedDraggable = this.isDraggable();\n const draggableWithoutDisabled = !disabled && mergedDraggable;\n\n const dragging = draggingNodeKey === eventKey;\n const ariaSelected = selectable !== undefined ? { 'aria-selected': !!selectable } : undefined;\n\n return (\n <div\n ref={domRef}\n className={classNames(className, `${prefixCls}-treenode`, {\n [`${prefixCls}-treenode-disabled`]: disabled,\n [`${prefixCls}-treenode-switcher-${expanded ? 'open' : 'close'}`]: !isLeaf,\n [`${prefixCls}-treenode-checkbox-checked`]: checked,\n [`${prefixCls}-treenode-checkbox-indeterminate`]: halfChecked,\n [`${prefixCls}-treenode-selected`]: selected,\n [`${prefixCls}-treenode-loading`]: loading,\n [`${prefixCls}-treenode-active`]: active,\n [`${prefixCls}-treenode-leaf-last`]: isEndNode,\n [`${prefixCls}-treenode-draggable`]: mergedDraggable,\n\n dragging,\n 'drop-target': dropTargetKey === eventKey,\n 'drop-container': dropContainerKey === eventKey,\n 'drag-over': !disabled && dragOver,\n 'drag-over-gap-top': !disabled && dragOverGapTop,\n 'drag-over-gap-bottom': !disabled && dragOverGapBottom,\n 'filter-node': filterTreeNode && filterTreeNode(convertNodePropsToEventData(this.props)),\n })}\n style={style}\n // Draggable config\n draggable={draggableWithoutDisabled}\n aria-grabbed={dragging}\n onDragStart={draggableWithoutDisabled ? this.onDragStart : undefined}\n // Drop config\n onDragEnter={mergedDraggable ? this.onDragEnter : undefined}\n onDragOver={mergedDraggable ? this.onDragOver : undefined}\n onDragLeave={mergedDraggable ? this.onDragLeave : undefined}\n onDrop={mergedDraggable ? this.onDrop : undefined}\n onDragEnd={mergedDraggable ? this.onDragEnd : undefined}\n onMouseMove={onMouseMove}\n {...ariaSelected}\n {...dataOrAriaAttributeProps}\n >\n <Indent prefixCls={prefixCls} level={level} isStart={isStart} isEnd={isEnd} width={indentWidth} />\n {this.renderDragHandler()}\n {this.renderSwitcher()}\n {this.renderCheckbox()}\n {this.renderSelector()}\n </div>\n );\n }\n}\n\nconst ContextTreeNode: React.FC<TreeNodeProps> = props => (\n <TreeContext.Consumer>\n {context => <InternalTreeNode {...props} context={context} />}\n </TreeContext.Consumer>\n);\n\nContextTreeNode.displayName = 'TreeNode';\n\n(ContextTreeNode as any).isTreeNode = 1;\n\nexport default ContextTreeNode;\n","import classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport useLayoutEffect from 'rc-util/lib/hooks/useLayoutEffect';\nimport * as React from 'react';\nimport { TreeContext } from './contextTypes';\nimport { FlattenNode, TreeNodeProps } from './interface';\nimport TreeNode from './TreeNode';\nimport useUnmount from './useUnmount';\nimport { getTreeNodeProps, TreeNodeRequiredProps } from './utils/treeUtil';\n\ninterface MotionTreeNodeProps extends Omit<TreeNodeProps, 'domRef'> {\n active: boolean;\n motion?: any;\n motionNodes?: FlattenNode[];\n onMotionStart: () => void;\n onMotionEnd: () => void;\n motionType?: 'show' | 'hide';\n\n treeNodeRequiredProps: TreeNodeRequiredProps;\n}\n\nconst MotionTreeNode: React.ForwardRefRenderFunction<HTMLDivElement, MotionTreeNodeProps> = (\n {\n className,\n style,\n motion,\n motionNodes,\n motionType,\n onMotionStart: onOriginMotionStart,\n onMotionEnd: onOriginMotionEnd,\n active,\n treeNodeRequiredProps,\n ...props\n },\n ref,\n) => {\n const [visible, setVisible] = React.useState(true);\n const { prefixCls } = React.useContext(TreeContext);\n\n // Calculate target visible here.\n // And apply in effect to make `leave` motion work.\n const targetVisible = motionNodes && motionType !== 'hide';\n\n useLayoutEffect(() => {\n if (motionNodes) {\n if (targetVisible !== visible) {\n setVisible(targetVisible);\n }\n }\n }, [motionNodes]);\n\n const triggerMotionStart = () => {\n if (motionNodes) {\n onOriginMotionStart();\n }\n };\n\n // Should only trigger once\n const triggerMotionEndRef = React.useRef(false);\n const triggerMotionEnd = () => {\n if (motionNodes && !triggerMotionEndRef.current) {\n triggerMotionEndRef.current = true;\n onOriginMotionEnd();\n }\n };\n\n // Effect if unmount\n useUnmount(triggerMotionStart, triggerMotionEnd);\n\n // Motion end event\n const onVisibleChanged = (nextVisible: boolean) => {\n if (targetVisible === nextVisible) {\n triggerMotionEnd();\n }\n };\n\n if (motionNodes) {\n return (\n <CSSMotion\n ref={ref}\n visible={visible}\n {...motion}\n motionAppear={motionType === 'show'}\n onVisibleChanged={onVisibleChanged}\n >\n {({ className: motionClassName, style: motionStyle }, motionRef) => (\n <div\n ref={motionRef}\n className={classNames(`${prefixCls}-treenode-motion`, motionClassName)}\n style={motionStyle}\n >\n {motionNodes.map((treeNode: FlattenNode) => {\n const {\n data: { ...restProps },\n title,\n key,\n isStart,\n isEnd,\n } = treeNode;\n delete restProps.children;\n\n const treeNodeProps = getTreeNodeProps(key, treeNodeRequiredProps);\n\n return (\n <TreeNode\n {...(restProps as Omit<typeof restProps, 'children'>)}\n {...treeNodeProps}\n title={title}\n active={active}\n data={treeNode.data}\n key={key}\n isStart={isStart}\n isEnd={isEnd}\n />\n );\n })}\n </div>\n )}\n </CSSMotion>\n );\n }\n return <TreeNode domRef={ref} className={className} style={style} {...props} active={active} />;\n};\n\nMotionTreeNode.displayName = 'MotionTreeNode';\n\nconst RefMotionTreeNode = React.forwardRef(MotionTreeNode);\n\nexport default RefMotionTreeNode;\n","import * as React from 'react';\nimport useLayoutEffect from 'rc-util/lib/hooks/useLayoutEffect';\n\n/**\n * Trigger only when component unmount\n */\nexport default function useUnmount(triggerStart: VoidFunction, triggerEnd: VoidFunction) {\n const [firstMount, setFirstMount] = React.useState(false);\n\n useLayoutEffect(() => {\n if (firstMount) {\n triggerStart();\n\n return () => {\n triggerEnd();\n };\n }\n }, [firstMount]);\n\n useLayoutEffect(() => {\n setFirstMount(true);\n\n return () => {\n setFirstMount(false);\n };\n }, []);\n}\n","import { Key, FlattenNode } from '../interface';\n\nexport function findExpandedKeys(prev: Key[] = [], next: Key[] = []) {\n const prevLen = prev.length;\n const nextLen = next.length;\n\n if (Math.abs(prevLen - nextLen) !== 1) {\n return { add: false, key: null };\n }\n\n function find(shorter: Key[], longer: Key[]) {\n const cache: Map<Key, boolean> = new Map();\n shorter.forEach(key => {\n cache.set(key, true);\n });\n\n const keys = longer.filter(key => !cache.has(key));\n\n return keys.length === 1 ? keys[0] : null;\n }\n\n if (prevLen < nextLen) {\n return {\n add: true,\n key: find(prev, next),\n };\n }\n\n return {\n add: false,\n key: find(next, prev),\n };\n}\n\nexport function getExpandRange(shorter: FlattenNode[], longer: FlattenNode[], key: Key) {\n const shorterStartIndex = shorter.findIndex(data => data.key === key);\n const shorterEndNode = shorter[shorterStartIndex + 1];\n const longerStartIndex = longer.findIndex(data => data.key === key);\n\n if (shorterEndNode) {\n const longerEndIndex = longer.findIndex(data => data.key === shorterEndNode.key);\n return longer.slice(longerStartIndex + 1, longerEndIndex);\n }\n return longer.slice(longerStartIndex + 1);\n}\n","/**\n * Handle virtual list of the TreeNodes.\n */\nimport useLayoutEffect from 'rc-util/lib/hooks/useLayoutEffect';\nimport VirtualList, { ListRef } from 'rc-virtual-list';\nimport * as React from 'react';\nimport {\n BasicDataNode,\n DataEntity,\n DataNode,\n FlattenNode,\n Key,\n KeyEntities,\n ScrollTo,\n} from './interface';\nimport MotionTreeNode from './MotionTreeNode';\nimport { findExpandedKeys, getExpandRange } from './utils/diffUtil';\nimport { getKey, getTreeNodeProps } from './utils/treeUtil';\n\nconst HIDDEN_STYLE = {\n width: 0,\n height: 0,\n display: 'flex',\n overflow: 'hidden',\n opacity: 0,\n border: 0,\n padding: 0,\n margin: 0,\n};\n\nconst noop = () => {};\n\nexport const MOTION_KEY = `RC_TREE_MOTION_${Math.random()}`;\n\nconst MotionNode: DataNode = {\n key: MOTION_KEY,\n};\n\nexport const MotionEntity: DataEntity = {\n key: MOTION_KEY,\n level: 0,\n index: 0,\n pos: '0',\n node: MotionNode,\n nodes: [MotionNode],\n};\n\nconst MotionFlattenData: FlattenNode = {\n parent: null,\n children: [],\n pos: MotionEntity.pos,\n data: MotionNode,\n title: null,\n key: MOTION_KEY,\n /** Hold empty list here since we do not use it */\n isStart: [],\n isEnd: [],\n};\n\nexport interface NodeListRef {\n scrollTo: ScrollTo;\n getIndentWidth: () => number;\n}\n\ninterface NodeListProps<TreeDataType extends BasicDataNode> {\n prefixCls: string;\n style: React.CSSProperties;\n data: FlattenNode<TreeDataType>[];\n motion: any;\n focusable?: boolean;\n activeItem: FlattenNode<TreeDataType>;\n focused?: boolean;\n tabIndex: number;\n checkable?: boolean;\n selectable?: boolean;\n disabled?: boolean;\n indentWidth?: number;\n\n expandedKeys: Key[];\n selectedKeys: Key[];\n checkedKeys: Key[];\n loadedKeys: Key[];\n loadingKeys: Key[];\n halfCheckedKeys: Key[];\n keyEntities: KeyEntities;\n\n dragging: boolean;\n dragOverNodeKey: Key;\n dropPosition: number;\n\n // Virtual list\n height: number;\n itemHeight: number;\n scrollWidth?: number;\n virtual?: boolean;\n\n onVirtualScroll?: (info: any) => void;\n onKeyDown?: React.KeyboardEventHandler<HTMLDivElement>;\n onFocus?: React.FocusEventHandler<HTMLDivElement>;\n onBlur?: React.FocusEventHandler<HTMLDivElement>;\n onActiveChange: (key: Key) => void;\n\n onListChangeStart: () => void;\n onListChangeEnd: () => void;\n}\n\n/**\n * We only need get visible content items to play the animation.\n */\nexport function getMinimumRangeTransitionRange(\n list: FlattenNode[],\n virtual: boolean,\n height: number,\n itemHeight: number,\n) {\n if (virtual === false || !height) {\n return list;\n }\n\n return list.slice(0, Math.ceil(height / itemHeight) + 1);\n}\n\nfunction itemKey(item: FlattenNode) {\n const { key, pos } = item;\n return getKey(key, pos);\n}\n\nfunction getAccessibilityPath(item: FlattenNode): string {\n let path = String(item.data.key);\n let current = item;\n\n while (current.parent) {\n current = current.parent;\n path = `${current.data.key} > ${path}`;\n }\n\n return path;\n}\n\nconst NodeList = React.forwardRef<NodeListRef, any>((props, ref) => {\n const {\n prefixCls,\n data,\n selectable,\n checkable,\n expandedKeys,\n selectedKeys,\n checkedKeys,\n loadedKeys,\n loadingKeys,\n halfCheckedKeys,\n keyEntities,\n disabled,\n indentWidth,\n\n dragging,\n dragOverNodeKey,\n dropPosition,\n motion,\n\n height,\n itemHeight,\n virtual,\n onVirtualScroll,\n\n focusable,\n activeItem,\n focused,\n tabIndex,\n\n onKeyDown,\n onFocus,\n onBlur,\n onActiveChange,\n\n onListChangeStart,\n onListChangeEnd,\n\n ...domProps\n } = props;\n\n // =============================== Ref ================================\n const listRef = React.useRef<ListRef>(null);\n const indentMeasurerRef = React.useRef<HTMLDivElement>(null);\n React.useImperativeHandle(ref, () => ({\n scrollTo: (scroll) => {\n if (listRef.current) {\n listRef.current.scrollTo(scroll);\n }\n },\n getIndentWidth: () => indentMeasurerRef.current.offsetWidth,\n }));\n\n // ============================== Motion ==============================\n const [prevExpandedKeys, setPrevExpandedKeys] = React.useState(expandedKeys);\n const [prevData, setPrevData] = React.useState(data);\n const [transitionData, setTransitionData] = React.useState(data);\n const [transitionRange, setTransitionRange] = React.useState([]);\n const [motionType, setMotionType] = React.useState<'show' | 'hide' | null>(null);\n\n // When motion end but data change, this will makes data back to previous one\n const dataRef = React.useRef(data);\n dataRef.current = data;\n\n function onMotionEnd() {\n const latestData = dataRef.current;\n\n setPrevData(latestData);\n setTransitionData(latestData);\n setTransitionRange([]);\n setMotionType(null);\n\n onListChangeEnd();\n }\n\n // Do animation if expanded keys changed\n // layoutEffect here to avoid blink of node removing\n useLayoutEffect(() => {\n setPrevExpandedKeys(expandedKeys);\n\n const diffExpanded = findExpandedKeys(prevExpandedKeys, expandedKeys);\n\n if (diffExpanded.key !== null) {\n if (diffExpanded.add) {\n const keyIndex = prevData.findIndex(({ key }) => key === diffExpanded.key);\n\n const rangeNodes: any = getMinimumRangeTransitionRange(\n getExpandRange(prevData, data, diffExpanded.key),\n virtual,\n height,\n itemHeight,\n );\n\n const newTransitionData: FlattenNode[] = prevData.slice();\n newTransitionData.splice(keyIndex + 1, 0, MotionFlattenData);\n\n setTransitionData(newTransitionData);\n setTransitionRange(rangeNodes);\n setMotionType('show');\n } else {\n const keyIndex = data.findIndex(({ key }) => key === diffExpanded.key);\n\n const rangeNodes: any = getMinimumRangeTransitionRange(\n getExpandRange(data, prevData, diffExpanded.key),\n virtual,\n height,\n itemHeight,\n );\n\n const newTransitionData: FlattenNode[] = data.slice();\n newTransitionData.splice(keyIndex + 1, 0, MotionFlattenData);\n\n setTransitionData(newTransitionData);\n setTransitionRange(rangeNodes);\n setMotionType('hide');\n }\n } else if (prevData !== data) {\n // If whole data changed, we just refresh the list\n setPrevData(data);\n setTransitionData(data);\n }\n }, [expandedKeys, data]);\n\n // We should clean up motion if is changed by dragging\n React.useEffect(() => {\n if (!dragging) {\n onMotionEnd();\n }\n }, [dragging]);\n\n const mergedData = motion ? transitionData : data;\n\n const treeNodeRequiredProps = {\n expandedKeys,\n selectedKeys,\n loadedKeys,\n loadingKeys,\n checkedKeys,\n halfCheckedKeys,\n dragOverNodeKey,\n dropPosition,\n keyEntities,\n };\n\n return (\n <>\n {focused && activeItem && (\n <span style={HIDDEN_STYLE} aria-live='assertive'>\n {getAccessibilityPath(activeItem)}\n </span>\n )}\n\n <div>\n <input\n style={HIDDEN_STYLE}\n disabled={focusable === false || disabled}\n tabIndex={focusable !== false ? tabIndex : null}\n onKeyDown={onKeyDown}\n onFocus={onFocus}\n onBlur={onBlur}\n value=''\n onChange={noop}\n aria-label='for screen reader'\n />\n </div>\n\n <div\n className={`${prefixCls}-treenode`}\n aria-hidden\n style={{\n position: 'absolute',\n pointerEvents: 'none',\n visibility: 'hidden',\n height: 0,\n overflow: 'hidden',\n border: 0,\n padding: 0,\n }}\n >\n <div className={`${prefixCls}-indent`}>\n <div ref={indentMeasurerRef} className={`${prefixCls}-indent-unit`} />\n </div>\n </div>\n\n <VirtualList<FlattenNode>\n {...domProps}\n data={mergedData}\n onVirtualScroll={onVirtualScroll}\n itemKey={itemKey}\n height={height}\n fullHeight={false}\n virtual={virtual}\n itemHeight={itemHeight}\n prefixCls={`${prefixCls}-list`}\n ref={listRef}\n onVisibleChange={(originList, fullList) => {\n const originSet = new Set(originList);\n const restList = fullList.filter((item) => !originSet.has(item));\n\n // Motion node is not render. Skip motion\n if (restList.some((item) => itemKey(item) === MOTION_KEY)) {\n onMotionEnd();\n }\n }}\n >\n {(treeNode) => {\n const {\n pos,\n data: { ...restProps },\n title,\n key,\n isStart,\n isEnd,\n } = treeNode;\n const mergedKey = getKey(key, pos);\n delete restProps.key;\n delete restProps.children;\n\n const treeNodeProps = getTreeNodeProps(mergedKey, treeNodeRequiredProps);\n\n return (\n <MotionTreeNode\n {...(restProps as Omit<typeof restProps, 'children'>)}\n {...treeNodeProps}\n title={title}\n active={!!activeItem && key === activeItem.key}\n pos={pos}\n data={treeNode.data}\n isStart={isStart}\n isEnd={isEnd}\n motion={motion}\n indentWidth={indentWidth}\n motionNodes={key === MOTION_KEY ? transitionRange : null}\n motionType={motionType}\n onMotionStart={onListChangeStart}\n onMotionEnd={onMotionEnd}\n treeNodeRequiredProps={treeNodeRequiredProps}\n onMouseMove={() => {\n onActiveChange(null);\n }}\n />\n );\n }}\n </VirtualList>\n </>\n );\n});\n\nNodeList.displayName = 'NodeList';\n\nexport default NodeList;\n","/* eslint-disable no-lonely-if */\n/**\n * Legacy code. Should avoid to use if you are new to import these code.\n */\n\nimport warning from 'rc-util/lib/warning';\nimport React from 'react';\nimport {\n BasicDataNode,\n DataEntity,\n DataNode,\n Direction,\n FlattenNode,\n Key,\n KeyEntities,\n NodeElement,\n NodeInstance,\n} from './interface';\nimport { AllowDrop, TreeProps } from './Tree';\nimport TreeNode from './TreeNode';\nimport getEntity from './utils/keyUtil';\n\nexport { getPosition, isTreeNode } from './utils/treeUtil';\n\nexport function arrDel(list: Key[], value: Key) {\n if (!list) return [];\n const clone = list.slice();\n const index = clone.indexOf(value);\n if (index >= 0) {\n clone.splice(index, 1);\n }\n return clone;\n}\n\nexport function arrAdd(list: Key[], value: Key) {\n const clone = (list || []).slice();\n if (clone.indexOf(value) === -1) {\n clone.push(value);\n }\n return clone;\n}\n\nexport function posToArr(pos: string) {\n return pos.split('-');\n}\n\nexport function getDragChildrenKeys<TreeDataType extends BasicDataNode = DataNode>(\n dragNodeKey: Key,\n keyEntities: KeyEntities<TreeDataType>,\n): Key[] {\n // not contains self\n // self for left or right drag\n const dragChildrenKeys = [];\n\n const entity = getEntity(keyEntities, dragNodeKey);\n function dig(list: DataEntity<TreeDataType>[] = []) {\n list.forEach(({ key, children }) => {\n dragChildrenKeys.push(key);\n dig(children);\n });\n }\n\n dig(entity.children);\n\n return dragChildrenKeys;\n}\n\nexport function isLastChild<TreeDataType extends BasicDataNode = DataNode>(\n treeNodeEntity: DataEntity<TreeDataType>,\n) {\n if (treeNodeEntity.parent) {\n const posArr = posToArr(treeNodeEntity.pos);\n return Number(posArr[posArr.length - 1]) === treeNodeEntity.parent.children.length - 1;\n }\n return false;\n}\n\nexport function isFirstChild<TreeDataType extends BasicDataNode = DataNode>(\n treeNodeEntity: DataEntity<TreeDataType>,\n) {\n const posArr = posToArr(treeNodeEntity.pos);\n return Number(posArr[posArr.length - 1]) === 0;\n}\n\n// Only used when drag, not affect SSR.\nexport function calcDropPosition<TreeDataType extends BasicDataNode = DataNode>(\n event: React.MouseEvent,\n dragNode: NodeInstance<TreeDataType>,\n targetNode: NodeInstance<TreeDataType>,\n indent: number,\n startMousePosition: {\n x: number;\n y: number;\n },\n allowDrop: AllowDrop<TreeDataType>,\n flattenedNodes: FlattenNode<TreeDataType>[],\n keyEntities: KeyEntities<TreeDataType>,\n expandKeys: Key[],\n direction: Direction,\n): {\n dropPosition: -1 | 0 | 1;\n dropLevelOffset: number;\n dropTargetKey: Key;\n dropTargetPos: string;\n dropContainerKey: Key;\n dragOverNodeKey: Key;\n dropAllowed: boolean;\n} {\n const { clientX, clientY } = event;\n const { top, height } = (event.target as HTMLElement).getBoundingClientRect();\n // optional chain for testing\n const horizontalMouseOffset =\n (direction === 'rtl' ? -1 : 1) * ((startMousePosition?.x || 0) - clientX);\n const rawDropLevelOffset = (horizontalMouseOffset - 12) / indent;\n\n // Filter the expanded keys to exclude the node that not has children currently (like async nodes).\n const filteredExpandKeys = expandKeys.filter((key: string) => keyEntities[key]?.children?.length);\n\n // find abstract drop node by horizontal offset\n let abstractDropNodeEntity: DataEntity<TreeDataType> = getEntity(\n keyEntities,\n targetNode.props.eventKey,\n );\n\n if (clientY < top + height / 2) {\n // first half, set abstract drop node to previous node\n const nodeIndex = flattenedNodes.findIndex(\n flattenedNode => flattenedNode.key === abstractDropNodeEntity.key,\n );\n const prevNodeIndex = nodeIndex <= 0 ? 0 : nodeIndex - 1;\n const prevNodeKey = flattenedNodes[prevNodeIndex].key;\n abstractDropNodeEntity = getEntity(keyEntities, prevNodeKey);\n }\n\n const initialAbstractDropNodeKey = abstractDropNodeEntity.key;\n\n const abstractDragOverEntity = abstractDropNodeEntity;\n const dragOverNodeKey = abstractDropNodeEntity.key;\n\n let dropPosition: -1 | 0 | 1 = 0;\n let dropLevelOffset = 0;\n\n // Only allow cross level drop when dragging on a non-expanded node\n if (!filteredExpandKeys.includes(initialAbstractDropNodeKey)) {\n for (let i = 0; i < rawDropLevelOffset; i += 1) {\n if (isLastChild(abstractDropNodeEntity)) {\n abstractDropNodeEntity = abstractDropNodeEntity.parent;\n dropLevelOffset += 1;\n } else {\n break;\n }\n }\n }\n\n const abstractDragDataNode = dragNode.props.data;\n const abstractDropDataNode = abstractDropNodeEntity.node;\n let dropAllowed = true;\n if (\n isFirstChild(abstractDropNodeEntity) &&\n abstractDropNodeEntity.level === 0 &&\n clientY < top + height / 2 &&\n allowDrop({\n dragNode: abstractDragDataNode,\n dropNode: abstractDropDataNode,\n dropPosition: -1,\n }) &&\n abstractDropNodeEntity.key === targetNode.props.eventKey\n ) {\n // first half of first node in first level\n dropPosition = -1;\n } else if (\n (abstractDragOverEntity.children || []).length &&\n filteredExpandKeys.includes(dragOverNodeKey)\n ) {\n // drop on expanded node\n // only allow drop inside\n if (\n allowDrop({\n dragNode: abstractDragDataNode,\n dropNode: abstractDropDataNode,\n dropPosition: 0,\n })\n ) {\n dropPosition = 0;\n } else {\n dropAllowed = false;\n }\n } else if (dropLevelOffset === 0) {\n if (rawDropLevelOffset > -1.5) {\n // | Node | <- abstractDropNode\n // | -^-===== | <- mousePosition\n // 1. try drop after\n // 2. do not allow drop\n if (\n allowDrop({\n dragNode: abstractDragDataNode,\n dropNode: abstractDropDataNode,\n dropPosition: 1,\n })\n ) {\n dropPosition = 1;\n } else {\n dropAllowed = false;\n }\n } else {\n // | Node | <- abstractDropNode\n // | ---==^== | <- mousePosition\n // whether it has children or doesn't has children\n // always\n // 1. try drop inside\n // 2. try drop after\n // 3. do not allow drop\n if (\n allowDrop({\n dragNode: abstractDragDataNode,\n dropNode: abstractDropDataNode,\n dropPosition: 0,\n })\n ) {\n dropPosition = 0;\n } else if (\n allowDrop({\n dragNode: abstractDragDataNode,\n dropNode: abstractDropDataNode,\n dropPosition: 1,\n })\n ) {\n dropPosition = 1;\n } else {\n dropAllowed = false;\n }\n }\n } else {\n // | Node1 | <- abstractDropNode\n // | Node2 |\n // --^--|----=====| <- mousePosition\n // 1. try insert after Node1\n // 2. do not allow drop\n if (\n allowDrop({\n dragNode: abstractDragDataNode,\n dropNode: abstractDropDataNode,\n dropPosition: 1,\n })\n ) {\n dropPosition = 1;\n } else {\n dropAllowed = false;\n }\n }\n\n return {\n dropPosition,\n dropLevelOffset,\n dropTargetKey: abstractDropNodeEntity.key,\n dropTargetPos: abstractDropNodeEntity.pos,\n dragOverNodeKey,\n dropContainerKey: dropPosition === 0 ? null : abstractDropNodeEntity.parent?.key || null,\n dropAllowed,\n };\n}\n\n/**\n * Return selectedKeys according with multiple prop\n * @param selectedKeys\n * @param props\n * @returns [string]\n */\nexport function calcSelectedKeys(selectedKeys: Key[], props: TreeProps) {\n if (!selectedKeys) return undefined;\n\n const { multiple } = props;\n if (multiple) {\n return selectedKeys.slice();\n }\n\n if (selectedKeys.length) {\n return [selectedKeys[0]];\n }\n return selectedKeys;\n}\n\nconst internalProcessProps = (props: DataNode): any => props;\nexport function convertDataToTree(\n treeData: DataNode[],\n processor?: { processProps: (prop: DataNode) => any },\n): NodeElement[] {\n if (!treeData) return [];\n\n const { processProps = internalProcessProps } = processor || {};\n const list = Array.isArray(treeData) ? treeData : [treeData];\n return list.map(({ children, ...props }): NodeElement => {\n const childrenNodes = convertDataToTree(children, processor);\n\n return (\n <TreeNode key={props.key} {...processProps(props)}>\n {childrenNodes}\n </TreeNode>\n );\n });\n}\n\n/**\n * Parse `checkedKeys` to { checkedKeys, halfCheckedKeys } style\n */\nexport function parseCheckedKeys(keys: Key[] | { checked: Key[]; halfChecked: Key[] }) {\n if (!keys) {\n return null;\n }\n\n // Convert keys to object format\n let keyProps;\n if (Array.isArray(keys)) {\n // [Legacy] Follow the api doc\n keyProps = {\n checkedKeys: keys,\n halfCheckedKeys: undefined,\n };\n } else if (typeof keys === 'object') {\n keyProps = {\n checkedKeys: keys.checked || undefined,\n halfCheckedKeys: keys.halfChecked || undefined,\n };\n } else {\n warning(false, '`checkedKeys` is not an array or an object');\n return null;\n }\n\n return keyProps;\n}\n\n/**\n * If user use `autoExpandParent` we should get the list of parent node\n * @param keyList\n * @param keyEntities\n */\nexport function conductExpandParent(keyList: Key[], keyEntities: KeyEntities): Key[] {\n const expandedKeys = new Set<Key>();\n\n function conductUp(key: Key) {\n if (expandedKeys.has(key)) return;\n\n const entity = getEntity(keyEntities, key);\n if (!entity) return;\n\n expandedKeys.add(key);\n\n const { parent, node } = entity;\n\n if (node.disabled) return;\n\n if (parent) {\n conductUp(parent.key);\n }\n }\n\n (keyList || []).forEach(key => {\n conductUp(key);\n });\n\n return [...expandedKeys];\n}\n","import warning from 'rc-util/lib/warning';\nimport {\n BasicDataNode,\n DataEntity,\n DataNode,\n GetCheckDisabled,\n Key,\n KeyEntities,\n} from '../interface';\nimport getEntity from './keyUtil';\n\ninterface ConductReturnType {\n checkedKeys: Key[];\n halfCheckedKeys: Key[];\n}\n\nfunction removeFromCheckedKeys(halfCheckedKeys: Set<Key>, checkedKeys: Set<Key>) {\n const filteredKeys = new Set<Key>();\n halfCheckedKeys.forEach(key => {\n if (!checkedKeys.has(key)) {\n filteredKeys.add(key);\n }\n });\n return filteredKeys;\n}\n\nexport function isCheckDisabled<TreeDataType>(node: TreeDataType) {\n const { disabled, disableCheckbox, checkable } = (node || {}) as DataNode;\n return !!(disabled || disableCheckbox) || checkable === false;\n}\n\n// Fill miss keys\nfunction fillConductCheck<TreeDataType extends BasicDataNode = DataNode>(\n keys: Set<Key>,\n levelEntities: Map<number, Set<DataEntity<TreeDataType>>>,\n maxLevel: number,\n syntheticGetCheckDisabled: GetCheckDisabled<TreeDataType>,\n): ConductReturnType {\n const checkedKeys = new Set<Key>(keys);\n const halfCheckedKeys = new Set<Key>();\n\n // Add checked keys top to bottom\n for (let level = 0; level <= maxLevel; level += 1) {\n const entities = levelEntities.get(level) || new Set();\n entities.forEach(entity => {\n const { key, node, children = [] } = entity;\n\n if (checkedKeys.has(key) && !syntheticGetCheckDisabled(node)) {\n children\n .filter(childEntity => !syntheticGetCheckDisabled(childEntity.node))\n .forEach(childEntity => {\n checkedKeys.add(childEntity.key);\n });\n }\n });\n }\n\n // Add checked keys from bottom to top\n const visitedKeys = new Set<Key>();\n for (let level = maxLevel; level >= 0; level -= 1) {\n const entities = levelEntities.get(level) || new Set();\n entities.forEach(entity => {\n const { parent, node } = entity;\n\n // Skip if no need to check\n if (syntheticGetCheckDisabled(node) || !entity.parent || visitedKeys.has(entity.parent.key)) {\n return;\n }\n\n // Skip if parent is disabled\n if (syntheticGetCheckDisabled(entity.parent.node)) {\n visitedKeys.add(parent.key);\n return;\n }\n\n let allChecked = true;\n let partialChecked = false;\n\n (parent.children || [])\n .filter(childEntity => !syntheticGetCheckDisabled(childEntity.node))\n .forEach(({ key }) => {\n const checked = checkedKeys.has(key);\n if (allChecked && !checked) {\n allChecked = false;\n }\n if (!partialChecked && (checked || halfCheckedKeys.has(key))) {\n partialChecked = true;\n }\n });\n\n if (allChecked) {\n checkedKeys.add(parent.key);\n }\n if (partialChecked) {\n halfCheckedKeys.add(parent.key);\n }\n\n visitedKeys.add(parent.key);\n });\n }\n\n return {\n checkedKeys: Array.from(checkedKeys),\n halfCheckedKeys: Array.from(removeFromCheckedKeys(halfCheckedKeys, checkedKeys)),\n };\n}\n\n// Remove useless key\nfunction cleanConductCheck<TreeDataType extends BasicDataNode = DataNode>(\n keys: Set<Key>,\n halfKeys: Key[],\n levelEntities: Map<number, Set<DataEntity<TreeDataType>>>,\n maxLevel: number,\n syntheticGetCheckDisabled: GetCheckDisabled<TreeDataType>,\n): ConductReturnType {\n const checkedKeys = new Set<Key>(keys);\n let halfCheckedKeys = new Set<Key>(halfKeys);\n\n // Remove checked keys from top to bottom\n for (let level = 0; level <= maxLevel; level += 1) {\n const entities = levelEntities.get(level) || new Set();\n entities.forEach(entity => {\n const { key, node, children = [] } = entity;\n\n if (!checkedKeys.has(key) && !halfCheckedKeys.has(key) && !syntheticGetCheckDisabled(node)) {\n children\n .filter(childEntity => !syntheticGetCheckDisabled(childEntity.node))\n .forEach(childEntity => {\n checkedKeys.delete(childEntity.key);\n });\n }\n });\n }\n\n // Remove checked keys form bottom to top\n halfCheckedKeys = new Set<Key>();\n const visitedKeys = new Set<Key>();\n for (let level = maxLevel; level >= 0; level -= 1) {\n const entities = levelEntities.get(level) || new Set();\n\n entities.forEach(entity => {\n const { parent, node } = entity;\n\n // Skip if no need to check\n if (syntheticGetCheckDisabled(node) || !entity.parent || visitedKeys.has(entity.parent.key)) {\n return;\n }\n\n // Skip if parent is disabled\n if (syntheticGetCheckDisabled(entity.parent.node)) {\n visitedKeys.add(parent.key);\n return;\n }\n\n let allChecked = true;\n let partialChecked = false;\n\n (parent.children || [])\n .filter(childEntity => !syntheticGetCheckDisabled(childEntity.node))\n .forEach(({ key }) => {\n const checked = checkedKeys.has(key);\n if (allChecked && !checked) {\n allChecked = false;\n }\n if (!partialChecked && (checked || halfCheckedKeys.has(key))) {\n partialChecked = true;\n }\n });\n\n if (!allChecked) {\n checkedKeys.delete(parent.key);\n }\n if (partialChecked) {\n halfCheckedKeys.add(parent.key);\n }\n\n visitedKeys.add(parent.key);\n });\n }\n\n return {\n checkedKeys: Array.from(checkedKeys),\n halfCheckedKeys: Array.from(removeFromCheckedKeys(halfCheckedKeys, checkedKeys)),\n };\n}\n\n/**\n * Conduct with keys.\n * @param keyList current key list\n * @param keyEntities key - dataEntity map\n * @param mode `fill` to fill missing key, `clean` to remove useless key\n */\nexport function conductCheck<TreeDataType extends BasicDataNode = DataNode>(\n keyList: Key[],\n checked: true | { checked: false; halfCheckedKeys: Key[] },\n keyEntities: KeyEntities<TreeDataType>,\n getCheckDisabled?: GetCheckDisabled<TreeDataType>,\n): ConductReturnType {\n const warningMissKeys: Key[] = [];\n\n let syntheticGetCheckDisabled: GetCheckDisabled<TreeDataType>;\n if (getCheckDisabled) {\n syntheticGetCheckDisabled = getCheckDisabled;\n } else {\n syntheticGetCheckDisabled = isCheckDisabled;\n }\n\n // We only handle exist keys\n const keys = new Set<Key>(\n keyList.filter(key => {\n const hasEntity = !!getEntity(keyEntities, key);\n if (!hasEntity) {\n warningMissKeys.push(key);\n }\n\n return hasEntity;\n }),\n );\n const levelEntities = new Map<number, Set<DataEntity<TreeDataType>>>();\n let maxLevel = 0;\n\n // Convert entities by level for calculation\n Object.keys(keyEntities).forEach(key => {\n const entity = keyEntities[key];\n const { level } = entity;\n\n let levelSet: Set<DataEntity<TreeDataType>> = levelEntities.get(level);\n if (!levelSet) {\n levelSet = new Set();\n levelEntities.set(level, levelSet);\n }\n\n levelSet.add(entity);\n\n maxLevel = Math.max(maxLevel, level);\n });\n\n warning(\n !warningMissKeys.length,\n `Tree missing follow keys: ${warningMissKeys\n .slice(0, 100)\n .map(key => `'${key}'`)\n .join(', ')}`,\n );\n\n let result: ConductReturnType;\n if (checked === true) {\n result = fillConductCheck<TreeDataType>(\n keys,\n levelEntities,\n maxLevel,\n syntheticGetCheckDisabled,\n );\n } else {\n result = cleanConductCheck(\n keys,\n checked.halfCheckedKeys,\n levelEntities,\n maxLevel,\n syntheticGetCheckDisabled,\n );\n }\n\n return result;\n}\n","// TODO: https://www.w3.org/TR/2017/NOTE-wai-aria-practices-1.1-20171214/examples/treeview/treeview-2/treeview-2a.html\n// Fully accessibility support\n\nimport classNames from 'classnames';\nimport KeyCode from 'rc-util/lib/KeyCode';\nimport pickAttrs from 'rc-util/lib/pickAttrs';\nimport warning from 'rc-util/lib/warning';\nimport * as React from 'react';\n\nimport {\n NodeDragEventHandler,\n NodeDragEventParams,\n NodeMouseEventHandler,\n NodeMouseEventParams,\n TreeContext,\n} from './contextTypes';\nimport DropIndicator from './DropIndicator';\nimport {\n BasicDataNode,\n DataNode,\n Direction,\n EventDataNode,\n FieldNames,\n FlattenNode,\n IconType,\n Key,\n KeyEntities,\n NodeInstance,\n SafeKey,\n ScrollTo,\n} from './interface';\nimport NodeList, { MotionEntity, MOTION_KEY, NodeListRef } from './NodeList';\nimport TreeNode from './TreeNode';\nimport {\n arrAdd,\n arrDel,\n calcDropPosition,\n calcSelectedKeys,\n conductExpandParent,\n getDragChildrenKeys,\n parseCheckedKeys,\n posToArr,\n} from './util';\nimport { conductCheck } from './utils/conductUtil';\nimport getEntity from './utils/keyUtil';\nimport {\n convertDataToEntities,\n convertNodePropsToEventData,\n convertTreeToData,\n fillFieldNames,\n flattenTreeData,\n getTreeNodeProps,\n warningWithoutKey,\n} from './utils/treeUtil';\n\nconst MAX_RETRY_TIMES = 10;\n\nexport interface CheckInfo<TreeDataType extends BasicDataNode = DataNode> {\n event: 'check';\n node: EventDataNode<TreeDataType>;\n checked: boolean;\n nativeEvent: MouseEvent;\n checkedNodes: TreeDataType[];\n checkedNodesPositions?: { node: TreeDataType; pos: string }[];\n halfCheckedKeys?: Key[];\n}\n\nexport interface AllowDropOptions<TreeDataType extends BasicDataNode = DataNode> {\n dragNode: TreeDataType;\n dropNode: TreeDataType;\n dropPosition: -1 | 0 | 1;\n}\nexport type AllowDrop<TreeDataType extends BasicDataNode = DataNode> = (\n options: AllowDropOptions<TreeDataType>,\n) => boolean;\n\nexport type DraggableFn = (node: DataNode) => boolean;\nexport type DraggableConfig = {\n icon?: React.ReactNode | false;\n nodeDraggable?: DraggableFn;\n};\n\nexport type ExpandAction = false | 'click' | 'doubleClick';\n\nexport interface TreeProps<TreeDataType extends BasicDataNode = DataNode> {\n prefixCls: string;\n className?: string;\n style?: React.CSSProperties;\n focusable?: boolean;\n activeKey?: Key | null;\n tabIndex?: number;\n children?: React.ReactNode;\n treeData?: TreeDataType[]; // Generate treeNode by children\n fieldNames?: FieldNames;\n showLine?: boolean;\n showIcon?: boolean;\n icon?: IconType;\n indentWidth?: number;\n selectable?: boolean;\n expandAction?: ExpandAction;\n disabled?: boolean;\n multiple?: boolean;\n checkable?: boolean | React.ReactNode;\n checkStrictly?: boolean;\n draggable?: DraggableFn | boolean | DraggableConfig;\n defaultExpandParent?: boolean;\n autoExpandParent?: boolean;\n defaultExpandAll?: boolean;\n defaultExpandedKeys?: Key[];\n expandedKeys?: Key[];\n defaultCheckedKeys?: Key[];\n checkedKeys?: Key[] | { checked: Key[]; halfChecked: Key[] };\n defaultSelectedKeys?: Key[];\n selectedKeys?: Key[];\n allowDrop?: AllowDrop<TreeDataType>;\n titleRender?: (node: TreeDataType) => React.ReactNode;\n dropIndicatorRender?: (props: {\n dropPosition: -1 | 0 | 1;\n dropLevelOffset: number;\n indent: number;\n prefixCls: string;\n direction: Direction;\n }) => React.ReactNode;\n onFocus?: React.FocusEventHandler<HTMLDivElement>;\n onBlur?: React.FocusEventHandler<HTMLDivElement>;\n onKeyDown?: React.KeyboardEventHandler<HTMLDivElement>;\n onContextMenu?: React.MouseEventHandler<HTMLDivElement>;\n onClick?: NodeMouseEventHandler<TreeDataType>;\n onDoubleClick?: NodeMouseEventHandler<TreeDataType>;\n onScroll?: React.UIEventHandler<HTMLElement>;\n onExpand?: (\n expandedKeys: Key[],\n info: {\n node: EventDataNode<TreeDataType>;\n expanded: boolean;\n nativeEvent: MouseEvent;\n },\n ) => void;\n onCheck?: (\n checked: { checked: Key[]; halfChecked: Key[] } | Key[],\n info: CheckInfo<TreeDataType>,\n ) => void;\n onSelect?: (\n selectedKeys: Key[],\n info: {\n event: 'select';\n selected: boolean;\n node: EventDataNode<TreeDataType>;\n selectedNodes: TreeDataType[];\n nativeEvent: MouseEvent;\n },\n ) => void;\n onLoad?: (\n loadedKeys: Key[],\n info: {\n event: 'load';\n node: EventDataNode<TreeDataType>;\n },\n ) => void;\n loadData?: (treeNode: EventDataNode<TreeDataType>) => Promise<any>;\n loadedKeys?: Key[];\n onMouseEnter?: (info: NodeMouseEventParams<TreeDataType>) => void;\n onMouseLeave?: (info: NodeMouseEventParams<TreeDataType>) => void;\n onRightClick?: (info: { event: React.MouseEvent; node: EventDataNode<TreeDataType> }) => void;\n onDragStart?: (info: NodeDragEventParams<TreeDataType>) => void;\n onDragEnter?: (info: NodeDragEventParams<TreeDataType> & { expandedKeys: Key[] }) => void;\n onDragOver?: (info: NodeDragEventParams<TreeDataType>) => void;\n onDragLeave?: (info: NodeDragEventParams<TreeDataType>) => void;\n onDragEnd?: (info: NodeDragEventParams<TreeDataType>) => void;\n onDrop?: (\n info: NodeDragEventParams<TreeDataType> & {\n dragNode: EventDataNode<TreeDataType>;\n dragNodesKeys: Key[];\n dropPosition: number;\n dropToGap: boolean;\n },\n ) => void;\n /**\n * Used for `rc-tree-select` only.\n * Do not use in your production code directly since this will be refactor.\n */\n onActiveChange?: (key: Key) => void;\n filterTreeNode?: (treeNode: EventDataNode<TreeDataType>) => boolean;\n motion?: any;\n switcherIcon?: IconType;\n\n // Virtual List\n height?: number;\n itemHeight?: number;\n scrollWidth?: number;\n onVirtualScroll?: (info: any) => any;\n itemScrollOffset?: number;\n virtual?: boolean;\n\n // direction for drag logic\n direction?: Direction;\n\n rootClassName?: string;\n rootStyle?: React.CSSProperties;\n}\n\ninterface TreeState<TreeDataType extends BasicDataNode = DataNode> {\n keyEntities: KeyEntities<TreeDataType>;\n\n indent: number | null;\n\n selectedKeys: Key[];\n checkedKeys: Key[];\n halfCheckedKeys: Key[];\n loadedKeys: Key[];\n loadingKeys: Key[];\n expandedKeys: Key[];\n\n draggingNodeKey: Key;\n dragChildrenKeys: Key[];\n\n // for details see comment in Tree.state\n dropPosition: -1 | 0 | 1 | null;\n dropLevelOffset: number | null;\n dropContainerKey: Key | null;\n dropTargetKey: Key | null;\n dropTargetPos: string | null;\n dropAllowed: boolean;\n dragOverNodeKey: Key | null;\n\n treeData: TreeDataType[];\n flattenNodes: FlattenNode<TreeDataType>[];\n\n focused: boolean;\n activeKey: Key | null;\n\n // Record if list is changing\n listChanging: boolean;\n\n prevProps: TreeProps;\n\n fieldNames: FieldNames;\n}\n\nclass Tree<TreeDataType extends DataNode | BasicDataNode = DataNode> extends React.Component<\n TreeProps<TreeDataType>,\n TreeState<TreeDataType>\n> {\n static defaultProps = {\n prefixCls: 'rc-tree',\n showLine: false,\n showIcon: true,\n selectable: true,\n multiple: false,\n checkable: false,\n disabled: false,\n checkStrictly: false,\n draggable: false,\n defaultExpandParent: true,\n autoExpandParent: false,\n defaultExpandAll: false,\n defaultExpandedKeys: [],\n defaultCheckedKeys: [],\n defaultSelectedKeys: [],\n dropIndicatorRender: DropIndicator,\n allowDrop: () => true,\n expandAction: false,\n };\n\n static TreeNode = TreeNode;\n\n destroyed: boolean = false;\n\n delayedDragEnterLogic: Record<SafeKey, number>;\n\n loadingRetryTimes: Record<SafeKey, number> = {};\n\n state: TreeState<TreeDataType> = {\n keyEntities: {},\n\n indent: null,\n\n selectedKeys: [],\n checkedKeys: [],\n halfCheckedKeys: [],\n loadedKeys: [],\n loadingKeys: [],\n expandedKeys: [],\n\n draggingNodeKey: null,\n dragChildrenKeys: [],\n\n // dropTargetKey is the key of abstract-drop-node\n // the abstract-drop-node is the real drop node when drag and drop\n // not the DOM drag over node\n dropTargetKey: null,\n dropPosition: null, // the drop position of abstract-drop-node, inside 0, top -1, bottom 1\n dropContainerKey: null, // the container key of abstract-drop-node if dropPosition is -1 or 1\n dropLevelOffset: null, // the drop level offset of abstract-drag-over-node\n dropTargetPos: null, // the pos of abstract-drop-node\n dropAllowed: true, // if drop to abstract-drop-node is allowed\n // the abstract-drag-over-node\n // if mouse is on the bottom of top dom node or no the top of the bottom dom node\n // abstract-drag-over-node is the top node\n dragOverNodeKey: null,\n\n treeData: [],\n flattenNodes: [],\n\n focused: false,\n activeKey: null,\n\n listChanging: false,\n\n prevProps: null,\n\n fieldNames: fillFieldNames(),\n };\n\n dragStartMousePosition = null;\n\n dragNode: NodeInstance<TreeDataType>;\n\n currentMouseOverDroppableNodeKey = null;\n\n listRef = React.createRef<NodeListRef>();\n\n componentDidMount(): void {\n this.destroyed = false;\n this.onUpdated();\n }\n\n componentDidUpdate(): void {\n this.onUpdated();\n }\n\n onUpdated() {\n const { activeKey, itemScrollOffset = 0 } = this.props;\n\n if (activeKey !== undefined && activeKey !== this.state.activeKey) {\n this.setState({ activeKey });\n\n if (activeKey !== null) {\n this.scrollTo({ key: activeKey, offset: itemScrollOffset });\n }\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('dragend', this.onWindowDragEnd);\n this.destroyed = true;\n }\n\n static getDerivedStateFromProps(props: TreeProps, prevState: TreeState) {\n const { prevProps } = prevState;\n const newState: Partial<TreeState> = {\n prevProps: props,\n };\n\n function needSync(name: string) {\n return (!prevProps && name in props) || (prevProps && prevProps[name] !== props[name]);\n }\n\n // ================== Tree Node ==================\n let treeData: DataNode[];\n\n // fieldNames\n let { fieldNames } = prevState;\n if (needSync('fieldNames')) {\n fieldNames = fillFieldNames(props.fieldNames);\n newState.fieldNames = fieldNames;\n }\n\n // Check if `treeData` or `children` changed and save into the state.\n if (needSync('treeData')) {\n ({ treeData } = props);\n } else if (needSync('children')) {\n warning(false, '`children` of Tree is deprecated. Please use `treeData` instead.');\n treeData = convertTreeToData(props.children);\n }\n\n // Save flatten nodes info and convert `treeData` into keyEntities\n if (treeData) {\n newState.treeData = treeData;\n const entitiesMap = convertDataToEntities(treeData, { fieldNames });\n newState.keyEntities = {\n [MOTION_KEY]: MotionEntity,\n ...entitiesMap.keyEntities,\n };\n\n // Warning if treeNode not provide key\n if (process.env.NODE_ENV !== 'production') {\n warningWithoutKey(treeData, fieldNames);\n }\n }\n\n const keyEntities = newState.keyEntities || prevState.keyEntities;\n\n // ================ expandedKeys =================\n if (needSync('expandedKeys') || (prevProps && needSync('autoExpandParent'))) {\n newState.expandedKeys =\n props.autoExpandParent || (!prevProps && props.defaultExpandParent)\n ? conductExpandParent(props.expandedKeys, keyEntities)\n : props.expandedKeys;\n } else if (!prevProps && props.defaultExpandAll) {\n const cloneKeyEntities = { ...keyEntities };\n delete cloneKeyEntities[MOTION_KEY];\n newState.expandedKeys = Object.keys(cloneKeyEntities).map((key) => cloneKeyEntities[key].key);\n } else if (!prevProps && props.defaultExpandedKeys) {\n newState.expandedKeys =\n props.autoExpandParent || props.defaultExpandParent\n ? conductExpandParent(props.defaultExpandedKeys, keyEntities)\n : props.defaultExpandedKeys;\n }\n\n if (!newState.expandedKeys) {\n delete newState.expandedKeys;\n }\n\n // ================ flattenNodes =================\n if (treeData || newState.expandedKeys) {\n const flattenNodes: FlattenNode[] = flattenTreeData(\n treeData || prevState.treeData,\n newState.expandedKeys || prevState.expandedKeys,\n fieldNames,\n );\n newState.flattenNodes = flattenNodes;\n }\n\n // ================ selectedKeys =================\n if (props.selectable) {\n if (needSync('selectedKeys')) {\n newState.selectedKeys = calcSelectedKeys(props.selectedKeys, props);\n } else if (!prevProps && props.defaultSelectedKeys) {\n newState.selectedKeys = calcSelectedKeys(props.defaultSelectedKeys, props);\n }\n }\n\n // ================= checkedKeys =================\n if (props.checkable) {\n let checkedKeyEntity;\n\n if (needSync('checkedKeys')) {\n checkedKeyEntity = parseCheckedKeys(props.checkedKeys) || {};\n } else if (!prevProps && props.defaultCheckedKeys) {\n checkedKeyEntity = parseCheckedKeys(props.defaultCheckedKeys) || {};\n } else if (treeData) {\n // If `treeData` changed, we also need check it\n checkedKeyEntity = parseCheckedKeys(props.checkedKeys) || {\n checkedKeys: prevState.checkedKeys,\n halfCheckedKeys: prevState.halfCheckedKeys,\n };\n }\n\n if (checkedKeyEntity) {\n let { checkedKeys = [], halfCheckedKeys = [] } = checkedKeyEntity;\n\n if (!props.checkStrictly) {\n const conductKeys = conductCheck(checkedKeys, true, keyEntities);\n ({ checkedKeys, halfCheckedKeys } = conductKeys);\n }\n\n newState.checkedKeys = checkedKeys;\n newState.halfCheckedKeys = halfCheckedKeys;\n }\n }\n\n // ================= loadedKeys ==================\n if (needSync('loadedKeys')) {\n newState.loadedKeys = props.loadedKeys;\n }\n\n return newState;\n }\n\n onNodeDragStart: NodeDragEventHandler<TreeDataType, HTMLDivElement> = (event, node) => {\n const { expandedKeys, keyEntities } = this.state;\n const { onDragStart } = this.props;\n const { eventKey } = node.props;\n\n this.dragNode = node;\n this.dragStartMousePosition = {\n x: event.clientX,\n y: event.clientY,\n };\n\n const newExpandedKeys = arrDel(expandedKeys, eventKey);\n\n this.setState({\n draggingNodeKey: eventKey,\n dragChildrenKeys: getDragChildrenKeys(eventKey, keyEntities),\n indent: this.listRef.current.getIndentWidth(),\n });\n\n this.setExpandedKeys(newExpandedKeys);\n\n window.addEventListener('dragend', this.onWindowDragEnd);\n\n onDragStart?.({ event, node: convertNodePropsToEventData<TreeDataType>(node.props) });\n };\n\n /**\n * [Legacy] Select handler is smaller than node,\n * so that this will trigger when drag enter node or select handler.\n * This is a little tricky if customize css without padding.\n * Better for use mouse move event to refresh drag state.\n * But let's just keep it to avoid event trigger logic change.\n */\n onNodeDragEnter = (event: React.DragEvent<HTMLDivElement>, node: NodeInstance<TreeDataType>) => {\n const { expandedKeys, keyEntities, dragChildrenKeys, flattenNodes, indent } = this.state;\n const { onDragEnter, onExpand, allowDrop, direction } = this.props;\n const { pos, eventKey } = node.props;\n const { dragNode } = this;\n\n // record the key of node which is latest entered, used in dragleave event.\n if (this.currentMouseOverDroppableNodeKey !== eventKey) {\n this.currentMouseOverDroppableNodeKey = eventKey;\n }\n\n if (!dragNode) {\n this.resetDragState();\n return;\n }\n\n const {\n dropPosition,\n dropLevelOffset,\n dropTargetKey,\n dropContainerKey,\n dropTargetPos,\n dropAllowed,\n dragOverNodeKey,\n } = calcDropPosition<TreeDataType>(\n event,\n dragNode,\n node,\n indent,\n this.dragStartMousePosition,\n allowDrop,\n flattenNodes,\n keyEntities,\n expandedKeys,\n direction,\n );\n\n if (\n // don't allow drop inside its children\n dragChildrenKeys.indexOf(dropTargetKey) !== -1 ||\n // don't allow drop when drop is not allowed caculated by calcDropPosition\n !dropAllowed\n ) {\n this.resetDragState();\n return;\n }\n\n // Side effect for delay drag\n if (!this.delayedDragEnterLogic) {\n this.delayedDragEnterLogic = {};\n }\n Object.keys(this.delayedDragEnterLogic).forEach((key) => {\n clearTimeout(this.delayedDragEnterLogic[key]);\n });\n\n if (dragNode.props.eventKey !== node.props.eventKey) {\n // hoist expand logic here\n // since if logic is on the bottom\n // it will be blocked by abstract dragover node check\n // => if you dragenter from top, you mouse will still be consider as in the top node\n event.persist();\n this.delayedDragEnterLogic[pos] = window.setTimeout(() => {\n if (this.state.draggingNodeKey === null) return;\n\n let newExpandedKeys = [...expandedKeys];\n const entity = getEntity(keyEntities, node.props.eventKey);\n\n if (entity && (entity.children || []).length) {\n newExpandedKeys = arrAdd(expandedKeys, node.props.eventKey);\n }\n\n if (!('expandedKeys' in this.props)) {\n this.setExpandedKeys(newExpandedKeys);\n }\n\n onExpand?.(newExpandedKeys, {\n node: convertNodePropsToEventData(node.props),\n expanded: true,\n nativeEvent: event.nativeEvent,\n });\n }, 800);\n }\n\n // Skip if drag node is self\n if (dragNode.props.eventKey === dropTargetKey && dropLevelOffset === 0) {\n this.resetDragState();\n return;\n }\n\n // Update drag over node and drag state\n this.setState({\n dragOverNodeKey,\n dropPosition,\n dropLevelOffset,\n dropTargetKey,\n dropContainerKey,\n dropTargetPos,\n dropAllowed,\n });\n\n onDragEnter?.({\n event,\n node: convertNodePropsToEventData(node.props),\n expandedKeys,\n });\n };\n\n onNodeDragOver = (event: React.DragEvent<HTMLDivElement>, node: NodeInstance<TreeDataType>) => {\n const { dragChildrenKeys, flattenNodes, keyEntities, expandedKeys, indent } = this.state;\n const { onDragOver, allowDrop, direction } = this.props;\n const { dragNode } = this;\n\n if (!dragNode) {\n return;\n }\n\n const {\n dropPosition,\n dropLevelOffset,\n dropTargetKey,\n dropContainerKey,\n dropAllowed,\n dropTargetPos,\n dragOverNodeKey,\n } = calcDropPosition(\n event,\n dragNode,\n node,\n indent,\n this.dragStartMousePosition,\n allowDrop,\n flattenNodes,\n keyEntities,\n expandedKeys,\n direction,\n );\n\n if (dragChildrenKeys.indexOf(dropTargetKey) !== -1 || !dropAllowed) {\n // don't allow drop inside its children\n // don't allow drop when drop is not allowed calculated by calcDropPosition\n return;\n }\n\n // Update drag position\n\n if (dragNode.props.eventKey === dropTargetKey && dropLevelOffset === 0) {\n if (\n !(\n this.state.dropPosition === null &&\n this.state.dropLevelOffset === null &&\n this.state.dropTargetKey === null &&\n this.state.dropContainerKey === null &&\n this.state.dropTargetPos === null &&\n this.state.dropAllowed === false &&\n this.state.dragOverNodeKey === null\n )\n ) {\n this.resetDragState();\n }\n } else if (\n !(\n dropPosition === this.state.dropPosition &&\n dropLevelOffset === this.state.dropLevelOffset &&\n dropTargetKey === this.state.dropTargetKey &&\n dropContainerKey === this.state.dropContainerKey &&\n dropTargetPos === this.state.dropTargetPos &&\n dropAllowed === this.state.dropAllowed &&\n dragOverNodeKey === this.state.dragOverNodeKey\n )\n ) {\n this.setState({\n dropPosition,\n dropLevelOffset,\n dropTargetKey,\n dropContainerKey,\n dropTargetPos,\n dropAllowed,\n dragOverNodeKey,\n });\n }\n\n onDragOver?.({ event, node: convertNodePropsToEventData(node.props) });\n };\n\n onNodeDragLeave: NodeDragEventHandler<TreeDataType> = (event, node) => {\n // if it is outside the droppable area\n // currentMouseOverDroppableNodeKey will be updated in dragenter event when into another droppable receiver.\n if (\n this.currentMouseOverDroppableNodeKey === node.props.eventKey &&\n !event.currentTarget.contains(event.relatedTarget as Node)\n ) {\n this.resetDragState();\n this.currentMouseOverDroppableNodeKey = null;\n }\n\n const { onDragLeave } = this.props;\n\n onDragLeave?.({ event, node: convertNodePropsToEventData<TreeDataType>(node.props) });\n };\n\n // since stopPropagation() is called in treeNode\n // if onWindowDrag is called, whice means state is keeped, drag state should be cleared\n onWindowDragEnd = (event) => {\n this.onNodeDragEnd(event, null, true);\n window.removeEventListener('dragend', this.onWindowDragEnd);\n };\n\n // if onNodeDragEnd is called, onWindowDragEnd won't be called since stopPropagation() is called\n onNodeDragEnd: NodeDragEventHandler<TreeDataType> = (event, node) => {\n const { onDragEnd } = this.props;\n this.setState({\n dragOverNodeKey: null,\n });\n\n this.cleanDragState();\n\n onDragEnd?.({ event, node: convertNodePropsToEventData<TreeDataType>(node.props) });\n\n this.dragNode = null;\n\n window.removeEventListener('dragend', this.onWindowDragEnd);\n };\n\n onNodeDrop = (event: React.DragEvent<HTMLDivElement>, node, outsideTree: boolean = false) => {\n const { dragChildrenKeys, dropPosition, dropTargetKey, dropTargetPos, dropAllowed } =\n this.state;\n\n if (!dropAllowed) return;\n\n const { onDrop } = this.props;\n\n this.setState({\n dragOverNodeKey: null,\n });\n this.cleanDragState();\n\n if (dropTargetKey === null) return;\n\n const abstractDropNodeProps = {\n ...getTreeNodeProps(dropTargetKey, this.getTreeNodeRequiredProps()),\n active: this.getActiveItem()?.key === dropTargetKey,\n data: getEntity(this.state.keyEntities, dropTargetKey).node,\n };\n const dropToChild = dragChildrenKeys.indexOf(dropTargetKey) !== -1;\n\n warning(\n !dropToChild,\n \"Can not drop to dragNode's children node. This is a bug of rc-tree. Please report an issue.\",\n );\n\n const posArr = posToArr(dropTargetPos);\n\n const dropResult = {\n event,\n node: convertNodePropsToEventData(abstractDropNodeProps),\n dragNode: this.dragNode ? convertNodePropsToEventData(this.dragNode.props) : null,\n dragNodesKeys: [this.dragNode.props.eventKey].concat(dragChildrenKeys),\n dropToGap: dropPosition !== 0,\n dropPosition: dropPosition + Number(posArr[posArr.length - 1]),\n };\n\n if (!outsideTree) {\n onDrop?.(dropResult);\n }\n\n this.dragNode = null;\n };\n\n resetDragState() {\n this.setState({\n dragOverNodeKey: null,\n dropPosition: null,\n dropLevelOffset: null,\n dropTargetKey: null,\n dropContainerKey: null,\n dropTargetPos: null,\n dropAllowed: false,\n });\n }\n\n cleanDragState = () => {\n const { draggingNodeKey } = this.state;\n if (draggingNodeKey !== null) {\n this.setState({\n draggingNodeKey: null,\n dropPosition: null,\n dropContainerKey: null,\n dropTargetKey: null,\n dropLevelOffset: null,\n dropAllowed: true,\n dragOverNodeKey: null,\n });\n }\n this.dragStartMousePosition = null;\n this.currentMouseOverDroppableNodeKey = null;\n };\n\n triggerExpandActionExpand: NodeMouseEventHandler = (e, treeNode) => {\n const { expandedKeys, flattenNodes } = this.state;\n const { expanded, key, isLeaf } = treeNode;\n\n if (isLeaf || e.shiftKey || e.metaKey || e.ctrlKey) {\n return;\n }\n\n const node = flattenNodes.filter((nodeItem) => nodeItem.key === key)[0];\n const eventNode = convertNodePropsToEventData<TreeDataType>({\n ...getTreeNodeProps(key, this.getTreeNodeRequiredProps()),\n data: node.data,\n });\n\n this.setExpandedKeys(expanded ? arrDel(expandedKeys, key) : arrAdd(expandedKeys, key));\n this.onNodeExpand(e as React.MouseEvent<HTMLDivElement>, eventNode);\n };\n\n onNodeClick: NodeMouseEventHandler<TreeDataType> = (e, treeNode) => {\n const { onClick, expandAction } = this.props;\n\n if (expandAction === 'click') {\n this.triggerExpandActionExpand(e, treeNode);\n }\n\n onClick?.(e, treeNode);\n };\n\n onNodeDoubleClick: NodeMouseEventHandler<TreeDataType> = (e, treeNode) => {\n const { onDoubleClick, expandAction } = this.props;\n\n if (expandAction === 'doubleClick') {\n this.triggerExpandActionExpand(e, treeNode);\n }\n\n onDoubleClick?.(e, treeNode);\n };\n\n onNodeSelect: NodeMouseEventHandler<TreeDataType> = (e, treeNode) => {\n let { selectedKeys } = this.state;\n const { keyEntities, fieldNames } = this.state;\n const { onSelect, multiple } = this.props;\n const { selected } = treeNode;\n const key = treeNode[fieldNames.key];\n const targetSelected = !selected;\n\n // Update selected keys\n if (!targetSelected) {\n selectedKeys = arrDel(selectedKeys, key);\n } else if (!multiple) {\n selectedKeys = [key];\n } else {\n selectedKeys = arrAdd(selectedKeys, key);\n }\n\n // [Legacy] Not found related usage in doc or upper libs\n const selectedNodes = selectedKeys\n .map((selectedKey) => {\n const entity = getEntity(keyEntities, selectedKey);\n if (!entity) return null;\n\n return entity.node;\n })\n .filter((node) => node);\n\n this.setUncontrolledState({ selectedKeys });\n\n onSelect?.(selectedKeys, {\n event: 'select',\n selected: targetSelected,\n node: treeNode,\n selectedNodes,\n nativeEvent: e.nativeEvent,\n });\n };\n\n onNodeCheck = (\n e: React.MouseEvent<HTMLSpanElement>,\n treeNode: EventDataNode<TreeDataType>,\n checked: boolean,\n ) => {\n const {\n keyEntities,\n checkedKeys: oriCheckedKeys,\n halfCheckedKeys: oriHalfCheckedKeys,\n } = this.state;\n const { checkStrictly, onCheck } = this.props;\n const { key } = treeNode;\n\n // Prepare trigger arguments\n let checkedObj;\n const eventObj: Partial<CheckInfo<TreeDataType>> = {\n event: 'check',\n node: treeNode,\n checked,\n nativeEvent: e.nativeEvent,\n };\n\n if (checkStrictly) {\n const checkedKeys = checked ? arrAdd(oriCheckedKeys, key) : arrDel(oriCheckedKeys, key);\n const halfCheckedKeys = arrDel(oriHalfCheckedKeys, key);\n checkedObj = { checked: checkedKeys, halfChecked: halfCheckedKeys };\n\n eventObj.checkedNodes = checkedKeys\n .map((checkedKey) => getEntity(keyEntities, checkedKey))\n .filter((entity) => entity)\n .map((entity) => entity.node);\n\n this.setUncontrolledState({ checkedKeys });\n } else {\n // Always fill first\n let { checkedKeys, halfCheckedKeys } = conductCheck(\n [...oriCheckedKeys, key],\n true,\n keyEntities,\n );\n\n // If remove, we do it again to correction\n if (!checked) {\n const keySet = new Set(checkedKeys);\n keySet.delete(key);\n ({ checkedKeys, halfCheckedKeys } = conductCheck(\n Array.from(keySet),\n { checked: false, halfCheckedKeys },\n keyEntities,\n ));\n }\n\n checkedObj = checkedKeys;\n\n // [Legacy] This is used for `rc-tree-select`\n eventObj.checkedNodes = [];\n eventObj.checkedNodesPositions = [];\n eventObj.halfCheckedKeys = halfCheckedKeys;\n\n checkedKeys.forEach((checkedKey) => {\n const entity = getEntity(keyEntities, checkedKey);\n if (!entity) return;\n\n const { node, pos } = entity;\n\n eventObj.checkedNodes.push(node);\n eventObj.checkedNodesPositions.push({ node, pos });\n });\n\n this.setUncontrolledState(\n {\n checkedKeys,\n },\n false,\n {\n halfCheckedKeys,\n },\n );\n }\n\n onCheck?.(checkedObj, eventObj as CheckInfo<TreeDataType>);\n };\n\n onNodeLoad = (treeNode: EventDataNode<TreeDataType>) => {\n const { key } = treeNode;\n\n const loadPromise = new Promise<void>((resolve, reject) => {\n // We need to get the latest state of loading/loaded keys\n this.setState(({ loadedKeys = [], loadingKeys = [] }): any => {\n const { loadData, onLoad } = this.props;\n\n if (!loadData || loadedKeys.indexOf(key) !== -1 || loadingKeys.indexOf(key) !== -1) {\n return null;\n }\n\n // Process load data\n const promise = loadData(treeNode);\n promise\n .then(() => {\n const { loadedKeys: currentLoadedKeys } = this.state;\n const newLoadedKeys = arrAdd(currentLoadedKeys, key);\n\n // onLoad should trigger before internal setState to avoid `loadData` trigger twice.\n // https://github.com/ant-design/ant-design/issues/12464\n onLoad?.(newLoadedKeys, {\n event: 'load',\n node: treeNode,\n });\n\n this.setUncontrolledState({\n loadedKeys: newLoadedKeys,\n });\n this.setState((prevState) => ({\n loadingKeys: arrDel(prevState.loadingKeys, key),\n }));\n\n resolve();\n })\n .catch((e) => {\n this.setState((prevState) => ({\n loadingKeys: arrDel(prevState.loadingKeys, key),\n }));\n\n // If exceed max retry times, we give up retry\n this.loadingRetryTimes[key as SafeKey] =\n (this.loadingRetryTimes[key as SafeKey] || 0) + 1;\n if (this.loadingRetryTimes[key as SafeKey] >= MAX_RETRY_TIMES) {\n const { loadedKeys: currentLoadedKeys } = this.state;\n\n warning(false, 'Retry for `loadData` many times but still failed. No more retry.');\n\n this.setUncontrolledState({\n loadedKeys: arrAdd(currentLoadedKeys, key),\n });\n resolve();\n }\n\n reject(e);\n });\n\n return {\n loadingKeys: arrAdd(loadingKeys, key),\n };\n });\n });\n\n // Not care warning if we ignore this\n loadPromise.catch(() => {});\n\n return loadPromise;\n };\n\n onNodeMouseEnter: NodeMouseEventHandler<TreeDataType> = (event, node) => {\n const { onMouseEnter } = this.props;\n\n onMouseEnter?.({ event, node });\n };\n\n onNodeMouseLeave: NodeMouseEventHandler<TreeDataType> = (event, node) => {\n const { onMouseLeave } = this.props;\n\n onMouseLeave?.({ event, node });\n };\n\n onNodeContextMenu: NodeMouseEventHandler<TreeDataType> = (event, node) => {\n const { onRightClick } = this.props;\n if (onRightClick) {\n event.preventDefault();\n onRightClick({ event, node });\n }\n };\n\n onFocus: React.FocusEventHandler<HTMLDivElement> = (...args) => {\n const { onFocus } = this.props;\n this.setState({ focused: true });\n\n onFocus?.(...args);\n };\n\n onBlur: React.FocusEventHandler<HTMLDivElement> = (...args) => {\n const { onBlur } = this.props;\n this.setState({ focused: false });\n this.onActiveChange(null);\n\n onBlur?.(...args);\n };\n\n getTreeNodeRequiredProps = () => {\n const {\n expandedKeys,\n selectedKeys,\n loadedKeys,\n loadingKeys,\n checkedKeys,\n halfCheckedKeys,\n dragOverNodeKey,\n dropPosition,\n keyEntities,\n } = this.state;\n return {\n expandedKeys: expandedKeys || [],\n selectedKeys: selectedKeys || [],\n loadedKeys: loadedKeys || [],\n loadingKeys: loadingKeys || [],\n checkedKeys: checkedKeys || [],\n halfCheckedKeys: halfCheckedKeys || [],\n dragOverNodeKey,\n dropPosition,\n keyEntities: keyEntities,\n };\n };\n\n // =========================== Expanded ===========================\n /** Set uncontrolled `expandedKeys`. This will also auto update `flattenNodes`. */\n setExpandedKeys = (expandedKeys: Key[]) => {\n const { treeData, fieldNames } = this.state;\n\n const flattenNodes: FlattenNode<TreeDataType>[] = flattenTreeData<TreeDataType>(\n treeData,\n expandedKeys,\n fieldNames,\n );\n this.setUncontrolledState(\n {\n expandedKeys,\n flattenNodes,\n },\n true,\n );\n };\n\n onNodeExpand = (e: React.MouseEvent<HTMLDivElement>, treeNode: EventDataNode<TreeDataType>) => {\n let { expandedKeys } = this.state;\n const { listChanging, fieldNames } = this.state;\n const { onExpand, loadData } = this.props;\n const { expanded } = treeNode;\n const key = treeNode[fieldNames.key];\n\n // Do nothing when motion is in progress\n if (listChanging) {\n return;\n }\n\n // Update selected keys\n const index = expandedKeys.indexOf(key);\n const targetExpanded = !expanded;\n\n warning(\n (expanded && index !== -1) || (!expanded && index === -1),\n 'Expand state not sync with index check',\n );\n\n if (targetExpanded) {\n expandedKeys = arrAdd(expandedKeys, key);\n } else {\n expandedKeys = arrDel(expandedKeys, key);\n }\n\n this.setExpandedKeys(expandedKeys);\n\n onExpand?.(expandedKeys, {\n node: treeNode,\n expanded: targetExpanded,\n nativeEvent: e.nativeEvent,\n });\n\n // Async Load data\n if (targetExpanded && loadData) {\n const loadPromise = this.onNodeLoad(treeNode);\n if (loadPromise) {\n loadPromise\n .then(() => {\n // [Legacy] Refresh logic\n const newFlattenTreeData = flattenTreeData<TreeDataType>(\n this.state.treeData,\n expandedKeys,\n fieldNames,\n );\n this.setUncontrolledState({ flattenNodes: newFlattenTreeData });\n })\n .catch(() => {\n const { expandedKeys: currentExpandedKeys } = this.state;\n const expandedKeysToRestore = arrDel(currentExpandedKeys, key);\n this.setExpandedKeys(expandedKeysToRestore);\n });\n }\n }\n };\n\n onListChangeStart = () => {\n this.setUncontrolledState({\n listChanging: true,\n });\n };\n\n onListChangeEnd = () => {\n setTimeout(() => {\n this.setUncontrolledState({\n listChanging: false,\n });\n });\n };\n\n // =========================== Keyboard ===========================\n onActiveChange = (newActiveKey: Key | null) => {\n const { activeKey } = this.state;\n const { onActiveChange, itemScrollOffset = 0 } = this.props;\n\n if (activeKey === newActiveKey) {\n return;\n }\n\n this.setState({ activeKey: newActiveKey });\n if (newActiveKey !== null) {\n this.scrollTo({ key: newActiveKey, offset: itemScrollOffset });\n }\n\n onActiveChange?.(newActiveKey);\n };\n\n getActiveItem = () => {\n const { activeKey, flattenNodes } = this.state;\n if (activeKey === null) {\n return null;\n }\n\n return flattenNodes.find(({ key }) => key === activeKey) || null;\n };\n\n offsetActiveKey = (offset: number) => {\n const { flattenNodes, activeKey } = this.state;\n\n let index = flattenNodes.findIndex(({ key }) => key === activeKey);\n\n // Align with index\n if (index === -1 && offset < 0) {\n index = flattenNodes.length;\n }\n\n index = (index + offset + flattenNodes.length) % flattenNodes.length;\n\n const item = flattenNodes[index];\n if (item) {\n const { key } = item;\n this.onActiveChange(key);\n } else {\n this.onActiveChange(null);\n }\n };\n\n onKeyDown: React.KeyboardEventHandler<HTMLDivElement> = (event) => {\n const { activeKey, expandedKeys, checkedKeys, fieldNames } = this.state;\n const { onKeyDown, checkable, selectable } = this.props;\n\n // >>>>>>>>>> Direction\n switch (event.which) {\n case KeyCode.UP: {\n this.offsetActiveKey(-1);\n event.preventDefault();\n break;\n }\n case KeyCode.DOWN: {\n this.offsetActiveKey(1);\n event.preventDefault();\n break;\n }\n }\n\n // >>>>>>>>>> Expand & Selection\n const activeItem = this.getActiveItem();\n if (activeItem && activeItem.data) {\n const treeNodeRequiredProps = this.getTreeNodeRequiredProps();\n\n const expandable =\n activeItem.data.isLeaf === false || !!(activeItem.data[fieldNames.children] || []).length;\n const eventNode = convertNodePropsToEventData<TreeDataType>({\n ...getTreeNodeProps(activeKey, treeNodeRequiredProps),\n data: activeItem.data,\n active: true,\n });\n\n switch (event.which) {\n // >>> Expand\n case KeyCode.LEFT: {\n // Collapse if possible\n if (expandable && expandedKeys.includes(activeKey)) {\n this.onNodeExpand({} as React.MouseEvent<HTMLDivElement>, eventNode);\n } else if (activeItem.parent) {\n this.onActiveChange(activeItem.parent.key);\n }\n event.preventDefault();\n break;\n }\n case KeyCode.RIGHT: {\n // Expand if possible\n if (expandable && !expandedKeys.includes(activeKey)) {\n this.onNodeExpand({} as React.MouseEvent<HTMLDivElement>, eventNode);\n } else if (activeItem.children && activeItem.children.length) {\n this.onActiveChange(activeItem.children[0].key);\n }\n event.preventDefault();\n break;\n }\n\n // Selection\n case KeyCode.ENTER:\n case KeyCode.SPACE: {\n if (\n checkable &&\n !eventNode.disabled &&\n eventNode.checkable !== false &&\n !eventNode.disableCheckbox\n ) {\n this.onNodeCheck(\n {} as React.MouseEvent<HTMLDivElement>,\n eventNode,\n !checkedKeys.includes(activeKey),\n );\n } else if (\n !checkable &&\n selectable &&\n !eventNode.disabled &&\n eventNode.selectable !== false\n ) {\n this.onNodeSelect({} as React.MouseEvent<HTMLDivElement>, eventNode);\n }\n break;\n }\n }\n }\n\n onKeyDown?.(event);\n };\n\n /**\n * Only update the value which is not in props\n */\n setUncontrolledState = (\n state: Partial<TreeState<TreeDataType>>,\n atomic: boolean = false,\n forceState: Partial<TreeState<TreeDataType>> | null = null,\n ) => {\n if (!this.destroyed) {\n let needSync = false;\n let allPassed = true;\n const newState = {};\n\n Object.keys(state).forEach((name) => {\n if (name in this.props) {\n allPassed = false;\n return;\n }\n\n needSync = true;\n newState[name] = state[name];\n });\n\n if (needSync && (!atomic || allPassed)) {\n this.setState({\n ...newState,\n ...forceState,\n } as TreeState<TreeDataType>);\n }\n }\n };\n\n scrollTo: ScrollTo = (scroll) => {\n this.listRef.current.scrollTo(scroll);\n };\n\n render() {\n const {\n focused,\n flattenNodes,\n keyEntities,\n draggingNodeKey,\n activeKey,\n dropLevelOffset,\n dropContainerKey,\n dropTargetKey,\n dropPosition,\n dragOverNodeKey,\n indent,\n } = this.state;\n const {\n prefixCls,\n className,\n style,\n showLine,\n focusable,\n tabIndex = 0,\n selectable,\n showIcon,\n icon,\n indentWidth,\n switcherIcon,\n draggable,\n checkable,\n checkStrictly,\n disabled,\n motion,\n loadData,\n filterTreeNode,\n height,\n itemHeight,\n virtual,\n titleRender,\n dropIndicatorRender,\n onContextMenu,\n onScroll,\n onVirtualScroll,\n direction,\n rootClassName,\n rootStyle,\n scrollWidth,\n } = this.props;\n\n const domProps: React.HTMLAttributes<HTMLDivElement> = pickAttrs(this.props, {\n aria: true,\n data: true,\n });\n\n // It's better move to hooks but we just simply keep here\n let draggableConfig: DraggableConfig;\n if (draggable) {\n if (typeof draggable === 'object') {\n draggableConfig = draggable;\n } else if (typeof draggable === 'function') {\n draggableConfig = {\n nodeDraggable: draggable,\n };\n } else {\n draggableConfig = {};\n }\n }\n\n return (\n <TreeContext.Provider\n value={{\n prefixCls,\n selectable,\n showIcon,\n icon,\n switcherIcon,\n draggable: draggableConfig,\n draggingNodeKey,\n checkable,\n checkStrictly,\n disabled,\n keyEntities,\n dropLevelOffset,\n dropContainerKey,\n dropTargetKey,\n dropPosition,\n dragOverNodeKey,\n indent,\n indentWidth,\n direction,\n dropIndicatorRender,\n\n loadData,\n filterTreeNode,\n\n titleRender,\n onNodeClick: this.onNodeClick,\n onNodeDoubleClick: this.onNodeDoubleClick,\n onNodeExpand: this.onNodeExpand,\n onNodeSelect: this.onNodeSelect,\n onNodeCheck: this.onNodeCheck,\n onNodeLoad: this.onNodeLoad,\n onNodeMouseEnter: this.onNodeMouseEnter,\n onNodeMouseLeave: this.onNodeMouseLeave,\n onNodeContextMenu: this.onNodeContextMenu,\n onNodeDragStart: this.onNodeDragStart,\n onNodeDragEnter: this.onNodeDragEnter,\n onNodeDragOver: this.onNodeDragOver,\n onNodeDragLeave: this.onNodeDragLeave,\n onNodeDragEnd: this.onNodeDragEnd,\n onNodeDrop: this.onNodeDrop,\n }}\n >\n <div\n role='tree'\n className={classNames(prefixCls, className, rootClassName, {\n [`${prefixCls}-show-line`]: showLine,\n [`${prefixCls}-focused`]: focused,\n [`${prefixCls}-active-focused`]: activeKey !== null,\n })}\n style={rootStyle}\n >\n <NodeList\n ref={this.listRef}\n prefixCls={prefixCls}\n style={style}\n data={flattenNodes}\n disabled={disabled}\n selectable={selectable}\n checkable={!!checkable}\n indentWidth={indentWidth}\n scrollWidth={scrollWidth}\n motion={motion}\n dragging={draggingNodeKey !== null}\n height={height}\n itemHeight={itemHeight}\n virtual={virtual}\n focusable={focusable}\n focused={focused}\n tabIndex={tabIndex}\n activeItem={this.getActiveItem()}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n onKeyDown={this.onKeyDown}\n onActiveChange={this.onActiveChange}\n onListChangeStart={this.onListChangeStart}\n onListChangeEnd={this.onListChangeEnd}\n onContextMenu={onContextMenu}\n onScroll={onScroll}\n onVirtualScroll={onVirtualScroll}\n {...this.getTreeNodeRequiredProps()}\n {...domProps}\n />\n </div>\n </TreeContext.Provider>\n );\n }\n}\n\nexport default Tree;\n","import * as React from 'react'\n\nexport default function DropIndicator ({\n dropPosition,\n dropLevelOffset,\n indent,\n}: {\n dropPosition: -1 | 0 | 1,\n dropLevelOffset: number,\n indent: number,\n}) {\n const style: React.CSSProperties = {\n pointerEvents: 'none',\n position: 'absolute',\n right: 0,\n backgroundColor: 'red',\n height: 2,\n };\n switch (dropPosition) {\n case -1:\n style.top = 0;\n style.left = -dropLevelOffset * indent;\n break;\n case 1:\n style.bottom = 0;\n style.left = -dropLevelOffset * indent;\n break;\n case 0:\n style.bottom = 0;\n style.left = indent;\n break;\n }\n return <div style={style} />;\n}\n","import { FavSvg, InfoSvg, ShareSvg, FavTagSvg } from '../icons';\n\nconst iconFactory: {\n [propName: string]: React.ComponentType<{}>;\n} = {};\n\nexport function getMenu(key: string) {\n return iconFactory[key];\n}\n\nexport function registerMenu(key: string, component: any) {\n iconFactory[key] = component;\n}\n\n//\nregisterMenu('basis', [\n {\n key: 'open',\n icon: 'open',\n title: '打开',\n },\n { type: 'line' },\n {\n key: 'fav-add',\n icon: <FavSvg></FavSvg>,\n title: '添加到收藏文件夹',\n },\n {\n key: 'create-link-home',\n icon: 'app-link',\n title: '发送到桌面快捷方式',\n },\n]);\n//收藏夹\nregisterMenu('favorite', [\n {\n key: 'open',\n icon: 'open',\n title: '打开',\n },\n { type: 'line' },\n {\n key: 'fav-add',\n icon: <FavSvg></FavSvg>,\n title: '添加到收藏文件夹',\n suffix: '',\n },\n {\n key: 'create-link-home',\n icon: 'app-link',\n title: '发送到桌面快捷方式',\n },\n]);\n//个人中心\nregisterMenu('self', [\n {\n key: 'open',\n icon: 'open',\n title: '打开',\n },\n {\n type: 'line',\n },\n {\n key: 'info',\n icon: <InfoSvg></InfoSvg>,\n title: '属性',\n },\n]);\n//文件夹\nregisterMenu('folder', [\n {\n key: 'open',\n icon: 'open',\n title: '打开',\n suffix: '',\n },\n { type: 'line' },\n {\n key: 'download',\n icon: 'download',\n title: '下载',\n },\n {\n key: 'share-link-file',\n icon: <ShareSvg />,\n title: '外链接分享',\n },\n { type: 'line' },\n {\n key: 'copy',\n icon: 'copy',\n title: '复制',\n },\n {\n key: 'shear',\n icon: 'shear',\n title: '剪切',\n },\n {\n key: 'rename',\n icon: 'rename',\n title: '重命名',\n },\n {\n key: 'remove',\n icon: 'remove',\n title: '删除',\n },\n { type: 'line' },\n {\n key: 'info',\n icon: <InfoSvg></InfoSvg>,\n title: '属性',\n },\n]);\n//文件\nregisterMenu('file', [\n {\n key: 'open',\n icon: 'open',\n title: '打开',\n suffix: '',\n },\n { type: 'line' },\n {\n key: 'download',\n icon: 'download',\n title: '下载',\n },\n {\n key: 'share-link-file',\n icon: <ShareSvg />,\n title: '外链接分享',\n },\n { type: 'line' },\n {\n key: 'copy',\n icon: 'copy',\n title: '复制',\n },\n {\n key: 'shear',\n icon: 'shear',\n title: '剪切',\n },\n {\n key: 'rename',\n icon: 'rename',\n title: '重命名',\n },\n {\n key: 'remove',\n icon: 'remove',\n title: '删除',\n },\n { type: 'line' },\n {\n key: 'user-file-tag',\n icon: <FavTagSvg />,\n title: '个人标签',\n },\n { type: 'line' },\n {\n key: 'info',\n icon: <InfoSvg></InfoSvg>,\n title: '属性',\n },\n]);\n","import './index.less';\nimport React, { useMemo } from 'react';\n\nimport { AngleRightSvg } from '../icons';\n\nimport Dropdown from '../Dropdown';\n\ninterface MenuProps {\n menu?: MenuItem[];\n onChange?: (key: string) => any;\n}\nexport interface MenuItem {\n key: string;\n title: string;\n type?: string;\n icon?: any;\n children: MenuItem | null;\n [key: string]: any;\n}\n\nexport default function Menu(props: MenuProps) {\n const { menu, onChange } = props;\n if (!menu) return <></>;\n\n let data = useMemo(() => {\n return menu;\n }, [menu]);\n\n const menus = useMemo(() => {\n return data.map((v: any, index: number) => {\n if (v?.type == 'line') {\n return <div key={index} className='explorer-menu-line'></div>;\n }\n let child: any | null = null;\n if (Array.isArray(v?.children) && v?.children.length) {\n child = v?.children;\n }\n\n let dom = (\n <div\n className='explorer-menu-item'\n key={index}\n onClick={() => {\n onChange && onChange(v.key);\n }}\n >\n <span className='item-icon'>{renderIcon(v?.icon)} </span>\n <span className='item-title'>{v?.title}</span>\n {v?.desc && <span className='item-tool'>{v?.desc}</span>}\n {child && (\n <span className='item-tool'>\n <span className='explorer-menu-icon x-icon'>\n <AngleRightSvg></AngleRightSvg>\n </span>\n </span>\n )}\n </div>\n );\n\n if (!child) {\n return dom;\n }\n\n return (\n <Dropdown\n key={index}\n trigger='hover'\n placement='right'\n position={{ x: -20 }}\n dropdownRender={({ onClone }: any) => {\n return (\n <Menu\n menu={child}\n onChange={(v) => {\n onClone();\n onChange && onChange(v);\n }}\n ></Menu>\n );\n }}\n >\n {dom}\n </Dropdown>\n );\n });\n }, [data]);\n\n function renderIcon(icon: any) {\n if (typeof icon == 'string') {\n if (/\\.(jpg|jpeg|png|gif|bmp)$/.test(icon)) {\n return;\n }\n return <span className={`explorer-menu-icon x-${icon}`} />;\n }\n\n if (React.isValidElement(icon)) {\n return <span className='explorer-menu-icon x-icon'>{icon}</span>;\n }\n return <></>;\n }\n\n return <div className='explorer-menu'>{menus}</div>;\n}\n","import cx from 'classnames';\n\nimport { getMenu } from '../menu/menulist';\n\nimport { CircleCheckSvg } from '../icons';\nimport Dropdown from '../Dropdown';\nimport Menu from '../menu';\n\nexport default function TableItem(props: any) {\n const { columns, width, id, active, ischeck, onCheck, onMenuClick, rename, onRename, ...param } =\n props;\n\n return (\n <Dropdown\n trigger='contextMenu'\n style={{ height: '100%' }}\n dropdownRender={({ onClone }: any) => {\n if (!props.isOpenMenu) return;\n let menudata: any = [];\n if (getMenu(props.id)) {\n menudata = getMenu(props.id);\n } else if (props.type && getMenu(props.type)) {\n menudata = getMenu(props.type);\n } else {\n menudata = getMenu('');\n }\n return (\n <Menu\n menu={menudata}\n onChange={async (v: any) => {\n onClone && onClone();\n onMenuClick && onMenuClick(v);\n }}\n ></Menu>\n );\n }}\n >\n <div className={cx('explorer-tree-row')} data-id={id} data-type={props.type}>\n {columns.map((v: any, i: number) => {\n let x = width[i] - (i ? 0 : 58 + 8) + (i ? 10 : 0);\n if (i == 0 && typeof param.level === 'number') {\n x = x - param.level * 16;\n }\n\n if (typeof v?.render === 'function') {\n return (\n <div\n className={cx('row-item')}\n key={i}\n style={\n width[i]\n ? {\n flex: `0 0 ${x}px`,\n width: x + 'px',\n }\n : {}\n }\n >\n <div className='row-item-content'> {v.render?.(param, v.key)}</div>\n {!i && (\n <div>\n <div\n className={cx('row-item-check', {\n active: active,\n })}\n onMouseDown={(e) => {\n e.stopPropagation();\n }}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n onCheck?.();\n }}\n >\n <span className='btn-check'>\n <CircleCheckSvg />\n </span>\n </div>\n </div>\n )}\n </div>\n );\n }\n\n if (rename && v.key == 'title') {\n return (\n <div\n className={cx('row-item')}\n key={i}\n style={\n width[i]\n ? {\n flex: `0 0 ${x}px`,\n width: x + 'px',\n }\n : {}\n }\n >\n <div className='row-item-content'>\n <input\n className='node-input'\n autoFocus\n defaultValue={param[v?.key]}\n placeholder='请输入'\n onBlur={(e) => {\n onRename?.(e.target.value);\n }}\n ></input>\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={cx('row-item')}\n key={i}\n style={\n width[i]\n ? {\n flex: `0 0 ${x}px`,\n width: x + 'px',\n }\n : {}\n }\n >\n <div className='row-item-content'>{param[v?.key] || ''}</div>\n {!i && (\n <div\n className={cx('row-item-check', {\n active: active,\n })}\n onMouseDown={(e) => {\n e.stopPropagation();\n }}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n onCheck?.();\n }}\n >\n <span className='btn-check'>\n <CircleCheckSvg />\n </span>\n </div>\n )}\n </div>\n );\n })}\n </div>\n </Dropdown>\n );\n}\n","import { useState } from 'react';\n\nimport { TreeItem } from '.';\nimport { getMenu } from '../menu/menulist';\n\nimport { CaretRight } from '../icons';\nimport Menu from '../menu';\nimport Dropdown from '../Dropdown';\n\nexport default (props: TreeItem) => {\n const { onSelect, onRename, onMenuClick } = props;\n\n const [title, setTitle] = useState(props.title);\n\n let menudata: any = [];\n\n if (getMenu(props.id)) {\n menudata = getMenu(props.id);\n } else if (props.type && getMenu(props.type)) {\n menudata = getMenu(props.type);\n } else {\n menudata = getMenu('');\n }\n\n return (\n <Dropdown\n trigger='contextMenu'\n style={{ height: '100%' }}\n dropdownRender={({ onClone }: any) => {\n return (\n <Menu\n menu={menudata}\n onChange={async (v: any) => {\n onClone && onClone();\n onMenuClick && onMenuClick(v);\n }}\n ></Menu>\n );\n }}\n >\n {props.rename ? (\n <div className='explorer-tree-node'>\n <input\n className='node-input'\n autoFocus\n value={title}\n placeholder='请输入'\n onChange={(v) => {\n setTitle?.(v.target.value);\n }}\n onBlur={() => {\n onRename?.(title);\n }}\n ></input>\n </div>\n ) : (\n <div\n className='explorer-tree-node'\n onClick={() => {\n onSelect?.();\n }}\n >\n <div className='node-title'>{title || ''}</div>\n <div className='node-menu'>\n <Dropdown\n trigger='click'\n placement='right'\n dropdownRender={({ onClone }: any) => {\n return (\n <Menu\n menu={menudata}\n onChange={(v: any) => {\n onClone && onClone();\n onMenuClick && onMenuClick(v);\n }}\n ></Menu>\n );\n }}\n >\n <div className='node-menu-icon'>\n <CaretRight />\n </div>\n </Dropdown>\n </div>\n </div>\n )}\n </Dropdown>\n );\n};\n","import './index.less';\nimport cx from 'classnames';\n\nimport React, { ReactNode, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { cloneDeep } from 'lodash';\n\nimport { MenuItem } from '../menu';\n\nimport Tree from './components';\nimport { Provider } from 'rc-motion';\nimport { AngleRightSvg, CaretRight, LoadingSvg } from '../icons';\nimport TableItem from './tree-item-table';\nimport TreeItem from './tree-item';\n\nexport interface TreeItem {\n key: string;\n title: string;\n icon?: boolean;\n suffix?: string;\n api?: boolean;\n level?: string;\n menu?: string | (string | MenuItem)[];\n children?: TreeItem[];\n isLeaf?: boolean;\n [key: string]: any;\n}\n\nexport interface TreeProps {\n type?: 'tree' | 'table';\n treeData: TreeItem[];\n showLine?: boolean; //未实现\n height?: number | null;\n isload?: boolean;\n animation?: boolean;\n defaultmenu?: 'basis' | 'file';\n defaultExpandedKeys?: string[];\n autoExpandParent?: boolean;\n columns?: any[];\n checks?: string[];\n icon?: (v: any, className: string) => ReactNode;\n onChecks?: (checks: string[], param?: TreeItem[]) => void;\n onSelect?: (key: string) => any;\n onChange?: (data: TreeItem[]) => void;\n titleRender?: (props: any) => any;\n onMenuClick?: (key: string, props: any) => void;\n loadData?: (key: string) => Promise<TreeItem[]> | TreeItem[];\n onRename?: (key: string, value: string, props?: TreeItem) => boolean | void;\n [key: string]: any;\n}\n\n//添加层级\nconst addLevel = (data: any, levelIndex = 0, parent: string) => {\n let i = 0;\n while (i < data.length) {\n let item = data[i];\n\n item['level'] = levelIndex;\n item['pathDisplay'] = parent + '/' + item.title;\n if (!item?.api && !item?.children) {\n item['isLeaf'] = true;\n }\n if (Array.isArray(item.children) && item.children.length > 0) {\n addLevel(item.children, levelIndex + 1, parent + '/' + item.title);\n }\n i++;\n }\n return data;\n};\n\n//下拉动画\nconst motion = {\n motionName: 'node-motion',\n motionAppear: false,\n onAppearStart: () => ({ height: 0 }),\n onAppearActive: (node: any) => ({ height: node.scrollHeight }),\n onLeaveStart: (node: any) => ({ height: node.offsetHeight }),\n onLeaveActive: () => ({ height: 0 }),\n};\n\nexport default (props: TreeProps) => {\n const {\n type = 'tree',\n autoExpandParent,\n defaultExpandedKeys,\n treeData,\n checks,\n height,\n width: _widht,\n columns,\n isload = false,\n ischeck = false,\n showLine = true,\n animation = true,\n icon,\n titleRender,\n onChecks,\n onChange,\n onSelect,\n onMenuClick,\n onRename,\n loadData,\n } = props;\n const ref = useRef<any>(null);\n const tree = useRef<any>(null);\n const header = useRef<any>(null);\n\n const [rename, setRename] = useState(null);\n const [data, setData] = useState(treeData);\n const [motionshow, seTmotionShow] = useState(animation);\n const [width, setWidth] = useState<(number | null)[]>([]);\n const scrollWidth = useMemo(() => {\n let w = (_widht || 100) - 2;\n let size = width?.reduce((x: number, y: number | null) => {\n if (typeof y == 'number') {\n return x + y;\n }\n return x;\n }, 0);\n\n return size > w ? size : Math.ceil(w);\n }, [width, _widht]);\n\n useEffect(() => {\n let arr = type == 'tree' ? treeData : [...treeData, { key: '_ending', title: '', height: 200 }];\n arr = addLevel(arr, 0, '');\n setData(arr);\n }, [treeData, type]);\n\n useEffect(() => {\n if (!Array.isArray(columns)) return;\n if (!ref.current) return;\n\n let data = ref.current.getBoundingClientRect();\n let w = Math.floor((data.width - 8) / columns.length);\n\n let arr = columns.map((v: any) => {\n if (typeof v?.width === 'number') {\n return v.width;\n } else {\n return w;\n }\n });\n\n setWidth && setWidth(arr);\n }, [ref.current]);\n\n //展开按钮\n const s_icon = (v: any) => {\n if (v.isLeaf) {\n return <></>;\n }\n if (v.loading) {\n return (\n <div className={cx('explorer-tree-switch loading')}>\n <LoadingSvg />\n </div>\n );\n }\n return (\n <div\n className={cx('explorer-tree-switch', {\n open: v.expanded,\n })}\n >\n <AngleRightSvg />\n </div>\n );\n };\n\n const s_table_icon = (v: any) => {\n if (v.key == '_ending') {\n return <></>;\n }\n if (v.isLeaf) {\n return <></>;\n }\n if (v.loading) {\n return (\n <div className={cx('explorer-tree-switch loading')}>\n <LoadingSvg />\n </div>\n );\n }\n return (\n <div\n className={cx('explorer-tree-switch', {\n open: v.expanded,\n })}\n style={{ fontSize: '7px' }}\n onMouseDown={(e) => {\n e.stopPropagation();\n }}\n >\n <CaretRight />\n </div>\n );\n };\n\n //树的懒加载\n const setLeaf = (treeData: any, curKey: any, level: any) => {\n const loopLeaf = (data: any, lev: any) => {\n const l = lev - 1;\n data.forEach((item: any) => {\n if (\n item.key.length > curKey.length\n ? item.key.indexOf(curKey) !== 0\n : curKey.indexOf(item.key) !== 0\n ) {\n return;\n }\n if (item.children) {\n loopLeaf(item.children, l);\n } else if (l < 1 && treeData.api) {\n item.isLeaf = true;\n }\n });\n };\n loopLeaf(treeData, level + 1);\n };\n\n //树s的懒加载\n const getNewTreeData = (treeData: any, curKey: any, child: any, level: any) => {\n const loop = (data: any, levelkey: string) => {\n if (level < 1 || curKey.length - 3 > level * 2) return;\n data.forEach((item: any, index: number) => {\n let l = levelkey + `-${index}`;\n if (curKey.indexOf(l) === 0) {\n if (item.children) {\n loop(item.children, l);\n } else {\n item.children = child;\n }\n }\n });\n };\n loop(treeData, '0');\n setLeaf(treeData, curKey, level);\n };\n\n //树的懒加载\n const onLoadData = (treeNode: any) => {\n onChange ? null : seTmotionShow(false);\n if (!treeNode.api) {\n if (!treeNode?.children) {\n return new Promise((resolve: any) => {\n if (animation) {\n setTimeout(() => {\n seTmotionShow(true);\n resolve();\n }, 100);\n }\n });\n } else {\n return new Promise((resolve: any) => {\n animation && seTmotionShow(true);\n resolve();\n });\n }\n }\n\n return new Promise(async (resolve: any) => {\n const tree = [...data];\n let child = await loadData?.(treeNode?.key);\n\n if (typeof treeNode.level === 'number') {\n child = child?.map((v) => {\n return { ...v, level: treeNode.level + 1 };\n });\n }\n\n getNewTreeData(tree, treeNode.pos, child, 10);\n if (onChange) {\n onChange?.(tree);\n setTimeout(() => {\n resolve();\n }, 100);\n resolve();\n } else {\n setData(tree);\n setTimeout(() => {\n animation && seTmotionShow(true);\n resolve();\n }, 100);\n }\n });\n };\n\n return (\n <>\n <Provider motion={motionshow}>\n <div\n ref={ref}\n onClick={() => {}}\n onScroll={(e) => {}}\n className={cx('explorer-tree', {\n showLine: showLine,\n table: type == 'table',\n ['explorer-checks']: ischeck,\n })}\n >\n {type == 'table' && (\n <div\n ref={header}\n className='tree-scroll-x'\n onScroll={(e: any) => {\n if (typeof e.target?.scrollLeft === 'number') {\n tree.current.scrollTo({ left: e.target?.scrollLeft });\n }\n }}\n >\n <Header\n width={width}\n columns={columns || []}\n onWidhtChange={(v: any) => {\n setWidth(v);\n }}\n ></Header>\n </div>\n )}\n <Tree\n ref={tree}\n checkStrictly={true}\n checkable={type == 'table' ? true : false}\n autoExpandParent={autoExpandParent}\n defaultExpandedKeys={defaultExpandedKeys || []}\n motion={motionshow ? motion : undefined}\n onVirtualScroll={(props: any) => {\n header.current?.scrollTo?.({ left: props.x });\n }}\n icon={(e) => {\n if (e.eventKey == '_ending') {\n return <></>;\n }\n return icon?.({ key: e.eventKey, ...e }, 'explorer-tree-icon');\n }}\n itemHeight={40}\n checkedKeys={checks}\n height={height ? height : undefined}\n scrollWidth={type == 'table' ? scrollWidth || _widht : undefined}\n onContextMenu={(e) => {\n e.preventDefault();\n }}\n titleRender={(v: any) => {\n if (v.key == '_ending') {\n return (\n <div\n style={{\n height: v.height + 'px',\n opacity: 0,\n }}\n ></div>\n );\n }\n if (titleRender) {\n return titleRender(v);\n }\n if (type == 'table') {\n return (\n <TableItem\n {...props}\n {...v}\n id={v.key}\n ischeck={ischeck}\n active={checks?.includes(v.key)}\n width={width}\n rename={v.key == rename}\n onRename={(value: any) => {\n setRename(null);\n onRename && onRename(v.key, value, v);\n }}\n onMenuClick={(menu: any) => {\n if (menu == 'rename') {\n setTimeout(() => {\n setRename(v.key);\n });\n return;\n }\n onMenuClick && onMenuClick(menu, v);\n }}\n onCheck={() => {\n let arr: any[] | undefined = cloneDeep(checks);\n\n if (props.checkType && props.checkType !== v.type) return;\n\n if (checks?.includes(v.key)) {\n arr = checks.filter((key) => key !== v.key);\n } else {\n arr = [...(arr || []), v.key];\n }\n onChecks && onChecks?.(arr);\n }}\n onSelect={(item: any) => {\n onSelect && onSelect?.({ key: v.key, ...v });\n }}\n columns={columns}\n ></TableItem>\n );\n }\n return (\n <TreeItem\n {...v}\n {...props}\n defaultmenu\n id={v.key}\n rename={v.key == rename}\n onRename={(value: any) => {\n setRename(null);\n onRename && onRename(v.key, value, v);\n }}\n onSelect={() => {\n onSelect && onSelect?.({ key: v.key, ...v });\n }}\n onMenuClick={(menu: any) => {\n if (menu == 'rename') {\n setTimeout(() => {\n setRename(v.key);\n });\n return;\n }\n onMenuClick && onMenuClick(menu, v);\n }}\n ></TreeItem>\n );\n }}\n loadData={isload ? (onLoadData as any) : null}\n treeData={data}\n switcherIcon={type == 'table' ? s_table_icon : s_icon}\n />\n </div>\n </Provider>\n </>\n );\n};\n\nfunction Header(props: any) {\n const { width, onWidhtChange, columns } = props;\n const [isdarg, setIsDrag] = useState(false);\n const [dragindex, setDargIndex] = useState<number | null>(null);\n const ref = useRef<any>(null);\n useLayoutEffect(() => {\n window.addEventListener('mousemove', lie);\n window.addEventListener('mouseup', up);\n return () => {\n window.removeEventListener('mousemove', lie);\n window.removeEventListener('mouseup', up);\n };\n }, [isdarg]);\n\n function up() {\n if (!isdarg) return;\n setIsDrag(false);\n setDargIndex(null);\n }\n\n function lie(e: any) {\n if (!isdarg) return;\n if (typeof dragindex !== 'number') return;\n e.preventDefault();\n let dom = ref.current.querySelector('.item-resize');\n let a = dom?.getBoundingClientRect();\n let x = e.clientX - a.left;\n let arr = cloneDeep(width);\n let diff = 150 - dragindex * 16;\n arr[dragindex] = x > diff ? x : diff;\n onWidhtChange(arr);\n }\n\n return (\n <div ref={ref} className='explorer-table-header' onMouseUp={() => {}} onClick={() => {}}>\n {columns.map((v: any, i: number) => {\n let x = width[i];\n return (\n <React.Fragment key={v.key}>\n <div\n className={cx('item', {\n 'item-resize': dragindex == i,\n })}\n style={\n width[i]\n ? {\n flex: `0 0 ${x}px`,\n width: x + 'px',\n }\n : {}\n }\n >\n {v.title}\n </div>\n <div\n className={cx('resize', {\n 'resize-focus': dragindex == i,\n })}\n onMouseDown={(e) => {\n e.stopPropagation();\n setDargIndex(i);\n setIsDrag(true);\n }}\n onMouseUp={() => {\n setIsDrag(false);\n setDargIndex(null);\n }}\n ></div>\n </React.Fragment>\n );\n })}\n </div>\n );\n}\n","import './index.less';\nimport { useContext } from 'react';\n\nimport { ApiStatusEnum } from '../../../enum';\nimport { ExampleContext } from '../../../store';\n\nimport Tree from '../../../components/tree';\n\nconst ExplorerMenu = (props: any) => {\n const { viewHeight: height, data, icons, loadData: onLoadData, onMenuClick, onChange } = props;\n const store = useContext(ExampleContext);\n if (!store) return;\n\n async function loadData(key: string, param?: any) {\n if (!store) return;\n store.setLoading(ApiStatusEnum.LOADING);\n let data = await onLoadData(key);\n store.setCurList(data.fileList);\n store.setCurInfo(data.current);\n setTimeout(() => {\n store.setLoading(ApiStatusEnum.READY);\n }, 300);\n }\n\n async function loadNode(key: any) {\n let data = await onLoadData?.(key);\n return data?.fileList || [];\n }\n\n return (\n <div className='frame-left'>\n <Tree\n isload={true}\n treeData={data}\n height={height}\n icon={(v, className) => {\n if (v.icon == false) return <></>;\n return store.getIcons(v, className);\n }}\n onMenuClick={(key: any, value) => {}}\n loadData={loadNode}\n onChange={onChange}\n onSelect={(v: any) => {\n store.setPathDisplay(v?.pathDisplay);\n if (v?.children) {\n store.setCurInfo(v);\n store.setCurList(v.children || []);\n } else {\n loadData(v.key);\n }\n }}\n ></Tree>\n </div>\n );\n};\n\nexport default ExplorerMenu;\n","import { cx } from '@emotion/css';\nimport { useEffect, useRef, useState } from 'react';\n\nconst VirtualScroll = ({\n className,\n item,\n itemHeight,\n renderItem,\n}: {\n className: string;\n item: any[];\n itemHeight: number;\n renderItem: (v: any, i: number, end: boolean) => any;\n}) => {\n const [scrollTop, setScrollTop] = useState(0);\n const containerRef = useRef<any>(null);\n const [data, setdata] = useState<any[]>([]);\n const items = [];\n\n useEffect(() => {\n setdata(item || []);\n }, [item]);\n const handleScroll = () => {\n setScrollTop(containerRef.current.scrollTop);\n };\n\n useEffect(() => {\n containerRef.current?.addEventListener('scroll', handleScroll);\n return () => {\n containerRef.current?.removeEventListener('scroll', handleScroll);\n };\n }, []);\n\n const visibleCount = Math.ceil(containerRef.current?.clientHeight / itemHeight);\n const startIdx = Math.floor(scrollTop / itemHeight);\n const endIdx = Math.min(startIdx + visibleCount + 1, data.length);\n for (let i = startIdx; i < endIdx; i++) {\n items.push(renderItem(data[i], i, data.length - 1 == i));\n }\n\n return (\n <div\n className={cx(`${className}`)}\n style={{ height: '100%', overflowY: 'auto' }}\n ref={containerRef}\n >\n <div\n style={{\n height: `${data.length * itemHeight}px`,\n paddingTop: `${startIdx * itemHeight}px`,\n }}\n >\n {items}\n </div>\n </div>\n );\n};\nexport default VirtualScroll;\n","import cx from 'classnames';\nimport { css } from '../../css';\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport { getMenu } from '../menu/menulist';\n\nimport VirtualScroll from '../virtualScroll';\nimport Dropdown from '../Dropdown';\nimport Menu from '../menu';\n\ninterface TileProps {\n className?: string;\n checks: any[];\n onMenuClick?: (key: string, param: any) => void;\n onDblclick?: (key: string, param: any) => void;\n onSelect?: (key: string, param: any) => void;\n onRename?: (key: string, value: string, param: any) => void;\n [key: string]: any;\n}\n\nexport default function Tile(props: TileProps) {\n const ref = useRef<any>(null);\n const {\n className,\n height,\n width,\n icons,\n data,\n select = '',\n checks = [],\n size = 80,\n onSelect,\n onDblclick,\n onMenuClick,\n onRename,\n } = props;\n\n const [rekey, setRekey] = useState<any>(null);\n const [itemSize, setSize] = useState(0);\n const [list, setList] = useState([]);\n const [col, setCol] = useState(9);\n useEffect(() => {\n const originalArray = data;\n const chunkSize = col;\n const resultArray = originalArray?.reduce((acc: any, curr: any, index: number) => {\n const chunkIndex = Math.floor(index / chunkSize);\n if (!acc[chunkIndex]) {\n acc[chunkIndex] = [];\n }\n acc[chunkIndex].push(curr);\n return acc;\n }, []);\n setList(resultArray);\n }, [data, col]);\n\n useEffect(() => {\n if (!width) return;\n let w = (width || 0) - 10;\n let data = Math.round(w / (size + 5));\n let s = Math.floor(w / data);\n setCol(data);\n setSize(s);\n }, [width, size]);\n\n return (\n <div\n ref={ref}\n className={cx('', {\n [className || '']: className,\n })}\n style={{\n height: '100%',\n }}\n >\n <VirtualScroll\n className=''\n item={list}\n itemHeight={itemSize + 65}\n renderItem={(v: any, index) => {\n return (\n <React.Fragment key={index}>\n {v?.map((v: any, i: number) => {\n const w = itemSize - 10;\n let menudata: any = [];\n\n if (getMenu(props.id)) {\n menudata = getMenu(props.id);\n } else if (props.type && getMenu(props.type)) {\n menudata = getMenu(props.type);\n } else {\n menudata = getMenu('');\n }\n return (\n <div\n key={v.key}\n data-id={v.key}\n data-type={v.type}\n className={cx(\n 'file',\n {\n 'file-folder': v.type === 'folder',\n 'menu-path-folder': v.type === 'folder',\n 'menu-path-file': v.type === 'file',\n select: !!~checks.indexOf(v.key),\n // 'file-focus': focus === i,\n },\n css`\n top: ${(w + 65) * index + index * 10 + 10}px;\n left: ${w * i + i * 10 + 10}px;\n width: ${w || 0}px;\n max-height: ${w + 65}px;\n `,\n )}\n onSelect={() => {\n onSelect?.(v.key, v);\n }}\n onDoubleClick={() => {\n onDblclick?.(v.key, v);\n }}\n >\n <Dropdown\n trigger='contextMenu'\n dropdownRender={({ onClone }: any) => {\n return (\n <Menu\n menu={menudata}\n onChange={(key) => {\n if (key == 'rename') {\n setRekey(v.key);\n onClone();\n return;\n }\n onMenuClick?.(key, v);\n }}\n ></Menu>\n );\n }}\n >\n <i\n className={cx('path-ico')}\n style={{\n width: w + 'px',\n height: w - w / 10 + 'px',\n }}\n >\n {v.type === 'folder' || !v?.pic ? (\n icons(v, 'x-item-icon', {\n width: w + 'px',\n height: w + 'px',\n lineHeight: w + 'px',\n })\n ) : (\n <div className='picture'>\n <img\n className='picture-show'\n draggable='false'\n src={v.pic}\n style={{ width: w + 'px', height: w + 'px' }}\n />\n </div>\n )}\n </i>\n <div\n className='title-type-name'\n style={{\n width: w + 'px',\n }}\n >\n {rekey == v.key ? (\n <textarea\n autoFocus\n rows={3}\n defaultValue={v.title}\n onFocus={(e) => {\n let i: number = v.title.lastIndexOf('.');\n if (props?.suffix == 'folder') {\n e.target.setSelectionRange(0, v.title.length);\n } else if (i !== -1) {\n e.target.setSelectionRange(0, i);\n }\n }}\n onBlur={(e) => {\n onRename?.(v.key, e.target.value, v);\n setRekey(null);\n }}\n onMouseDown={(e) => {\n e.stopPropagation();\n }}\n ></textarea>\n ) : (\n <span className='title'>{v.title}</span>\n )}\n </div>\n </Dropdown>\n </div>\n );\n })}\n </React.Fragment>\n );\n }}\n ></VirtualScroll>\n </div>\n );\n}\n","import cx from 'classnames';\nimport ReactDOM from 'react-dom';\nimport { useState, useRef, useEffect, ReactNode } from 'react';\n\nvar time: any = null;\n\ninterface SelectBoxProps {\n checks: string[];\n\n dataClass?: string; //\n selectClass: string; //要选择的class\n className?: string;\n regionClass?: string; //选框区域\n\n isDrag: boolean;\n isSelectBoxes: boolean;\n\n action?: 'stack' | 'rotate';\n checkType?: 'file' | 'folder';\n\n onChange: (v: any) => any;\n onDrag: () => any;\n onEndDrag: () => any;\n onStartDrag: () => any;\n children: ReactNode;\n [key: string]: any;\n}\n\nconst SelectBox = (props: SelectBoxProps) => {\n let {\n checks = [],\n\n className = '',\n dataClass,\n selectClass = '',\n regionClass,\n\n isDrag = true,\n isSelectBoxes = true,\n checkType = '',\n checkMode,\n\n action = 'stack',\n\n onChange,\n } = props;\n const selectionRef: any = useRef<any>(null);\n\n const clickRef = useRef(true);\n //选框\n const ref = useRef<any>(null);\n //选择中\n const _dom = useRef<any[]>([]);\n //目标\n const target = useRef<any>(null);\n //盒子\n const box = useRef<any>(null);\n //当前\n const cur = useRef<any[]>([]);\n\n const [selects, setSelect] = useState<string[]>([]);\n const [stageClickInfo, setStageClickInfo] = useState<{\n show: boolean;\n x?: number;\n y?: number;\n }>({ show: false });\n\n useEffect(() => {\n document.addEventListener('mousemove', handleBodyMousemove);\n document.addEventListener('mouseup', handleBodyMouseup);\n return () => {\n document.removeEventListener('mousemove', handleBodyMousemove);\n document.removeEventListener('mouseup', handleBodyMouseup);\n };\n }, [stageClickInfo]);\n\n //判断鼠标点击位置 是否为目标区域\n function isSelectTarget(e: any): null | true | string[] {\n let idx: string[] = [];\n\n Array.from(document.querySelectorAll(selectClass)).filter((v) => {\n if (v.contains(e.target)) {\n let dataDom: any = v;\n if (dataClass) {\n dataDom = v.querySelector(dataClass);\n let id: string | undefined = dataDom.getAttribute('data-id');\n if (checkType) {\n let type = dataDom.getAttribute('data-type');\n if (type !== checkType) return;\n }\n if (id) {\n idx.push(id);\n }\n }\n }\n });\n\n if (idx.length) {\n return idx;\n }\n return null;\n }\n\n //鼠标移动\n function handleBodyMousemove(e: any) {\n const { clientX: x, clientY: y } = e;\n\n if (!time && cur?.current?.length && isDrag) {\n cur.current?.map((v: any, i) => {\n v.style.cssText = `\n position: absolute; \n transition: 0.3s;\n top:${y + i * 3}px;\n left:${x + i * 3}px;\n `;\n });\n time = setTimeout(() => {\n cur.current.forEach((v) => v.remove());\n cur.current = [];\n }, 200);\n }\n\n if (isDrag && selects.length) {\n if (target.current) {\n target.current.style.cssText = `\n position: absolute; \n top:${y}px;\n left:${x}px;\n `;\n }\n } else {\n createBox(e);\n }\n }\n\n //鼠标松开\n function handleBodyMouseup() {\n if (target.current) {\n empty();\n } else {\n setStageClickInfo({ show: false });\n const selectionDom = selectionRef.current;\n if (selectionDom) {\n selectionDom.style.cssText = `\n position: absolute; \n opacity: 0;\n top:1px; \n left: 1px;\n width: 0px;\n height: 0px;\n pointer-events: none;\n z-index: -1;\n `;\n }\n setTimeout(() => {\n clickRef.current = true;\n }, 300);\n }\n }\n\n //创建选框\n function createBox(e: any) {\n if (stageClickInfo.show) {\n let region = null;\n if (regionClass) {\n let dom = document.querySelector(regionClass);\n if (dom) {\n region = dom.getBoundingClientRect();\n }\n }\n\n if (region) {\n let { x: left, y: top, width, height } = region;\n let right = left + width;\n let bottom = top + height;\n let { clientX: x, clientY: y } = e;\n\n if (x > right || x < left || y > bottom || y < top) {\n return;\n }\n }\n\n const selectionDom = selectionRef.current;\n if (selectionDom) {\n let idx: string[] = [];\n let dom: any[] = [];\n // 终点\n const { clientX: x, clientY: y } = e;\n // 起点\n const { x: pX, y: pY } = stageClickInfo;\n if (!pX || !pY) {\n return null;\n }\n\n // 默认右下\n let sTop = pY;\n let sLeft = pX;\n let sWidth = x - pX!;\n let sHeight = y - pY!;\n\n // 左下\n if (x < pX! && y > pY!) {\n sLeft = x;\n sWidth = pX - x;\n }\n // 左上\n if (x < stageClickInfo.x! && y < pY!) {\n sLeft = x;\n sTop = y;\n sWidth = pX - x;\n sHeight = pY - y;\n }\n\n // 右上\n if (x > stageClickInfo.x! && y < pY!) {\n sTop = y;\n sHeight = pY - y;\n }\n\n Array.from(document.querySelectorAll(selectClass)).forEach((v, i) => {\n let dataDom: any = v;\n if (dataClass) {\n dataDom = v.querySelector(dataClass);\n }\n\n let { top, right, bottom, left } = v.getBoundingClientRect();\n let sRight = sLeft + sWidth;\n let sBottom = sTop + sHeight;\n\n //判断是否在选择区\n let leftCover = sLeft <= left && left <= sRight;\n\n let cmidst = sLeft >= left && sRight <= right; //内\n\n let rightCover = sLeft <= right && right <= sRight;\n\n let topCover = sTop <= top && top <= sBottom;\n\n let midst = sTop >= top && sBottom <= bottom; //内\n\n let bottomCover = sTop <= bottom && bottom <= sBottom;\n\n if ((leftCover || cmidst || rightCover) && (topCover || midst || bottomCover)) {\n if (checkType) {\n let type = dataDom.getAttribute('data-type');\n if (type !== checkType) return;\n }\n\n let id = dataDom.getAttribute('data-id');\n if (id && !idx.includes(id)) {\n idx.push(id);\n dom.push(v);\n }\n }\n });\n\n selectionDom.style.cssText = `\n position: absolute;\n background-color: rgba(30, 175, 249, .2);\n border: 1px solid rgba(30, 175, 249, 1);\n top:${sTop}px;\n left: ${sLeft}px;\n width: ${sWidth}px;\n height: ${sHeight}px;\n pointer-events: none;\n z-index: 10;\n `;\n _dom.current = dom;\n\n setSelect(idx);\n onChange(idx);\n }\n }\n }\n\n //创建虚拟节点\n function createVDom(e: any) {\n let body = document.querySelector('body');\n let _box: any = null;\n let _target: any = null;\n\n _box = document.createElement('div');\n _target = document.createElement('div');\n\n const { clientX: x, clientY: y } = e;\n _box.className = `_selectbox ${className}`;\n _box.style.cssText = `\n position: absolute; \n top:1px; \n left: 1px;\n width: 0px;\n height: 0px;\n pointer-events: none;\n overflow: visible !important;\n z-index: 999;\n `;\n\n _target.style.cssText = `\n position: absolute; \n top:${y}px; \n left:${x}px;\n pointer-events: none;\n `;\n\n _dom.current.map((v: any, i) => {\n let _cur = v.cloneNode(true);\n let data = v.getBoundingClientRect();\n\n _cur.style.cssText = `\n position: absolute; \n top:${data.top}px;\n left:${data.left}px;\n opacity:0.5;\n transition: 0.3s;\n `;\n cur.current.push(_cur);\n _box?.appendChild(_cur);\n\n if (i > 10) return;\n let value = v.cloneNode(true);\n if (action == 'stack') {\n value.style.cssText = `\n position: absolute; \n top:${i * 3}px;\n left:${i * 3}px;\n z-index: ${i * -1};\n width:${data?.width ? data?.width : 'auto'};\n opacity: 1;\n margin:0\n `;\n } else if (action == 'rotate') {\n value.style.cssText = `\n position: absolute; \n top:${i}px;\n left:${i}px;\n z-index: ${i * -1};\n transform: rotate(${4 * (i % 2 ? i * -1 : i)}deg);\n opacity: 1;\n margin:0\n `;\n }\n _target?.appendChild(value);\n });\n\n _box?.appendChild(_target);\n body?.appendChild(_box);\n box.current = _box;\n target.current = _target;\n }\n\n //清空\n function empty() {\n target.current?.remove();\n box.current?.remove();\n target.current = null;\n box.current = null;\n clickRef.current = false;\n }\n\n return (\n <div\n ref={ref}\n className={cx(`${className}`)}\n onMouseDown={(e) => {\n if (e.button === 2) return;\n\n let type: any = isSelectTarget(e);\n\n if (type && checks.includes(type[0])) {\n if (!isDrag && checkMode == 'check') {\n let arr = selects.filter((v: string) => v !== type?.[0]);\n setSelect(arr);\n onChange(arr);\n }\n time = null;\n isDrag && createVDom(e);\n return;\n }\n\n if (type && Array.isArray(type)) {\n if (checkMode == 'check') {\n if (type[0] && selects.includes(type[0])) {\n let arr = selects.filter((v: string) => v !== type?.[0]);\n setSelect(arr);\n onChange(arr);\n } else {\n let arr = [...selects, ...type];\n setSelect(arr);\n onChange(arr);\n }\n } else {\n setSelect(type);\n onChange(type);\n }\n return;\n }\n\n if (selects.length) {\n if (checkMode !== 'check') {\n setSelect([]);\n onChange([]);\n empty();\n }\n }\n\n clickRef.current = false;\n isSelectBoxes && setStageClickInfo({ show: true, x: e.clientX, y: e.clientY });\n }}\n >\n {props.children}\n {ReactDOM.createPortal(<div ref={selectionRef}></div>, document.body)}\n </div>\n );\n};\n\nexport default SelectBox;\n","import './index.less';\nimport cx from 'classnames';\nimport React, { ReactNode, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { cloneDeep } from 'lodash';\n\nimport { NullDataSvg } from '../icons';\nimport VirtualScroll from '../virtualScroll';\n\nfunction Item(props: any) {\n const { onClick, acitve, isedit, onEdit, onBlur, checks = false, icon } = props;\n const [value, setValue] = useState(props?.title || '');\n\n return (\n <div\n className={cx('explorer-columns-list', {\n last: props?.end,\n acitve: acitve,\n checks: checks,\n })}\n data-id={props.id}\n data-type={props.type}\n onClick={onClick}\n >\n {icon && icon?.(props, 'columns-list-icon')}\n {isedit ? (\n <input\n className='columns-list-input'\n autoFocus\n value={value}\n onChange={(e) => {\n setValue(e.target.value);\n }}\n onFocus={(e) => {\n let i: number = value.lastIndexOf('.');\n\n if (props?.suffix == 'folder') {\n e.target.setSelectionRange(0, value.length);\n } else if (i !== -1) {\n e.target.setSelectionRange(0, i);\n }\n }}\n onBlur={(e) => {\n onBlur?.(e);\n }}\n ></input>\n ) : (\n <>\n <div className='columns-list-title'>\n <span className='title'>{props.title}</span>\n <span\n className='edit'\n onClick={(e) => {\n onEdit();\n }}\n >\n {/* <Icons icon='pen-to-square' /> */}\n </span>\n </div>\n <div className='columns-list-tool'>\n <span className=''></span>\n </div>\n </>\n )}\n </div>\n );\n}\ninterface ColumnsProps {\n data: any[];\n className?: string;\n icons?: (v: any, className: string) => ReactNode;\n onRename?: (key: any, value: string, param: any) => any;\n checks?: string[];\n onMenuClick: any;\n onLoadData?: any;\n onDblclick?: (key: string, param: any) => any;\n onClick?: (key: any, param: any) => any;\n [key: string]: any;\n}\nexport default function Columns(props: ColumnsProps) {\n let { width: _w, data, className, checks = [], icons, onLoadData, onRename } = props;\n const ref = useRef<any>(null);\n const [layer, setLayer] = useState(new Array(6).fill([]));\n const [width, setWidth] = useState(new Array(6).fill(null));\n const [select_col, setSelectCol] = useState<number>(0);\n const [select_file, setSelectFile] = useState(new Array(6).fill(null));\n const [select_info, setSelectInfo] = useState('');\n const [edit, setEdit] = useState('');\n const [isdrag, setIsdarg] = useState<boolean>(false);\n\n useEffect(() => {\n let arr = cloneDeep(layer);\n arr[0] = data;\n setLayer(arr);\n }, [data]);\n\n let avg = useMemo(() => {\n if (!_w) return 0;\n return Math.ceil(_w / 6);\n }, [_w]);\n\n useEffect(() => {\n let w = cloneDeep(width);\n layer.forEach((v, i) => {\n if (v?.length && !w[i]) {\n w[i] = avg;\n }\n });\n setWidth(w);\n }, [layer, avg]);\n\n function handleMousemove(e: any) {\n if (!isdrag || !ref?.current) return;\n let dom = ref.current.getBoundingClientRect();\n let arr = cloneDeep(width);\n let data = arr.reduce((x, y, i) => {\n if (select_col > i) {\n return x + y;\n }\n return x + 0;\n }, 0);\n arr[select_col] = e.nativeEvent.clientX - dom.left - data;\n setWidth(arr);\n }\n\n function renderList(list: any[] | null, level: number) {\n if (!list) {\n return (\n <div className={cx('layer empty')}>\n <div className='empty-is-null'>\n <div className='empty-icon'>\n <NullDataSvg></NullDataSvg>\n </div>\n <div className='empty-desc'>\n <span className=''>文件夹为空</span>\n </div>\n </div>\n </div>\n );\n }\n\n if (!Array.isArray(list) || !list.length) {\n return <div className={cx('layer', {})}></div>;\n }\n\n return (\n <div\n className={cx('layer list', {\n select_col: select_col == level,\n })}\n onClick={() => {\n setSelectCol(level);\n }}\n style={{\n flex: ` 0 0 ${width[level]}px`,\n width: level + 'px',\n }}\n >\n <div className='list-main'>\n <VirtualScroll\n className='list-scroll'\n item={list}\n itemHeight={32}\n renderItem={(v: any, i: number, end) => {\n return (\n <Item\n {...v}\n key={i}\n icon={icons}\n acitve={select_file[level] == v.key || select_info == v.key}\n id={v.key}\n end={end}\n checks={checks?.includes(v.key)}\n isedit={edit == v.key}\n onEdit={() => {\n setEdit(v.key);\n }}\n onBlur={(e: any) => {\n onRename?.(v.key, e.target.value, v);\n setEdit('');\n }}\n onClick={async () => {\n setSelectInfo(v.key);\n if (v.type == 'folder') {\n let select = select_file.map((id, i) => {\n if (i > level) {\n return '';\n }\n if (i == level) {\n return v.key;\n }\n return id;\n });\n setSelectFile(select);\n let loaddata: any[] | null = null;\n if (v.api && onLoadData) {\n let data = await onLoadData?.(v.key);\n if (Array.isArray(data)) {\n loaddata = data;\n }\n }\n let arr = v?.children ? [...v?.children, ...(loaddata || [])] : loaddata;\n setlevel(arr, level + 1);\n }\n }}\n ></Item>\n );\n }}\n ></VirtualScroll>\n </div>\n <div\n className={cx('drag')}\n onMouseDown={(e) => {\n e.stopPropagation();\n setSelectCol(level);\n setIsdarg(true);\n }}\n ></div>\n </div>\n );\n }\n\n function setlevel(data: any, level: number) {\n let arr = cloneDeep(layer);\n arr = arr.map((v, i) => {\n if (i > level) {\n return [];\n }\n if (i == level) {\n return data;\n }\n return v;\n });\n setLayer(arr);\n }\n\n return (\n <div\n ref={ref}\n className={cx('explorer-columns', { [className || '']: className })}\n onMouseMove={handleMousemove}\n onMouseUp={() => {\n setIsdarg(false);\n }}\n >\n {layer.map((v: any, i) => {\n return <React.Fragment key={i}>{renderList(v, i)}</React.Fragment>;\n })}\n </div>\n );\n}\n","import './index.less';\nimport cx from 'classnames';\n\nimport React, { ReactNode, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport { createRoot } from 'react-dom/client';\n\ninterface ModalProps {\n id?: string | number;\n show: boolean;\n title?: false | string | ReactNode;\n onClose?: () => any;\n children: ReactNode;\n tabIndex?: number;\n isfocus?: boolean;\n onFocus?: () => any;\n onBlur?: () => any;\n minimize: boolean;\n onMinimize: () => any;\n // onMaximize: () => any;\n [key: string]: any;\n}\n\nfunction Modal(props: ModalProps) {\n const {\n id,\n show,\n title,\n onBlur,\n onFocus,\n isfocus,\n onMinimize: onMin,\n onMaximize: onMax,\n minimize,\n } = props;\n const content = useRef<any>(null);\n const mask = useRef<any>(null);\n const root = useRef<any>(null);\n\n const [drag, setDrag] = useState(false);\n const [d_value, D_value] = useState<number[]>([0, 0]); //点击时的差值\n const [win_size, setWinsize] = useState(getSize);\n const [focus, setFocus] = useState(false);\n const [ismax, setMax] = useState(false);\n\n useLayoutEffect(() => {\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n //拖动监听\n useLayoutEffect(() => {\n document.addEventListener('mousemove', lie);\n return () => {\n document.removeEventListener('mousemove', lie);\n };\n }, [drag]);\n\n //创建\n useEffect(() => {\n if (show) {\n let box: any = null;\n let body = document.querySelector('body');\n box = document.createElement('div');\n box.className = '_modal';\n mask.current = box;\n body?.appendChild(box);\n let roots = createRoot(box);\n roots.render(React.cloneElement(render()));\n root.current = roots;\n } else {\n onClose();\n }\n }, [show]);\n\n //重新渲染\n useEffect(() => {\n if (root.current) {\n root.current.render(React.cloneElement(render()));\n }\n }, [root.current, ismax, minimize]);\n\n useEffect(() => {\n if (typeof minimize !== 'boolean') return;\n onMinimize();\n }, [minimize]);\n\n //切换\n useEffect(() => {\n if (!mask?.current) return;\n\n if (focus) {\n mask.current.style.zIndex = 200;\n content.current?.classList.add('focus');\n } else {\n mask.current.style.zIndex = '';\n content.current?.classList.remove('focus');\n }\n }, [mask.current, focus]);\n\n //焦点控制\n useEffect(() => {\n if (typeof isfocus == 'boolean') {\n setFocus(isfocus);\n }\n }, [isfocus]);\n\n //头\n const header = useMemo(() => {\n if (title === false) {\n return <></>;\n }\n if (React.isValidElement(title)) {\n return title;\n }\n return (\n <div\n className='_modal-header'\n onMouseDown={(e: any) => {\n D_value([e.nativeEvent?.layerX || 0, e.nativeEvent?.layerY || 0]);\n setDrag(true);\n }}\n onMouseUp={() => {\n setDrag(false);\n }}\n >\n <div className='header-title'>{title}</div>\n <div className='header-toolbar'>\n <span\n className='tool'\n onClick={() => {\n onMin && onMin();\n }}\n >\n {/* <Icons icon='sub' /> */}\n </span>\n <span\n className='tool'\n onClick={() => {\n setMax(!ismax);\n onMaximize();\n }}\n >\n {/* {ismax ? <Icons icon='clone' /> : <Icons icon='square' />} */}\n </span>\n <span\n className='tool close'\n onClick={() => {\n props.onClose && props.onClose();\n }}\n >\n {/* <Icons icon='xmark' /> */}\n </span>\n </div>\n </div>\n );\n }, [drag, title, ismax]);\n\n function handleResize() {\n setWinsize(getSize());\n }\n //最小化\n function onMinimize() {\n if (!minimize) {\n content.current?.classList.add('animation');\n content.current?.classList.add('minimize');\n } else {\n content.current?.classList.remove('minimize');\n content.current?.classList.remove('animation');\n }\n }\n\n //最大化\n function onMaximize() {\n if (!ismax) {\n if (mask?.current) {\n mask.current.style.bottom = '0px';\n mask.current.style.zIndex = 300;\n }\n content.current?.classList.add('animation');\n content.current?.classList.add('maximize');\n } else {\n content.current?.classList.remove('animation');\n content.current?.classList.remove('maximize');\n mask.current.style.bottom = '';\n mask.current.style.zIndex = '';\n }\n }\n\n function onClose() {\n mask?.current?.remove();\n mask.current == null;\n content?.current?.remove();\n content.current == null;\n }\n\n function getSize() {\n return {\n width: window?.innerWidth || 0,\n height: window?.innerHeight || 0,\n };\n }\n\n const lie = (e: any) => {\n if (ismax) return;\n if (!drag) return;\n\n let x = (e.x || 0) - d_value[0];\n let y = (e.y || 0) - d_value[1];\n if (!content?.current) return;\n let c_lie = content.current.getBoundingClientRect();\n if (x < 0) x = 0;\n if (y < 0) y = 0;\n\n if (y + c_lie.height > win_size.height) {\n y = win_size.height - c_lie.height;\n }\n if (x + c_lie.width > win_size.width) {\n x = win_size.width - c_lie.width;\n }\n\n content.current.style.top = y + 'px';\n content.current.style.left = x + 'px';\n\n return {\n x,\n y,\n };\n };\n\n function render() {\n return (\n <div\n ref={content}\n className={cx('_modal-content', {\n minimize: minimize,\n animation: minimize,\n })}\n tabIndex={0}\n onFocus={() => {\n onFocus && onFocus();\n typeof isfocus == 'boolean' ? null : setFocus(true);\n }}\n onBlur={() => {\n typeof isfocus == 'boolean' ? null : setFocus(false);\n onBlur && onBlur();\n }}\n >\n {props?.title && header}\n {props.children}\n </div>\n );\n }\n\n return <></>;\n}\n\nexport default Modal;\n","import './index.less';\nimport cx from 'classnames';\n\nimport React, { ReactNode, useEffect, useMemo, useRef, useState } from 'react';\n\nimport Modal from '.';\n\ninterface ModalTabPorps {\n items: any[];\n select?: string;\n showKey: string[];\n className?: string;\n children?: ReactNode;\n onChange?: () => any;\n onClone?: (key: string, props: any) => any;\n onSelect?: () => any;\n}\n\nexport default function ModalTab(props: ModalTabPorps) {\n const { items, onClone, showKey, className } = props;\n const shrink = useRef<any>(null);\n const [show, setShow] = useState<string[]>([]);\n const [select, setSelect] = useState<string>('');\n const [_shrink, setShink] = useState<any>([]);\n\n useEffect(() => {\n if (typeof showKey[0] == 'string') {\n setSelect(showKey[0]);\n }\n }, []);\n\n useEffect(() => {\n setShow(showKey);\n }, [showKey]);\n\n return (\n <div\n className={cx('_modal-navbar', {\n [className || '']: className,\n })}\n >\n {items.map((v: any, index) => {\n return (\n <React.Fragment key={index}>\n <Modal\n key={index}\n tabIndex={index}\n show={show.includes(v.key)}\n title={v.title}\n onClose={() => {\n onClone && onClone?.(v.key, v);\n }}\n minimize={shrink.current?.includes(v.key)}\n onMinimize={() => {\n let arr = [...(shrink.current || []), v.key];\n shrink.current = arr;\n setShink(arr);\n }}\n isfocus={v.key == select}\n onFocus={() => {\n setSelect(v.key);\n }}\n >\n {v.content}\n </Modal>\n </React.Fragment>\n );\n })}\n {items.map((v: any, index) => {\n return (\n <div\n key={index}\n className={cx('_modal-navbar-item', {\n acitve: select == v.key,\n })}\n onClick={() => {\n if (shrink.current?.includes(v.key)) {\n let arr = shrink.current.filter((item: string) => item !== v.key);\n shrink.current = arr;\n setShink(arr);\n setSelect(v.key);\n return;\n }\n if (select == v.key) {\n let arr = [...(shrink.current || []), v.key];\n shrink.current = arr;\n setShink(arr);\n setSelect('');\n return;\n }\n if (!show.includes(v.key)) {\n setShow([...show, v.key]);\n }\n setSelect(v.key);\n }}\n >\n {v.title}\n </div>\n );\n })}\n </div>\n );\n}\n","import './index.less';\nimport { cx } from '../../../css';\nimport { useContext } from 'react';\n\nimport { ApiStatusEnum } from '../../../enum';\nimport { truncate } from 'lodash';\nimport { ExampleContext } from '../../../store';\n\nimport { LoadingSvg } from '../../../components/icons';\nimport Tree from '../../../components/tree';\nimport Tile from '../../../components/tile';\nimport SelectBox from '../../../components/select-box';\nimport Columns from '../../../components/columns';\nimport ModalTab from '../../../components/modal/modal-tab';\nimport { ExplorerItem } from 'src/types';\n\nconst template: any = {\n tile: {\n action: 'rotate',\n className: 'file-select-box',\n selectClass: '.file-continer-main .file',\n },\n column: {\n className: 'explorer-columns',\n selectClass: '.explorer-columns-list',\n regionClass: '.explorer-columns .layer.list.select_col',\n },\n table: {\n className: 'explorer-tree table',\n dataClass: '.explorer-tree-row',\n selectClass: '.rc-tree-treenode',\n },\n};\n\nconst Layout = (props: any) => {\n const {\n viewHeight: height,\n viewWidth: width,\n\n checks = [],\n\n isDrag = true,\n isNavtab,\n isSelectBoxes = true,\n isOpenMenu = true,\n\n loadData: _loadData,\n\n onClick,\n onCheck,\n onDblclick,\n onRename,\n onMenuClick,\n } = props;\n\n const store = useContext(ExampleContext);\n\n async function loadData(key: string, param: any) {\n if (!store) return;\n store.setLoading(ApiStatusEnum.LOADING);\n let data = await _loadData(key);\n store.setCurList(data.fileList);\n store.setCurInfo(data.current);\n setTimeout(() => {\n store.setLoading(ApiStatusEnum.READY);\n }, 300);\n\n return data.fileList || [];\n }\n\n async function loadNode(key: any) {\n if (!_loadData) return;\n let data = await _loadData?.(key);\n return data?.fileList || [];\n }\n\n function Loading() {\n return (\n <div className='explorer-columns-loading'>\n <div className='loading-content'>\n <div className='loading-content-icon'>\n <LoadingSvg></LoadingSvg>\n </div>\n <div className='loading-content-title'>操作中 ...</div>\n </div>\n </div>\n );\n }\n\n return (\n <div className='file-continer-main'>\n {store?.loading == ApiStatusEnum.LOADING && <Loading></Loading>}\n <SelectBox\n checks={checks}\n checkType={store.checkType}\n checkMode={store.checkMode}\n className={cx('file-select-box', {\n [template[store?.menutype || '']?.className || '']: Boolean(\n template?.[store.menutype]?.className,\n ),\n })}\n isDrag={isDrag}\n isSelectBoxes={isSelectBoxes}\n onChange={(v: string[]) => {\n let map = store.dataMap || {};\n let param: ExplorerItem[] = [];\n v.forEach((checkedKeys: string) => {\n if (map[checkedKeys]) {\n param.push(map[checkedKeys]);\n }\n });\n\n onCheck?.(v, param);\n }}\n onDrag={() => {}}\n onEndDrag={() => {}}\n onStartDrag={() => {}}\n dataClass={template?.[store.menutype]?.dataClass}\n selectClass={template?.[store.menutype]?.selectClass}\n action={template?.[store.menutype]?.action}\n regionClass={template?.[store.menutype]?.regionClass}\n >\n {store?.menutype == 'column' && (\n <Columns\n icon={store.getIcons}\n data={store.curlist}\n checks={checks}\n onLoadData={loadData}\n onClick={onClick}\n onRename={onRename}\n onMenuClick={onMenuClick}\n onDblclick={onDblclick}\n height={height}\n width={width}\n ></Columns>\n )}\n {store?.menutype == 'table' && (\n <Tree\n type='table'\n checks={checks}\n treeData={store.curlist as any}\n columns={store.columns}\n checkType={store.checkType}\n height={height - 24}\n width={width}\n animation={false}\n showLine={false}\n isOpenMenu={isOpenMenu}\n icon={store.getIcons}\n isload={true}\n ischeck={truncate}\n onChecks={(arr: string[]) => {\n let map = store.dataMap || {};\n let param: ExplorerItem[] = [];\n arr.forEach((checkedKeys: string) => {\n if (map[checkedKeys]) {\n param.push(map[checkedKeys]);\n }\n });\n onCheck?.(arr, param);\n }}\n onClick={onClick}\n onRename={onRename}\n onMenuClick={onMenuClick}\n onDblclick={onDblclick}\n loadData={loadNode}\n onChange={(v: any) => {\n store.setCurList(v);\n }}\n ></Tree>\n )}\n {store?.menutype == 'tile' && (\n <Tile\n width={width}\n height={height}\n size={store.menuSize}\n data={store.curlist}\n icons={store.getIcons}\n checks={checks}\n onSelect={onClick}\n onDblclick={onDblclick}\n onRename={onRename}\n onMenuClick={onMenuClick}\n loadData={loadData}\n ></Tile>\n )}\n </SelectBox>\n <ModalTab items={[]} showKey={[]}></ModalTab>\n </div>\n );\n};\n\nexport default Layout;\n","import './index.less';\n\nimport React, { useContext, useEffect, useState } from 'react';\n\nimport { ExampleContext } from '../../../store';\n\nfunction ExplorerInfo(props: any) {\n const { infoshow, getIcons, curInfo } = useContext(ExampleContext);\n const [isEdit, setIsEdit] = useState<any>(false);\n\n useEffect(() => {\n if (infoshow) {\n props?.setSize(285);\n } else {\n props?.onMinimize();\n }\n }, [infoshow]);\n\n function rednerInfo() {\n return (\n <div className='panel-info'>\n <div className='panel-col'>\n <div className='title'>路径:</div>\n <div className='content'>{curInfo?.pathDisplay || '-'}</div>\n </div>\n <div className='panel-col'>\n <div className='title'>大小:</div>\n <div className='content'>{curInfo?.size || '-'}</div>\n </div>\n <div className='panel-col'>\n <div className='title'>创建时间 :</div>\n <div className='content'>{curInfo?.createTime || '-'}</div>\n </div>\n <div className='panel-col'>\n <div className='title'>修改时间 :</div>\n <div className='content'>{curInfo?.fixTime || '-'}</div>\n </div>\n <div className='panel-col'>\n <div className='title'>创建人 :</div>\n <div className='content'>{}</div>\n </div>\n <div className='panel-col'>\n <div className='title'>修改人 :</div>\n <div className='content'>{}</div>\n </div>\n <div className='panel-col'>\n <div className='title'>描述说明 :</div>\n <div className='content'>\n {isEdit ? (\n <textarea autoFocus rows={1}></textarea>\n ) : (\n <div\n className='content-test'\n onClick={() => {\n setIsEdit(true);\n }}\n ></div>\n )}\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div className='frame-main-info'>\n <div className='info-header'>\n <div className='file-icon'>{getIcons(curInfo, '')}</div>\n <div className='file-name'>\n <div className='title'>{curInfo?.title}</div>\n <div className='desc'>\n <span>{curInfo?.size || '-'},</span>\n <span>{curInfo?.fixTime || '-'}</span>\n </div>\n </div>\n </div>\n <div className='info-content'>{rednerInfo()}</div>\n <div className='tab-group-line'></div>\n </div>\n );\n}\nexport default ExplorerInfo;\n","import './index.less';\nimport { css } from '../css';\nimport { useContext, useEffect } from 'react';\n\nimport { ExplorerProps } from '../';\nimport { ExampleContext } from '../store';\n\nimport Draggable from '../components/Draggable';\nimport ExplorerHead from './components/explorer-head';\nimport ExplorerMenu from './components/explorer-menu';\nimport ExplorerMain from './components/explorer-main';\nimport ExplorerInfo from './components/explorer-info';\n\n//布局操作\n\nconst Layout = (props: ExplorerProps) => {\n const { isHeader = true, isNavtab = true, defaultViewType } = props;\n const store = useContext(ExampleContext);\n useEffect(() => {\n if (defaultViewType) {\n store?.setMenutype(defaultViewType);\n }\n }, [defaultViewType]);\n\n return (\n <div className='frame-explorer-main'>\n <Draggable\n placement={'horizontal'}\n poi={isNavtab ? [200] : [0, 'max']}\n fix={[false, true]}\n rang={[10, 350]}\n >\n <ExplorerMenu {...props} />\n <div className='frame-right'>\n {isHeader && (\n <div className='frame-header'>\n <ExplorerHead />\n </div>\n )}\n <div className='frame-main'>\n <Draggable\n className={css`\n position: absolute;\n width: 100%;\n left: 0;\n `}\n placement={'horizontal'}\n poi={['max']}\n fix={[false, true]}\n rang={[380, 285]}\n >\n <ExplorerMain {...props} />\n <ExplorerInfo {...props}></ExplorerInfo>\n </Draggable>\n </div>\n </div>\n </Draggable>\n </div>\n );\n};\n\nexport default Layout;\n","import './index.less';\nimport './components/tree/css/index.less';\n\nimport cx from 'classnames';\nimport { FC, useEffect, useState } from 'react';\nimport { ExplorerItem, ExplorerProps } from './types';\nimport { ApiStatusEnum } from './enum';\n\nimport { ExampleContext } from './store';\n\nimport {\n AlbumSvg,\n FavoriteSvg,\n LinkSvg,\n NetdiskSvg,\n RecentlySvg,\n RecycleSvg,\n ShareLinkSvg,\n SpaceSvg,\n SuffixIcon,\n TextSvg,\n} from './components/icons';\nimport Layout from './layout';\n\nconst defaultColumns = [\n {\n title: '姓名',\n key: 'title',\n width: 300,\n },\n {\n title: '文件类型',\n key: 'suffix',\n width: 250,\n },\n {\n title: '大小',\n key: 'size',\n width: 200,\n },\n {\n title: '修改时间',\n key: 'fixdate',\n width: 280,\n },\n {\n title: '创建时间',\n key: 'createdate',\n width: 280,\n },\n];\n\nconst Explorer: FC<ExplorerProps> = (props) => {\n const { loadData: _loadData, data, columns, checkType, checkMode = 'file' } = props;\n\n const [pathDisplay, setPathDisplay] = useState<string>('');\n const [menuSize, setMenuSize] = useState<number>(80);\n const [curlist, setCurList] = useState<ExplorerItem[]>(data || []);\n const [curInfo, setCurInfo] = useState<ExplorerItem | null>(null);\n const [dataMap, setDataMap] = useState<{ [key: string]: ExplorerItem } | null>({});\n\n const [menutype, setMenutype] = useState<'tile' | 'table' | 'column'>('tile');\n const [infoshow, setInfoShow] = useState<boolean>(false);\n const [loading, setLoading] = useState<ApiStatusEnum>(ApiStatusEnum.READY);\n const [log, setLog] = useState<string[]>([]);\n\n const Icons = (v: any, className: string, style?: any) => {\n const icon = new Map([\n ['favorite', <FavoriteSvg />],\n ['space', <SpaceSvg />],\n ['netdisk', <NetdiskSvg />],\n ['album', <AlbumSvg />],\n ['recycle', <RecycleSvg />],\n ['recently', <RecentlySvg />],\n ['coordination', <LinkSvg />],\n ['text', <TextSvg />],\n ['share', <ShareLinkSvg />],\n ]);\n\n if (v?.label) {\n return (\n <span\n className={cx(`explorer-label-icon ${className || ''}`)}\n style={{\n ...(style || {}),\n }}\n >\n <div\n style={{\n background: 'red',\n }}\n ></div>\n </span>\n );\n }\n\n if (v?.key && icon.has(v?.key)) {\n return (\n <span\n className={cx(`${className || ''}`)}\n style={{\n ...(style || {}),\n }}\n >\n {icon.get(v.key)}\n </span>\n );\n }\n if (v?.suffix) {\n return <SuffixIcon className={cx(`${className || ''}`)} suffix={v.suffix}></SuffixIcon>;\n }\n return <SuffixIcon className={cx(`${className || ''}`)} suffix={'folder'}></SuffixIcon>;\n };\n\n useEffect(() => {\n setCurList(data || []);\n }, [data]);\n\n useEffect(() => {\n const addLevel = (data: any, map: any) => {\n let i = 0;\n while (i < data.length) {\n let item = data[i];\n map[item.key] = item;\n if (Array.isArray(item.children) && item.children.length > 0) {\n addLevel(item.children, map);\n }\n i++;\n }\n return map;\n };\n let map = addLevel(curlist, {});\n setDataMap(map);\n }, [curlist]);\n\n return (\n <ExampleContext.Provider\n value={{\n //data\n dataMap,\n curlist,\n log,\n curInfo,\n\n //config\n menutype,\n pathDisplay,\n columns: columns || defaultColumns,\n loading,\n menuSize,\n infoshow,\n checkType,\n checkMode,\n\n //icon\n getIcons: Icons,\n\n //set\n setLog,\n setCurInfo,\n setInfoShow,\n setCurList,\n setMenuSize,\n setMenutype,\n setPathDisplay,\n setLoading,\n }}\n >\n <div className='explorer-container'>\n <Layout {...props} />;\n </div>\n </ExampleContext.Provider>\n );\n};\n\nexport default Explorer;\n"],"names":["styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","fileType","ApiStatusEnum","ExampleContext","createContext","FavoriteSvg","React","className","viewBox","d","fill","SpaceSvg","NetdiskSvg","AlbumSvg","RecycleSvg","RecentlySvg","LinkSvg","TextSvg","InfoSvg","version","xmlns","ZoomUpSvg","FavSvg","ShareSvg","FavTagSvg","LoadingSvg","ArrowLeftSvg","SearchSvg","ArrowTopSvg","AngleRightSvg","OutdentSvg","CaretRight","CircleCheckSvg","ShareLinkSvg","UpdateSvg","NullDataSvg","xmlnsXlink","gradientUnits","y2","x2","y1","x1","id","stopColor","offset","stopOpacity","xlinkHref","opacity","stroke","strokeWidth","strokeMiterlimit","transform","points","ry","rx","cy","cx","SuffixIcon","_ref","_cx","suffix","_createEmotion","createEmotion","key","flush","hydrate","merge","getRegisteredStyles","injectGlobal","keyframes","sheet","cache","Draggable","forwardRef","_ref$placement","placement","_poi","poi","_ref$fix","fix","_ref$rang","rang","children","boxRef","useRef","clickInfoRef","x","i","w","sashPlacement","_useState","useState","sashClicked","setSashClicked","_useState2","minimum","setMinimum","_useState3","maximum","setMaximum","_useState4","setPoi","_useState5","width","height","pSize","setParentSize","getElementRect","index","curPoi","calcMax","Math","min","length","p","handleMouseDown","e","clientX","pageX","clientY","pageY","current","cancelDrag","onMaximize","onMinimize","setSize","size","ps","s","useImperativeHandle","parentSize","isMaximize","isMinimize","useEffect","ob","targetElement","resizeObserver","ResizeObserver","entries","_step","_iterator","_createForOfIteratorHelperLoose","done","_entry$contentRect","value","contentRect","observe","addEventListener","unobserve","removeEventListener","childrenDom","useMemo","Children","map","child","_getElementRect","viewWidth","viewHeight","left","top","visible","cloneElement","sashDom","filter","v","it","active","onMouseDown","onMouseUp","onMouseMove","$_width","max","slice","$_w2","returnDocument","element","ownerDocument","window","Dropdown","props","dropdownRender","_props$trigger","trigger","_props$placement","zIndex","onExpand","_props$destroyPopupOn","destroyPopupOnHide","capture","position","expand","setExpand","newDiv","setNewDiv","menu","mouse","setMouse","root","setRoot","time","getSize","windowSize","setWindowSize","_useState6","menuSize","setMenuSize","handleResize","_window","_window2","innerWidth","innerHeight","lie","content","curX","curY","y","shiftX","getBoundingClientRect","box","right","bottom","trunc","useLayoutEffect","addEvent","delEvent","ids","querySelector","onclick","remove","newDivs","_newDivs","_content","body","onClick","onClone","onmouseleave","setTimeout","onmouseenter","clearTimeout","createRoot","setAttribute","render","_content2","_menu$current","_menu$current2","documentClose","documentMenu","_ref$current","contains","target","_ref$current2","container","stopPropagation","offsetWidth","offsetHeight","_extends","disconnect","onMouseEnter","preventDefault","nativeEvent","onMouseLeave","onContextMenu","title","icon","ExplorerHead","store","useContext","pathInputRef","path","setPath","pathFocus","setFocus","handleKeyDown","altKey","setMenutype","Breadcrumb","arr","pathDisplay","split","first","last","_templateObject","_taggedTemplateLiteralLoose","Fragment","disable","hidden","focus","name","onInput","spellCheck","onBlur","placeholder","menutype","Slider","onChange","classname","infoshow","setInfoShow","isdarg","setDarg","per","round","onMouseOut","cur","num","TreeContext","Indent","prefixCls","level","isStart","isEnd","widthStyle","baseClassName","list","_classNames","push","classNames","Indent$1","memo","getEntity","keyEntities","getPosition","getKey","pos","fillFieldNames","fieldNames","mergedTitle","_title","flattenTreeData","treeNodeList","expandedKeys","_fillFieldNames","fieldTitles","fieldKey","fieldChildren","expandedKeySet","Set","flattenList","dig","parent","treeNode","mergedKey","fieldTitle","undefined","flattenNode","omit","concat","data","has","convertDataToEntities","dataNodes","_temp","legacyExternalGetKey","_ref2","initWrapper","processEntity","onProcessFinished","externalGetKey","childrenPropName","mergedExternalGetKey","posEntities","wrapper","callback","config","syntheticGetKey","_mergedConfig","_fillFieldNames2","mergeChildrenPropName","node","processNode","pathNodes","connectNodes","parentPos","nodes","forEach","subNode","subIndex","traverseDataNodes","item","entity","getTreeNodeProps","_ref3","selectedKeys","loadedKeys","loadingKeys","checkedKeys","halfCheckedKeys","dragOverNodeKey","dropPosition","eventKey","expanded","indexOf","selected","loaded","loading","checked","halfChecked","String","dragOver","dragOverGapTop","dragOverGapBottom","convertNodePropsToEventData","eventData","Object","defineProperty","get","ICON_OPEN","ICON_CLOSE","InternalTreeNode","_React$Component","_this","_len","arguments","args","Array","_key","call","apply","this","state","dragNodeHighlight","onSelectorClick","onNodeClick","context","isSelectable","onSelect","onCheck","onSelectorDoubleClick","onNodeDoubleClick","isDisabled","onNodeSelect","_this$props","disableCheckbox","onNodeCheck","isCheckable","targetChecked","onNodeMouseEnter","onNodeMouseLeave","onNodeContextMenu","onDragStart","onNodeDragStart","setState","dataTransfer","setData","error","onDragEnter","onNodeDragEnter","onDragOver","onNodeDragOver","onDragLeave","onNodeDragLeave","onDragEnd","onNodeDragEnd","onDrop","onNodeDrop","_this$props2","onNodeExpand","setSelectHandle","selectHandle","getNodeState","isLeaf","hasChildren","_this$props3","loadData","disabled","checkable","treeCheckable","syncLoadData","_this$props$context","onNodeLoad","isDraggable","_this$props4","draggable","nodeDraggable","renderDragHandler","_this$props$context2","renderSwitcherIconDom","switcherIconFromProps","switcherIcon","switcherIconFromCtx","renderSwitcher","switcherIconDom","switcherCls","renderCheckbox","_this$props5","$custom","renderIcon","renderSelector","$icon","titleNode","_this$props6","_this$props6$title","defaultTitle","_this$props$context3","showIcon","treeIcon","titleRender","wrapClass","currentIcon","$title","onDoubleClick","renderDropIndicator","_this$props7","_this$props$context4","dropLevelOffset","indent","dropIndicatorRender","direction","showIndicator","mergedIndent","cacheIndent","_inheritsLoose","_proto","prototype","componentDidMount","componentDidUpdate","selectable","treeSelectable","_this$props8","domRef","indentWidth","otherProps","_objectWithoutPropertiesLoose","_excluded","_this$props$context5","filterTreeNode","dropContainerKey","dropTargetKey","draggingNodeKey","dataOrAriaAttributeProps","pickAttrs","aria","isEndNode","mergedDraggable","draggableWithoutDisabled","dragging","ariaSelected","Component","ContextTreeNode","Consumer","displayName","isTreeNode","MotionTreeNode","motion","motionNodes","motionType","onOriginMotionStart","onMotionStart","onOriginMotionEnd","onMotionEnd","treeNodeRequiredProps","_React$useState","setVisible","targetVisible","triggerMotionEndRef","triggerMotionEnd","triggerStart","triggerEnd","firstMount","setFirstMount","useUnmount","CSSMotion","motionAppear","onVisibleChanged","nextVisible","motionRef","motionClassName","motionStyle","restProps","_objectDestructuringEmpty","treeNodeProps","TreeNode","RefMotionTreeNode","getExpandRange","shorter","longer","shorterStartIndex","findIndex","shorterEndNode","longerStartIndex","longerEndIndex","HIDDEN_STYLE","display","overflow","border","padding","margin","noop","MOTION_KEY","random","MotionNode","MotionEntity","MotionFlattenData","getMinimumRangeTransitionRange","virtual","itemHeight","ceil","itemKey","NodeList","onVirtualScroll","focusable","activeItem","focused","tabIndex","onKeyDown","onFocus","onActiveChange","onListChangeStart","onListChangeEnd","domProps","listRef","indentMeasurerRef","scrollTo","scroll","getIndentWidth","prevExpandedKeys","setPrevExpandedKeys","_React$useState2","prevData","setPrevData","_React$useState3","transitionData","setTransitionData","_React$useState4","transitionRange","setTransitionRange","_React$useState5","setMotionType","dataRef","latestData","diffExpanded","prev","next","prevLen","nextLen","abs","add","find","Map","set","keys","findExpandedKeys","keyIndex","rangeNodes","newTransitionData","splice","mergedData","getAccessibilityPath","pointerEvents","visibility","VirtualList","fullHeight","onVisibleChange","originList","fullList","originSet","some","arrDel","clone","arrAdd","posToArr","getDragChildrenKeys","dragNodeKey","dragChildrenKeys","isLastChild","treeNodeEntity","posArr","Number","calcDropPosition","event","dragNode","targetNode","startMousePosition","allowDrop","flattenedNodes","expandKeys","_abstractDropNodeEnti","_getBoundingClientRec","rawDropLevelOffset","filteredExpandKeys","_keyEntities$key","abstractDropNodeEntity","nodeIndex","flattenedNode","prevNodeKey","initialAbstractDropNodeKey","abstractDragOverEntity","includes","abstractDragDataNode","abstractDropDataNode","dropAllowed","dropNode","dropTargetPos","calcSelectedKeys","multiple","parseCheckedKeys","keyProps","isArray","conductExpandParent","keyList","conductUp","removeFromCheckedKeys","filteredKeys","isCheckDisabled","conductCheck","getCheckDisabled","syntheticGetCheckDisabled","result","levelEntities","maxLevel","levelSet","_entity$children","childEntity","visitedKeys","allChecked","partialChecked","from","fillConductCheck","halfKeys","_entity$children2","cleanConductCheck","Tree","_args","destroyed","loadingRetryTimes","treeData","flattenNodes","activeKey","listChanging","prevProps","dragStartMousePosition","currentMouseOverDroppableNodeKey","createRef","_this$state","newExpandedKeys","setExpandedKeys","onWindowDragEnd","_this$state2","_node$props","_calcDropPosition","delayedDragEnterLogic","persist","resetDragState","_this$state3","_calcDropPosition2","currentTarget","relatedTarget","cleanDragState","outsideTree","_this$getActiveItem","_this$state4","abstractDropNodeProps","getTreeNodeRequiredProps","getActiveItem","dropResult","dragNodesKeys","dropToGap","triggerExpandActionExpand","_this$state5","shiftKey","metaKey","ctrlKey","nodeItem","eventNode","expandAction","_this$state6","targetSelected","selectedNodes","selectedKey","setUncontrolledState","checkedObj","_this$state7","oriCheckedKeys","oriHalfCheckedKeys","checkStrictly","eventObj","checkedNodes","checkedKey","_conductCheck","keySet","_conductCheck2","checkedNodesPositions","loadPromise","Promise","resolve","reject","_ref$loadedKeys","_ref$loadingKeys","onLoad","then","newLoadedKeys","prevState","currentLoadedKeys","onRightClick","_len2","_key2","_len3","_key3","_this$state8","_this$state9","_this$state10","targetExpanded","newFlattenTreeData","expandedKeysToRestore","newActiveKey","_this$props9","_this$props9$itemScro","itemScrollOffset","_this$state11","offsetActiveKey","_this$state12","_this$state13","_this$props10","which","KeyCode","UP","DOWN","expandable","LEFT","RIGHT","ENTER","SPACE","atomic","forceState","needSync","allPassed","newState","onUpdated","_this$props11","_this$props11$itemScr","componentWillUnmount","getDerivedStateFromProps","toArray","_treeNode$props","dataNode","parsedChildren","_extends2","entitiesMap","checkedKeyEntity","autoExpandParent","defaultExpandParent","defaultExpandAll","cloneKeyEntities","defaultExpandedKeys","defaultSelectedKeys","defaultCheckedKeys","_checkedKeyEntity","_checkedKeyEntity$che","_checkedKeyEntity$hal","conductKeys","draggableConfig","_this$state14","_this$props12","showLine","_this$props12$tabInde","onScroll","rootClassName","rootStyle","scrollWidth","Provider","role","Tree$1","defaultProps","backgroundColor","iconFactory","getMenu","registerMenu","component","Menu","menus","dom","test","isValidElement","desc","TableItem","columns","ischeck","onMenuClick","rename","onRename","param","isOpenMenu","menudata","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","stop","_x","flex","autoFocus","defaultValue","TreeItem","setTitle","addLevel","levelIndex","api","motionName","onAppearStart","onAppearActive","scrollHeight","onLeaveStart","onLeaveActive","_props$type","checks","_widht","_props$isload","isload","_props$ischeck","_props$showLine","_props$animation","animation","onChecks","tree","header","setRename","motionshow","seTmotionShow","setWidth","reduce","floor","getNewTreeData","curKey","loop","levelkey","l","loopLeaf","lev","setLeaf","table","_e$target","_e$target2","scrollLeft","Header","onWidhtChange","_header$current","cloneDeep","checkType","defaultmenu","_child","sent","open","fontSize","setIsDrag","dragindex","setDargIndex","up","a","diff","ExplorerMenu","icons","onLoadData","getIcons","_x3","_loadNode","setPathDisplay","setCurInfo","setCurList","_x2","_loadData","abrupt","setLoading","LOADING","fileList","READY","_callee2","_context2","VirtualScroll","_containerRef$current3","renderItem","scrollTop","setScrollTop","containerRef","setdata","items","handleScroll","_containerRef$current","_containerRef$current2","visibleCount","clientHeight","startIdx","endIdx","overflowY","paddingTop","Tile","select","_props$checks","_props$size","onDblclick","rekey","setRekey","itemSize","setList","col","setCol","chunkSize","resultArray","acc","curr","chunkIndex","pic","src","lineHeight","rows","lastIndexOf","setSelectionRange","SelectBox","_props$className","dataClass","_props$selectClass","selectClass","regionClass","_props$isDrag","isDrag","_props$isSelectBoxes","isSelectBoxes","_props$checkType","checkMode","_props$action","action","selectionRef","clickRef","_dom","selects","setSelect","show","stageClickInfo","setStageClickInfo","handleBodyMousemove","_cur$current","_cur$current2","region","_region","selectionDom","idx","pX","pY","sTop","sLeft","sWidth","sHeight","querySelectorAll","dataDom","_v$getBoundingClientR","sRight","sBottom","getAttribute","createBox","handleBodyMouseup","empty","_target$current","_box$current","button","isSelectTarget","_box3","_box","_target","_box2","_target2","_cur","cloneNode","createVDom","ReactDOM","createPortal","Item","acitve","isedit","onEdit","setValue","end","Columns","_w","_props$checks2","layer","setLayer","select_col","setSelectCol","select_file","setSelectFile","select_info","setSelectInfo","_useState7","edit","setEdit","_useState8","isdrag","setIsdarg","avg","setlevel","loaddata","_data","Modal","isfocus","onMin","minimize","mask","drag","setDrag","d_value","D_value","win_size","setWinsize","ismax","setMax","roots","_mask$current","_content$current11","_content$current5","_content$current6","classList","_content$current3","_content$current4","_content$current","_content$current2","_e$nativeEvent","_e$nativeEvent2","layerX","layerY","_content$current9","_content$current10","_content$current7","_content$current8","onClose","c_lie","ModalTab","showKey","shrink","setShow","setShink","_shrink$current","_shrink$current2","template","tile","column","Layout","_template","_template$store$menut","_template$store$menut2","_template$store$menut3","_template$store$menut4","_template$store$menut5","isNavtab","_props$isOpenMenu","_loadData2","Loading","Boolean","dataMap","onDrag","onEndDrag","onStartDrag","curlist","truncate","ExplorerInfo","_useContext","curInfo","isEdit","setIsEdit","fixTime","createTime","_props$isHeader","isHeader","_props$isNavtab","defaultViewType","ExplorerMain","defaultColumns","_props$checkMode","setDataMap","_useState9","log","setLog","label","background"],"mappings":"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","x_google_ignoreList":[0]}