From ac0152a4e5419f49d8b50eb418284d52bc00f9a8 Mon Sep 17 00:00:00 2001
From: windy <1374721899@qq.com>
Date: Mon, 17 Jan 2022 11:15:11 +0800
Subject: [PATCH 1/2] =?UTF-8?q?KERNEL-9882=20=E6=A0=91=E7=BA=BF=E5=9E=8B?=
 =?UTF-8?q?=E5=92=8C=E8=8A=82=E7=82=B9=E9=AB=98=E5=BA=A6=E5=A4=84=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/case/button/node/node.first.plus.js       |   4 +-
 src/case/button/node/node.last.plus.js        |   4 +-
 src/case/button/node/node.mid.plus.js         |   6 +-
 src/case/button/node/node.plus.js             |   4 +-
 .../button/treeitem/item.first.treeleaf.js    |  30 +++-
 .../button/treeitem/item.last.treeleaf.js     |  30 +++-
 src/case/button/treeitem/item.mid.treeleaf.js |  30 +++-
 .../button/treeitem/item.root.treeleaf.js     |   4 +-
 src/case/checkbox/check.first.treenode.js     |  15 +-
 src/case/checkbox/check.last.treenode.js      |  15 +-
 src/case/checkbox/check.mid.treenode.js       |  15 +-
 src/case/checkbox/check.treenode.js           |  15 +-
 src/case/combo/bubblecombo/popup.bubble.js    |   4 +-
 src/case/tree/tree.level.js                   |   2 +-
 .../tree/treeexpander/tree.expander.popup.js  |  19 ++-
 src/case/ztree/0.treeview.js                  |   2 +-
 src/core/system.js                            |   3 +
 src/less/base/tree/tree.expander.less         |   5 +
 src/less/base/tree/ztree.less                 |  34 +++-
 src/less/lib/constant.less                    |  13 +-
 src/less/lib/icon.less                        |  30 ++++
 src/less/resource/background.less             | 156 +++++++++++-------
 src/less/resource/icon.less                   |  22 +++
 .../multilayerselecttree.leveltree.js         |   3 +-
 .../node/node.first.plus.js                   |   4 +-
 .../node/node.last.plus.js                    |   4 +-
 .../node/node.mid.plus.js                     |   4 +-
 .../multilayerselecttree/node/node.plus.js    |   4 +-
 .../multilayersingletree.leveltree.js         |   3 +-
 .../node/node.first.plus.js                   |   4 +-
 .../node/node.last.plus.js                    |   4 +-
 .../node/node.mid.plus.js                     |   2 +-
 .../treeitem/item.first.treeleaf.js           |   4 +-
 .../treeitem/item.last.treeleaf.js            |   4 +-
 .../treeitem/item.mid.treeleaf.js             |   4 +-
 src/widget/selecttree/selecttree.popup.js     |   1 +
 .../search/singleselect.search.loader.js      |   2 +-
 .../singleselect/singleselect.loader.js       |   2 +-
 38 files changed, 363 insertions(+), 148 deletions(-)

diff --git a/src/case/button/node/node.first.plus.js b/src/case/button/node/node.first.plus.js
index 7969867fb..3489f2a32 100644
--- a/src/case/button/node/node.first.plus.js
+++ b/src/case/button/node/node.first.plus.js
@@ -23,7 +23,9 @@ BI.FirstPlusGroupNode = BI.inherit(BI.NodeButton, {
         var self = this, o = this.options;
         this.checkbox = BI.createWidget({
             type: "bi.first_tree_node_checkbox",
-            stopPropagation: true
+            stopPropagation: true,
+            iconHeight: o.height,
+            iconWidth: o.height
         });
         this.text = BI.createWidget({
             type: "bi.label",
diff --git a/src/case/button/node/node.last.plus.js b/src/case/button/node/node.last.plus.js
index acc72d6a3..b7bedc519 100644
--- a/src/case/button/node/node.last.plus.js
+++ b/src/case/button/node/node.last.plus.js
@@ -23,7 +23,9 @@ BI.LastPlusGroupNode = BI.inherit(BI.NodeButton, {
         var self = this, o = this.options;
         this.checkbox = BI.createWidget({
             type: "bi.last_tree_node_checkbox",
-            stopPropagation: true
+            stopPropagation: true,
+            iconHeight: o.height,
+            iconWidth: o.height
         });
         this.text = BI.createWidget({
             type: "bi.label",
diff --git a/src/case/button/node/node.mid.plus.js b/src/case/button/node/node.mid.plus.js
index 4615ce7b9..6286db826 100644
--- a/src/case/button/node/node.mid.plus.js
+++ b/src/case/button/node/node.mid.plus.js
@@ -23,7 +23,9 @@ BI.MidPlusGroupNode = BI.inherit(BI.NodeButton, {
         var self = this, o = this.options;
         this.checkbox = BI.createWidget({
             type: "bi.mid_tree_node_checkbox",
-            stopPropagation: true
+            stopPropagation: true,
+            iconHeight: o.height,
+            iconWidth: o.height
         });
         this.text = BI.createWidget({
             type: "bi.label",
@@ -48,7 +50,7 @@ BI.MidPlusGroupNode = BI.inherit(BI.NodeButton, {
         });
         var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left);
         var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, {
-            width: 24,
+            width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2,
             el: this.checkbox
         }, this.text);
         BI.createWidget(BI.extend({
diff --git a/src/case/button/node/node.plus.js b/src/case/button/node/node.plus.js
index 16b78b8f1..3d71fc892 100644
--- a/src/case/button/node/node.plus.js
+++ b/src/case/button/node/node.plus.js
@@ -22,7 +22,9 @@ BI.PlusGroupNode = BI.inherit(BI.NodeButton, {
         BI.PlusGroupNode.superclass._init.apply(this, arguments);
         var self = this, o = this.options;
         this.checkbox = BI.createWidget({
-            type: "bi.tree_node_checkbox"
+            type: "bi.tree_node_checkbox",
+            iconHeight: o.height,
+            iconWidth: o.height
         });
         this.text = BI.createWidget({
             type: "bi.label",
diff --git a/src/case/button/treeitem/item.first.treeleaf.js b/src/case/button/treeitem/item.first.treeleaf.js
index afaa2f6fc..52663de39 100644
--- a/src/case/button/treeitem/item.first.treeleaf.js
+++ b/src/case/button/treeitem/item.first.treeleaf.js
@@ -28,19 +28,19 @@ BI.FirstTreeLeafItem = BI.inherit(BI.BasicButton, {
         });
         var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left);
         var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, ((o.layer === 0) ? "" : {
-            width: 12,
+            width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2,
             el: {
                 type: "bi.layout",
-                cls: (o.pNode && o.pNode.isLastNode) ? "" : "base-line-conn-background",
-                width: 12,
+                cls: (o.pNode && o.pNode.isLastNode) ? "" : this._getBaseLineCls(),
+                width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2,
                 height: o.height
             }
         }), {
-            width: 24,
+            width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT,
             el: {
                 type: "bi.layout",
-                cls: "first-line-conn-background",
-                width: 24,
+                cls: this._getFirstLineCls(),
+                width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT,
                 height: o.height
             }
         }, {
@@ -53,6 +53,24 @@ BI.FirstTreeLeafItem = BI.inherit(BI.BasicButton, {
         }))));
     },
 
+    _getBaseLineCls: function () {
+        switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) {
+            case "solid":
+                return "base-solid-line-conn-background";
+            default:
+                return "base-line-conn-background";
+        }
+    },
+
+    _getFirstLineCls: function () {
+        switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) {
+            case "solid":
+                return "first-solid-line-conn-background";
+            default:
+                return "first-line-conn-background";
+        }
+    },
+
     doRedMark: function () {
         this.text.doRedMark.apply(this.text, arguments);
     },
diff --git a/src/case/button/treeitem/item.last.treeleaf.js b/src/case/button/treeitem/item.last.treeleaf.js
index 8b30892a3..76449063e 100644
--- a/src/case/button/treeitem/item.last.treeleaf.js
+++ b/src/case/button/treeitem/item.last.treeleaf.js
@@ -28,19 +28,19 @@ BI.LastTreeLeafItem = BI.inherit(BI.BasicButton, {
         });
         var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left);
         var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, ((o.layer === 0) ? "" : {
-            width: 12,
+            width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2,
             el: {
                 type: "bi.layout",
-                cls: (o.pNode && o.pNode.isLastNode) ? "" : "base-line-conn-background",
-                width: 12,
+                cls: (o.pNode && o.pNode.isLastNode) ? "" : this._getBaseLineCls(),
+                width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2,
                 height: o.height
             }
         }), {
-            width: 24,
+            width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT,
             el: {
                 type: "bi.layout",
-                cls: "last-line-conn-background",
-                width: 24,
+                cls: this._getLastLineCls(),
+                width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT,
                 height: o.height
             }
         }, {
@@ -53,6 +53,24 @@ BI.LastTreeLeafItem = BI.inherit(BI.BasicButton, {
         }))));
     },
 
+    _getBaseLineCls: function () {
+        switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) {
+            case "solid":
+                return "base-solid-line-conn-background";
+            default:
+                return "base-line-conn-background";
+        }
+    },
+
+    _getLastLineCls: function () {
+        switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) {
+            case "solid":
+                return "last-solid-line-conn-background";
+            default:
+                return "last-line-conn-background";
+        }
+    },
+
     doRedMark: function () {
         this.text.doRedMark.apply(this.text, arguments);
     },
diff --git a/src/case/button/treeitem/item.mid.treeleaf.js b/src/case/button/treeitem/item.mid.treeleaf.js
index a3a7a6c93..58af36e4e 100644
--- a/src/case/button/treeitem/item.mid.treeleaf.js
+++ b/src/case/button/treeitem/item.mid.treeleaf.js
@@ -28,19 +28,19 @@ BI.MidTreeLeafItem = BI.inherit(BI.BasicButton, {
         });
         var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left);
         var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, ((o.layer === 0) ? "" : {
-            width: 12,
+            width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2,
             el: {
                 type: "bi.layout",
-                cls: (o.pNode && o.pNode.isLastNode) ? "" : "base-line-conn-background",
-                width: 12,
+                cls: (o.pNode && o.pNode.isLastNode) ? "" : this._getBaseLineCls(),
+                width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2,
                 height: o.height
             }
         }), {
-            width: 24,
+            width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT,
             el: {
                 type: "bi.layout",
-                cls: "mid-line-conn-background",
-                width: 24,
+                cls: this._getMidLineCls(),
+                width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT,
                 height: o.height
             }
         }, {
@@ -53,6 +53,24 @@ BI.MidTreeLeafItem = BI.inherit(BI.BasicButton, {
         }))));
     },
 
+    _getBaseLineCls: function () {
+        switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) {
+            case "solid":
+                return "base-solid-line-conn-background";
+            default:
+                return "base-line-conn-background";
+        }
+    },
+
+    _getMidLineCls: function () {
+        switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) {
+            case "solid":
+                return "mid-solid-line-conn-background";
+            default:
+                return "mid-line-conn-background";
+        }
+    },
+
     doRedMark: function () {
         this.text.doRedMark.apply(this.text, arguments);
     },
diff --git a/src/case/button/treeitem/item.root.treeleaf.js b/src/case/button/treeitem/item.root.treeleaf.js
index 8e1a9a02f..f4637afdc 100644
--- a/src/case/button/treeitem/item.root.treeleaf.js
+++ b/src/case/button/treeitem/item.root.treeleaf.js
@@ -31,10 +31,10 @@ BI.RootTreeLeafItem = BI.inherit(BI.BasicButton, {
 
         var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left);
         var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, {
-            width: 24,
+            width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT,
             el: {
                 type: "bi.layout",
-                width: 24,
+                width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT,
                 height: o.height
             }
         }, {
diff --git a/src/case/checkbox/check.first.treenode.js b/src/case/checkbox/check.first.treenode.js
index 572908d8d..aa808488f 100644
--- a/src/case/checkbox/check.first.treenode.js
+++ b/src/case/checkbox/check.first.treenode.js
@@ -6,18 +6,27 @@
 BI.FirstTreeNodeCheckbox = BI.inherit(BI.IconButton, {
     _defaultConfig: function () {
         return BI.extend( BI.FirstTreeNodeCheckbox.superclass._defaultConfig.apply(this, arguments), {
-            extraCls: "tree-collapse-icon-type2",
+            extraCls: BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "tree-solid-collapse-icon-type2" : "tree-collapse-icon-type2",
             iconWidth: 24,
             iconHeight: 24
         });
     },
 
+    getLineCls: function () {
+        switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) {
+            case "solid":
+                return "tree-solid-expand-icon-type2";
+            default:
+                return "tree-expand-icon-type2";
+        }
+    },
+
     setSelected: function (v) {
         BI.FirstTreeNodeCheckbox.superclass.setSelected.apply(this, arguments);
         if(v === true) {
-            this.element.addClass("tree-expand-icon-type2");
+            this.element.addClass(this.getLineCls());
         } else {
-            this.element.removeClass("tree-expand-icon-type2");
+            this.element.removeClass(this.getLineCls());
         }
     }
 });
diff --git a/src/case/checkbox/check.last.treenode.js b/src/case/checkbox/check.last.treenode.js
index e0a9f621d..cb536f8cc 100644
--- a/src/case/checkbox/check.last.treenode.js
+++ b/src/case/checkbox/check.last.treenode.js
@@ -6,18 +6,27 @@
 BI.LastTreeNodeCheckbox = BI.inherit(BI.IconButton, {
     _defaultConfig: function () {
         return BI.extend(BI.LastTreeNodeCheckbox.superclass._defaultConfig.apply(this, arguments), {
-            extraCls: "tree-collapse-icon-type4",
+            extraCls: BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "tree-solid-collapse-icon-type4" : "tree-collapse-icon-type4",
             iconWidth: 24,
             iconHeight: 24
         });
     },
 
+    getLineCls: function () {
+        switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) {
+            case "solid":
+                return "tree-solid-expand-icon-type4";
+            default:
+                return "tree-expand-icon-type4";
+        }
+    },
+
     setSelected: function (v) {
         BI.LastTreeNodeCheckbox.superclass.setSelected.apply(this, arguments);
         if (v === true) {
-            this.element.addClass("tree-expand-icon-type4");
+            this.element.addClass(this.getLineCls());
         } else {
-            this.element.removeClass("tree-expand-icon-type4");
+            this.element.removeClass(this.getLineCls());
         }
     }
 });
diff --git a/src/case/checkbox/check.mid.treenode.js b/src/case/checkbox/check.mid.treenode.js
index 7679b466e..7ec4e5230 100644
--- a/src/case/checkbox/check.mid.treenode.js
+++ b/src/case/checkbox/check.mid.treenode.js
@@ -6,18 +6,27 @@
 BI.MidTreeNodeCheckbox = BI.inherit(BI.IconButton, {
     _defaultConfig: function () {
         return BI.extend( BI.MidTreeNodeCheckbox.superclass._defaultConfig.apply(this, arguments), {
-            extraCls: "tree-collapse-icon-type3",
+            extraCls: BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "tree-solid-collapse-icon-type3" : "tree-collapse-icon-type3",
             iconWidth: 24,
             iconHeight: 24
         });
     },
 
+    getLineCls: function () {
+        switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) {
+            case "solid":
+                return "tree-solid-expand-icon-type3";
+            default:
+                return "tree-expand-icon-type3";
+        }
+    },
+
     setSelected: function (v) {
         BI.MidTreeNodeCheckbox.superclass.setSelected.apply(this, arguments);
         if(v === true) {
-            this.element.addClass("tree-expand-icon-type3");
+            this.element.addClass(this.getLineCls());
         } else {
-            this.element.removeClass("tree-expand-icon-type3");
+            this.element.removeClass(this.getLineCls());
         }
     }
 });
