@gingkoo/pandora-explorer 0.0.1-alpha.33 → 0.0.1-alpha.35

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.
@@ -15,6 +15,7 @@ interface DropdownProps {
15
15
  y?: number;
16
16
  };
17
17
  style?: any;
18
+ onContextMenu?: any;
18
19
  }
19
20
  export default function Dropdown(props: DropdownProps): import("react/jsx-runtime").JSX.Element;
20
21
  export {};
package/lib/es/index.js CHANGED
@@ -1,10 +1,10 @@
1
1
  /**
2
- * @gingkoo/pandora-explorer v0.0.1-alpha.33
2
+ * @gingkoo/pandora-explorer v0.0.1-alpha.35
3
3
  */
4
4
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
5
5
  import cx$1 from 'classnames';
6
6
  import * as React from 'react';
7
- import React__default, { createContext, useRef, useState, useImperativeHandle, useEffect, useMemo, useLayoutEffect, useContext, createElement } from 'react';
7
+ import React__default, { createContext, useRef, useState, useImperativeHandle, useEffect, useMemo, useLayoutEffect, useContext, createElement, forwardRef } from 'react';
8
8
  import createEmotion from '@emotion/css/create-instance';
9
9
  import { cx as cx$2 } from '@emotion/css';
10
10
  import { createRoot } from 'react-dom/client';
@@ -1262,7 +1262,8 @@ function Dropdown(props) {
1262
1262
  destroyPopupOnHide = false,
1263
1263
  capture,
1264
1264
  position,
1265
- style
1265
+ style,
1266
+ onContextMenu
1266
1267
  } = props;
1267
1268
  const [expand, setExpand] = useState(false);
1268
1269
  const [newDiv, setNewDiv] = useState(null);
@@ -1520,7 +1521,7 @@ function Dropdown(props) {
1520
1521
  },