diff --git a/src/case/checkbox/check.treenode.js b/src/case/checkbox/check.treenode.js
index b5642aae4..e0d8a451c 100644
--- a/src/case/checkbox/check.treenode.js
+++ b/src/case/checkbox/check.treenode.js
@@ -6,18 +6,27 @@
 BI.TreeNodeCheckbox = BI.inherit(BI.IconButton, {
     _defaultConfig: function () {
         return BI.extend( BI.TreeNodeCheckbox.superclass._defaultConfig.apply(this, arguments), {
-            extraCls: "tree-collapse-icon-type1",
+            extraCls: BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "tree-solid-collapse-icon-type1" : "tree-collapse-icon-type1",
             iconWidth: 24,
             iconHeight: 24
         });
     },
 
+    getLineCls: function () {
+        switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) {
+            case "solid":
+                return "tree-solid-collapse-icon-type1";
+            default:
+                return "tree-collapse-icon-type1";
+        }
+    },
+
     setSelected: function (v) {
         BI.TreeNodeCheckbox.superclass.setSelected.apply(this, arguments);
         if(v) {
-            this.element.addClass("tree-expand-icon-type1");
+            this.element.addClass(this.getLineCls());
         } else {
-            this.element.removeClass("tree-expand-icon-type1");
+            this.element.removeClass(this.getLineCls());
         }
     }
 });