1521
1522
  onContextMenu: e => {
1522
1523
  e.preventDefault();
1523
- e.stopPropagation();
1524
+ onContextMenu?.(e);
1524
1525
  if (trigger == 'contextMenu') {
1525
1526
  let x = 0;
1526
1527
  let y = 0;
@@ -1834,6 +1835,14 @@ function Slider(props) {
1834
1835
  const ref = useRef(null);
1835
1836
  const [isdarg, setDarg] = useState(false);
1836
1837
  const [size, setSize] = useState(null);
1838
+ useEffect(() => {
1839
+ document.addEventListener('mousemove', handleBodyMousemove);
1840
+ document.addEventListener('mouseup', handleBodyMouseup);
1841
+ return () => {
1842
+ document.removeEventListener('mousemove', handleBodyMousemove);
1843
+ document.removeEventListener('mouseup', handleBodyMouseup);
1844
+ };
1845
+ }, [isdarg, ref.current]);
1837
1846
  useEffect(() => {
1838
1847
  if (!size) return;
1839
1848
  let d_value = max - min;
@@ -1845,22 +1854,25 @@ function Slider(props) {
1845
1854
  let data = value - min;
1846
1855
  setSize(data / d_value * 100);
1847
1856
  }, [value]);
1857
+ function handleBodyMousemove(e) {
1858
+ if (!isdarg) return;
1859
+ if (!ref.current) return;
1860
+ e.preventDefault();
1861
+ let dom = ref.current.getBoundingClientRect();
1862
+ let cur = dom.top + 15;
1863
+ let num = e.clientY - cur;
1864
+ num > 100 ? num = 100 : null;
1865
+ num < 0 ? num = 0 : null;
1866
+ setSize(num);
1867
+ }
1868
+ function handleBodyMouseup(e) {
1869
+ e.preventDefault();
1870
+ e.stopPropagation();
1871
+ setDarg(false);
1872
+ }
1848
1873
  return jsx("div", {
1849
1874
  className: '_slider',
1850
1875
  ref: ref,
1851
- onMouseOut: () => {
1852
- setDarg(false);
1853
- },
1854
- onMouseMove: e => {
1855
- if (!isdarg) return;
1856
- if (!ref.current) return;
1857
- let dom = ref.current.getBoundingClientRect();
1858
- let cur = dom.top + 15;
1859
- let num = e.clientY - cur;
1860
- num > 100 ? num = 100 : null;
1861
- num < 0 ? num = 0 : null;
1862
- setSize(num);
1863
- },
1864
1876
  children: jsx("div", {
1865
1877
  className: '_slider-link',
1866
1878
  onClick: e => {
@@ -1876,11 +1888,8 @@ function Slider(props) {
1876
1888
  top: size + 'px'
1877
1889
  },
1878
1890
  className: '_slider-drop',
1879
- onMouseDown: () => {
1891
+ onMouseDown: e => {
1880
1892
  setDarg(true);
1881
- },
1882
- onMouseUp: () => {
1883
- setDarg(false);
1884
1893
  }
1885
1894
  })
1886
1895
  })
@@ -1890,7 +1899,7 @@ function Slider(props) {
1890
1899
  var css_248z$7 = ".explorer-menu {\n height: 100%;\n}\n";
1891
1900
  styleInject(css_248z$7);
1892
1901
 
1893
- var css_248z$6 = ".explorer-tree {\n width: 100%;\n height: 100%;\n}\n.explorer-tree-switch {\n height: 31px;\n width: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n vertical-align: top !important;\n color: #aaa;\n border-radius: 2px;\n}\n.explorer-tree-switch:hover {\n color: #1890ff;\n background-color: rgba(0, 0, 0, 0.03);\n}\n.explorer-tree-switch.open {\n color: #1890ff;\n}\n.explorer-tree-switch.open > svg {\n transform: rotate(90deg);\n}\n.explorer-tree-switch.loading {\n background: transparent;\n animation: rotate 1s linear infinite;\n}\n.explorer-tree-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n margin: 6px 0px;\n background-repeat: no-repeat;\n background-position: center;\n background-size: cover;\n border-radius: 5px;\n font-style: normal;\n pointer-events: none;\n vertical-align: top;\n}\n.explorer-tree-node {\n display: flex;\n height: 100%;\n align-items: center;\n}\n.explorer-tree-node .node-title {\n flex: 1;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n}\n.explorer-tree-node .node-menu {\n display: none;\n flex-shrink: 0;\n width: 30px;\n justify-content: center;\n align-items: center;\n}\n.explorer-tree-node .node-menu .node-menu-icon {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 14px;\n height: 14px;\n border: 1px solid #ccc;\n border-radius: 2px;\n cursor: pointer;\n z-index: 50;\n background: #fff;\n color: #ccc;\n font-size: 7px;\n transition: 0.3s;\n}\n.explorer-tree-node .node-menu .node-menu-icon > svg {\n transform: rotate(90deg);\n}\n.explorer-tree-node .node-menu .node-menu-icon:hover {\n border: 1px solid #1890ff;\n color: #1890ff;\n}\n.explorer-tree-node .node-input {\n display: inline-block;\n width: 100%;\n height: 24px;\n outline: 0;\n border: 1px solid #eee;\n border-radius: 3px;\n transition: 0.3s;\n padding: 0 5px;\n}\n.explorer-tree-node .node-input:hover {\n border: 1px solid #1890ff;\n}\n.explorer-tree-node .node-input:focus {\n border: 1px solid #1890ff;\n}\n.explorer-tree-node:hover .node-menu {\n display: flex;\n}\n.explorer-tree-row {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n}\n.explorer-tree-row .row-item {\n display: flex;\n padding: 0 10px;\n flex: 1 0 0;\n user-select: none;\n}\n.explorer-tree-row .row-item .row-item-content {\n flex: 1 0 0;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n}\n.explorer-tree-row .row-item .row-item-content > input {\n height: 24px;\n outline: none;\n width: 100%;\n outline: 0;\n border: 0;\n}\n.explorer-tree-row .row-item-check {\n display: flex;\n width: 19px;\n align-items: center;\n box-sizing: border-box;\n pointer-events: all;\n}\n.explorer-tree-row .row-item-check .btn-check {\n display: inline-block;\n height: 19px;\n width: 19px;\n flex-shrink: 0;\n z-index: 11;\n font-size: 20px;\n text-align: center;\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.05);\n color: #fff;\n line-height: 0;\n opacity: 0;\n cursor: pointer;\n transition: opacity 0.3s;\n margin: 2px;\n}\n.explorer-tree-row .row-item-check .btn-check > svg {\n position: relative;\n width: 23px;\n height: 23px;\n left: -2px;\n top: -2px;\n}\n.explorer-tree-row .row-item-check.active .btn-check {\n opacity: 1;\n background: #3b8cff;\n}\n.explorer-tree.table .tree-scroll-x {\n width: 100%;\n overflow: hidden;\n overflow-x: auto;\n}\n.explorer-tree.table .tree-scroll-x::-webkit-scrollbar {\n display: none;\n}\n.explorer-tree.table .tree-scroll {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: 10;\n overflow: auto;\n}\n.explorer-tree.table .rc-tree {\n height: calc(100% - 26px);\n}\n.explorer-tree.table .rc-tree-list-holder-inner {\n overflow: auto;\n}\n.explorer-tree.table .rc-tree-list {\n height: 100%;\n}\n.explorer-tree.table .rc-tree-checkbox {\n display: none !important;\n}\n.explorer-tree.table .rc-tree-treenode {\n border-radius: 2px;\n width: fit-content;\n opacity: 0.8;\n z-index: 100;\n pointer-events: all;\n}\n.explorer-tree.table .rc-tree-treenode:nth-child(odd) {\n background: #4664780d;\n}\n.explorer-tree.table .rc-tree-list-holder-inner {\n padding: 8px 0 0 8px;\n}\n.explorer-tree.table .rc-tree-treenode-leaf-last:last-child {\n height: 200px;\n width: 1px;\n}\n.explorer-tree.table .rc-tree-treenode-checkbox-checked {\n background: #cce8ff !important;\n border: 1px solid #99d1ff;\n}\n.explorer-tree .rc-tree-iconEle {\n height: 31px !important;\n vertical-align: top !important;\n width: auto !important;\n}\n.explorer-tree .rc-tree-treenode {\n position: relative;\n height: 31px;\n line-height: 31px;\n border: 1px solid transparent;\n display: flex;\n}\n.explorer-tree .rc-tree-treenode > .rc-tree-node-content-wrapper {\n height: 31px !important;\n display: flex !important;\n flex: 1;\n margin-left: calc(24px - 20px);\n}\n.explorer-tree .rc-tree-treenode > .rc-tree-node-selected {\n background-color: transparent;\n box-shadow: none;\n opacity: 1;\n}\n.explorer-tree .rc-tree-treenode.rc-tree-treenode-selected {\n background-color: #cce8ff !important;\n border: 1px solid #1890ff;\n opacity: 0.8;\n}\n.explorer-tree .rc-tree-treenode.rc-tree-treenode-selected .node-menu {\n display: flex;\n}\n.explorer-tree .rc-tree-treenode:hover {\n background: #e5f3ff !important;\n box-shadow: 0 0 0 1px transparent;\n}\n.explorer-tree .rc-tree-treenode.hover {\n background: #e5f3ff !important;\n}\n.explorer-tree .rc-tree-switcher {\n flex-shrink: 0;\n width: 20px !important;\n height: 31px !important;\n vertical-align: top !important;\n background-image: none !important;\n}\n.explorer-tree .rc-tree-title {\n display: inline-block;\n height: 31px;\n width: 100%;\n}\n.explorer-tree.showLine .rc-tree-indent {\n height: 31px;\n}\n.explorer-tree.showLine .rc-tree-indent > .rc-tree-indent-unit {\n position: relative;\n}\n.explorer-tree.showLine .rc-tree-indent > .rc-tree-indent-unit::after {\n display: inline-block;\n position: absolute;\n content: '';\n width: 1px;\n left: 10px;\n height: 31px;\n background-color: rgba(0, 0, 0, 0.075);\n}\n.explorer-tree.showLine .rc-tree-indent-unit {\n width: 20px;\n height: 31px;\n}\n.explorer-tree.showLine .rc-tree-treenode-leaf-last .rc-tree-indent > .rc-tree-indent-unit:last-child {\n position: relative;\n}\n.explorer-tree.showLine .rc-tree-treenode-leaf-last .rc-tree-indent > .rc-tree-indent-unit:last-child::before {\n content: '';\n display: inline-block;\n position: absolute;\n width: 8px;\n top: calc(31px / 2);\n left: 10px;\n height: 1px;\n background-color: rgba(0, 0, 0, 0.075);\n}\n.explorer-tree.showLine .rc-tree-treenode-leaf-last .rc-tree-indent > .rc-tree-indent-unit:last-child::after {\n display: inline-block;\n position: absolute;\n content: '';\n width: 1px;\n left: 10px;\n top: 0;\n height: calc(31px / 2);\n background-color: rgba(0, 0, 0, 0.075);\n}\n.explorer-tree.showLine .rc-tree-treenode-leaf-last .rc-tree-indent > .rc-tree-indent-unit:first-child {\n position: relative;\n}\n.explorer-tree.showLine .rc-tree-treenode-leaf-last .rc-tree-indent > .rc-tree-indent-unit:first-child::before {\n display: none;\n content: '';\n}\n.explorer-tree.showLine .rc-tree-treenode-leaf-last .rc-tree-indent > .rc-tree-indent-unit:first-child::after {\n display: inline-block;\n position: absolute;\n content: '';\n width: 1px;\n left: 10px;\n height: 31px;\n background-color: rgba(0, 0, 0, 0.075);\n}\n.explorer-tree.explorer-checks .rc-tree-treenode:hover .row-item-check .btn-check {\n opacity: 1;\n}\n.explorer-tree .rc-tree-list-scrollbar-thumb {\n background: #bbb !important;\n}\n.explorer-tree .rc-tree-list-scrollbar {\n width: 5px !important;\n}\n.explorer-tree .node-motion {\n transition: all 0.3s;\n overflow-y: hidden;\n}\n.explorer-tree .rc-tree-child-tree {\n display: block;\n}\n.explorer-table-header {\n display: flex;\n width: fit-content;\n min-width: 100%;\n height: 25px;\n line-height: 25px;\n color: #448;\n border-bottom: 1px solid #e3e3e3;\n box-shadow: 0 6px 10px rgba(0, 0, 0, 0.05);\n background: #fff;\n}\n.explorer-table-header .item {\n padding: 0 10px 0 0;\n flex: 1 0 0;\n margin-left: -10px;\n border-right: 1px solid #eee;\n user-select: none;\n min-width: 80px;\n}\n.explorer-table-header .item:first-child {\n padding-left: 20px;\n}\n.explorer-table-header .resize {\n position: relative;\n flex: 0 0 20px;\n width: 20px;\n z-index: 10;\n cursor: col-resize;\n left: -10px;\n transition: background 0.2s;\n}\n.explorer-table-header .resize::before {\n content: '';\n position: fixed;\n width: 1px;\n height: 2000px;\n z-index: 10;\n margin-left: 10px;\n visibility: hidden;\n opacity: 0;\n transition: all 0.2s;\n}\n.explorer-table-header .resize:hover {\n background: #1890ff30;\n}\n.explorer-table-header .resize.resize-focus {\n z-index: 9999;\n}\n.explorer-table-header .resize.resize-focus:before {\n opacity: 1;\n background: #1890ff;\n visibility: visible;\n}\n.explorer-table-header .resize:last-child {\n flex: 0 0 10px;\n width: 10px;\n}\n.explorer-table-header.item-resize {\n z-index: 10;\n}\n@keyframes rotate {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n";
1902
+ var css_248z$6 = ".explorer-tree {\n width: 100%;\n height: 100%;\n}\n.explorer-tree-switch {\n height: 31px;\n width: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n vertical-align: top !important;\n color: #aaa;\n border-radius: 2px;\n}\n.explorer-tree-switch:hover {\n color: #1890ff;\n background-color: rgba(0, 0, 0, 0.03);\n}\n.explorer-tree-switch.open {\n color: #1890ff;\n}\n.explorer-tree-switch.open > svg {\n transform: rotate(90deg);\n}\n.explorer-tree-switch.loading {\n background: transparent;\n animation: rotate 1s linear infinite;\n}\n.explorer-tree-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n margin: 6px 0px;\n background-repeat: no-repeat;\n background-position: center;\n background-size: cover;\n border-radius: 5px;\n font-style: normal;\n pointer-events: none;\n vertical-align: top;\n}\n.explorer-tree-node {\n display: flex;\n height: 100%;\n align-items: center;\n}\n.explorer-tree-node .node-title {\n flex: 1;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n}\n.explorer-tree-node .node-menu {\n display: none;\n flex-shrink: 0;\n width: 30px;\n justify-content: center;\n align-items: center;\n}\n.explorer-tree-node .node-menu .node-menu-icon {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 14px;\n height: 14px;\n border: 1px solid #ccc;\n border-radius: 2px;\n cursor: pointer;\n z-index: 50;\n background: #fff;\n color: #ccc;\n font-size: 7px;\n transition: 0.3s;\n}\n.explorer-tree-node .node-menu .node-menu-icon > svg {\n transform: rotate(90deg);\n}\n.explorer-tree-node .node-menu .node-menu-icon:hover {\n border: 1px solid #1890ff;\n color: #1890ff;\n}\n.explorer-tree-node .node-input {\n display: inline-block;\n width: 100%;\n height: 24px;\n outline: 0;\n border: 1px solid #eee;\n border-radius: 3px;\n transition: 0.3s;\n padding: 0 5px;\n}\n.explorer-tree-node .node-input:hover {\n border: 1px solid #1890ff;\n}\n.explorer-tree-node .node-input:focus {\n border: 1px solid #1890ff;\n}\n.explorer-tree-node:hover .node-menu {\n display: flex;\n}\n.explorer-tree-row {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n}\n.explorer-tree-row .row-item {\n display: flex;\n padding: 0 10px;\n flex: 1 0 0;\n user-select: none;\n}\n.explorer-tree-row .row-item .row-item-content {\n flex: 1 0 0;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n}\n.explorer-tree-row .row-item .row-item-content > input {\n height: 24px;\n outline: none;\n width: 100%;\n outline: 0;\n border: 0;\n}\n.explorer-tree-row .row-item-check {\n display: flex;\n width: 19px;\n align-items: center;\n box-sizing: border-box;\n pointer-events: all;\n}\n.explorer-tree-row .row-item-check .btn-check {\n display: inline-block;\n height: 19px;\n width: 19px;\n flex-shrink: 0;\n z-index: 11;\n font-size: 20px;\n text-align: center;\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.05);\n color: #fff;\n line-height: 0;\n opacity: 0;\n cursor: pointer;\n transition: opacity 0.3s;\n margin: 2px;\n}\n.explorer-tree-row .row-item-check .btn-check > svg {\n position: relative;\n width: 23px;\n height: 23px;\n left: -2px;\n top: -2px;\n}\n.explorer-tree-row .row-item-check.active .btn-check {\n opacity: 1;\n background: #3b8cff;\n}\n.explorer-tree.table .tree-scroll-x {\n width: 100%;\n overflow: hidden;\n overflow-x: auto;\n}\n.explorer-tree.table .tree-scroll-x::-webkit-scrollbar {\n display: none;\n}\n.explorer-tree.table .tree-scroll {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: 10;\n overflow: auto;\n}\n.explorer-tree.table .rc-tree {\n height: calc(100% - 26px);\n}\n.explorer-tree.table .rc-tree-list-holder-inner {\n overflow: auto;\n}\n.explorer-tree.table .rc-tree-list {\n height: 100%;\n}\n.explorer-tree.table .rc-tree-checkbox {\n display: none !important;\n}\n.explorer-tree.table .rc-tree-treenode {\n border-radius: 2px;\n width: fit-content;\n opacity: 0.8;\n z-index: 100;\n pointer-events: all;\n}\n.explorer-tree.table .rc-tree-treenode.rc-tree-treenode-selected {\n background: #4581a60d !important;\n}\n.explorer-tree.table .rc-tree-treenode:nth-child(odd) {\n background: #4664780d;\n}\n.explorer-tree.table .rc-tree-list-holder-inner {\n padding: 8px 0 0 8px;\n}\n.explorer-tree.table .rc-tree-treenode-leaf-last:last-child {\n height: 200px;\n width: 1px;\n}\n.explorer-tree.table .rc-tree-treenode-checkbox-checked {\n background: #cce8ff !important;\n border: 1px solid #99d1ff;\n}\n.explorer-tree .rc-tree-iconEle {\n height: 31px !important;\n vertical-align: top !important;\n width: auto !important;\n}\n.explorer-tree .rc-tree-treenode {\n position: relative;\n height: 31px;\n line-height: 31px;\n border: 1px solid transparent;\n user-select: none;\n display: flex;\n}\n.explorer-tree .rc-tree-treenode > .rc-tree-node-content-wrapper {\n height: 31px !important;\n display: flex !important;\n flex: 1;\n margin-left: calc(24px - 20px);\n}\n.explorer-tree .rc-tree-treenode > .rc-tree-node-selected {\n background-color: transparent;\n box-shadow: none;\n opacity: 1;\n}\n.explorer-tree .rc-tree-treenode.rc-tree-treenode-selected {\n background-color: #cce8ff !important;\n border: 1px solid #1890ff;\n opacity: 0.8;\n}\n.explorer-tree .rc-tree-treenode.rc-tree-treenode-selected .node-menu {\n display: flex;\n}\n.explorer-tree .rc-tree-treenode:hover {\n background: #e5f3ff !important;\n box-shadow: 0 0 0 1px transparent;\n}\n.explorer-tree .rc-tree-treenode.hover {\n background: #e5f3ff !important;\n}\n.explorer-tree .rc-tree-switcher {\n flex-shrink: 0;\n width: 20px !important;\n height: 31px !important;\n vertical-align: top !important;\n background-image: none !important;\n}\n.explorer-tree .rc-tree-title {\n display: inline-block;\n height: 31px;\n width: 100%;\n}\n.explorer-tree.showLine .rc-tree-indent {\n height: 31px;\n}\n.explorer-tree.showLine .rc-tree-indent > .rc-tree-indent-unit {\n position: relative;\n}\n.explorer-tree.showLine .rc-tree-indent > .rc-tree-indent-unit::after {\n display: inline-block;\n position: absolute;\n content: '';\n width: 1px;\n left: 10px;\n height: 31px;\n background-color: rgba(0, 0, 0, 0.075);\n}\n.explorer-tree.showLine .rc-tree-indent-unit {\n width: 20px;\n height: 31px;\n}\n.explorer-tree.showLine .rc-tree-treenode-leaf-last .rc-tree-indent > .rc-tree-indent-unit:last-child {\n position: relative;\n}\n.explorer-tree.showLine .rc-tree-treenode-leaf-last .rc-tree-indent > .rc-tree-indent-unit:last-child::before {\n content: '';\n display: inline-block;\n position: absolute;\n width: 8px;\n top: calc(31px / 2);\n left: 10px;\n height: 1px;\n background-color: rgba(0, 0, 0, 0.075);\n}\n.explorer-tree.showLine .rc-tree-treenode-leaf-last .rc-tree-indent > .rc-tree-indent-unit:last-child::after {\n display: inline-block;\n position: absolute;\n content: '';\n width: 1px;\n left: 10px;\n top: 0;\n height: calc(31px / 2);\n background-color: rgba(0, 0, 0, 0.075);\n}\n.explorer-tree.showLine .rc-tree-treenode-leaf-last .rc-tree-indent > .rc-tree-indent-unit:first-child {\n position: relative;\n}\n.explorer-tree.showLine .rc-tree-treenode-leaf-last .rc-tree-indent > .rc-tree-indent-unit:first-child::before {\n display: none;\n content: '';\n}\n.explorer-tree.showLine .rc-tree-treenode-leaf-last .rc-tree-indent > .rc-tree-indent-unit:first-child::after {\n display: inline-block;\n position: absolute;\n content: '';\n width: 1px;\n left: 10px;\n height: 31px;\n background-color: rgba(0, 0, 0, 0.075);\n}\n.explorer-tree.explorer-checks .rc-tree-treenode:hover .row-item-check .btn-check {\n opacity: 1;\n}\n.explorer-tree .rc-tree-list-scrollbar-thumb {\n background: #bbb !important;\n}\n.explorer-tree .rc-tree-list-scrollbar {\n width: 5px !important;\n}\n.explorer-tree .node-motion {\n transition: all 0.3s;\n overflow-y: hidden;\n}\n.explorer-tree .rc-tree-child-tree {\n display: block;\n}\n.explorer-table-header {\n display: flex;\n width: fit-content;\n min-width: 100%;\n height: 25px;\n line-height: 25px;\n color: #448;\n border-bottom: 1px solid #e3e3e3;\n box-shadow: 0 6px 10px rgba(0, 0, 0, 0.05);\n background: #fff;\n}\n.explorer-table-header .item {\n padding: 0 10px 0 0;\n flex: 1 0 0;\n margin-left: -10px;\n border-right: 1px solid #eee;\n user-select: none;\n min-width: 80px;\n}\n.explorer-table-header .item:first-child {\n padding-left: 20px;\n}\n.explorer-table-header .resize {\n position: relative;\n flex: 0 0 20px;\n width: 20px;\n z-index: 10;\n cursor: col-resize;\n left: -10px;\n transition: background 0.2s;\n}\n.explorer-table-header .resize::before {\n content: '';\n position: fixed;\n width: 1px;\n height: 2000px;\n z-index: 10;\n margin-left: 10px;\n visibility: hidden;\n opacity: 0;\n transition: all 0.2s;\n}\n.explorer-table-header .resize:hover {\n background: #1890ff30;\n}\n.explorer-table-header .resize.resize-focus {\n z-index: 9999;\n}\n.explorer-table-header .resize.resize-focus:before {\n opacity: 1;\n background: #1890ff;\n visibility: visible;\n}\n.explorer-table-header .resize:last-child {\n flex: 0 0 10px;\n width: 10px;\n}\n.explorer-table-header.item-resize {\n z-index: 10;\n}\n@keyframes rotate {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n";
1894
1903
  styleInject(css_248z$6);
1895
1904
 
1896
1905
  /**
@@ -5183,6 +5192,9 @@ function TableItem(props) {
5183
5192
  style: {
5184
5193
  height: '100%'
5185
5194
  },
5195
+ onContextMenu: e => {
5196
+ e.stopPropagation();
5197
+ },
5186
5198
  dropdownRender: ({
5187
5199
  onClone
5188
5200
  }) => {
@@ -5258,7 +5270,16 @@ function TableItem(props) {
5258
5270
  autoFocus: true,
5259
5271
  defaultValue: param[v?.key],
5260
5272
  placeholder: '\u8BF7\u8F93\u5165',
5273
+ onFocus: e => {
5274
+ let i = param[v?.key]?.lastIndexOf('.');
5275
+ if (props?.suffix == 'folder') {
5276
+ e.target.setSelectionRange(0, param[v?.key]?.length);
5277
+ } else if (i !== -1) {
5278
+ e.target.setSelectionRange(0, i);
5279
+ }
5280
+ },
5261
5281
  onBlur: e => {
5282
+ if (e.target.value === param[v?.key]) return;
5262
5283
  onRename?.(e.target.value);
5263
5284
  }
5264
5285
  })
@@ -5336,6 +5357,14 @@ var TreeItem = (props => {
5336
5357
  autoFocus: true,
5337
5358
  value: title,
5338
5359
  placeholder: '\u8BF7\u8F93\u5165',
5360
+ onFocus: e => {
5361
+ let i = title.lastIndexOf('.');
5362
+ if (props?.suffix == 'folder') {
5363
+ e.target.setSelectionRange(0, title.length);
5364
+ } else if (i !== -1) {
5365
+ e.target.setSelectionRange(0, i);
5366
+ }
5367
+ },
5339
5368
  onChange: v => {
5340
5369
  setTitle?.(v.target.value);
5341
5370
  },
@@ -5867,13 +5896,17 @@ const ExplorerMenu = props => {
5867
5896
  loadData,
5868
5897
  loadNode,
5869
5898
  onMenuClick,
5870
- onChange
5899
+ onChange,
5900
+ onRename
5871
5901
  } = props;
5872
5902
  const store = useContext(ExampleContext);
5873
5903
  const [eventKey, setEventKey] = useState([]);
5874
5904
  const [loadKey, setLoadKey] = useState([]);
5875
5905
  return jsx("div", {
5876
5906
  className: 'frame-left',
5907
+ onContextMenu: e => {
5908
+ e.preventDefault();
5909
+ },
5877
5910
  children: jsx(Tree, {
5878
5911
  isload: true,
5879
5912
  treeData: data,
@@ -5887,6 +5920,7 @@ const ExplorerMenu = props => {
5887
5920
  onMenuClick: onMenuClick,
5888
5921
  loadData: loadNode,
5889
5922
  onChange: onChange,
5923
+ onRename: onRename,
5890
5924
  onSelect: v => {
5891
5925
  store.setPathDisplay(v?.pathDisplay);
5892
5926
  loadData(v.key);
@@ -5953,6 +5987,7 @@ const VirtualScroll = ({
5953
5987
  ref: containerRef,
5954
5988
  children: jsx("div", {
5955
5989
  style: {
5990
+ position: 'relative',
5956
5991
  height: `${data.length * itemHeight}px`,
5957
5992
  paddingTop: `${startIdx * itemHeight}px`
5958
5993
  },
@@ -6013,7 +6048,7 @@ function Tile(props) {
6013
6048
  [className || '']: className
6014
6049
  }),
6015
6050
  style: {
6016
- height: '100%'
6051
+ height: height + 'px'
6017
6052
  },
6018
6053
  onContextMenu: e => {
6019
6054
  e.preventDefault();
@@ -6085,17 +6120,14 @@ function Tile(props) {
6085
6120
  width: w + 'px',
6086
6121
  height: w + 'px',
6087
6122
  lineHeight: w + 'px'
6088
- }) : jsx("div", {
6089
- className: 'picture',
6090
- children: jsx("img", {
6091
- className: 'picture-show',
6092
- draggable: 'false',
6093
- src: v.pic,
6094
- style: {
6095
- width: w + 'px',
6096
- height: w + 'px'
6097
- }
6098
- })
6123
+ }) : jsx("img", {
6124
+ className: 'picture-show',
6125
+ draggable: 'false',
6126
+ src: v.pic,
6127
+ style: {
6128
+ width: w + 'px',
6129
+ height: w + 'px'
6130
+ }
6099
6131
  })
6100
6132
  }), jsx("div", {
6101
6133
  className: 'title-type-name',
@@ -7150,8 +7182,9 @@ const Layout$1 = props => {
7150
7182
  },
7151
7183
  onSelect: v => {
7152
7184
  if (v?.type == 'folder' && v.expanded) {
7153
- store.setCurSelect(v.key);
7185
+ store.setCurSelectFile(v.key);
7154
7186
  }
7187
+ store.setCurSelect(v.key);
7155
7188
  },
7156
7189
  onRename: onRename,
7157
7190
  onMenuClick: onMenuClick,
@@ -7192,9 +7225,12 @@ function ExplorerInfo(props) {
7192
7225
  const {
7193
7226
  infoshow,
7194
7227
  getIcons,
7195
- curInfo
7228
+ curInfo,
7229
+ dataMap,
7230
+ curSelect
7196
7231
  } = useContext(ExampleContext);
7197
7232
  const [isEdit, setIsEdit] = useState(false);
7233
+ const [info, setInfo] = useState({});
7198
7234
  useEffect(() => {
7199
7235
  if (infoshow) {
7200
7236
  props?.setSize(285);
@@ -7202,6 +7238,13 @@ function ExplorerInfo(props) {
7202
7238
  props?.onMinimize();
7203
7239
  }
7204
7240
  }, [infoshow]);
7241
+ useEffect(() => {
7242
+ if (curSelect) {
7243
+ setInfo(dataMap?.[curSelect]);
7244
+ } else {
7245
+ setInfo(curInfo);
7246
+ }
7247
+ }, [curInfo, dataMap]);
7205
7248
  function rednerInfo() {
7206
7249
  return jsxs("div", {
7207
7250
  className: 'panel-info',
@@ -7212,7 +7255,7 @@ function ExplorerInfo(props) {
7212
7255
  children: "\u8DEF\u5F84:"
7213
7256
  }), jsx("div", {
7214
7257
  className: 'content',
7215
- children: curInfo?.pathDisplay || '-'
7258
+ children: info?.pathDisplay || '-'
7216
7259
  })]
7217
7260
  }), jsxs("div", {
7218
7261
  className: 'panel-col',
@@ -7221,7 +7264,7 @@ function ExplorerInfo(props) {
7221
7264
  children: "\u5927\u5C0F:"
7222
7265
  }), jsx("div", {
7223
7266
  className: 'content',
7224
- children: typeof curInfo?.size == 'number' ? convertBytesToSize(curInfo?.size) : curInfo?.size || '-'
7267
+ children: typeof info?.size == 'number' ? convertBytesToSize(info?.size) : info?.size || '-'
7225
7268
  })]
7226
7269
  }), jsxs("div", {
7227
7270
  className: 'panel-col',
@@ -7230,7 +7273,7 @@ function ExplorerInfo(props) {
7230
7273
  children: "\u521B\u5EFA\u65F6\u95F4 :"
7231
7274
  }), jsx("div", {
7232
7275
  className: 'content',
7233
- children: DateFormat(curInfo?.createTime)
7276
+ children: DateFormat(info?.createTime)
7234
7277
  })]
7235
7278
  }), jsxs("div", {
7236
7279
  className: 'panel-col',
@@ -7239,7 +7282,7 @@ function ExplorerInfo(props) {
7239
7282
  children: "\u4FEE\u6539\u65F6\u95F4 :"
7240
7283
  }), jsx("div", {
7241
7284
  className: 'content',
7242
- children: DateFormat(curInfo?.createTime)
7285
+ children: DateFormat(info?.createTime)
7243
7286
  })]
7244
7287
  }), jsxs("div", {
7245
7288
  className: 'panel-col',
@@ -7283,18 +7326,18 @@ function ExplorerInfo(props) {
7283
7326
  className: 'info-header',
7284
7327
  children: [jsx("div", {
7285
7328
  className: 'file-icon',
7286
- children: getIcons(curInfo, '')
7329
+ children: getIcons(info, '')
7287
7330
  }), jsxs("div", {
7288
7331
  className: 'file-name',
7289
7332
  children: [jsx("div", {
7290
7333
  className: 'title',
7291
- children: curInfo?.title
7334
+ children: info?.title
7292
7335
  }), jsxs("div", {
7293
7336
  className: 'desc',
7294
7337
  children: [jsx("span", {
7295
- children: typeof curInfo?.size == 'number' ? convertBytesToSize(curInfo?.size) : curInfo?.size || '-'
7338
+ children: typeof info?.size == 'number' ? convertBytesToSize(info?.size) : info?.size || '-'
7296
7339
  }), jsx("span", {
7297
- children: curInfo?.fixTime || '-'
7340
+ children: info?.fixTime || '-'
7298
7341
  })]
7299
7342
  })]
7300
7343
  })]
@@ -7327,7 +7370,7 @@ const Layout = props => {
7327
7370
  children: jsxs(Draggable, {
7328
7371
  placement: 'horizontal',
7329
7372
  poi: isNavtab ? [200] : [0, 'max'],
7330
- fix: [false, true],
7373
+ fix: [true, false],
7331
7374
  rang: [10, 350],
7332
7375
  children: [jsx(ExplorerMenu, {
7333
7376
  ...props
@@ -7398,7 +7441,7 @@ const defaultColumns = [{
7398
7441
  });
7399
7442
  }
7400
7443
  }];
7401
- const Explorer = props => {
7444
+ const Explorer = /*#__PURE__*/forwardRef((props, ref) => {
7402
7445
  const {
7403
7446
  data,
7404
7447
  columns,
@@ -7413,7 +7456,8 @@ const Explorer = props => {
7413
7456
  const [curlist, setCurList] = useState([]);
7414
7457
  const [curInfo, setCurInfo] = useState(null);
7415
7458
  const [dataMap, setDataMap] = useState({});
7416
- const [curSelect, setCurSelect] = useState('');
7459
+ const [curSelect, setCurSelect] = useState(null); //当前选中信息
7460
+ const [curSelectFile, setCurSelectFile] = useState(''); //当前选中的文件
7417
7461
  const [menuSize, setMenuSize] = useState(80);
7418
7462
  const [reamekey, setReName] = useState(null);
7419
7463
  const [logindex, setLogIndex] = useState(0); //前进
@@ -7422,6 +7466,17 @@ const Explorer = props => {
7422
7466
  const [menutype, setMenutype] = useState('tile');
7423
7467
  const [infoshow, setInfoShow] = useState(false);
7424
7468
  const [loading, setLoading] = useState(ApiStatusEnum.READY);
7469
+ useImperativeHandle(ref, () => ({
7470
+ removeLog: () => {
7471
+ //清空日志
7472
+ setLog([]);
7473
+ },
7474
+ updateData: () => {
7475
+ if (curInfo?.key) {
7476
+ loadData(curInfo.key, curInfo);
7477
+ }
7478
+ }
7479
+ }));
7425
7480
  const Icons = (v, className, style) => {
7426
7481
  const IconMap = new Map([['favorite', jsx(FavoriteSvg, {})], ['space', jsx(SpaceSvg, {})], ['netdisk', jsx(NetdiskSvg, {})], ['album', jsx(AlbumSvg, {})], ['recycle', jsx(RecycleSvg, {})], ['recently', jsx(RecentlySvg, {})], ['coordination', jsx(LinkSvg, {})], ['text', jsx(TextSvg, {})], ['share', jsx(ShareLinkSvg, {})]]);
7427
7482
  if (v?.label) {
@@ -7447,12 +7502,33 @@ const Explorer = props => {
7447
7502
  });
7448
7503
  }
7449
7504
  let _file = ['folder', 'xls', 'xlsx', 'doc', 'docx', 'pptx', 'md', 'txt', 'js', 'css', 'pdf', 'html', 'json'];
7505
+ let css = ['css', 'less'];
7506
+ let js = ['js', 'jsx'];
7507
+ let ts = ['ts', 'tsx'];
7450
7508
  if (v?.pic && typeof v?.pic == 'string') {
7451
7509
  return jsx("img", {
7452
7510
  className: cx$1(`${className || ''}`),
7453
7511
  src: v.pic
7454
7512
  });
7455
7513
  }
7514
+ if (css.includes(v?.suffix)) {
7515
+ return jsx(SuffixIcon, {
7516
+ className: cx$1(`${className || ''}`),
7517
+ suffix: 'css'
7518
+ });
7519
+ }
7520
+ if (js.includes(v.suffix)) {
7521
+ return jsx(SuffixIcon, {
7522
+ className: cx$1(`${className || ''}`),
7523
+ suffix: 'js'
7524
+ });
7525
+ }
7526
+ if (ts.includes(v.suffix)) {
7527
+ return jsx(SuffixIcon, {
7528
+ className: cx$1(`${className || ''}`),
7529
+ suffix: 'txt'
7530
+ });
7531
+ }
7456
7532
  if (_file.includes(v?.suffix)) {
7457
7533
  return jsx(SuffixIcon, {
7458
7534
  className: cx$1(`${className || ''}`),
@@ -7537,13 +7613,20 @@ const Explorer = props => {
7537
7613
  function createFolder() {
7538
7614
  const addData = (data, key, child) => {
7539
7615
  let arr = data;
7616
+ let file = [];
7617
+ let folder = [];
7540
7618
  if (key) {
7541
7619
  let i = 0;
7542
7620
  while (i < arr.length) {
7543
7621
  let item = arr[i];
7544
7622
  if (item.key == key) {
7545
7623
  if (Array.isArray(item.children)) {
7546
- item.children.unshift(child);
7624
+ item.children.forEach(v => {
7625
+ if (v.type == 'folder') folder.push(v);
7626
+ if (v.type == 'file') file.push(v);
7627
+ });
7628
+ folder.push(child);
7629
+ item.children = [...folder, ...file];
7547
7630
  } else {
7548
7631
  item.children = [child];
7549
7632
  }
@@ -7556,7 +7639,16 @@ const Explorer = props => {
7556
7639
  i++;
7557
7640
  }
7558
7641
  } else {
7559
- arr.unshift(child);
7642
+ if (arr.length) {
7643
+ arr.forEach(v => {
7644
+ if (v.type == 'folder') folder.push(v);
7645
+ if (v.type == 'file') file.push(v);
7646
+ });
7647
+ folder.push(child);
7648
+ arr = [...folder, ...file];
7649
+ } else {
7650
+ arr.push(child);
7651
+ }
7560
7652
  }
7561
7653
  return arr || [];
7562
7654
  };
@@ -7567,6 +7659,7 @@ const Explorer = props => {
7567
7659
  title: '新建文件夹',
7568
7660
  create_file: true
7569
7661
  });
7662
+ console.log(list, 123);
7570
7663
  setCurList(list);
7571
7664
  }
7572
7665
  return jsx(ExampleContext.Provider, {
@@ -7588,6 +7681,7 @@ const Explorer = props => {
7588
7681
  checkMode,
7589
7682
  reamekey,
7590
7683
  curSelect,
7684
+ curSelectFile,
7591
7685
  loadkey,
7592
7686
  //icon
7593
7687
  getIcons: Icons,
@@ -7606,6 +7700,7 @@ const Explorer = props => {
7606
7700
  setLoading,
7607
7701
  setReName,
7608
7702
  setCurSelect,
7703
+ setCurSelectFile,
7609
7704
  setLoadKey
7610
7705
  },
7611
7706
  children: jsx("div", {
@@ -7618,7 +7713,7 @@ const Explorer = props => {
7618
7713
  })
7619
7714
  })
7620
7715
  });
7621
- };
7716
+ });
7622
7717
 
7623
7718
  export { ApiStatusEnum, Explorer as default, registerMenu };
7624
7719
  //# sourceMappingURL=index.js.map