diff --git a/src/case/combo/bubblecombo/popup.bubble.js b/src/case/combo/bubblecombo/popup.bubble.js
index f0a79f116..f2da50fbb 100644
--- a/src/case/combo/bubblecombo/popup.bubble.js
+++ b/src/case/combo/bubblecombo/popup.bubble.js
@@ -60,7 +60,7 @@ BI.BubblePopupBarView = BI.inherit(BI.BubblePopupView, {
         });
         return BI.createWidget({
             type: "bi.center",
-            height: 44,
+            height: 48,
             rgap: 15,
             items: [{
                 type: "bi.right_vertical_adapt",
@@ -84,7 +84,7 @@ BI.BubblePopupBarView = BI.inherit(BI.BubblePopupView, {
             }]
         });
 
-        button.element.css("min-height", o.minHeight - 44);
+        button.element.css("min-height", o.minHeight - 48);
 
         return button;
     }
diff --git a/src/case/tree/tree.level.js b/src/case/tree/tree.level.js
index eb6d5099d..baac6a94c 100644
--- a/src/case/tree/tree.level.js
+++ b/src/case/tree/tree.level.js
@@ -26,7 +26,7 @@ BI.LevelTree = BI.inherit(BI.Widget, {
     _formatItems: function (nodes, layer, pNode) {
         var self = this;
         BI.each(nodes, function (i, node) {
-            var extend = { layer: layer };
+            var extend = { layer: layer, height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT };
             if (!BI.isKey(node.id)) {
                 node.id = BI.UUID();
             }
diff --git a/src/case/tree/treeexpander/tree.expander.popup.js b/src/case/tree/treeexpander/tree.expander.popup.js
index 6deae0982..bf2c6addb 100644
--- a/src/case/tree/treeexpander/tree.expander.popup.js
+++ b/src/case/tree/treeexpander/tree.expander.popup.js
@@ -1,16 +1,19 @@
 !(function () {
     var Widget = BI.inherit(BI.Widget, {
-        props: {
-            baseCls: "bi-tree-expander-popup",
-            layer: 0, // 第几层级
-            el: {},
-            isLastNode: false,
+        props: function () {
+            return {
+                baseCls: "bi-tree-expander-popup",
+                layer: 0, // 第几层级
+                el: {},
+                isLastNode: false,
+            };
         },
 
         render: function () {
 
             var self = this;
             var o = this.options;
+            var offset = BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2;
 
             this.popupView = BI.createWidget(BI.extend(o.el, {
                 value: o.value
@@ -19,12 +22,12 @@
             this.popupView.on(BI.Controller.EVENT_CHANGE, function () {
                 self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
             });
-            this.popupView.element.css("margin-left", -12 * o.layer);
-            this.element.css("margin-left", 12 * o.layer);
+            this.popupView.element.css("margin-left", -offset * o.layer);
+            this.element.css("margin-left", offset * o.layer);
 
             return {
                 type: "bi.vertical",
-                cls: !o.isLastNode ? "line" : "",
+                cls: !o.isLastNode ? (BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "line solid" : "line") : "",
                 scrolly: null,
                 items: [
                     this.popupView,
diff --git a/src/case/ztree/0.treeview.js b/src/case/ztree/0.treeview.js
index f9dd56f50..5bf3188dc 100644
--- a/src/case/ztree/0.treeview.js
+++ b/src/case/ztree/0.treeview.js
@@ -51,7 +51,7 @@ BI.TreeView = BI.inherit(BI.Pane, {
         }
         this.tree = BI.createWidget({
             type: "bi.layout",
-            element: "<ul id='" + this.id + "' class='ztree'></ul>"
+            element: "<ul id='" + this.id + "' class='ztree" + (BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? " solid'" : "'") + "></ul>"
         });
         BI.createWidget({
             type: "bi.default",
diff --git a/src/core/system.js b/src/core/system.js
index d12fb9154..5dfe3a0a5 100644
--- a/src/core/system.js
+++ b/src/core/system.js
@@ -73,4 +73,7 @@
 
 BI.prepares.push(function () {
     BI.SIZE_CONSANTS = BI.Providers.getProvider("bi.provider.system").getSize();
+    // 不再增加线型的配置了,之后不维护前置版本直接删掉,都用实线连接线
+    BI.STYLE_CONSTANTS = {};
+    BI.STYLE_CONSTANTS.LINK_LINE_TYPE = BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT === 24 ? "dashed" : "solid";
 });
diff --git a/src/less/base/tree/tree.expander.less b/src/less/base/tree/tree.expander.less
index 85bab28ae..da3f019a6 100644
--- a/src/less/base/tree/tree.expander.less
+++ b/src/less/base/tree/tree.expander.less
@@ -7,3 +7,8 @@
   left: 11px;
 }
 
+.bi-tree-expander-popup.line.solid:before {
+  border-left: 1px solid @color-bi-border-tree-expander-popup-line;
+  left: 15px;
+}
+
diff --git a/src/less/base/tree/ztree.less b/src/less/base/tree/ztree.less
index cbe26d634..1f8e6e30d 100644
--- a/src/less/base/tree/ztree.less
+++ b/src/less/base/tree/ztree.less
@@ -25,6 +25,11 @@
   padding: 0 0 0 18px
 }
 
+.ztree.solid li ul {
+  margin: 0;
+  padding: 0 0 0 24px
+}
+
 // 此处不用2倍图,改用css画虚线
 // z-tree的line是一整块子节点区域,所以不能使用background-size: contain
 // 使用1倍图太模糊,这边就使用css自己画了,calc属性支持IE9, IE8反正会走hack, 不影响
@@ -40,19 +45,33 @@
   }
 }
 
+.ztree.solid li ul.line {
+  &:before {
+    border-left: 1px solid @border-color-dark-gray-line;
+    height: 100%;
+    left: 15px;
+    margin-top: 0;
+  }
+}
+
 .bi-theme-dark {
   .ztree li ul.line {
     &:before {
       border-left: 1px dashed @border-color-dark-gray-line;
     }
   }
+  .ztree.solid li ul.line {
+    &:before {
+      border-left: 1px solid @border-color-dark-gray-line;
+    }
+  }
 }
 
 .ztree li a {
   padding: 1px 3px 0 0;
   margin: 0;
   cursor: pointer;
-  height: 24px;
+  height: 23px;
   background-color: transparent;
   text-decoration: none;
   vertical-align: top;
@@ -66,6 +85,10 @@
   }
 }
 
+.ztree.solid li a {
+  height: 31px;
+}
+
 .ztree li a.curSelectedNode {
 }
 
@@ -113,6 +136,10 @@
   }
 }
 
+.ztree.solid li span {
+  line-height: 32px;
+}
+
 .ztree li span.button {
   line-height: 0;
   margin: 0;
@@ -229,6 +256,11 @@
   height: 24px
 }
 
+.ztree.solid li span.button.switch {
+  width: 32px;
+  height: 32px
+}
+
 .ztree li span.button.switch.noline_open {
   width: 0;
 }
diff --git a/src/less/lib/constant.less b/src/less/lib/constant.less
index f5cf713f2..d74040ac8 100644
--- a/src/less/lib/constant.less
+++ b/src/less/lib/constant.less
@@ -22,16 +22,7 @@
 
 // 色板
 // 品牌
-@color-brand-blue-100: #2C60DB;
-@color-brand-blue-90: fade(@color-brand-blue-100, 90);
-@color-brand-blue-80: fade(@color-brand-blue-100, 80);
-@color-brand-blue-60: fade(@color-brand-blue-100, 60);
-@color-brand-blue-50: fade(@color-brand-blue-100, 50);
-@color-brand-blue-40: fade(@color-brand-blue-100, 40);
-@color-brand-blue-30: fade(@color-brand-blue-100, 30);
-@color-brand-blue-20: fade(@color-brand-blue-100, 20);
-@color-brand-blue-10: fade(@color-brand-blue-100, 10);
-@color-brand-blue-5: fade(@color-brand-blue-100, 5);
+@color-primary: #3685f2;
 
 //green
 @color-bi-green-100: #13cd66;
@@ -58,7 +49,7 @@
 @color-bi-sea-green-5: fade(@color-bi-sea-green-100, 5);
 
 //blue
-@color-bi-blue-100: #3685f2;
+@color-bi-blue-100: @color-primary;
 @color-bi-blue-90: fade(@color-bi-blue-100, 90);
 @color-bi-blue-80: fade(@color-bi-blue-100, 80);
 @color-bi-blue-60: fade(@color-bi-blue-100, 60);
diff --git a/src/less/lib/icon.less b/src/less/lib/icon.less
index 5c62fc736..dc228abce 100644
--- a/src/less/lib/icon.less
+++ b/src/less/lib/icon.less
@@ -41,6 +41,36 @@
 @icon-tree-vertical-line-3-theme-dark: "icon/dark/tree_vertical_line_3.png";
 @icon-tree-vertical-line-4-theme-dark: "icon/dark/tree_vertical_line_4.png";
 
+@icon-tree-solid-expand-type1: "icon/tree_solid_expand_1.png";
+@icon-tree-solid-expand-type2: "icon/tree_solid_expand_2.png";
+@icon-tree-solid-expand-type3: "icon/tree_solid_expand_3.png";
+@icon-tree-solid-expand-type4: "icon/tree_solid_expand_4.png";
+
+@icon-tree-solid-collapse-type1: "icon/tree_solid_collapse_1.png";
+@icon-tree-solid-collapse-type2: "icon/tree_solid_collapse_2.png";
+@icon-tree-solid-collapse-type3: "icon/tree_solid_collapse_3.png";
+@icon-tree-solid-collapse-type4: "icon/tree_solid_collapse_4.png";
+
+@icon-tree-solid-vertical-line-1: "icon/tree_solid_vertical_line_1.png";
+@icon-tree-solid-vertical-line-2: "icon/tree_solid_vertical_line_2.png";
+@icon-tree-solid-vertical-line-3: "icon/tree_solid_vertical_line_3.png";
+@icon-tree-solid-vertical-line-4: "icon/tree_solid_vertical_line_4.png";
+
+@icon-tree-solid-expand-type1-theme-dark: "icon/dark/tree_solid_expand_1.png";
+@icon-tree-solid-expand-type2-theme-dark: "icon/dark/tree_solid_expand_2.png";
+@icon-tree-solid-expand-type3-theme-dark: "icon/dark/tree_solid_expand_3.png";
+@icon-tree-solid-expand-type4-theme-dark: "icon/dark/tree_solid_expand_4.png";
+
+@icon-tree-solid-collapse-type1-theme-dark: "icon/dark/tree_solid_collapse_1.png";
+@icon-tree-solid-collapse-type2-theme-dark: "icon/dark/tree_solid_collapse_2.png";
+@icon-tree-solid-collapse-type3-theme-dark: "icon/dark/tree_solid_collapse_3.png";
+@icon-tree-solid-collapse-type4-theme-dark: "icon/dark/tree_solid_collapse_4.png";
+
+@icon-tree-solid-vertical-line-1-theme-dark: "icon/dark/tree_solid_vertical_line_1.png";
+@icon-tree-solid-vertical-line-2-theme-dark: "icon/dark/tree_solid_vertical_line_2.png";
+@icon-tree-solid-vertical-line-3-theme-dark: "icon/dark/tree_solid_vertical_line_3.png";
+@icon-tree-solid-vertical-line-4-theme-dark: "icon/dark/tree_solid_vertical_line_4.png";
+
 @icon-loading: "icon/loading.gif";
 @icon-wave-loading: "icon/wave_loading.gif";
 
diff --git a/src/less/resource/background.less b/src/less/resource/background.less
index 2edd575e8..28fd5f1c0 100644
--- a/src/less/resource/background.less
+++ b/src/less/resource/background.less
@@ -14,27 +14,19 @@
   & .ztree li span.button.switch.bottom_open {
     .image2xPath(@icon-tree-vertical-line-4);
   }
+}
 
-  & .ztree.hack li span.button.switch.center_open {
-    .imagePath(@icon-tree-vertical-line-3);
-  }
-
-  & .ztree.hack li span.button.switch.roots_open {
-    .imagePath(@icon-tree-vertical-line-2);
+.bi-display-tree {
+  & .ztree.solid li span.button.switch.center_open {
+    .image2xPath(@icon-tree-solid-vertical-line-3);
   }
 
-  & .ztree.hack li span.button.switch.bottom_open {
-    .imagePath(@icon-tree-vertical-line-4);
+  & .ztree.solid li span.button.switch.roots_open {
+    .image2xPath(@icon-tree-solid-vertical-line-2);
   }
-}
 
-.ztree.hack li ul.line {
-  .imagePath(@icon-tree-vertical-line-1, 0, 1px, repeat-y);
-}
-
-.bi-theme-dark {
-  .ztree.hack li ul.line {
-    .imagePath(@icon-tree-vertical-line-1-theme-dark, 0, 1px, repeat-y);
+  & .ztree.solid li span.button.switch.bottom_open {
+    .image2xPath(@icon-tree-solid-vertical-line-4);
   }
 }
 
@@ -42,16 +34,16 @@
   .image2xPath(@icon-tree-expand-type1);
 }
 
-.ztree.hack li span.button.root_open {
-  .imagePath(@icon-tree-expand-type1);
+.ztree.solid li span.button.root_open {
+  .image2xPath(@icon-tree-solid-expand-type1);
 }
 
 .bi-theme-dark {
   .ztree li span.button.root_open {
     .image2xPath(@icon-tree-expand-type1-theme-dark);
   }
-  .ztree.hack li span.button.root_open {
-    .imagePath(@icon-tree-expand-type1-theme-dark);
+  .ztree.solid li span.button.root_open {
+    .image2xPath(@icon-tree-solid-expand-type1-theme-dark);
   }
 }
 
@@ -59,16 +51,16 @@
   .image2xPath(@icon-tree-collapse-type1);
 }
 
-.ztree.hack li span.button.root_close {
-  .imagePath(@icon-tree-collapse-type1);
+.ztree.solid li span.button.root_close {
+  .image2xPath(@icon-tree-solid-collapse-type1);
 }
 
 .bi-theme-dark {
   .ztree li span.button.root_close {
     .image2xPath(@icon-tree-collapse-type1-theme-dark);
   }
-  .ztree.hack li span.button.root_close {
-    .imagePath(@icon-tree-collapse-type1-theme-dark);
+  .ztree.solid li span.button.root_close {
+    .image2xPath(@icon-tree-solid-collapse-type1-theme-dark);
   }
 }
 
@@ -76,16 +68,16 @@
   .image2xPath(@icon-tree-expand-type2);
 }
 
-.ztree.hack li span.button.roots_open {
-  .imagePath(@icon-tree-expand-type2);
+.ztree.solid li span.button.roots_open {
+  .image2xPath(@icon-tree-solid-expand-type2);
 }
 
 .bi-theme-dark {
   .ztree li span.button.roots_open {
     .image2xPath(@icon-tree-expand-type2-theme-dark);
   }
-  .ztree.hack li span.button.roots_open {
-    .imagePath(@icon-tree-expand-type2-theme-dark);
+  .ztree.solid li span.button.roots_open {
+    .image2xPath(@icon-tree-solid-expand-type2-theme-dark);
   }
 }
 
@@ -93,16 +85,16 @@
   .image2xPath(@icon-tree-collapse-type2);
 }
 
-.ztree.hack li span.button.roots_close {
-  .imagePath(@icon-tree-collapse-type2);
+.ztree.solid li span.button.roots_close {
+  .image2xPath(@icon-tree-solid-collapse-type2);
 }
 
 .bi-theme-dark {
   .ztree li span.button.roots_close {
     .image2xPath(@icon-tree-collapse-type2-theme-dark);
   }
-  .ztree.hack li span.button.roots_close {
-    .imagePath(@icon-tree-collapse-type2-theme-dark);
+  .ztree.solid li span.button.roots_close {
+    .image2xPath(@icon-tree-solid-collapse-type2-theme-dark);
   }
 }
 
@@ -110,16 +102,16 @@
   .image2xPath(@icon-tree-expand-type3);
 }
 
-.ztree.hack li span.button.center_open {
-  .imagePath(@icon-tree-expand-type3);
+.ztree.solid li span.button.center_open {
+  .image2xPath(@icon-tree-solid-expand-type3);
 }
 
 .bi-theme-dark {
   .ztree li span.button.center_open {
     .image2xPath(@icon-tree-expand-type3-theme-dark);
   }
-  .ztree.hack li span.button.center_open {
-    .imagePath(@icon-tree-expand-type3-theme-dark);
+  .ztree.solid li span.button.center_open {
+    .image2xPath(@icon-tree-solid-expand-type3-theme-dark);
   }
 }
 
@@ -127,16 +119,16 @@
   .image2xPath(@icon-tree-collapse-type3);
 }
 
-.ztree.hack li span.button.center_close {
-  .imagePath(@icon-tree-collapse-type3);
+.ztree.solid li span.button.center_close {
+  .image2xPath(@icon-tree-solid-collapse-type3);
 }
 
 .bi-theme-dark {
   .ztree li span.button.center_close {
     .image2xPath(@icon-tree-collapse-type3-theme-dark);
   }
-  .ztree.hack li span.button.center_close {
-    .imagePath(@icon-tree-collapse-type3-theme-dark);
+  .ztree.solid li span.button.center_close {
+    .image2xPath(@icon-tree-solid-collapse-type3-theme-dark);
   }
 }
 
@@ -144,16 +136,16 @@
   .image2xPath(@icon-tree-expand-type4);
 }
 
-.ztree.hack li span.button.bottom_open {
-  .imagePath(@icon-tree-expand-type4);
+.ztree.solid li span.button.bottom_open {
+  .image2xPath(@icon-tree-solid-expand-type4);
 }
 
 .bi-theme-dark {
   .ztree li span.button.bottom_open {
     .image2xPath(@icon-tree-expand-type4-theme-dark);
   }
-  .ztree.hack li span.button.bottom_open {
-    .imagePath(@icon-tree-expand-type4-theme-dark);
+  .ztree.solid li span.button.bottom_open {
+    .image2xPath(@icon-tree-solid-expand-type4-theme-dark);
   }
 }
 
@@ -161,16 +153,16 @@
   .image2xPath(@icon-tree-collapse-type4);
 }
 
-.ztree.hack li span.button.bottom_close {
-  .imagePath(@icon-tree-collapse-type4);
+.ztree.solid li span.button.bottom_close {
+  .image2xPath(@icon-tree-solid-collapse-type4);
 }
 
 .bi-theme-dark {
   .ztree li span.button.bottom_close {
     .image2xPath(@icon-tree-collapse-type4-theme-dark);
   }
-  .ztree.hack li span.button.bottom_close {
-    .imagePath(@icon-tree-collapse-type4-theme-dark);
+  .ztree.solid li span.button.bottom_close {
+    .image2xPath(@icon-tree-solid-collapse-type4-theme-dark);
   }
 }
 
@@ -178,16 +170,16 @@
   .image2xPath(@icon-tree-vertical-line-2);
 }
 
-.ztree.hack li span.button.roots_docu {
-  .imagePath(@icon-tree-vertical-line-2);
+.ztree.solid li span.button.roots_docu {
+  .image2xPath(@icon-tree-solid-vertical-line-2);
 }
 
 .bi-theme-dark {
   .ztree li span.button.roots_docu {
     .image2xPath(@icon-tree-vertical-line-2-theme-dark);
   }
-  .ztree.hack li span.button.roots_docu {
-    .imagePath(@icon-tree-vertical-line-2-theme-dark);
+  .ztree.solid li span.button.roots_docu {
+    .image2xPath(@icon-tree-solid-vertical-line-2-theme-dark);
   }
 }
 
@@ -195,16 +187,16 @@
   .image2xPath(@icon-tree-vertical-line-3);
 }
 
-.ztree.hack li span.button.center_docu {
-  .imagePath(@icon-tree-vertical-line-3);
+.ztree.solid li span.button.center_docu {
+  .image2xPath(@icon-tree-solid-vertical-line-3);
 }
 
 .bi-theme-dark {
   .ztree li span.button.center_docu {
     .image2xPath(@icon-tree-vertical-line-3-theme-dark);
   }
-  .ztree.hack li span.button.center_docu {
-    .imagePath(@icon-tree-vertical-line-3-theme-dark);
+  .ztree.solid li span.button.center_docu {
+    .image2xPath(@icon-tree-solid-vertical-line-3-theme-dark);
   }
 }
 
@@ -212,16 +204,16 @@
   .image2xPath(@icon-tree-vertical-line-4);
 }
 
-.ztree.hack li span.button.bottom_docu {
-  .imagePath(@icon-tree-vertical-line-4);
+.ztree.solid li span.button.bottom_docu {
+  .image2xPath(@icon-tree-solid-vertical-line-4);
 }
 
 .bi-theme-dark {
   .ztree li span.button.bottom_docu {
     .image2xPath(@icon-tree-vertical-line-4-theme-dark);
   }
-  .ztree.hack li span.button.bottom_docu {
-    .imagePath(@icon-tree-vertical-line-4-theme-dark);
+  .ztree.solid li span.button.bottom_docu {
+    .image2xPath(@icon-tree-solid-vertical-line-4-theme-dark);
   }
 }
 
@@ -229,50 +221,86 @@
   .image2xPath(@icon-loading);
 }
 
-.ztree.hack li span.button.ico_loading {
-  .imagePath(@icon-loading);
-}
-
 .base-line-conn-background {
   .imagePath(@icon-tree-vertical-line-1, 0, 0, repeat-y);
 }
 
+.base-solid-line-conn-background {
+  .image2xPath(@icon-tree-solid-vertical-line-1, 0, 0, repeat-y);
+}
+
 .bi-theme-dark {
   .base-line-conn-background {
     .imagePath(@icon-tree-vertical-line-1-theme-dark, 0, 0, repeat-y);
   }
 }
 
+.bi-theme-dark {
+  .base-solid-line-conn-background {
+    .image2xPath(@icon-tree-solid-vertical-line-1-theme-dark, 0, 0, repeat-y);
+  }
+}
+
 .first-line-conn-background {
   .imagePath(@icon-tree-vertical-line-2);
 }
 
+.first-solid-line-conn-background {
+  .image2xPath(@icon-tree-solid-vertical-line-2);
+}
+
 .bi-theme-dark {
   .first-line-conn-background {
     .imagePath(@icon-tree-vertical-line-2-theme-dark);
   }
 }
 
+.bi-theme-dark {
+  .first-solid-line-conn-background {
+    .image2xPath(@icon-tree-solid-vertical-line-2-theme-dark);
+  }
+}
+
 .mid-line-conn-background {
   .imagePath(@icon-tree-vertical-line-3);
 }
 
+.mid-solid-line-conn-background {
+  .image2xPath(@icon-tree-solid-vertical-line-3);
+}
+
 .bi-theme-dark {
   .mid-line-conn-background {
     .imagePath(@icon-tree-vertical-line-3-theme-dark);
   }
 }
 
+.bi-theme-dark {
+  .mid-solid-line-conn-background {
+    .image2xPath(@icon-tree-solid-vertical-line-3-theme-dark);
+  }
+}
+
 .last-line-conn-background {
   .imagePath(@icon-tree-vertical-line-4);
 }
 
+.last-solid-line-conn-background {
+  .image2xPath(@icon-tree-solid-vertical-line-4);
+}
+
 .bi-theme-dark {
   .last-line-conn-background {
     .imagePath(@icon-tree-vertical-line-4-theme-dark);
   }
 }
 
+.bi-theme-dark {
+  .last-solid-line-conn-background {
+    .image2xPath(@icon-tree-solid-vertical-line-4-theme-dark);
+  }
+}
+
 .loading-background {
   .image2xPath(@icon-loading);
 }
diff --git a/src/less/resource/icon.less b/src/less/resource/icon.less
index 1ca769404..a97b429da 100644
--- a/src/less/resource/icon.less
+++ b/src/less/resource/icon.less
@@ -13,6 +13,17 @@
 .icon(tree-vertical-line-type2, @icon-tree-vertical-line-2);
 .icon(tree-vertical-line-type3, @icon-tree-vertical-line-3);
 .icon(tree-vertical-line-type4, @icon-tree-vertical-line-4);
+.icon(tree-solid-collapse-icon-type1, @icon-tree-solid-collapse-type1);
+.icon(tree-solid-collapse-icon-type2, @icon-tree-solid-collapse-type2);
+.icon(tree-solid-collapse-icon-type3, @icon-tree-solid-collapse-type3);
+.icon(tree-solid-collapse-icon-type4, @icon-tree-solid-collapse-type4);
+.icon(tree-solid-expand-icon-type1, @icon-tree-solid-expand-type1);
+.icon(tree-solid-expand-icon-type2, @icon-tree-solid-expand-type2);
+.icon(tree-solid-expand-icon-type3, @icon-tree-solid-expand-type3);
+.icon(tree-solid-expand-icon-type4, @icon-tree-solid-expand-type4);
+.icon(tree-solid-vertical-line-type2, @icon-tree-solid-vertical-line-2);
+.icon(tree-solid-vertical-line-type3, @icon-tree-solid-vertical-line-3);
+.icon(tree-solid-vertical-line-type4, @icon-tree-solid-vertical-line-4);
 
 //CheckBox
 .icon_custom(check-box-icon, @icon-checkbox-normal, @icon-checkbox-normal, @icon-checkbox-normal, @icon-checkbox-active, @icon-checkbox-disable, @icon-checkbox-active-disable);
@@ -43,6 +54,17 @@
   .icon(tree-vertical-line-type2, @icon-tree-vertical-line-2-theme-dark);
   .icon(tree-vertical-line-type3, @icon-tree-vertical-line-3-theme-dark);
   .icon(tree-vertical-line-type4, @icon-tree-vertical-line-4-theme-dark);
+  .icon(tree-solid-collapse-icon-type1, @icon-tree-solid-collapse-type1-theme-dark);
+  .icon(tree-solid-collapse-icon-type2, @icon-tree-solid-collapse-type2-theme-dark);
+  .icon(tree-solid-collapse-icon-type3, @icon-tree-solid-collapse-type3-theme-dark);
+  .icon(tree-solid-collapse-icon-type4, @icon-tree-solid-collapse-type4-theme-dark);
+  .icon(tree-solid-expand-icon-type1, @icon-tree-solid-expand-type1-theme-dark);
+  .icon(tree-solid-expand-icon-type2, @icon-tree-solid-expand-type2-theme-dark);
+  .icon(tree-solid-expand-icon-type3, @icon-tree-solid-expand-type3-theme-dark);
+  .icon(tree-solid-expand-icon-type4, @icon-tree-solid-expand-type4-theme-dark);
+  .icon(tree-solid-vertical-line-type2, @icon-tree-solid-vertical-line-2-theme-dark);
+  .icon(tree-solid-vertical-line-type3, @icon-tree-solid-vertical-line-3-theme-dark);
+  .icon(tree-solid-vertical-line-type4, @icon-tree-solid-vertical-line-4-theme-dark);
 
   .icon_select(trans-color-icon, @icon-trans-normal-dark, @icon-trans-select-dark, @icon-trans-disable-dark);
   .icon(auto-square-color-icon, @icon-auto-square-normal-dark);
diff --git a/src/widget/multilayerselecttree/multilayerselecttree.leveltree.js b/src/widget/multilayerselecttree/multilayerselecttree.leveltree.js
index c6030caff..02209b0d2 100644
--- a/src/widget/multilayerselecttree/multilayerselecttree.leveltree.js
+++ b/src/widget/multilayerselecttree/multilayerselecttree.leveltree.js
@@ -34,7 +34,8 @@ BI.MultiLayerSelectLevelTree = BI.inherit(BI.Pane, {
         BI.each(nodes, function (i, node) {
             var extend = {
                 isFirstNode: i === 0,
-                isLastNode: i === nodes.length - 1
+                isLastNode: i === nodes.length - 1,
+                height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT
             };
             node.layer = layer;
             if (!BI.isKey(node.id)) {
diff --git a/src/widget/multilayerselecttree/node/node.first.plus.js b/src/widget/multilayerselecttree/node/node.first.plus.js
index 37e69704c..c187ab7a5 100644
--- a/src/widget/multilayerselecttree/node/node.first.plus.js
+++ b/src/widget/multilayerselecttree/node/node.first.plus.js
@@ -54,12 +54,12 @@ BI.MultiLayerSelectTreeFirstPlusGroupNode = BI.inherit(BI.NodeButton, {
         // });
         items.push({
             el: this.node,
-            lgap: o.layer * 12
+            lgap: o.layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2
         });
         BI.createWidget({
             type: "bi.horizontal_adapt",
             element: this,
-            columnSize: BI.makeArray(o.layer, 12),
+            columnSize: BI.makeArray(o.layer, BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2),
             items: items
         });
     },
diff --git a/src/widget/multilayerselecttree/node/node.last.plus.js b/src/widget/multilayerselecttree/node/node.last.plus.js
index 7fcaca78f..89f4a1efa 100644
--- a/src/widget/multilayerselecttree/node/node.last.plus.js
+++ b/src/widget/multilayerselecttree/node/node.last.plus.js
@@ -47,12 +47,12 @@ BI.MultiLayerSelectTreeLastPlusGroupNode = BI.inherit(BI.NodeButton, {
 
         items.push({
             el: this.node,
-            lgap: o.layer * 12
+            lgap: o.layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2
         });
         BI.createWidget({
             type: "bi.horizontal_adapt",
             element: this,
-            columnSize: BI.makeArray(o.layer, 12),
+            columnSize: BI.makeArray(o.layer, BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2),
             items: items
         });
     },
diff --git a/src/widget/multilayerselecttree/node/node.mid.plus.js b/src/widget/multilayerselecttree/node/node.mid.plus.js
index 84f14bb8d..6dad3105f 100644
--- a/src/widget/multilayerselecttree/node/node.mid.plus.js
+++ b/src/widget/multilayerselecttree/node/node.mid.plus.js
@@ -47,12 +47,12 @@ BI.MultiLayerSelectTreeMidPlusGroupNode = BI.inherit(BI.NodeButton, {
 
         items.push({
             el: this.node,
-            lgap: o.layer * 12
+            lgap: o.layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2
         });
         BI.createWidget({
             type: "bi.horizontal_adapt",
             element: this,
-            columnSize: BI.makeArray(o.layer, 12),
+            columnSize: BI.makeArray(o.layer, BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2),
             items: items
         });
     },
diff --git a/src/widget/multilayerselecttree/node/node.plus.js b/src/widget/multilayerselecttree/node/node.plus.js
index 911093fe2..d63d2d9d8 100644
--- a/src/widget/multilayerselecttree/node/node.plus.js
+++ b/src/widget/multilayerselecttree/node/node.plus.js
@@ -47,12 +47,12 @@ BI.MultiLayerSelectTreePlusGroupNode = BI.inherit(BI.NodeButton, {
 
         items.push({
             el: this.node,
-            lgap: o.layer * 12
+            lgap: o.layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2
         });
         BI.createWidget({
             type: "bi.horizontal_adapt",
             element: this,
-            columnSize: BI.makeArray(o.layer, 12),
+            columnSize: BI.makeArray(o.layer, BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2),
             items: items
         });
     },
diff --git a/src/widget/multilayersingletree/multilayersingletree.leveltree.js b/src/widget/multilayersingletree/multilayersingletree.leveltree.js
index da8bca702..186e2e0ae 100644
--- a/src/widget/multilayersingletree/multilayersingletree.leveltree.js
+++ b/src/widget/multilayersingletree/multilayersingletree.leveltree.js
@@ -34,7 +34,8 @@ BI.MultiLayerSingleLevelTree = BI.inherit(BI.Pane, {
         BI.each(nodes, function (i, node) {
             var extend = {
                 isFirstNode: i === 0,
-                isLastNode: i === nodes.length - 1
+                isLastNode: i === nodes.length - 1,
+                height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT
             };
             node.layer = layer;
             if (!BI.isKey(node.id)) {
diff --git a/src/widget/multilayersingletree/node/node.first.plus.js b/src/widget/multilayersingletree/node/node.first.plus.js
index 9d5794bcb..51177bcce 100644
--- a/src/widget/multilayersingletree/node/node.first.plus.js
+++ b/src/widget/multilayersingletree/node/node.first.plus.js
@@ -26,12 +26,12 @@ BI.MultiLayerSingleTreeFirstPlusGroupNode = BI.inherit(BI.NodeButton, {
 
         items.push({
             el: this.node,
-            lgap: o.layer * 12
+            lgap: o.layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2
         });
         BI.createWidget({
             type: "bi.horizontal_adapt",
             element: this,
-            columnSize: BI.makeArray(o.layer, 12),
+            columnSize: BI.makeArray(o.layer, BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2),
             items: items
         });
     },
diff --git a/src/widget/multilayersingletree/node/node.last.plus.js b/src/widget/multilayersingletree/node/node.last.plus.js
index 18dd3eea7..007837f5c 100644
--- a/src/widget/multilayersingletree/node/node.last.plus.js
+++ b/src/widget/multilayersingletree/node/node.last.plus.js
@@ -26,12 +26,12 @@ BI.MultiLayerSingleTreeLastPlusGroupNode = BI.inherit(BI.NodeButton, {
 
         items.push({
             el: this.node,
-            lgap: o.layer * 12
+            lgap: o.layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2
         });
         BI.createWidget({
             type: "bi.horizontal_adapt",
             element: this,
-            columnSize: BI.makeArray(o.layer, 12),
+            columnSize: BI.makeArray(o.layer, BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2),
             items: items
         });
     },
diff --git a/src/widget/multilayersingletree/node/node.mid.plus.js b/src/widget/multilayersingletree/node/node.mid.plus.js
index 9105de054..e8709cf78 100644
--- a/src/widget/multilayersingletree/node/node.mid.plus.js
+++ b/src/widget/multilayersingletree/node/node.mid.plus.js
@@ -26,7 +26,7 @@ BI.MultiLayerSingleTreeMidPlusGroupNode = BI.inherit(BI.NodeButton, {
 
         items.push({
             el: this.node,
-            lgap: o.layer * 12
+            lgap: o.layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2
         });
         BI.createWidget({
             type: "bi.horizontal_adapt",
diff --git a/src/widget/multilayersingletree/treeitem/item.first.treeleaf.js b/src/widget/multilayersingletree/treeitem/item.first.treeleaf.js
index c10cbcd01..4cc5203e4 100644
--- a/src/widget/multilayersingletree/treeitem/item.first.treeleaf.js
+++ b/src/widget/multilayersingletree/treeitem/item.first.treeleaf.js
@@ -46,12 +46,12 @@ BI.MultiLayerSingleTreeFirstTreeLeafItem = BI.inherit(BI.BasicButton, {
 
         items.push({
             el: this.item,
-            lgap: o.layer * 12
+            lgap: o.layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2
         });
         BI.createWidget({
             type: "bi.horizontal_adapt",
             element: this,
-            columnSize: BI.makeArray(o.layer, 12),
+            columnSize: BI.makeArray(o.layer, BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2),
             items: items
         });
     },
diff --git a/src/widget/multilayersingletree/treeitem/item.last.treeleaf.js b/src/widget/multilayersingletree/treeitem/item.last.treeleaf.js
index 4289108f0..9aa604737 100644
--- a/src/widget/multilayersingletree/treeitem/item.last.treeleaf.js
+++ b/src/widget/multilayersingletree/treeitem/item.last.treeleaf.js
@@ -46,12 +46,12 @@ BI.MultiLayerSingleTreeLastTreeLeafItem = BI.inherit(BI.BasicButton, {
 
         items.push({
             el: this.item,
-            lgap: o.layer * 12
+            lgap: o.layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2
         });
         BI.createWidget({
             type: "bi.horizontal_adapt",
             element: this,
-            columnSize: BI.makeArray(o.layer, 12),
+            columnSize: BI.makeArray(o.layer, BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2),
             items: items
         });
     },
diff --git a/src/widget/multilayersingletree/treeitem/item.mid.treeleaf.js b/src/widget/multilayersingletree/treeitem/item.mid.treeleaf.js
index 92a9a626a..eed7d553c 100644
--- a/src/widget/multilayersingletree/treeitem/item.mid.treeleaf.js
+++ b/src/widget/multilayersingletree/treeitem/item.mid.treeleaf.js
@@ -46,12 +46,12 @@ BI.MultiLayerSingleTreeMidTreeLeafItem = BI.inherit(BI.BasicButton, {
 
         items.push({
             el: this.item,
-            lgap: o.layer * 12
+            lgap: o.layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2
         });
         BI.createWidget({
             type: "bi.horizontal_adapt",
             element: this,
-            columnSize: BI.makeArray(o.layer, 12),
+            columnSize: BI.makeArray(o.layer, BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2),
             items: items
         });
     },
diff --git a/src/widget/selecttree/selecttree.popup.js b/src/widget/selecttree/selecttree.popup.js
index f2aeea428..1bd69a6cb 100644
--- a/src/widget/selecttree/selecttree.popup.js
+++ b/src/widget/selecttree/selecttree.popup.js
@@ -20,6 +20,7 @@ BI.SelectTreePopup = BI.inherit(BI.Pane, {
             var extend = {layer: layer};
             node.id = node.id || BI.UUID();
             extend.pNode = pNode;
+            extend.height = BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT;
             if (node.isParent === true || node.parent === true || BI.isNotEmptyArray(node.children)) {
                 extend.type = "bi.select_tree_mid_plus_group_node";
                 if (i === nodes.length - 1) {
diff --git a/src/widget/singleselect/search/singleselect.search.loader.js b/src/widget/singleselect/search/singleselect.search.loader.js
index a61ac843e..5625593dd 100644
--- a/src/widget/singleselect/search/singleselect.search.loader.js
+++ b/src/widget/singleselect/search/singleselect.search.loader.js
@@ -95,7 +95,7 @@ BI.SingleSelectSearchLoader = BI.inherit(BI.Widget, {
                 type: o.allowNoSelect ? "bi.single_select_item" : "bi.single_select_radio_item",
                 logic: o.logic,
                 cls: "bi-list-item-active",
-                height: 24,
+                height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT,
                 selected: false,
                 iconWrapperWidth: 26,
                 hgap: o.allowNoSelect ? 10 : 0,
diff --git a/src/widget/singleselect/singleselect.loader.js b/src/widget/singleselect/singleselect.loader.js
index 0cc2f6e60..1f27b6425 100644
--- a/src/widget/singleselect/singleselect.loader.js
+++ b/src/widget/singleselect/singleselect.loader.js
@@ -114,7 +114,7 @@ BI.SingleSelectLoader = BI.inherit(BI.Widget, {
                 type: o.allowNoSelect ? "bi.single_select_item" : "bi.single_select_radio_item",
                 logic: o.logic,
                 cls: "bi-list-item-active",
-                height: 24,
+                height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT,
                 selected: false,
                 iconWrapperWidth: 26,
                 hgap: o.allowNoSelect ? 10 : 0,

From a3c1865e324727dbeaa9d92525283acf49bb122a Mon Sep 17 00:00:00 2001
From: windy <1374721899@qq.com>
Date: Mon, 17 Jan 2022 11:18:49 +0800
Subject: [PATCH 2/2] =?UTF-8?q?=E5=9B=BE=E7=89=87?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../images/1x/icon/dark/tree_solid_collapse_1.png | Bin 0 -> 285 bytes
 .../images/1x/icon/dark/tree_solid_collapse_2.png | Bin 0 -> 346 bytes
 .../images/1x/icon/dark/tree_solid_collapse_3.png | Bin 0 -> 371 bytes
 .../images/1x/icon/dark/tree_solid_collapse_4.png | Bin 0 -> 342 bytes
 .../images/1x/icon/dark/tree_solid_collapse_5.png | Bin 0 -> 312 bytes
 dist/images/1x/icon/dark/tree_solid_expand_1.png  | Bin 0 -> 246 bytes
 dist/images/1x/icon/dark/tree_solid_expand_2.png  | Bin 0 -> 311 bytes
 dist/images/1x/icon/dark/tree_solid_expand_3.png  | Bin 0 -> 338 bytes
 dist/images/1x/icon/dark/tree_solid_expand_4.png  | Bin 0 -> 310 bytes
 dist/images/1x/icon/dark/tree_solid_expand_5.png  | Bin 0 -> 278 bytes
 .../1x/icon/dark/tree_solid_vertical_line_1.png   | Bin 0 -> 156 bytes
 .../1x/icon/dark/tree_solid_vertical_line_2.png   | Bin 0 -> 194 bytes
 .../1x/icon/dark/tree_solid_vertical_line_3.png   | Bin 0 -> 195 bytes
 .../1x/icon/dark/tree_solid_vertical_line_4.png   | Bin 0 -> 186 bytes
 dist/images/1x/icon/tree_solid_collapse_1.png     | Bin 0 -> 312 bytes
 dist/images/1x/icon/tree_solid_collapse_2.png     | Bin 0 -> 372 bytes
 dist/images/1x/icon/tree_solid_collapse_3.png     | Bin 0 -> 391 bytes
 dist/images/1x/icon/tree_solid_collapse_4.png     | Bin 0 -> 370 bytes
 dist/images/1x/icon/tree_solid_collapse_5.png     | Bin 0 -> 338 bytes
 dist/images/1x/icon/tree_solid_expand_1.png       | Bin 0 -> 268 bytes
 dist/images/1x/icon/tree_solid_expand_2.png       | Bin 0 -> 330 bytes
 dist/images/1x/icon/tree_solid_expand_3.png       | Bin 0 -> 355 bytes
 dist/images/1x/icon/tree_solid_expand_4.png       | Bin 0 -> 334 bytes
 dist/images/1x/icon/tree_solid_expand_5.png       | Bin 0 -> 300 bytes
 .../images/1x/icon/tree_solid_vertical_line_1.png | Bin 0 -> 156 bytes
 .../images/1x/icon/tree_solid_vertical_line_2.png | Bin 0 -> 194 bytes
 .../images/1x/icon/tree_solid_vertical_line_3.png | Bin 0 -> 198 bytes
 .../images/1x/icon/tree_solid_vertical_line_4.png | Bin 0 -> 187 bytes
 .../images/2x/icon/dark/tree_solid_collapse_1.png | Bin 0 -> 371 bytes
 .../images/2x/icon/dark/tree_solid_collapse_2.png | Bin 0 -> 453 bytes
 .../images/2x/icon/dark/tree_solid_collapse_3.png | Bin 0 -> 492 bytes
 .../images/2x/icon/dark/tree_solid_collapse_4.png | Bin 0 -> 460 bytes
 .../images/2x/icon/dark/tree_solid_collapse_5.png | Bin 0 -> 414 bytes
 dist/images/2x/icon/dark/tree_solid_expand_1.png  | Bin 0 -> 308 bytes
 dist/images/2x/icon/dark/tree_solid_expand_2.png  | Bin 0 -> 393 bytes
 dist/images/2x/icon/dark/tree_solid_expand_3.png  | Bin 0 -> 431 bytes
 dist/images/2x/icon/dark/tree_solid_expand_4.png  | Bin 0 -> 400 bytes
 dist/images/2x/icon/dark/tree_solid_expand_5.png  | Bin 0 -> 351 bytes
 .../2x/icon/dark/tree_solid_vertical_line_1.png   | Bin 0 -> 177 bytes
 .../2x/icon/dark/tree_solid_vertical_line_2.png   | Bin 0 -> 216 bytes
 .../2x/icon/dark/tree_solid_vertical_line_3.png   | Bin 0 -> 256 bytes
 .../2x/icon/dark/tree_solid_vertical_line_4.png   | Bin 0 -> 216 bytes
 dist/images/2x/icon/tree_solid_collapse_1.png     | Bin 0 -> 429 bytes
 dist/images/2x/icon/tree_solid_collapse_2.png     | Bin 0 -> 503 bytes
 dist/images/2x/icon/tree_solid_collapse_3.png     | Bin 0 -> 545 bytes
 dist/images/2x/icon/tree_solid_collapse_4.png     | Bin 0 -> 512 bytes
 dist/images/2x/icon/tree_solid_collapse_5.png     | Bin 0 -> 465 bytes
 dist/images/2x/icon/tree_solid_expand_1.png       | Bin 0 -> 336 bytes
 dist/images/2x/icon/tree_solid_expand_2.png       | Bin 0 -> 418 bytes
 dist/images/2x/icon/tree_solid_expand_3.png       | Bin 0 -> 459 bytes
 dist/images/2x/icon/tree_solid_expand_4.png       | Bin 0 -> 429 bytes
 dist/images/2x/icon/tree_solid_expand_5.png       | Bin 0 -> 380 bytes
 .../images/2x/icon/tree_solid_vertical_line_1.png | Bin 0 -> 178 bytes
 .../images/2x/icon/tree_solid_vertical_line_2.png | Bin 0 -> 217 bytes
 .../images/2x/icon/tree_solid_vertical_line_3.png | Bin 0 -> 256 bytes
 .../images/2x/icon/tree_solid_vertical_line_4.png | Bin 0 -> 217 bytes
 56 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 dist/images/1x/icon/dark/tree_solid_collapse_1.png
 create mode 100644 dist/images/1x/icon/dark/tree_solid_collapse_2.png
 create mode 100644 dist/images/1x/icon/dark/tree_solid_collapse_3.png
 create mode 100644 dist/images/1x/icon/dark/tree_solid_collapse_4.png
 create mode 100644 dist/images/1x/icon/dark/tree_solid_collapse_5.png
 create mode 100644 dist/images/1x/icon/dark/tree_solid_expand_1.png
 create mode 100644 dist/images/1x/icon/dark/tree_solid_expand_2.png
 create mode 100644 dist/images/1x/icon/dark/tree_solid_expand_3.png
 create mode 100644 dist/images/1x/icon/dark/tree_solid_expand_4.png
 create mode 100644 dist/images/1x/icon/dark/tree_solid_expand_5.png
 create mode 100644 dist/images/1x/icon/dark/tree_solid_vertical_line_1.png
 create mode 100644 dist/images/1x/icon/dark/tree_solid_vertical_line_2.png
 create mode 100644 dist/images/1x/icon/dark/tree_solid_vertical_line_3.png
 create mode 100644 dist/images/1x/icon/dark/tree_solid_vertical_line_4.png
 create mode 100644 dist/images/1x/icon/tree_solid_collapse_1.png
 create mode 100644 dist/images/1x/icon/tree_solid_collapse_2.png
 create mode 100644 dist/images/1x/icon/tree_solid_collapse_3.png
 create mode 100644 dist/images/1x/icon/tree_solid_collapse_4.png
 create mode 100644 dist/images/1x/icon/tree_solid_collapse_5.png
 create mode 100644 dist/images/1x/icon/tree_solid_expand_1.png
 create mode 100644 dist/images/1x/icon/tree_solid_expand_2.png
 create mode 100644 dist/images/1x/icon/tree_solid_expand_3.png
 create mode 100644 dist/images/1x/icon/tree_solid_expand_4.png
 create mode 100644 dist/images/1x/icon/tree_solid_expand_5.png
 create mode 100644 dist/images/1x/icon/tree_solid_vertical_line_1.png
 create mode 100644 dist/images/1x/icon/tree_solid_vertical_line_2.png
 create mode 100644 dist/images/1x/icon/tree_solid_vertical_line_3.png
 create mode 100644 dist/images/1x/icon/tree_solid_vertical_line_4.png
 create mode 100644 dist/images/2x/icon/dark/tree_solid_collapse_1.png
 create mode 100644 dist/images/2x/icon/dark/tree_solid_collapse_2.png
 create mode 100644 dist/images/2x/icon/dark/tree_solid_collapse_3.png
 create mode 100644 dist/images/2x/icon/dark/tree_solid_collapse_4.png
 create mode 100644 dist/images/2x/icon/dark/tree_solid_collapse_5.png
 create mode 100644 dist/images/2x/icon/dark/tree_solid_expand_1.png
 create mode 100644 dist/images/2x/icon/dark/tree_solid_expand_2.png
 create mode 100644 dist/images/2x/icon/dark/tree_solid_expand_3.png
 create mode 100644 dist/images/2x/icon/dark/tree_solid_expand_4.png
 create mode 100644 dist/images/2x/icon/dark/tree_solid_expand_5.png
 create mode 100644 dist/images/2x/icon/dark/tree_solid_vertical_line_1.png
 create mode 100644 dist/images/2x/icon/dark/tree_solid_vertical_line_2.png
 create mode 100644 dist/images/2x/icon/dark/tree_solid_vertical_line_3.png
 create mode 100644 dist/images/2x/icon/dark/tree_solid_vertical_line_4.png
 create mode 100644 dist/images/2x/icon/tree_solid_collapse_1.png
 create mode 100644 dist/images/2x/icon/tree_solid_collapse_2.png
 create mode 100644 dist/images/2x/icon/tree_solid_collapse_3.png
 create mode 100644 dist/images/2x/icon/tree_solid_collapse_4.png
 create mode 100644 dist/images/2x/icon/tree_solid_collapse_5.png
 create mode 100644 dist/images/2x/icon/tree_solid_expand_1.png
 create mode 100644 dist/images/2x/icon/tree_solid_expand_2.png
 create mode 100644 dist/images/2x/icon/tree_solid_expand_3.png
 create mode 100644 dist/images/2x/icon/tree_solid_expand_4.png
 create mode 100644 dist/images/2x/icon/tree_solid_expand_5.png
 create mode 100644 dist/images/2x/icon/tree_solid_vertical_line_1.png
 create mode 100644 dist/images/2x/icon/tree_solid_vertical_line_2.png
 create mode 100644 dist/images/2x/icon/tree_solid_vertical_line_3.png
 create mode 100644 dist/images/2x/icon/tree_solid_vertical_line_4.png

diff --git a/dist/images/1x/icon/dark/tree_solid_collapse_1.png b/dist/images/1x/icon/dark/tree_solid_collapse_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..3825febd3554b42fff30a88de563de0f6f74271e
GIT binary patch
literal 285
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5f0L(+V@L(#+p7;b4;cusJ`n%7z553190&0N
zM)Lw8^8zOJ6~a3lVvn#s^4|GRv-RFru7w5iEf)$V+)*}h;7|;iX5wo3oO!u&&OXhh
z_hT-~S*3nfcVE6H-y%<D{!XX2j9q=Qv8Js)Z&;Vg%IvtflgA=LXhzY*pS`UyoNErw
zX>hSCshhO5y=MC!^<^g8rZ<$_D7P#*x7AwgRveSE?wlC*4RIFl8Kn-(`~A%esqb;(
cSh&l+M^RVP`K!-Wpz9etUHx3vIVCg!0Bwe3LjV8(

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/dark/tree_solid_collapse_2.png b/dist/images/1x/icon/dark/tree_solid_collapse_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..1a12e9300f27b147c99d19fc95e02ae90809a75f
GIT binary patch
literal 346
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5|GlS+V@L(#+o>0Mn+ycn)*nk3pU67Hfqg=`
z@(TgGpHH-zJC2k~FsK(W#vEb&kmYsB!*~6(8#C@qkCB?C{rCOyrwkHpiA>5Gp0U@@
z7R+dtE>}Eqc$x{TRMBUl#j4NTC8T?1>rT{ixRm6|sVXSDy72^y&4FGqqXW$1>^?eI
zD_ZqG7A5e^kqwyked_Tnz3}tA^CnN1c8y&6I>-Kp&GbhV7v?uxJ1}YY7-}7^Sr@wg
z{PiMUfgk&gKe#c^tKfXWe`h_53tzoO(ftouZp(}3o-CZbj_dHIkFzFLU0ks7%lDe;
ps@Il%?tHMlfpr6em_W<{;d39n&qrR3bOm~y!PC{xWt~$(699S)gd6|>

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/dark/tree_solid_collapse_3.png b/dist/images/1x/icon/dark/tree_solid_collapse_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..55970ae4fa822c732b024dfa74bfec91833ad4a9
GIT binary patch
literal 371
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~!m9EYciV@L(#+i4ehn+ycn)*nk(FJO*n;4ERN
zG;iX2DD1z_h@oTOVFrsv?gvVG0qd8k@Lu_{fwN^vd{Jh`y0`Zq_c0%6s;%*BX=LS|
zA)$VNvw%rWe8Uop!gJvk6?cE`(YT(pC)MVHPPO5&dkGDUj3Nqr8W*G%JX|araNzP2
zkFJI#2YH>ll)2V5bcFIfaFk9=I5>gh#f?)R8S9PuwE`w8=I6_u*coDXeTMq|jD%K~
z8>_0<Kc5#b^tJL6#{_}Yj<Bp}!B4-vs!{d6e&SEj0%zW75u6#qc{+^$8uaJ5e^LI<
zlxuuyU8v5n<SnO7PkWs05MkUIxPIf7(z-6^<jX%>e=8O;&0$b~z<f0_>`u>gmp)(^
OF?hQAxvX<aXaWG1y^fp!

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/dark/tree_solid_collapse_4.png b/dist/images/1x/icon/dark/tree_solid_collapse_4.png
new file mode 100644
index 0000000000000000000000000000000000000000..ca993437399f96ee5266131a6d4b1ac44c576d49
GIT binary patch
literal 342
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5|Fx%!V@L(#+o=b64;k>d${v}?d1FEB0^tKp
zcLWVsm(SZ##<1$pUfBgc2bfX?#W?u9macH=>R#$L^^b~n*Hbh5b+OC_H|C$)X_&B~
z;Y0_6paRn(?uekKE!VVTCN12*=GE57{P4Mza@Cqk?+G|CGKwVdt+-&dVB#X#fCI)N
z9;X_X9u|M6(WtS5QE83Tfo8K~4F_lN{J3%JD`UM;zh1#c&G-59BI6Uk>s~u)E`3AM
zUFNF&{O56TMdk9g%ql+8i>}JmKfH7AtNFIl<}>Tr*tQ&KQC*<FV<pQH<$nd7hJ7~N
kdk$+bWJ+*0DY!gm_L1>jD0J$&CeYgqp00i_>zopr0E1(FS^xk5

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/dark/tree_solid_collapse_5.png b/dist/images/1x/icon/dark/tree_solid_collapse_5.png
new file mode 100644
index 0000000000000000000000000000000000000000..399b591c15e761eeabef9c3791f105a6e7f07383
GIT binary patch
literal 312
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5|E#BrV@L(#+o=~h4;cuw=|9@seS_7iQSZU-
z6~RBAOkN+mK;-^y##bzQ0pf*?Kiq>jqFx*oc7AAQ;ncVP$-DOx1vI-BsT?bCxps?n
zn(EO)^J6y0T#6q(<XbNw8$4gJtmF2K3DFIUo!zDT1o}*mq_{B^TsXzb*-@C#u{D1E
z7gZ(pI>#-{_df0WeCIjW{(M7qee+YR?&b3z@4sKHd474p{5y<dFAUtTF#l9~VRy#-
zoph4HUdf8Zs)~!4el`9MXN)|;d%VtklD%8kB8`)kOs<=qruhD?iUoR%!PC{xWt~$(
F696facc}mX

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/dark/tree_solid_expand_1.png b/dist/images/1x/icon/dark/tree_solid_expand_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..6365fbd12e0e98d26d6d1f87dd1e7b22702a406a
GIT binary patch
literal 246
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5zuVKrF{Fa=?bU<44GKK07m{ptcf481y`!Po
zvXS`(i(W(b4u-m(@TInblm1U?Yqp=5q^#uP(rW3eaqLFo%cIXq&c*Hw(6)N{lv_*V
zvz+PTzL<dBjVcQkdkP=vT)XIsN8+7^R5rOE`<SPFeEhM^^5)S6`-Cg3O-g^ZJ4amQ
nsW>d}SDP=gzo(<4Yd2%t9hpR?^LFV#XEAuX`njxgN@xNAWq4P@

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/dark/tree_solid_expand_2.png b/dist/images/1x/icon/dark/tree_solid_expand_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..97853cceb1e7f9e77321dc4874b43d47a058c022
GIT binary patch
literal 311
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5|BR=LV@L(#+o=~h4;cuw=|9@seS>w*0=|U%
zN8Q>#oK&A~Aa;K?V+oV^itZf_f0VfvO^eA;6nWSDIO^B(y-TM5acNTE=nRyZSe(~n
zveY8aYh|^EiJIKM$D)f8Ul||aD&*zd$yy<GX2k=JjY-pH^k^6cIr#9~9Q=QF;xpa;
z^DicM?>7jI)%$ApUu@2qy6=_qYgi)^t{J<?F5F(n<F4&%u_AVY>zsm|`!7=5+81B7
zTYtLsr|}wl<Ep(cjz`@4U9-4*!OJa*z8b6^j6nyO4W^pE5B<JtGSFWPp00i_>zopr
E0OfReD*ylh

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/dark/tree_solid_expand_3.png b/dist/images/1x/icon/dark/tree_solid_expand_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..962e23207e23b0a9b56b256dd8f99c4d645e3b28
GIT binary patch
literal 338
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5|GB4&V@L(#+tAazO%4KcP3NsWz_)-=`vB9E
zJQm$U!s@dbE?SE$5WT@*mc;z}Hj8kRcNs@J@5wzWMm1^ErzhUCTf})|`SUX@z6Y9Y
zoH;lc6(7t!Fe!M+);LAhzt3GG*ZS^zT9q96EzGO-1fwfYL&Hyp&Ww(BfkKAH>8mGP
zZ4~1*>#=NAh!GYxYWW=CDE?!=;H9z$Uzv+PnTQ8?Fs<(U#rplxq|*0$%Ntmgon1^9
z?aN#Gx`pTAnh=3Li-$~UvbVX{q)mx`edS5=CT*S55ot$WIqbeTf8(E$I<MsAFL@l>
e0zi)Xz-so->5q8x>eoOoGkCiCxvX<aXaWEmtbWh{

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/dark/tree_solid_expand_4.png b/dist/images/1x/icon/dark/tree_solid_expand_4.png
new file mode 100644
index 0000000000000000000000000000000000000000..af4d70c2cfef69767ce50a0f8dd3a977d7783f04
GIT binary patch
literal 310
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5|FoxzV@L(#+o@-Hn;ZmM(|gmkH!x=$;M&0W
z-fit6VfEP)7L;o^Xm4Q5Il^|$oRi&2;WtM+@5!2zDL*O?oHp95Y}EYt>8$J%JYhnT
z#tCd^97>q8-Ja~dub}$(wQFRqsr|b;^A9(!TYjI+;Kz~RU>~3)_0U65UE)Ve%N4FI
zCKV4G1rHVIs)V(ie$k}&W5493x+mYbOFvy>E;%8&*y=U+yra7B=efr-a^*U^m^#L9
zUn_m2s~|9Tg5QmYLP755n+_(5G)TF%B}!cU$-H)x<-rY)*Tw?9#o+1c=d#Wzp$Pz}
C2y%S@

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/dark/tree_solid_expand_5.png b/dist/images/1x/icon/dark/tree_solid_expand_5.png
new file mode 100644
index 0000000000000000000000000000000000000000..2bece8ca7180f5665cc31c5669276b03feceff55
GIT binary patch
literal 278
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5f3>HJV@L(#+o>CQ4;cu!p6{6DdV<MEKx~2g
z0g;dpA3@hICm9SFxm#Q#4*c{Jb?y2TJ6Gwi`rMq;_cy(-`8JbNvBkJi@Tf$2#<yw5
z^;<r~3+47I=f)kj3W`6Vx8ePy3APT4n%&jiIy$zxZ8A(RX_zA;ap3Q?j6UPb`A<%&
zm#*5ib6)=UBCU$h^T#XR$T4zN)Haw({xVyexW(&G=-wu!$L)(>w^bVoIdPO%E%(&h
U@=ij48|Z8XPgg&ebxsLQ0Ny}l0RR91

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/dark/tree_solid_vertical_line_1.png b/dist/images/1x/icon/dark/tree_solid_vertical_line_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..14180a6806d989b3826473d4fae89569f07e2cd5
GIT binary patch
literal 156
zcmeAS@N?(olHy`uVBq!ia0vp^0zj<5!3HFyJAa%3Qk(@Ik;M!Q+`=Ht$S`Y;1W=H%
zILO_JVcj{Imp~3nx}&cn1H;CC?mvmFK)#`;i(^Oy<J&U}c^Mcum=Csj3i>oAl^kM{
t;CW=fGTSfe(}`KR@|O*PN`asu-+}pY0rPIz$ov8j-_zC4Wt~$(696m|CkOxl

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/dark/tree_solid_vertical_line_2.png b/dist/images/1x/icon/dark/tree_solid_vertical_line_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..a90c243dc148f6cb8c8e1f4d59b405fa28f63d03
GIT binary patch
literal 194
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5Kit#BF{Fa=?S+Mc2NVQcF1C8cFPzdLA}Bdk
zODUuER6+qyUu5IY^NKTmmkTj4+|W5uaMyoQQq+${f9l`==-c$=;nyh-C+JS8TrK*H
lwT4B&fq{`lV1w-fMpF%r6$>ZMHvn3};OXk;vd$@?2>^M|J>CES

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/dark/tree_solid_vertical_line_3.png b/dist/images/1x/icon/dark/tree_solid_vertical_line_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..b5c3f80169256d99a9b905499d87ff82cbd46ded
GIT binary patch
literal 195
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5Kf=?+F{Fa=?bVH(42lA*7weCIEnO=S(K>Nr
zsKkw~shVxGPO>$fX_$F1SS-xwNlnM&6Bkw=W&~;kg5!+y&upzvSDij**>3Yc2ZFDM
ezda(r1d)^NJjBDezSaLOi0kR<=d#Wzp$PzM(mX5x

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/dark/tree_solid_vertical_line_4.png b/dist/images/1x/icon/dark/tree_solid_vertical_line_4.png
new file mode 100644
index 0000000000000000000000000000000000000000..9f4d0b0f7ce16c1d0a9dc6d4a532526181846410
GIT binary patch
literal 186
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5-`~^4F{Fa=?bVH(42l9S7a#7}mvi)hR!`5G
zLkEJ^_#72VVdeeTeAa$;Ps#&lpVuiLUK%lRC^RrIaqN)$a5`tlT+el?%bOYZ+J10h
cU`Q}#Jle!H-_(0n8qjD4Pgg&ebxsLQ0F`GsqW}N^

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/tree_solid_collapse_1.png b/dist/images/1x/icon/tree_solid_collapse_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..06e6d581daf259e2ba9a77d9303fee81ca90e3c3
GIT binary patch
literal 312
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5|E#BrV@L(#+pCUTO%5V#58^YEow&;{34UUl
zyFl*(>n=z2muzzvFyG+Z<shqgXD7#*xtA@BXDfW@^_OV*-e~Y*a^-t>83ztUrf!eW
z$Zbxua~>#X&R_BRd%#U5k+je67TvC$@Jf{H@43MB@0^!zVXON4Z2l{URk6>)@3MIE
z^qJhB+1)trK>Wvhx_J_v(+{xx5#BKI_Q}xgrQgrJ%j{hC$t$^y^9JYJDKBsN-P_|Q
zk=e%i=Y^NSN2w2g9#rtISYc3a5u|(Kx!Z@s9vq5IznQqy^a`|>mfZt-jKR~@&t;uc
GLK6U0BYchk

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/tree_solid_collapse_2.png b/dist/images/1x/icon/tree_solid_collapse_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..e14b70839518f02a048a1ce3e0f841869c5257af
GIT binary patch
literal 372
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~!m9H*y?V@L(#+o^_pO$H)u^N+B4%G}^!FA!jN
z*IVG0uD{@(BfGF+V&NmEW85zoKd|)iy?VfTL&9eYZw_~J7bkzVirU{vZ9(_E>;LV0
z#>m0K<alsOK;WvVR)=-Ya!($x?5jV?rOnK?t#XG_QU8h`96XbZ6*k9)Y4|a;=GA@v
zwc<wCHbtcXj|0t%w%&Ze@cuyb5<jDxhuS|_eqjA%Ef6jDzfxq@$yt+YN*}&5G|$O4
zdQ%#`@^PkF*0smg5BVNUD4iVg&1&nq7ktv|FGM>O3;apswGrHPfOCGsk_UCl3R;qH
zasoFtypxVOdtzR%`xnc(`qNg*q!>R+s<((PVPJ2)&!p(UA;82XUcmk&)AF_1lEd-9
PKw|K8^>bP0l+XkKARmg3

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/tree_solid_collapse_3.png b/dist/images/1x/icon/tree_solid_collapse_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..1040b0b1dfabee0ee87227c0031d87786174a4ad
GIT binary patch
literal 391
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~!moQ$W7V@L(#+i8Y;O%4LC?#az+Vr4GX+*>z1
zVanR_jp>!_76U<HDQ&%kJq^>uUa;!uUOB`pVZ|l9l=)^W6XW3{rb3fyPqwAbI9r#N
zF2NvSF>jrb<N*gUp*HRZOgkEmus#WhTN)(jvrx<=e`{^4U&|(uDCHUA20hkCCNT1p
zFlRrlm>>Ah?8@8+d<XW(K8h(6RG4sfewF;w+2ZDX93nZE0Rp#63>x|!RBrZ}-#j>d
z$r7$VI~2?B-`S>eep!{jX~hc@sV*DIZ@boB_-G;>db56h1xvvMqch#FC+rOfd&%Ln
zO5xRQ0Y|Rl2fW_QZZ}veIKRs?mM!x;FZPt%)S>A$tNg5qM$-K!O0D8`oU<pK?cn?u
ieU7z&G3J1N1>-y;rv>L;`7Z*78-u5-pUXO@geCw!NR9gd

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/tree_solid_collapse_4.png b/dist/images/1x/icon/tree_solid_collapse_4.png
new file mode 100644
index 0000000000000000000000000000000000000000..f6155d01760c750c625a83e0ffaa3bb603867824
GIT binary patch
literal 370
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~!m9J{BBV@L(#+o^_pO%4LC>`BZjVkIoq+#5DL
zVanR_jj4*$o2xqS0qd464*Ch13&rFPTnL<@A$vkkghNBveBy*R-fEF;ioa*hy~&vH
zpkmjpBMpp#S#8`8n07SWV%-uDxawA$gVCpVYj?lD(7GhLHGjzirhWD8Tr3A1%sIjf
zzetM8H%h9PvmJaJAlh}Bp)u#*mt`v=B5xm23fOS9VG-|2!-n$?nvXPM-#l=ay2Khe
zX^MKiTx-~?;!E50Y;0!rF5NrB|5)>(k6)@|t$)W<vlUD*o3gd^;QAMQTWywbpL*9O
zBo)D&-=b%5NKHX^$A69vmdW#UwZwQFnr5@gw_OaMaJb{}!-A~mtQTD^X1$p#^a>b6
N44$rjF6*2Ung9a!jC%k8

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/tree_solid_collapse_5.png b/dist/images/1x/icon/tree_solid_collapse_5.png
new file mode 100644
index 0000000000000000000000000000000000000000..5d5f9c1a0edcee59802ec5ba59ef2f5e8aa71272
GIT binary patch
literal 338
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5|GB4&V@L(#+pC6rO$H(i7x)Vuh1kswG0Ge{
zIFWnB#hctORAnUZ>}(Xj!2E!7Ps6;%-h(bTSLD82kaXy{l=S5Plhl^}SvLRvBqjl;
zjzlr7Q=h8>ESNJ6Yo43%eEPBtd<iFxp4RpM-qMvW@X6Bqp0!!)BO!q!kGAJDcD?;o
zJ&&b}*D9u7X*OF8>%C3OR~0w#zYKlAeJgx{R^`{HYkICkEV{R>;B1Pi*~co=`Mue<
zjitUlKA!$q^gv-#$NV?3xp#PlZpL-)cR1tt<FN6EB|eUm<CtC@_^Za4)>@PwxUpfM
hc~87si$KyHS@CZDr&COY^nhMw@O1TaS?83{1OTx8hfV+h

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/tree_solid_expand_1.png b/dist/images/1x/icon/tree_solid_expand_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..3511c173d4770a8f934f6ee8ded51e77a37a859d
GIT binary patch
literal 268
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5f1#&~V@L(#+p8OSn+-%*E+~6BD=l4++_u4e
zlY`iagqaG=D#9BW&N#R?vXmTPcj26)&HXa2aYD_s{cH851q46pEC>oLahAUKP${Q)
zO6pc|>t;jUd$nus^ql(ck#p|$ze{^H!VhG`?9q%1`6g7qmg5xXyp;_5*u}2@NWB02
z)C>O7kL}IO^A7BBULKnlC@i;v{g=YbJPR%EUw1$Jlj!WIFlR{DQ;KDrbvq5{SO!m5
KKbLh*2~7and0yE7

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/tree_solid_expand_2.png b/dist/images/1x/icon/tree_solid_expand_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..ce166506f37e64b965b2cdcdd0417e8f0fdac0c6
GIT binary patch
literal 330
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5|GuY-V@L(#+o`r(ha3c2)suu-yGsr-M@Vpc
z>nFHm>o2(H$bFC_b5C;xqiw^y1DBk1Z5(%rG%YiJ$HEe*;vb~b_%q@E4f8k2<<k^}
zSR60(Fs{^D?KClRdA-46<JO0!zF{gYPd*&?x@qh9Yle)dalq!<St7;<K0N%sfIrjw
zo7>C=jR|Q-80InSpW3$i*SY??x_6so{cG}#-jv>cw|v3P6_xL^-<mfhhDB>_zP@2z
zJ>zi(520r-#E-O1-lMxjbw^%`mfOD^n@5FK@jCmH4kS(KJpA!d;bI;Sp)N*41-5x-
XI`#94KhNv{dX>S`)z4*}Q$iB}j(~kC

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/tree_solid_expand_3.png b/dist/images/1x/icon/tree_solid_expand_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..d12f28a4f402d98f51de30b45fdbd6c926888fbb
GIT binary patch
literal 355
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5|A(iGV@L(#+iA9ZO%4LB?8(e(VkIus+#5E0
zVM^Najp>!_76U<HsrLzc8m5W8VAavRa)?>Nic5H@aQR9O`$QohGnLP(2bl6V>u<KU
z<_>5${Wb9;H&+1T!3m5;4s0#bD;9;Uieity_IN)3xs{S;Pu$Eex_^8Bpi=*YBNNX<
zhWom~_XB=0@QB?p{Bgc`o`^UjpZuT4eF0Ifw~d80G6bioa4))IGWqUr$$Hs}-R}1`
zto@l{@nUA7<MO+k7QH{D+|ayy;i9(}s^+m~Ry%WT;qacq+L+Q(+<mEu&!b?g!eWV=
wr*BTN7hnBV?IL?*50~TdBA}~I9I*ev*cN1=yt&iW0~iJjp00i_>zopr0L+$wT>t<8

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/tree_solid_expand_4.png b/dist/images/1x/icon/tree_solid_expand_4.png
new file mode 100644
index 0000000000000000000000000000000000000000..749e30ea0a8da1f81b828897e4bda6f6832017ff
GIT binary patch
literal 334
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5|FNfwV@L(#+o`sEO%4LB^2gYGbY66P6H7>Z
z$$BK?E$bJdX(ICub7y2W#vQoiq-)c#aIrz4RpIn51^dYXIUdiv6@Gs<`)#y)GxL=P
zMYR>5oOz=Hc%&1Ua~yUynt7(qignpFSJv*w^14eGsvqw+ttxSs*cZ^q#&weI{@Q^1
z9={~|INk|e{2ZgY)YU=B{67o#q-z_#9b)0!*TQ?U$wc<F=>N=vYx>Izru6o1k2{+#
zY_2WA%O1CDy$zE|ij>r~zBSV$Cww=1a$x!f$4G%}zoKm_x;X+1uQoL$g>Y?@FyuL`
b@tl2Us-7%w%6Dd<cNsig{an^LB{Ts5k0g4R

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/tree_solid_expand_5.png b/dist/images/1x/icon/tree_solid_expand_5.png
new file mode 100644
index 0000000000000000000000000000000000000000..c4404c793cbfcd8649215fd84c8d66c2ed09446d
GIT binary patch
literal 300
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5|DdOfV@L(#+p8Nn4>^diJrLh$$=Y3VkWr_n
zbt$*R#apZ;oTo+3J!G<K@O!{y<-ALzX_@gpZVn}ny4CIv{&y89{x9smW9`?{aUz0Y
z>7fnkt<tCLV+yC*?7w>SR?`Zx`gdFIa8J=!y=JK`JNNaX2*!Ewe<tcK%u%<>5S%bg
zBAKy*e^2RRm-(CJ<NJ%w`_*mmHGh4yW>yXRvBi$Re&+pSH&|zX@!Y+`mGxYIWEf^|
ta9qBC=TTPv!ZioJxBX0YaY=c{`hSjUhI7!*^+3-sc)I$ztaD0e0svi9azOw9

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/tree_solid_vertical_line_1.png b/dist/images/1x/icon/tree_solid_vertical_line_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..a6144fe08dd863af7f78d949f58084d5c94b36a7
GIT binary patch
literal 156
zcmeAS@N?(olHy`uVBq!ia0vp^0zj<5!3HFyJAa%3Qk(@Ik;M!Q+`=Ht$S`Y;1W=H%
zILO_JVcj{Imp~3nx}&cn1H;CC?mvmFK)#`;i(^Oy<J&U}c^Mcum=Cs{yeZI_Bz=fU
tg6EO_%51-=E}i+g@|O*PN`asu-+_6{9yZg*{r@#Ud{0+Dmvv4FO#nMkCz=2N

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/tree_solid_vertical_line_2.png b/dist/images/1x/icon/tree_solid_vertical_line_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..9e8cb49fd67172432970effc2c87c7568b4116f8
GIT binary patch
literal 194
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5Kit#BF{Fa=?S+Mc4Gugm7kQoaHCRL^T*~O>
z67Z<nnIL)RY?tx>ogHWXxG*s=G`I3x|GVVMru6ja>5r}bH*M+Zh;55pw#w>%_*Vn_
k2g(f$OdJXg4G$UhdzHA;7tdL?3}^*|r>mdKI;Vst00uNY1^@s6

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/tree_solid_vertical_line_3.png b/dist/images/1x/icon/tree_solid_vertical_line_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..f2fa3231168cf67c324b10893bd7293204a8b408
GIT binary patch
literal 198
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5Kibp9F{Fa=?bVH(2NVR{9{zVK^PH+AoU(Pz
zG)|p0bDkXuvfk;`^8LWMN5Oo4TvLjE-U?jc+|3Ns2?W!a{aB4Rm#3-Pf4_S7?tk_>
gf92y%g`GJdvLUNo`R(q;7d3*op00i_>zopr0PAu)EdT%j

literal 0
HcmV?d00001

diff --git a/dist/images/1x/icon/tree_solid_vertical_line_4.png b/dist/images/1x/icon/tree_solid_vertical_line_4.png
new file mode 100644
index 0000000000000000000000000000000000000000..90249bf976eea71b9d388ab59af007f5d5605fa3
GIT binary patch
literal 187
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oVGw3ym^DWND9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5Kfu$)F{Fa=?bVH(2NXnHFMe0uy~JxG=cZYU
zQ<=H7rw10Y{A}X*e&BWfca`=j-ZGP&FQl;uI504>2yC!@FlqA4TI1<|?8;*#1pZxH
e#lUdjqSYE-KI!x=zB)j&89ZJ6T-G@yGywo!>Nu_d

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/dark/tree_solid_collapse_1.png b/dist/images/2x/icon/dark/tree_solid_collapse_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..9bd5051d11c794861e1e4680b06d2d7bbbe072cb
GIT binary patch
literal 371
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~!m9EYciV@L(#+Z%T|4;e_bJ`DbNi&bW!@D<jW
z1HLj2F$Zc(80Ice-qFB)W&MSwzZ2tT=<7bKRS?nAkSm@P!3i`F2t2%&HLO~7>g}fK
z>$9h&E@g_;Ui0g;{L}o6j9cW)-f?B8FAhkEW4x0)D^6s>)z$l0_!E{M5o}0H3f{Hh
zV~*RpnL4R#IVQqd3y!GDH(a+|usHI`FWdhyKR%_+f4^b#5$AJ@SQ7Gt*U#U7=l&^4
z(EyqDiPfd7x8naTc_=?;x>ASGfr#nVbM=$I)biY3Amq+4%YTY%p4Xb#gawuBp6@&F
zzmUmmPB?2>a{BN1`@wvBm^7YzV7To3f??e!@yEsx4>Z(&Wt-+@qS};wMII#L>FVdQ
I&MBb@0HUOheE<Le

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/dark/tree_solid_collapse_2.png b/dist/images/2x/icon/dark/tree_solid_collapse_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..f6ffd60444cafd8d10aba05edd74b24946545916
GIT binary patch
literal 453
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~!mT$HDaV@L(#+Z$(d4><_1K6tM2+{A%%-2oE;
z&7E#PcRroKXYo|z=@j9W3hgqBMFcuU7(@e@crP@}oZ7>Z_H*Nmn_ErZPY%=8l{k`o
ze0O$32Nax`%GC90m)_FdZEHOPMT#|cwygW`*nPwG+YHyzE-kxYIwj0;W++4O%w_Wf
zRGx}jePz&lAj9mSX0%j0vwPXp6HD}sA8^gw!17?uZ-zDB7^7#+j@f<AJijJ&^SS(q
zdynuOo5Z5<uYb?Ked#q9<bM48D{a4jPha7p_v`zcpUX~TxU{3Yr&TE8|L6Q0whwfa
zuRr+sFYU{hg4Ns3`UyF#nHFto?;rTyFox|R&`vw=FAl3h6Wl+?<Tsp&U@ADbiluGi
z-oHENb25i9h8R>dWI9?mcuqHOZ}xq0_}jL_sdM)&zWyX6yuGbw2iE~hHiqXC40Dnh
f3i=pPIXgwqc)8w)x)81a40Q%iS3j3^P6<r_#d^Ki

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/dark/tree_solid_collapse_3.png b/dist/images/2x/icon/dark/tree_solid_collapse_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..1147dcaf0252d55b74ca09e08be38d3b4746e088
GIT binary patch
literal 492
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~!mT%)IpV@L(#+grX~haF^CKZqB;WvyzNqp-JO
zLG;Ju=ZA!EOw}%YsukzpIQ<c0OI5=+7TYHA7p#x!Rh*<3t69W<xX0h-Fl)<~)PFN)
zZgFsWE*{>S?UBL$M1<jlCc}ha28HDe4t|UcbC?(`Ss9AB7@oXfzR~LLdwI&XoAOnE
zKA(R5{M*NUJC786UZfHBVM&9#Si^56<Cf59hVl<bviWap*s`r5J~&&{hFkQ&q35AR
zYsz=_erGV@YKYmyu*N(5+P&LhN)uzM4#)`wayHCacBo^)-jk)TYd#+f-}d;A*lced
z!H6jgXKu@{zyD`L{iVB!uiJ0c1+6!{aQX1t^_Od>GCZ<)b@RE`gV(3xqhGK4aLxAl
zgD*c4%F2pn{7uU6j@K>EsuNv&?{|g-izRDA$+Z&>YXTq4{<iZTOXo@!2fYwZpWn~E
z{jc?B5zuPjVw6j0dtlx0b4K&sL&tLOeknVWx!6uQ``6|YHavmxgTc8hXvRsi3@2dZ
OFnGH9xvX<aXaWG@h|#nF

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/dark/tree_solid_collapse_4.png b/dist/images/2x/icon/dark/tree_solid_collapse_4.png
new file mode 100644
index 0000000000000000000000000000000000000000..47a70f457f7d68216270d47249b205f7c9844c12
GIT binary patch
literal 460
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~!mT%xCoV@L(#+neWo4;zTEebDbP<}PXRnV{Fe
z5`JX9G`rdYb-xbb<r^403S4*^LfA6YUvTJLU_E2(wbZQiwny!@#rxi?M^3y`|4MxS
z4Znt-y!Uc*@=v_rIA+KoahxGRhPk1ThXIu{lmCH4*PP;|GJd=F{r~*>_x~UNUcI|`
zcZWuo<P?zr6~-U-MouwXSw1kSu2N1o8FGtdSKB2mjc(BcE}wNOjduNUv}HKQWS|$#
zV6;R#bHA_lM9+A)1Dr;QoChrQS|>UbPt3ml^Hb~koM%5pH%*(Nv`K}rW4`Qq``j1u
zTdY(52b@;^DkWRH$2LFq-DZ{v$6ObjpMK!c8GEnn_aB}$o`3M`Q%*^7>Al})FLVXy
zZqKTlw&<R-1@9pXwuYK#FB(HOADH!Q-#vzz8(9)!)(A<oUHkUCPF<-()S;Eb+#vY^
mUqa81pg(MaP;hbKFXq{Xo_~)2{#p(Ud<IWfKbLh*2~7a57rJ8r

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/dark/tree_solid_collapse_5.png b/dist/images/2x/icon/dark/tree_solid_collapse_5.png
new file mode 100644
index 0000000000000000000000000000000000000000..46718d2ca00cefbe37bba088691a9524c307944a
GIT binary patch
literal 414
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~!moUx~iV@L(#+Z%g*4?9R4`*^%#7OPQ{dV!cj
zli0_Lfg2pPv|L<8)fOyp;b{<I^H4j%p)-N?Ok~lLBRgw6c78v1>Tms}lam&!oSIx+
zlkN?)00<nyxL8B3m%ikizR6UxD`}m>Inl7skKH$2zs)c$Ezd{v+J#=P#z<C!(#v0B
z8FyBhwm)E;qgl+dz~#=Ab$5PbyRUTlWyGvEg+nyp*(Ux2S@Ii}?LARiy|3z__U+QT
z-rL@1Qgpl+&b^;^J%0Nf`4az{+W$TB^XDD6y72t??Q_3nwH8?9**u@crSt!%c<#Li
zIyUbw{(XD(#lv@2H_WWP820IvTiN$tESI0=nA*oM<(!kPK(^?O3wGC~H4L>DoQVug
zcyar-{O_4Y38D_F&FnM8oY)N}?v=RD2=UyURrM+&wl;#@A6!8Kp00i_>zopr08N3T
A7ytkO

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/dark/tree_solid_expand_1.png b/dist/images/2x/icon/dark/tree_solid_expand_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..edae4d431c55a65f62238d802a49db3a139d9bf3
GIT binary patch
literal 308
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5|D>mjV@L(#+ZzXYn;Zn(9@h7!OK)J&ZeYtf
z;P>Wm-3Epg2i$TJWQA-hTF&I~eBRgchW8M+w3;>}P%jXy6tP^jH7;kT*0lhy%9AGp
z_dT1wU;EyDwjZ<JNIhM>ef8wcD;O5nF5|b{^ww1W9V4Gt9|IKWW%2#k*mFXCZOY~&
zOA>sUW-Q-ksVx!hkb7s#y=Yz&&I?KU`A72uP6|4JkRgYr+x|HZciszTT*OquWpSYA
mfowv+9<lQfXE1zw#axjlIZx}&BcSIP7(8A5T-G@yGywqF;%xN*

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/dark/tree_solid_expand_2.png b/dist/images/2x/icon/dark/tree_solid_expand_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..0ed147f1bb5b179c8cce856ec9d5f0c3bb9394be
GIT binary patch
literal 393
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~!moSdhNV@L(#+Z$&+nH?pLef-~*F1>+8+e1p=
zi&oton;VXPVGlIJ9voa8(ICL>p|wF!IwD;`PRQv*%lEr1^PaOGJ}`;@lltLvIx}WM
zf#*w(E8qXR&eS_;`g+&9c7^3fR@v7%?OV+IAwTfgoQTIpZY-y{4D{<Shcium8oK-g
zgL+3X!x2k{M=}hBk-r;6PwRe?>^&8i<haR^N#y>U=QV#19e;lP%g2|Mr~2;QkJ~n{
zd=HDnG2XXz=COPB@113HC$>FzGdrijk*Isq^P8b&?GaQuUh$Jh|BJEb1knVSL(FG*
zE;6R+>aSy;ZFT)^?%~_B_B~!PH8?h&o&Cvfu+@AG7VHjlm=(@33Or|kn(~ifU7B`a
UvVHynV8}6ey85}Sb4q9e07XWfumAu6

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/dark/tree_solid_expand_3.png b/dist/images/2x/icon/dark/tree_solid_expand_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..e0ad4f8dceb9b07eb6d0ee7c4f744a122c3401e8
GIT binary patch
literal 431
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~!moQtQ6V@L(#+grX~haF_vKB_;u#a+STe<9A{
z!rC7jiyv~nIVHTKOFZDh(h7!!atmx5#Xm9?y6p<kR1N+&neE<p_C$pxy0x<=cuL(^
z_<HtkJ^eQq<Q~Z|6!JA#ush6QRyfBf@SLHenBj;e!=oq6Z-iI8-nH07=KI}$U*G;s
zuc>>J_cH&U$ys$rDW;_iKfBMYSnbOw$04+f{m&+!(@hbVxA<^`X&+Gf6n^T`y{YXV
z80@&ACVmc?!MJAG33d^$;!f46yg~{;6Rg|+hc9{EZuWQSy-Sx*U;caS<vxDKwnDd^
z>r1uu&-<r^i!WciU*cDCM{;Gf9j_9^WuIL-td^~=u2}fqlXWYT&x!)(&229jK2PfX
t-0Ca$`OCHksjl-4v+5$MSa5o(hFNuzg<w|LK2St3c)I$ztaD0e0stxDtNj1~

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/dark/tree_solid_expand_4.png b/dist/images/2x/icon/dark/tree_solid_expand_4.png
new file mode 100644
index 0000000000000000000000000000000000000000..f49d17b23f3029dd4d13b2620125137336280f2a
GIT binary patch
literal 400
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~!moT{gbV@L(#+nZ-SnFB@I9+n^3${W!ns=~{$
zOSHaBZ_R-<YYtq!(a@xKl&K}cA*iwU#(}RrDTz)TlMBxIp7<%ZBSyl>>E6u5cV`ZW
z-Mwc!C2xZ(yUKC~>}a~(0mVKqO?9)m-~Rsjef;_TKfhw$z0AL3a@O2WN+z=5U4Ku<
z)u;ybIXmPS|NG?nd@$W&cpx&Qq4Rm%s~Z=u`o3c<5mm5c1tZ<ol?mHi?2>%9O`9RK
z#*5+e(X>8s^BaGiv)5mVuBxi8jM;hTx~7Ay_?q|WH;=tOz4_wVt3S`(=Q+EwP%qzW
zy5po^1`xXJ)FE;Brm@ZS_bLt{4UCNZ2Fexe62j|`<#)iqo7M5PzWSxbe}7Z~1CYVf
L)z4*}Q$iB}WZ0oQ

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/dark/tree_solid_expand_5.png b/dist/images/2x/icon/dark/tree_solid_expand_5.png
new file mode 100644
index 0000000000000000000000000000000000000000..d05e40f72330271755a0637268b7ae44ea50e933
GIT binary patch
literal 351
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5|BI)KV@L(#+Z%g1nH&Y$9=<<vgH7ik*A_;{
z;E(FY8<>@~4K8u<@Em1g(RI+?ASi7Se!)TTW8X~IJKq~q6PvByJ#L#D%Lz0H2t2&h
zoGa&<AG$JaeeJZ=bjg*cuDyM{{L}Z%j5c!)S)2;f?pfAT$y&g(|7B2{Q{`Q?&kR~#
zGK?C9EDMeZHV8ex%5JlB`w3G~k*dzgb6hzUELP0<_4-iS?&u!%&8_>k#GSRDSFXW$
z^kQ(~^z!b*b?H`8C1-EF(O^8X;_0RvY*Q_m0v>TVbS@U0)PL<S-}x^yiynwN1oMf{
mkXyri<8*vaImD3+|6g&j87OT%af@jSNW|0C&t;ucLK6T@#DWh1

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/dark/tree_solid_vertical_line_1.png b/dist/images/2x/icon/dark/tree_solid_vertical_line_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..efcb7d9c8345f7f81da6519cc99cdf98485fe2bc
GIT binary patch
literal 177
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3HF&`%2dVDb50q$YKTtF;x&|^bAt@02E{_
z4sv&5Sa(k5C6L3C?&#~tz_78O`%fY(kniT{;uuoF`1agJUIqo8BL~DM2W?=v+-&6B
qWs-jKuWIkNo$LJ;Pkjhfi4WL`tY-QCB03jjB7>)^pUXO@geCy4_$g=r

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/dark/tree_solid_vertical_line_2.png b/dist/images/2x/icon/dark/tree_solid_vertical_line_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..5313fd5c6c1ec16f1ed503bd766d813ecc84b1bc
GIT binary patch
literal 216
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5KiAX6F{Fa=?WKbg85smzF7A(JDxJ{6q4H26
z*yzC$jlXehpO<q3)qz0Wy?FT&o4N1z-h5kCS@pR7F<)(Cczo6JpR61gEEuKK9Uik}
p%wgyiUQozn;@5DD6HV|lqujbYHjcGrsyramJYD@<);T3K0RUVsK~(?%

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/dark/tree_solid_vertical_line_3.png b/dist/images/2x/icon/dark/tree_solid_vertical_line_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..bc37a5fe3201c6fb159881607a781eb867d97bfd
GIT binary patch
literal 256
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5f2ya8V@L(#+nXDCn+-%5E_zRK3{L6vIUppG
z!<EFi;($lF|0f2!=>0zpE`0wU|NXE-{u8c-7{&?O3`MLC>ljXmGVEkh2xmYSw5)9q
zXTG~pD*oBa4}HJnKRjeS7x&VO*AZPER?Rzk*;%>v)acaz1Uitx)78&qol`;+05<hc
A$N&HU

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/dark/tree_solid_vertical_line_4.png b/dist/images/2x/icon/dark/tree_solid_vertical_line_4.png
new file mode 100644
index 0000000000000000000000000000000000000000..88c2171a4295ae52bb714b799e55a8dcfc331611
GIT binary patch
literal 216
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5KiAX6F{Fa=?aht6OpH7%2V1>3Gn%+Eni~8Z
zO&os6-|2b6w5RBq)y22}e*9S`94oEv@R%iI4nwc-f<h(}zlLL+7c3a1&;`%3?<iTM
m9QXMB_0RA7K8pjb0R!fJx6L_rROCuBg1DZpelF{r5}E+M`9k#o

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/tree_solid_collapse_1.png b/dist/images/2x/icon/tree_solid_collapse_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..3aa9463adf3154e7c838fdbd768fc776c2c6da6b
GIT binary patch
literal 429
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~!moRg=EV@L(#+na%2%!VSZ4<|3<_<GQN<&Kuf
zgF6__ANa*IlrX<@7f%R(AmsA#AiE$}lDZ#T;4w*!DR+Dn|Fi2Zy)f<0vpXq9LO`>D
zAV6gKl)h<G_w1gsG<V14=cgA7&D36MQ6auA^<??~n~h=*&PN@z)le1JyY)P(^QMRb
zU)|@L)l<aMH*%chHVA&G(Xecj#oE$6HLv6fzs@+3c!uHroD3xwhgR)<3}Mm>_vLl}
z(SLq0biZ`r^VQol`Run>#-5It$8@IDen!sT)e|;MlAhc1+{le(igU&~w)Z>Dn2J`v
zD;3VWm7DjUDc!m{oUM|}VA|6emER{fTm0auls{~=;!q%i@6r0y%%a^-GMkd^?j>C}
zkAGgS$fPyLm*o*-n$2PFzjN8vR5|1pHe@R1GCuO<p8qZG^ox9me;ICEH=i$Tb4;F(
Q^E*hy)78&qol`;+04$@Z00000

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/tree_solid_collapse_2.png b/dist/images/2x/icon/tree_solid_collapse_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..6810aa7943d13732e1ab1bc79c2840b61cdd0900
GIT binary patch
literal 503
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~!mT#u)VV@L(#+nXD`4m(J&fB0|ex}te;$gbU2
z4w~+3&{weFuxprnBXY^);O5Ei7x5>Av&Y_XEiBM*a?Ckb<2c2{(df=or~Uu=FHLg@
z`gFc_`fhFq7bsZL)##o5S5av*|9r7;Z1dOm7cAkP{^U`w?7`(4`_pxKADkDtcITjK
z^7l>WCHj7HI_TB?n{;65y=g5EY#R8cBr|X<-7cBD_y3&yPhU8e$m%M1nG0}uGn`t<
zf8e^q3JrNB{i{1o58rRx(b*QcJi;#TpIK}AS(Xb&b60K@O;ar63BD=8e%kt+pTF91
z_jchcTXt{$`@W`KwL$I1mjzqSr>HU*pQ~T~O-cHhn7T#xxizmsPG0@0vD2p9>`b0o
z!>Xuhv&`++2J7u>tXhBQxB|#Is=sC}WS#YrWp&LS@AdW$2|A1#&zG~LFa}@y5HtTW
zb9}ACn`Fkz?AsYncz3V(w_9xHjT75>^0Vbt{%_QJCqHjZ4o8PSqsDQD1v1PHMLZ0r
e3>i>4-+6a#4p7<X(6AI3PYj-}elF{r5}E)CPtB|V

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/tree_solid_collapse_3.png b/dist/images/2x/icon/tree_solid_collapse_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..e699f574da7641a9db5bcbe8108931dbe46dffa1
GIT binary patch
literal 545
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~!m+%``a$B+ufx3e~S9d?j7{{OnjLcYFBm+mg*
zTlbZ<hVh`|2gW%|=DJ#0ZngNy(A3<&fIlIeJ@$@kVS$E|W6t@Sz$qq<Mt7b%?f=hz
zsqKPy@%}sI-|wnAIJ|o&zcz=%gZI=z290*61u|R>MH&pKoIw2reACyMSa+Q9yEs2S
zCa(6qNz~p&sRo;`|EQ>JQ09qI5;fe$KR?3w$d^hM_Z_*6^*xWd_qKZX-0id9UC<-X
z7*yF_uDS4{5a&780+EKIL!23F$~WGs@iLRNWeV&S6F7TafTN9J%Ha@+)Co&Ya2MwJ
zJ~!t#4OD+8via$<^~n{>WEe~Dq)0_;ac*axap%~LIGYRBRx)yL-tz`dSbMg&{&H;_
z!>I%3%8ifv$S@f+r_|^9KQb}5Jv{rWTIF)7xpTj}FF!tYKF`vV-Km|GpD$Z2{iJ%N
zT26*-p$wOU#-j6_S`L<T6Xf3KUwXY=Py*<X$LcI8jKSAF#LU0Uyzf`Tx_(w4`5mGP
z{JM)C^-HBBDc_%TPfSnc|3;k;sV})47z6lN9V|r{o(3>XaYp7WjyoXE-yf?l;Kr>6
Pj8O(pS3j3^P6<r_3>VV7

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/tree_solid_collapse_4.png b/dist/images/2x/icon/tree_solid_collapse_4.png
new file mode 100644
index 0000000000000000000000000000000000000000..42ea2dc6c8c3a29135ed880a954ac773d10ad062
GIT binary patch
literal 512
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~!m+*D5&$B+ufw>LL>9d?jm`|y62(v^dOQM-0u
zIcU1CL0`dw!>(cSmdzgO%URUr9SS}Oeqns`YC-pI4L&|sjgGT3yB96t6gm~F_u+rt
z1R<x%X7TUpcg8UEzk4UYHS$3q_aQ?Dj^hjpGRzGHJPfFuPW}bFv%_{Vvt%uQbzNU?
z{l0Lky@^+A4X$7RQBm2T%4IfFIIxOk`j#$(>b}IzyJ8>GC;ht^ePhX&vR{&ijLaEl
zOx|8G)oAWK&VyA9d$=7e>KRL}Ij<?3zv<{5TboQbZjMQ&6^Dcx3S_tz^W7AvTzGD)
z)So`*Py-L^qmSw~U+0urt=?dk$JMKA&T&0?#ie66;_n#PSoQFI`>qtSW$Vt5?+fOu
zHdwt#*}lPdsVal%xog6;llY21`&WFvw&hL0$D2Pj>}>P?91e(!)SW#m+<xulIW@dr
z<Jz`60zLe|`-7z`^Oeh-(<<wY_tweJ+sL9YXSR@m@QgIR^WO|*3$C)a=&2dRZjf%M
n%oMy)do|#fv<nPuS)+e-X^>!VX&whK!WcYV{an^LB{Ts5nVZc$

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/tree_solid_collapse_5.png b/dist/images/2x/icon/tree_solid_collapse_5.png
new file mode 100644
index 0000000000000000000000000000000000000000..82d1f105dd833e8c24baf8349defdea17495eb63
GIT binary patch
literal 465
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~!mT$-ngV@L(#+nbJFhaE)N9{exu3J}*@dTH<M
z9R<?*4_H~mo7f9f%XBYIUCkDL&y_#H|AC-O;lo87tQ#eb9jBNydsI$ldG>$7QkGc;
z_0N3M)EESzATWewmRTETkBriirF#z_Kdn6F%fgeUac?9PXMUPjYSIvI98uYzwvqj4
zIag{TQ$cUMP5K3s8-<E1*e^IgkzlxGbi;3>WsR2oyO$Ry<$Yn8oWD?2htWmv7lV^;
z%c@hFpS<Qqd)BEvN}7}uu;zdMM=R%qvn&^m*RI_h8m3sr^s(&N#aE5ppEtjJdGe#k
z|1JBs|9)Q8uG*k><IjpRpDv*WpHugD?$uhh^D67PP3GU{YVF=Bn|^(I*5x;8Odqap
zT3z|`-Q0B_d9Uo|mv8QnVRnc<^IS&u!Wo4ZpZ`5``zsiAOvvHMp(zcw50q3_+<MNV
za7AK5+l>P}j^+&CFCBWZFZ*L$a|aAu`^s8>!<Fr+`SS0;7+~;p^>bP0l+XkKdauTc

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/tree_solid_expand_1.png b/dist/images/2x/icon/tree_solid_expand_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..751eac8f48252d109e55420909778670671bb231
GIT binary patch
literal 336
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5|EZ^oV@L(#+nWbD4;e_bJ=70l(Vr*kUceN4
zfc4H1+dJ;;7dYoQeth97a4Vxq@SykU|LltIi(hP1&6k!E;shE11R7owmR>AbsI}(l
z%D!sb_34t5r-GzvI-)CA-75dKoYBs&>!F6X;<|g+m-hT*@o27(DcfW+Zz;z!Mm8-O
z#t;jp6$LB-5BG>U-M^(;WE>dYf7|oiCl-lU7d|J?J}nvSV0k2M@w!(BV<n$(PDs@I
zel$OzRk?x7ok6s(b%M<j-ZNX;(`)_N<G2?tJ<hg_{WinP3yU_{X8-)j192Tg?OujY
W-s;PHe?M6U67h8Pb6Mw<&;$UmvU=SB

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/tree_solid_expand_2.png b/dist/images/2x/icon/tree_solid_expand_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..108a5fbc4d313a176256ae9527894edc888aa262
GIT binary patch
literal 418
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~!moVllqV@L(#+na`7%z+|q4?i0@ZrB+1CU?t*
zUg-knrq%~cYmQvG7ACpoPPg8HEn>HJFdn_6rl8`VFBRyb_VBLfiNE$9Ow67$Ci4_O
z=k0)jmPs0!xy949WFKYD$^ThVyJ&)*>dkY@?;H;{{d;zr$${;PmUn}LPO-<Ix8?fG
znP6>SwNf*)_Oy}+{{=-0Rs|?p@AzW*%MP2H31N%3E1tW>dEsf^Is4n+-t&q-Pj9|F
z`7tB!+xKt(RPSBv++g<Pq~K<$@_YYp#l+wL@_O~@q~tPd#wd$v&zD|SIH<`0LYV@G
znspOyNyWW9U-H0|<ExFBf$bFD1asY0&%Q^!Idm*8cTesgwcmZAA3yw<^Y$RqOC5&-
cE*xk+&o67%ZE^z3fI-UO>FVdQ&MBb@00l~@;Q#;t

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/tree_solid_expand_3.png b/dist/images/2x/icon/tree_solid_expand_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..16b9459fd19fe060cbe1ad6895520035d307ae67
GIT binary patch
literal 459
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~!mT!N>IV@L(#+gtWthZ7juKC0&m?y`u!6I)WS
zR{R4~Q}YAHIZNiwohvlQrs2T@!7mJDr5BEJYxL={F6{mLN}<amYM;Jt?S1(#{0lQ@
zFX#L@Nkr_$!;d?8%*9qTTCh9JVOBWDDDa%2qnP1{CBq{bhC;pui=Pa-Nl~|NESvc@
zy!PkSuV=4ME?XX6D(Ci8SAM;}%Ot_zhzV=nOb(j)lqa4`sdG15jkM3c7q*6}Pwze1
z=be(t)Y97jL)&+&wW8A(hI`yl3qA+Tu<~g?@whb2v_^VDge_y#owGYP<^G#@!P@p@
ze?MQb)~&lYf0gfe@7rKC<uP-bY1W?qraO1+cq9Hi-Mil4OEB;4PkZ)AyFgvsD4^LQ
zJmaBE+?(${3RfLg%zng@##PAN(k*uO)pV&tjlLB;hi{)UZap6%`fu|Wp#miDA^CbT
b{|C;b;~oNq0=M~rVb9>{>gTe~DWM4f)*86Z

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/tree_solid_expand_4.png b/dist/images/2x/icon/tree_solid_expand_4.png
new file mode 100644
index 0000000000000000000000000000000000000000..08fae67cd4ad36980ec08a28874c3c5bc29f5edd
GIT binary patch
literal 429
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~!moRg=EV@L(#+ncst%#IT6AJZo(EZJyw<90@(
zwEhED7Vd-05uQQO(QlKUGO}>@FJL!V+iDi)uyG3~$H^I;ts0JIr>&(Q{{63@sPpqy
zdil+pkr4~qk3XLww<du5xd;Pxbcg*#LS}CA?6Mo{e|=m1diHwpyZ08nN}q8g+AeOs
zfzXC2VJb%yEsq8m)M*+f?Pjl$KKt*5?KG!5vu(c{PE&V?syw{b<oesC9M2d_#12@p
zf)Q_P=AoJno7nWo$J+&GnhGyC9D8<d?&t4K2VZ&?)|5m9Tzq%#+Wf<{vP>q5e*6*F
zmVDipQCL}MsdN7PzrRN>`18t~E`4dzQOwl<LQ)(Poo5~JDXzG7f2QNQ#sK@{ENOh(
q7%%yDZ+pA8t#!Ym5)72qGHJZA`Q&5$^$jp|89ZJ6T-G@yGywn!U#mL+

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/tree_solid_expand_5.png b/dist/images/2x/icon/tree_solid_expand_5.png
new file mode 100644
index 0000000000000000000000000000000000000000..e8399902977d4bb824f79434497c27076fa9104e
GIT binary patch
literal 380
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~!moS>(RV@L(#+na`2OpYSQKIX@8F7cc@!Ok~m
ziK+MrRwhj*ONUhgudl3(33{sck)ev|{DO#E98G<Fy&6ip_H5_){9iQMXXELb-G}#8
zDl-Bt0D?%)O(li3>y>OyU$*&|Z6<ZXBY4`SC(b#igE!Wtr%N4hi#Pm|qIqQb)vc<@
zc8p6-`nNCDiM_W(;0$wyMls8RGlC69?hL2qgez{zjaAZLSF-Bm4*m46EEhtyKRRBv
z+xo-TpBF3ZtKYux=;tqI|8A|rcvVp^u4GkZ@}~S9fBt4qx4)m3T4u|5Wy7@9kIYv<
zjgx7eV6%iR?bXA``<ENT6|a2CNT}Mts~{UCvMpV=dOp<Y3s$LK7SMmbB&+Hb$S0nz
KelF{r5}E*AOOe6=

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/tree_solid_vertical_line_1.png b/dist/images/2x/icon/tree_solid_vertical_line_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..2c674dfd9d4b2d4ffa13cfe8ddf9d91dec2b182f
GIT binary patch
literal 178
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3HF&`%2dVDb50q$YKTtF;x&|^bAt@02E{_
z4sv&5Sa(k5C6L3C?&#~tz_78O`%fY(knis4;uuoF`1agJUIqo8BL~EP^Se79HCk|H
sg3{T@qI%E8weMD6&PcTYD#ZgD_#-RXE1mwHuLCLaboFyt=akR{0M+R!`v3p{

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/tree_solid_vertical_line_2.png b/dist/images/2x/icon/tree_solid_vertical_line_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..353cc64eb523f04c1e8b9bbb2acfa4b945c92fcb
GIT binary patch
literal 217
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5KhM*}F{Fa=?WK(q85u-eFYdO^66E|6-|DbL
z(n`Uor`(VI|G#jcIuQ8q`QNVvr@xlHKYMQZ<IB?jrORJ%@A-Af`mDY~!!gba7K~Er
r4v$$f<}maMFDPU(@k0}w&HsVn^ahsWd43ZNK*o8x`njxgN@xNA$gxJk

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/tree_solid_vertical_line_3.png b/dist/images/2x/icon/tree_solid_vertical_line_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..f4c373db95c697c94aef38467662b0435bd2612c
GIT binary patch
literal 256
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5f2ya8V@L(#+nXDCn+-%5E_zRi3|e~PUvNOc
zMxGAV1x(6!ZBH`)$oc#1u*2m&Ykns#FfU?tSjTWelwl{6LO8<{u7()K3EB+kf^+N+
zbT__>=>1=R|FHF|`UCCk7S&6&O<5*lD#fDTjMtU>Z$n4eXP^TaJYD@<);T3K0RTi4
BQXK#Q

literal 0
HcmV?d00001

diff --git a/dist/images/2x/icon/tree_solid_vertical_line_4.png b/dist/images/2x/icon/tree_solid_vertical_line_4.png
new file mode 100644
index 0000000000000000000000000000000000000000..a9eaa98bd57f3725e80353ed42ece7f243bc87f3
GIT binary patch
literal 217
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG
z<nF|<?wrg^AcrO0(btiIVPik{pF~z5KhM*}F{Fa=?aht6OpH7%2V0XmI9}}MVp5vL
zc#+{@eSz^L?hmJCzIHi({rBhDekHkc7<z>l6f&9kH5}u-V8JM*?(mo;16|Nu{=ucr
ozKUM^ciZ<{pNj`t0|q=lm>gGdTfLS#7X#vZy85}Sb4q9e0PvwgkpKVy

literal 0
HcmV?d00001