Files
education/frontend/node_modules/.cache/babel-loader/210173c41411348bfe9a5e54413976ab.json
T

1 line
49 KiB
JSON

{"remainingRequest":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\babel-loader\\lib\\index.js!C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\components\\TreePanel\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\components\\TreePanel\\index.vue","mtime":1787567871522},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1787309791955},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\babel-loader\\lib\\index.js","mtime":1787309793142},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1787309791955},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\vue-loader\\lib\\index.js","mtime":1787309793790},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\babel.config.js","mtime":1787567871334},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1787309791955},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\babel-loader\\lib\\index.js","mtime":1787309793142},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1787309791955},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\vue-loader\\lib\\index.js","mtime":1787309793790}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:InVzZSBzdHJpY3QiOwoKT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICJfX2VzTW9kdWxlIiwgewogIHZhbHVlOiB0cnVlCn0pOwpleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWx0ZXIuanMiKTsKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiKTsKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL2VzLm51bWJlci5jb25zdHJ1Y3Rvci5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRvLXN0cmluZy5qcyIpOwpyZXF1aXJlKCJjb3JlLWpzL21vZHVsZXMvZXNuZXh0Lml0ZXJhdG9yLmNvbnN0cnVjdG9yLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuZmlsdGVyLmpzIik7CnJlcXVpcmUoImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuZm9yLWVhY2guanMiKTsKcmVxdWlyZSgiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuZm9yLWVhY2guanMiKTsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KdmFyIF9kZWZhdWx0MiA9IGV4cG9ydHMuZGVmYXVsdCA9IHsKICBuYW1lOiAiVHJlZVNpZGViYXIiLAogIHByb3BzOiB7CiAgICAvLyDmoJHlvaLmlbDmja4KICAgIHRyZWVEYXRhOiB7CiAgICAgIHR5cGU6IEFycmF5LAogICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHsKICAgICAgICByZXR1cm4gW107CiAgICAgIH0KICAgIH0sCiAgICAvLyDmoIfpopgKICAgIHRpdGxlOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogJ+agkeW9oue7k+aehCcKICAgIH0sCiAgICAvLyDmoIfpopjlm77moIfnsbvlkI0KICAgIHRpdGxlSWNvbkNsYXNzOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogJ2VsLWljb24tb2ZmaWNlLWJ1aWxkaW5nJwogICAgfSwKICAgIC8vIOaYr+WQpuaYvuekuuaQnOe0ouahhgogICAgc2hvd1NlYXJjaDogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiB0cnVlCiAgICB9LAogICAgLy8g5pCc57Si5qGG5Y2g5L2N56ymCiAgICBzZWFyY2hQbGFjZWhvbGRlcjogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICfor7fovpPlhaXlkI3np7AnCiAgICB9LAogICAgLy8g5piv5ZCm6buY6K6k5pS26LW35L6n6L655qCPCiAgICBkZWZhdWx0Q29sbGFwc2VkOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9LAogICAgLy8g5qCR6YWN572u6aG5CiAgICB0cmVlUHJvcHM6IHsKICAgICAgdHlwZTogT2JqZWN0LAogICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgY2hpbGRyZW46ICJjaGlsZHJlbiIsCiAgICAgICAgICBsYWJlbDogImxhYmVsIgogICAgICAgIH07CiAgICAgIH0KICAgIH0sCiAgICAvLyDoioLngrnllK/kuIDmoIfor4blrZfmrrUKICAgIG5vZGVLZXk6IHsKICAgICAgdHlwZTogU3RyaW5nLAogICAgICBkZWZhdWx0OiAnaWQnCiAgICB9LAogICAgLy8g5piv5ZCm5Zyo54K55Ye76IqC54K55pe25bGV5byA5oiW5pS26LW3CiAgICBleHBhbmRPbkNsaWNrTm9kZTogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIC8vIOaYr+WQpuaYvuekuuWkjemAieahhgogICAgc2hvd0NoZWNrYm94OiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9LAogICAgLy8g5piv5ZCm5Lil5qC855qE6YG15b6q54i25a2Q5LiN5LqS55u45YWz6IGUCiAgICBjaGVja1N0cmljdGx5OiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9LAogICAgLy8g5piv5ZCm6buY6K6k5bGV5byA5omA5pyJ6IqC54K5CiAgICBkZWZhdWx0RXhwYW5kQWxsOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9LAogICAgLy8g6buY6K6k5bGV5byA55qE6IqC54K555qEa2V55pWw57uECiAgICBkZWZhdWx0RXhwYW5kZWRLZXlzOiB7CiAgICAgIHR5cGU6IEFycmF5LAogICAgICBkZWZhdWx0OiBmdW5jdGlvbiBfZGVmYXVsdCgpIHsKICAgICAgICByZXR1cm4gW107CiAgICAgIH0KICAgIH0sCiAgICAvLyDpu5jorqTlrr3luqYKICAgIGRlZmF1bHRXaWR0aDogewogICAgICB0eXBlOiBOdW1iZXIsCiAgICAgIGRlZmF1bHQ6IDIyMAogICAgfSwKICAgIC8vIOaUtui1t+aXtueahOWuveW6pgogICAgY29sbGFwc2VkV2lkdGg6IHsKICAgICAgdHlwZTogTnVtYmVyLAogICAgICBkZWZhdWx0OiAyMAogICAgfSwKICAgIC8vIOacgOWwj+WuveW6pgogICAgbWluV2lkdGg6IHsKICAgICAgdHlwZTogTnVtYmVyLAogICAgICBkZWZhdWx0OiAxODAKICAgIH0sCiAgICAvLyDmnIDlpKflrr3luqYKICAgIG1heFdpZHRoOiB7CiAgICAgIHR5cGU6IE51bWJlciwKICAgICAgZGVmYXVsdDogNDAwCiAgICB9LAogICAgLy8g5pys5Zyw5a2Y5YKo55qE5a695bqma2V5CiAgICBzdG9yYWdlS2V5OiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogJ3RyZWUtc2lkZWJhci13aWR0aCcKICAgIH0sCiAgICAvLyDmmK/lkKblkK/nlKjmnKzlnLDlrZjlgqjlrr3luqYKICAgIGVuYWJsZVN0b3JhZ2U6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogdHJ1ZQogICAgfSwKICAgIC8vIOiHquWumuS5iei/h+a7pOaWueazlQogICAgZmlsdGVyTWV0aG9kOiB7CiAgICAgIHR5cGU6IEZ1bmN0aW9uLAogICAgICBkZWZhdWx0OiBudWxsCiAgICB9CiAgfSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgc2VhcmNoS2V5d29yZDogIiIsCiAgICAgIGNvbGxhcHNlZDogdGhpcy5kZWZhdWx0Q29sbGFwc2VkLAogICAgICBzaWRlYmFyV2lkdGg6IHRoaXMuZGVmYXVsdENvbGxhcHNlZCA/IHRoaXMuY29sbGFwc2VkV2lkdGggOiB0aGlzLmRlZmF1bHRXaWR0aCwKICAgICAgaXNSZXNpemluZzogZmFsc2UsCiAgICAgIHN0YXJ0WDogMCwKICAgICAgc3RhcnRXaWR0aDogMCwKICAgICAgc2F2ZVdpZHRoVGltZXI6IG51bGwsCiAgICAgIHJhZklkOiBudWxsLAogICAgICBpc0xvYWRpbmdGcm9tU3RvcmFnZTogZmFsc2UsCiAgICAgIGV4cGFuZGVkQWxsOiB0aGlzLmRlZmF1bHRFeHBhbmRBbGwKICAgIH07CiAgfSwKICBjb21wdXRlZDogewogICAgLy8g6K6h566X5b2T5YmN5piv5ZCm5YWo6YOo5bGV5byACiAgICBpc0V4cGFuZGVkQWxsOiB7CiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgIHJldHVybiB0aGlzLmV4cGFuZGVkQWxsOwogICAgICB9LAogICAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWwpIHsKICAgICAgICB0aGlzLmV4cGFuZGVkQWxsID0gdmFsOwogICAgICB9CiAgICB9CiAgfSwKICB3YXRjaDogewogICAgY29sbGFwc2VkOiBmdW5jdGlvbiBjb2xsYXBzZWQobmV3VmFsLCBvbGRWYWwpIHsKICAgICAgaWYgKG5ld1ZhbCAhPT0gb2xkVmFsKSB7CiAgICAgICAgdGhpcy5oYW5kbGVDb2xsYXBzZUNoYW5nZShuZXdWYWwpOwogICAgICAgIHRoaXMuJGVtaXQoImNvbGxhcHNlZC1jaGFuZ2UiLCBuZXdWYWwpOwogICAgICB9CiAgICB9LAogICAgLy8g55uR5ZCs5YaF6YOo5bGV5byA54q25oCB5Y+Y5YyW77yM6Kem5Y+R5a6e6ZmF5qCR55qE5bGV5byAL+aUtui1twogICAgZXhwYW5kZWRBbGw6IGZ1bmN0aW9uIGV4cGFuZGVkQWxsKG5ld1ZhbCkgewogICAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKG5ld1ZhbCkgewogICAgICAgICAgX3RoaXMuZXhwYW5kQWxsTm9kZXMoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgX3RoaXMuY29sbGFwc2VBbGxOb2RlcygpOwogICAgICAgIH0KICAgICAgfSk7CiAgICAgIHRoaXMuJGVtaXQoImV4cGFuZGVkLWFsbC1jaGFuZ2UiLCBuZXdWYWwpOwogICAgfSwKICAgIC8vIOebkeWQrOaQnOe0ouWFs+mUruivjQogICAgc2VhcmNoS2V5d29yZDogZnVuY3Rpb24gc2VhcmNoS2V5d29yZCh2YWwpIHsKICAgICAgaWYgKHRoaXMuJHJlZnMudHJlZVJlZikgewogICAgICAgIHRoaXMuJHJlZnMudHJlZVJlZi5maWx0ZXIodmFsKTsKICAgICAgICB0aGlzLiRlbWl0KCJzZWFyY2giLCB2YWwpOwogICAgICB9CiAgICB9CiAgfSwKICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkgewogICAgdmFyIF90aGlzMiA9IHRoaXM7CiAgICB0aGlzLmlzTG9hZGluZ0Zyb21TdG9yYWdlID0gdHJ1ZTsKICAgIGlmICghdGhpcy5jb2xsYXBzZWQgJiYgdGhpcy5lbmFibGVTdG9yYWdlKSB7CiAgICAgIHZhciBzYXZlZFdpZHRoID0gdGhpcy5nZXRTYXZlZFdpZHRoKCk7CiAgICAgIGlmIChzYXZlZFdpZHRoICE9PSBudWxsKSB7CiAgICAgICAgdGhpcy5zaWRlYmFyV2lkdGggPSBzYXZlZFdpZHRoOwogICAgICB9CiAgICB9CiAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgIF90aGlzMi5pc0xvYWRpbmdGcm9tU3RvcmFnZSA9IGZhbHNlOwogICAgfSk7CiAgICBpZiAodGhpcy5leHBhbmRlZEFsbCkgewogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgX3RoaXMyLmV4cGFuZEFsbE5vZGVzKCk7CiAgICAgIH0pOwogICAgfQogIH0sCiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHsKICAgIHRoaXMuY2xlYW51cCgpOwogIH0sCiAgbWV0aG9kczogewogICAgLy8g6IqC54K56L+H5ruk5pa55rOVCiAgICBmaWx0ZXJOb2RlTWV0aG9kOiBmdW5jdGlvbiBmaWx0ZXJOb2RlTWV0aG9kKHZhbHVlLCBkYXRhKSB7CiAgICAgIGlmICh0aGlzLmZpbHRlck1ldGhvZCkgewogICAgICAgIHJldHVybiB0aGlzLmZpbHRlck1ldGhvZCh2YWx1ZSwgZGF0YSk7CiAgICAgIH0KICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuIHRydWU7CiAgICAgIHJldHVybiBkYXRhLmxhYmVsICYmIGRhdGEubGFiZWwuaW5kZXhPZih2YWx1ZSkgIT09IC0xOwogICAgfSwKICAgIC8vIOa4heeQhuWumuaXtuWZqOWSjOWKqOeUu+W4pwogICAgY2xlYW51cDogZnVuY3Rpb24gY2xlYW51cCgpIHsKICAgICAgaWYgKHRoaXMucmFmSWQpIHsKICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnJhZklkKTsKICAgICAgICB0aGlzLnJhZklkID0gbnVsbDsKICAgICAgfQogICAgICBpZiAodGhpcy5zYXZlV2lkdGhUaW1lcikgewogICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNhdmVXaWR0aFRpbWVyKTsKICAgICAgICB0aGlzLnNhdmVXaWR0aFRpbWVyID0gbnVsbDsKICAgICAgfQogICAgfSwKICAgIC8vIOWkhOeQhuaUtui1ty/lsZXlvIDnirbmgIHlj5jljJYKICAgIGhhbmRsZUNvbGxhcHNlQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVDb2xsYXBzZUNoYW5nZShpc0NvbGxhcHNlZCkgewogICAgICBpZiAoaXNDb2xsYXBzZWQpIHsKICAgICAgICB0aGlzLnNhdmVXaWR0aFRvU3RvcmFnZSgpOwogICAgICAgIHRoaXMuc2lkZWJhcldpZHRoID0gdGhpcy5jb2xsYXBzZWRXaWR0aDsKICAgICAgfSBlbHNlIHsKICAgICAgICB2YXIgc2F2ZWRXaWR0aCA9IHRoaXMuZ2V0U2F2ZWRXaWR0aCgpOwogICAgICAgIHRoaXMuc2lkZWJhcldpZHRoID0gc2F2ZWRXaWR0aCAhPT0gbnVsbCA/IHNhdmVkV2lkdGggOiB0aGlzLmRlZmF1bHRXaWR0aDsKICAgICAgfQogICAgfSwKICAgIC8vIOiOt+WPluS/neWtmOeahOWuveW6pgogICAgZ2V0U2F2ZWRXaWR0aDogZnVuY3Rpb24gZ2V0U2F2ZWRXaWR0aCgpIHsKICAgICAgaWYgKCF0aGlzLmVuYWJsZVN0b3JhZ2UpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICB0cnkgewogICAgICAgIHZhciBzYXZlZFdpZHRoID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlS2V5KTsKICAgICAgICBpZiAoc2F2ZWRXaWR0aCkgewogICAgICAgICAgdmFyIHdpZHRoID0gcGFyc2VJbnQoc2F2ZWRXaWR0aCwgMTApOwogICAgICAgICAgaWYgKCFpc05hTih3aWR0aCkgJiYgd2lkdGggPj0gdGhpcy5taW5XaWR0aCAmJiB3aWR0aCA8PSB0aGlzLm1heFdpZHRoKSB7CiAgICAgICAgICAgIHJldHVybiB3aWR0aDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgY29uc29sZS53YXJuKCJGYWlsZWQgdG8gbG9hZCBzaWRlYmFyIHdpZHRoIGZyb20gc3RvcmFnZSB3aXRoIGtleSAiLmNvbmNhdCh0aGlzLnN0b3JhZ2VLZXksICI6IiksIGVycm9yKTsKICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0sCiAgICAvLyDkv53lrZjlrr3luqbliLDmnKzlnLDlrZjlgqgKICAgIHNhdmVXaWR0aFRvU3RvcmFnZTogZnVuY3Rpb24gc2F2ZVdpZHRoVG9TdG9yYWdlKCkgewogICAgICBpZiAodGhpcy5jb2xsYXBzZWQgfHwgIXRoaXMuZW5hYmxlU3RvcmFnZSkgcmV0dXJuOwogICAgICB0cnkgewogICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuc3RvcmFnZUtleSwgdGhpcy5zaWRlYmFyV2lkdGgudG9TdHJpbmcoKSk7CiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgY29uc29sZS53YXJuKCJGYWlsZWQgdG8gc2F2ZSBzaWRlYmFyIHdpZHRoIHRvIHN0b3JhZ2Ugd2l0aCBrZXkgIi5jb25jYXQodGhpcy5zdG9yYWdlS2V5LCAiOiIpLCBlcnJvcik7CiAgICAgIH0KICAgIH0sCiAgICAvLyDliIfmjaLkvqfovrnmoI/mlLbotbcv5bGV5byA54q25oCBCiAgICB0b2dnbGVDb2xsYXBzZWQ6IGZ1bmN0aW9uIHRvZ2dsZUNvbGxhcHNlZCgpIHsKICAgICAgdGhpcy5jb2xsYXBzZWQgPSAhdGhpcy5jb2xsYXBzZWQ7CiAgICB9LAogICAgLy8g5YiH5o2i5bGV5byAL+aKmOWPoOaJgOacieiKgueCuQogICAgdG9nZ2xlRXhwYW5kQWxsOiBmdW5jdGlvbiB0b2dnbGVFeHBhbmRBbGwoKSB7CiAgICAgIHRoaXMuaXNFeHBhbmRlZEFsbCA9ICF0aGlzLmlzRXhwYW5kZWRBbGw7CiAgICB9LAogICAgLy8g5bGV5byA5omA5pyJ6IqC54K5CiAgICBleHBhbmRBbGxOb2RlczogZnVuY3Rpb24gZXhwYW5kQWxsTm9kZXMoKSB7CiAgICAgIGlmICghdGhpcy4kcmVmcy50cmVlUmVmKSByZXR1cm47CiAgICAgIHZhciBhbGxOb2RlcyA9IHRoaXMuZ2V0QWxsTm9kZXModGhpcy4kcmVmcy50cmVlUmVmLnJvb3QpOwogICAgICBhbGxOb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7CiAgICAgICAgaWYgKG5vZGUuZXhwYW5kZWQgIT09IHVuZGVmaW5lZCAmJiAhbm9kZS5leHBhbmRlZCkgewogICAgICAgICAgbm9kZS5leHBhbmRlZCA9IHRydWU7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0sCiAgICAvLyDojrflj5bmiYDmnInoioLngrkKICAgIGdldEFsbE5vZGVzOiBmdW5jdGlvbiBnZXRBbGxOb2Rlcyhyb290Tm9kZSkgewogICAgICB2YXIgbm9kZXMgPSBbXTsKICAgICAgdmFyIF90cmF2ZXJzZSA9IGZ1bmN0aW9uIHRyYXZlcnNlKG5vZGUpIHsKICAgICAgICBpZiAoIW5vZGUpIHJldHVybjsKICAgICAgICBub2Rlcy5wdXNoKG5vZGUpOwogICAgICAgIGlmIChub2RlLmNoaWxkTm9kZXMgJiYgbm9kZS5jaGlsZE5vZGVzLmxlbmd0aCkgewogICAgICAgICAgbm9kZS5jaGlsZE5vZGVzLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7CiAgICAgICAgICAgIHJldHVybiBfdHJhdmVyc2UoY2hpbGQpOwogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICB9OwogICAgICBfdHJhdmVyc2Uocm9vdE5vZGUpOwogICAgICByZXR1cm4gbm9kZXM7CiAgICB9LAogICAgLy8g5pS26LW35omA5pyJ6IqC54K5CiAgICBjb2xsYXBzZUFsbE5vZGVzOiBmdW5jdGlvbiBjb2xsYXBzZUFsbE5vZGVzKCkgewogICAgICBpZiAoIXRoaXMuJHJlZnMudHJlZVJlZikgcmV0dXJuOwogICAgICB2YXIgYWxsTm9kZXMgPSB0aGlzLmdldEFsbE5vZGVzKHRoaXMuJHJlZnMudHJlZVJlZi5yb290KTsKICAgICAgYWxsTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkgewogICAgICAgIGlmIChub2RlLmV4cGFuZGVkICE9PSB1bmRlZmluZWQgJiYgbm9kZS5leHBhbmRlZCkgewogICAgICAgICAgbm9kZS5leHBhbmRlZCA9IGZhbHNlOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAogICAgLy8g5aSE55CG5Yi35paw5pON5L2cCiAgICBoYW5kbGVSZWZyZXNoOiBmdW5jdGlvbiBoYW5kbGVSZWZyZXNoKCkgewogICAgICB0aGlzLiRlbWl0KCJyZWZyZXNoIik7CiAgICB9LAogICAgLy8g6IqC54K554K55Ye75LqL5Lu2CiAgICBvbk5vZGVDbGljazogZnVuY3Rpb24gb25Ob2RlQ2xpY2soZGF0YSwgbm9kZSwgZSkgewogICAgICB0aGlzLiRlbWl0KCJub2RlLWNsaWNrIiwgZGF0YSwgbm9kZSwgZSk7CiAgICB9LAogICAgLy8g5aSN6YCJ5qGG6YCJ5Lit5LqL5Lu2CiAgICBvbkNoZWNrOiBmdW5jdGlvbiBvbkNoZWNrKGRhdGEsIGNoZWNrZWRJbmZvKSB7CiAgICAgIHRoaXMuJGVtaXQoImNoZWNrIiwgZGF0YSwgY2hlY2tlZEluZm8pOwogICAgfSwKICAgIC8vIOiKgueCueWxleW8gOS6i+S7tgogICAgb25Ob2RlRXhwYW5kOiBmdW5jdGlvbiBvbk5vZGVFeHBhbmQoZGF0YSwgbm9kZSwgZSkgewogICAgICB0aGlzLiRlbWl0KCJub2RlLWV4cGFuZCIsIGRhdGEsIG5vZGUsIGUpOwogICAgfSwKICAgIC8vIOiKgueCueaKmOWPoOS6i+S7tgogICAgb25Ob2RlQ29sbGFwc2U6IGZ1bmN0aW9uIG9uTm9kZUNvbGxhcHNlKGRhdGEsIG5vZGUsIGUpIHsKICAgICAgdGhpcy4kZW1pdCgibm9kZS1jb2xsYXBzZSIsIGRhdGEsIG5vZGUsIGUpOwogICAgfSwKICAgIC8vIOaQnOe0ouWkhOeQhgogICAgb25TZWFyY2g6IGZ1bmN0aW9uIG9uU2VhcmNoKCkgewogICAgICAvLyDmkJzntKLpgLvovpHlt7LlnKggd2F0Y2gg5Lit5aSE55CGCiAgICB9LAogICAgLy8g6K6+572u5b2T5YmN6YCJ5Lit55qE6IqC54K5CiAgICBzZXRDdXJyZW50S2V5OiBmdW5jdGlvbiBzZXRDdXJyZW50S2V5KGtleSkgewogICAgICBpZiAodGhpcy4kcmVmcy50cmVlUmVmKSB7CiAgICAgICAgdGhpcy4kcmVmcy50cmVlUmVmLnNldEN1cnJlbnRLZXkoa2V5KTsKICAgICAgfQogICAgfSwKICAgIC8vIOiOt+WPluW9k+WJjemAieS4reeahOiKgueCuQogICAgZ2V0Q3VycmVudE5vZGU6IGZ1bmN0aW9uIGdldEN1cnJlbnROb2RlKCkgewogICAgICBpZiAodGhpcy4kcmVmcy50cmVlUmVmKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuJHJlZnMudHJlZVJlZi5nZXRDdXJyZW50Tm9kZSgpOwogICAgICB9CiAgICAgIHJldHVybiBudWxsOwogICAgfSwKICAgIC8vIOiOt+WPluW9k+WJjemAieS4reeahOiKgueCueeahGtleQogICAgZ2V0Q3VycmVudEtleTogZnVuY3Rpb24gZ2V0Q3VycmVudEtleSgpIHsKICAgICAgaWYgKHRoaXMuJHJlZnMudHJlZVJlZikgewogICAgICAgIHJldHVybiB0aGlzLiRyZWZzLnRyZWVSZWYuZ2V0Q3VycmVudEtleSgpOwogICAgICB9CiAgICAgIHJldHVybiBudWxsOwogICAgfSwKICAgIC8vIOiuvue9rumAieS4reeahOiKgueCuWtleXPvvIjlpI3pgInmoYbvvIkKICAgIHNldENoZWNrZWRLZXlzOiBmdW5jdGlvbiBzZXRDaGVja2VkS2V5cyhrZXlzKSB7CiAgICAgIGlmICh0aGlzLiRyZWZzLnRyZWVSZWYgJiYgdGhpcy5zaG93Q2hlY2tib3gpIHsKICAgICAgICB0aGlzLiRyZWZzLnRyZWVSZWYuc2V0Q2hlY2tlZEtleXMoa2V5cyk7CiAgICAgIH0KICAgIH0sCiAgICAvLyDojrflj5bpgInkuK3nmoToioLngrlrZXlz77yI5aSN6YCJ5qGG77yJCiAgICBnZXRDaGVja2VkS2V5czogZnVuY3Rpb24gZ2V0Q2hlY2tlZEtleXMoKSB7CiAgICAgIGlmICh0aGlzLiRyZWZzLnRyZWVSZWYgJiYgdGhpcy5zaG93Q2hlY2tib3gpIHsKICAgICAgICByZXR1cm4gdGhpcy4kcmVmcy50cmVlUmVmLmdldENoZWNrZWRLZXlzKCk7CiAgICAgIH0KICAgICAgcmV0dXJuIFtdOwogICAgfSwKICAgIC8vIOiOt+WPlumAieS4reeahOiKgueCue+8iOWkjemAieahhu+8iQogICAgZ2V0Q2hlY2tlZE5vZGVzOiBmdW5jdGlvbiBnZXRDaGVja2VkTm9kZXMoKSB7CiAgICAgIGlmICh0aGlzLiRyZWZzLnRyZWVSZWYgJiYgdGhpcy5zaG93Q2hlY2tib3gpIHsKICAgICAgICByZXR1cm4gdGhpcy4kcmVmcy50cmVlUmVmLmdldENoZWNrZWROb2RlcygpOwogICAgICB9CiAgICAgIHJldHVybiBbXTsKICAgIH0sCiAgICAvLyDmuIXnqbrmkJzntKIKICAgIGNsZWFyU2VhcmNoOiBmdW5jdGlvbiBjbGVhclNlYXJjaCgpIHsKICAgICAgdGhpcy5zZWFyY2hLZXl3b3JkID0gIiI7CiAgICAgIGlmICh0aGlzLiRyZWZzLnRyZWVSZWYpIHsKICAgICAgICB0aGlzLiRyZWZzLnRyZWVSZWYuZmlsdGVyKCIiKTsKICAgICAgfQogICAgfSwKICAgIC8vIOi/h+a7pOagkQogICAgZmlsdGVyOiBmdW5jdGlvbiBmaWx0ZXIodmFsdWUpIHsKICAgICAgdGhpcy5zZWFyY2hLZXl3b3JkID0gdmFsdWU7CiAgICB9LAogICAgLy8g5byA5aeL6LCD5pW05aSn5bCPCiAgICBzdGFydFJlc2l6ZTogZnVuY3Rpb24gc3RhcnRSZXNpemUoZSkgewogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgIHRoaXMuaXNSZXNpemluZyA9IHRydWU7CiAgICAgIHRoaXMuc3RhcnRYID0gZS50eXBlID09PSAnbW91c2Vkb3duJyA/IGUuY2xpZW50WCA6IGUudG91Y2hlc1swXS5jbGllbnRYOwogICAgICB0aGlzLnN0YXJ0V2lkdGggPSB0aGlzLnNpZGViYXJXaWR0aDsKICAgICAgaWYgKGUudHlwZSA9PT0gJ21vdXNlZG93bicpIHsKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLmhhbmRsZVJlc2l6ZU1vdmUpOwogICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLnN0b3BSZXNpemUpOwogICAgICB9IGVsc2UgewogICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHRoaXMuaGFuZGxlUmVzaXplTW92ZSwgewogICAgICAgICAgcGFzc2l2ZTogZmFsc2UKICAgICAgICB9KTsKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRoaXMuc3RvcFJlc2l6ZSk7CiAgICAgIH0KICAgICAgdGhpcy5kaXNhYmxlVXNlclNlbGVjdCgpOwogICAgfSwKICAgIC8vIOWkhOeQhuiwg+aVtOWkp+Wwj+enu+WKqAogICAgaGFuZGxlUmVzaXplTW92ZTogZnVuY3Rpb24gaGFuZGxlUmVzaXplTW92ZShlKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICBpZiAoIXRoaXMuaXNSZXNpemluZykgcmV0dXJuOwogICAgICBpZiAodGhpcy5yYWZJZCkgewogICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMucmFmSWQpOwogICAgICB9CiAgICAgIHRoaXMucmFmSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gKCkgewogICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgIHZhciBjbGllbnRYID0gZS50eXBlID09PSAnbW91c2Vtb3ZlJyA/IGUuY2xpZW50WCA6IGUudG91Y2hlc1swXS5jbGllbnRYOwogICAgICAgIHZhciBkZWx0YVggPSBjbGllbnRYIC0gX3RoaXMzLnN0YXJ0WDsKICAgICAgICB2YXIgbmV3V2lkdGggPSBfdGhpczMuc3RhcnRXaWR0aCArIGRlbHRhWDsKICAgICAgICB2YXIgY2xhbXBlZFdpZHRoID0gTWF0aC5tYXgoX3RoaXMzLm1pbldpZHRoLCBNYXRoLm1pbihfdGhpczMubWF4V2lkdGgsIG5ld1dpZHRoKSk7CiAgICAgICAgaWYgKE1hdGguYWJzKGNsYW1wZWRXaWR0aCAtIF90aGlzMy5zaWRlYmFyV2lkdGgpID49IDEpIHsKICAgICAgICAgIF90aGlzMy5zaWRlYmFyV2lkdGggPSBjbGFtcGVkV2lkdGg7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0sCiAgICAvLyDlgZzmraLosIPmlbTlpKflsI8KICAgIHN0b3BSZXNpemU6IGZ1bmN0aW9uIHN0b3BSZXNpemUoKSB7CiAgICAgIGlmICghdGhpcy5pc1Jlc2l6aW5nKSByZXR1cm47CiAgICAgIHRoaXMuaXNSZXNpemluZyA9IGZhbHNlOwogICAgICBpZiAodGhpcy5yYWZJZCkgewogICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMucmFmSWQpOwogICAgICAgIHRoaXMucmFmSWQgPSBudWxsOwogICAgICB9CiAgICAgIHRoaXMuc3RhcnRYID0gMDsKICAgICAgdGhpcy5zdGFydFdpZHRoID0gMDsKICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5oYW5kbGVSZXNpemVNb3ZlKTsKICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuc3RvcFJlc2l6ZSk7CiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHRoaXMuaGFuZGxlUmVzaXplTW92ZSk7CiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5zdG9wUmVzaXplKTsKICAgICAgdGhpcy5lbmFibGVVc2VyU2VsZWN0KCk7CiAgICAgIHRoaXMuc2F2ZVdpZHRoVG9TdG9yYWdlKCk7CiAgICB9LAogICAgLy8g56aB55So55So5oi36YCJ5oupCiAgICBkaXNhYmxlVXNlclNlbGVjdDogZnVuY3Rpb24gZGlzYWJsZVVzZXJTZWxlY3QoKSB7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUudXNlclNlbGVjdCA9ICdub25lJzsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS53ZWJraXRVc2VyU2VsZWN0ID0gJ25vbmUnOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm1velVzZXJTZWxlY3QgPSAnbm9uZSc7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUubXNVc2VyU2VsZWN0ID0gJ25vbmUnOwogICAgfSwKICAgIC8vIOWQr+eUqOeUqOaIt+mAieaLqQogICAgZW5hYmxlVXNlclNlbGVjdDogZnVuY3Rpb24gZW5hYmxlVXNlclNlbGVjdCgpIHsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0ID0gJyc7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUud2Via2l0VXNlclNlbGVjdCA9ICcnOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm1velVzZXJTZWxlY3QgPSAnJzsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5tc1VzZXJTZWxlY3QgPSAnJzsKICAgIH0sCiAgICAvLyDph43nva7lrr3luqbliLDpu5jorqTlgLwKICAgIHJlc2V0V2lkdGg6IGZ1bmN0aW9uIHJlc2V0V2lkdGgoKSB7CiAgICAgIHRoaXMuc2lkZWJhcldpZHRoID0gdGhpcy5kZWZhdWx0V2lkdGg7CiAgICAgIHRoaXMuc2F2ZVdpZHRoVG9TdG9yYWdlKCk7CiAgICB9LAogICAgLy8g6I635Y+W5b2T5YmN5a695bqmCiAgICBnZXRDdXJyZW50V2lkdGg6IGZ1bmN0aW9uIGdldEN1cnJlbnRXaWR0aCgpIHsKICAgICAgcmV0dXJuIHRoaXMuc2lkZWJhcldpZHRoOwogICAgfSwKICAgIC8vIOiuvue9ruWuveW6pgogICAgc2V0V2lkdGg6IGZ1bmN0aW9uIHNldFdpZHRoKHdpZHRoKSB7CiAgICAgIGlmICh0eXBlb2Ygd2lkdGggPT09ICdudW1iZXInICYmIHdpZHRoID49IHRoaXMubWluV2lkdGggJiYgd2lkdGggPD0gdGhpcy5tYXhXaWR0aCkgewogICAgICAgIHRoaXMuc2lkZWJhcldpZHRoID0gd2lkdGg7CiAgICAgICAgaWYgKCF0aGlzLmNvbGxhcHNlZCkgewogICAgICAgICAgdGhpcy5zYXZlV2lkdGhUb1N0b3JhZ2UoKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9Cn07"},{"version":3,"names":["name","props","treeData","type","Array","default","title","String","titleIconClass","showSearch","Boolean","searchPlaceholder","defaultCollapsed","treeProps","Object","children","label","nodeKey","expandOnClickNode","showCheckbox","checkStrictly","defaultExpandAll","defaultExpandedKeys","defaultWidth","Number","collapsedWidth","minWidth","maxWidth","storageKey","enableStorage","filterMethod","Function","data","searchKeyword","collapsed","sidebarWidth","isResizing","startX","startWidth","saveWidthTimer","rafId","isLoadingFromStorage","expandedAll","computed","isExpandedAll","get","set","val","watch","newVal","oldVal","handleCollapseChange","$emit","_this","$nextTick","expandAllNodes","collapseAllNodes","$refs","treeRef","filter","mounted","_this2","savedWidth","getSavedWidth","beforeDestroy","cleanup","methods","filterNodeMethod","value","indexOf","cancelAnimationFrame","clearTimeout","isCollapsed","saveWidthToStorage","localStorage","getItem","width","parseInt","isNaN","error","console","warn","concat","setItem","toString","toggleCollapsed","toggleExpandAll","allNodes","getAllNodes","root","forEach","node","expanded","undefined","rootNode","nodes","traverse","push","childNodes","length","child","handleRefresh","onNodeClick","e","onCheck","checkedInfo","onNodeExpand","onNodeCollapse","onSearch","setCurrentKey","key","getCurrentNode","getCurrentKey","setCheckedKeys","keys","getCheckedKeys","getCheckedNodes","clearSearch","startResize","preventDefault","stopPropagation","clientX","touches","document","addEventListener","handleResizeMove","stopResize","passive","disableUserSelect","_this3","requestAnimationFrame","deltaX","newWidth","clampedWidth","Math","max","min","abs","removeEventListener","enableUserSelect","body","style","userSelect","webkitUserSelect","mozUserSelect","msUserSelect","resetWidth","getCurrentWidth","setWidth"],"sources":["src/components/TreePanel/index.vue"],"sourcesContent":["<template>\r\n <div class=\"tree-sidebar\" :class=\"{ collapsed: collapsed, resizing: isResizing, 'no-initial-transition': isLoadingFromStorage}\" :style=\"{ width: sidebarWidth + 'px' }\">\r\n <!-- 右侧拖动条 -->\r\n <div v-if=\"!collapsed\" class=\"resize-handle\" @mousedown=\"startResize\" @touchstart=\"startResize\" :class=\"{ active: isResizing }\" />\r\n <div class=\"tree-header\">\r\n <span class=\"tree-title\" v-show=\"!collapsed\">\r\n <i :class=\"titleIconClass\"></i> {{ title }}\r\n </span>\r\n <div class=\"tree-actions\" v-show=\"!collapsed\">\r\n <el-tooltip :content=\"isExpandedAll ? '收起全部' : '展开全部'\" placement=\"right\">\r\n <i class=\"tree-action-icon\" :class=\"isExpandedAll ? 'el-icon-arrow-down' : 'el-icon-arrow-up'\" @click=\"toggleExpandAll\" />\r\n </el-tooltip>\r\n <el-tooltip content=\"刷新\" placement=\"right\">\r\n <i class=\"tree-action-icon el-icon-refresh\" @click=\"handleRefresh\" />\r\n </el-tooltip>\r\n <slot name=\"actions\"></slot>\r\n </div>\r\n </div>\r\n \r\n <!-- 侧边栏展开/收起按钮 -->\r\n <div class=\"collapse-button-container\">\r\n <el-tooltip :content=\"collapsed ? '展开' : '收起'\" placement=\"right\">\r\n <i class=\"collapse-button\" :class=\"collapsed ? 'el-icon-d-arrow-right' : 'el-icon-d-arrow-left'\" @click=\"toggleCollapsed\" />\r\n </el-tooltip>\r\n </div>\r\n\r\n <div class=\"tree-search\" v-show=\"!collapsed\" v-if=\"showSearch\">\r\n <el-input v-model=\"searchKeyword\" :placeholder=\"searchPlaceholder\" clearable size=\"small\" prefix-icon=\"el-icon-search\" @input=\"onSearch\" />\r\n </div>\r\n\r\n <div class=\"tree-wrap\" v-show=\"!collapsed\">\r\n <el-tree \r\n ref=\"treeRef\" \r\n :data=\"treeData\" \r\n :props=\"treeProps\" \r\n :expand-on-click-node=\"expandOnClickNode\"\r\n :filter-node-method=\"filterNodeMethod\"\r\n :default-expand-all=\"defaultExpandAll\"\r\n :default-expanded-keys=\"defaultExpandedKeys\"\r\n :node-key=\"nodeKey\"\r\n :check-strictly=\"checkStrictly\"\r\n :show-checkbox=\"showCheckbox\"\r\n @node-click=\"onNodeClick\"\r\n @check=\"onCheck\"\r\n @node-expand=\"onNodeExpand\"\r\n @node-collapse=\"onNodeCollapse\"\r\n >\r\n <span class=\"tree-node\" slot-scope=\"{ node, data }\">\r\n <slot name=\"node\" :node=\"node\" :data=\"data\">\r\n <i :class=\"data.children && data.children.length ? 'el-icon-folder' : 'el-icon-document'\" class=\"node-icon\" />\r\n <span class=\"node-label\" :title=\"node.label\">{{ node.label }}</span>\r\n </slot>\r\n </span>\r\n </el-tree>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"TreeSidebar\",\r\n props: {\r\n // 树形数据\r\n treeData: {\r\n type: Array,\r\n default: () => []\r\n },\r\n // 标题\r\n title: {\r\n type: String,\r\n default: '树形结构'\r\n },\r\n // 标题图标类名\r\n titleIconClass: {\r\n type: String,\r\n default: 'el-icon-office-building'\r\n },\r\n // 是否显示搜索框\r\n showSearch: {\r\n type: Boolean,\r\n default: true\r\n },\r\n // 搜索框占位符\r\n searchPlaceholder: {\r\n type: String,\r\n default: '请输入名称'\r\n },\r\n // 是否默认收起侧边栏\r\n defaultCollapsed: {\r\n type: Boolean,\r\n default: false\r\n },\r\n // 树配置项\r\n treeProps: {\r\n type: Object,\r\n default: () => ({\r\n children: \"children\",\r\n label: \"label\"\r\n })\r\n },\r\n // 节点唯一标识字段\r\n nodeKey: {\r\n type: String,\r\n default: 'id'\r\n },\r\n // 是否在点击节点时展开或收起\r\n expandOnClickNode: {\r\n type: Boolean,\r\n default: false\r\n },\r\n // 是否显示复选框\r\n showCheckbox: {\r\n type: Boolean,\r\n default: false\r\n },\r\n // 是否严格的遵循父子不互相关联\r\n checkStrictly: {\r\n type: Boolean,\r\n default: false\r\n },\r\n // 是否默认展开所有节点\r\n defaultExpandAll: {\r\n type: Boolean,\r\n default: false\r\n },\r\n // 默认展开的节点的key数组\r\n defaultExpandedKeys: {\r\n type: Array,\r\n default: () => []\r\n },\r\n // 默认宽度\r\n defaultWidth: {\r\n type: Number,\r\n default: 220\r\n },\r\n // 收起时的宽度\r\n collapsedWidth: {\r\n type: Number,\r\n default: 20\r\n },\r\n // 最小宽度\r\n minWidth: {\r\n type: Number,\r\n default: 180\r\n },\r\n // 最大宽度\r\n maxWidth: {\r\n type: Number,\r\n default: 400\r\n },\r\n // 本地存储的宽度key\r\n storageKey: {\r\n type: String,\r\n default: 'tree-sidebar-width'\r\n },\r\n // 是否启用本地存储宽度\r\n enableStorage: {\r\n type: Boolean,\r\n default: true\r\n },\r\n // 自定义过滤方法\r\n filterMethod: {\r\n type: Function,\r\n default: null\r\n }\r\n },\r\n data() {\r\n return {\r\n searchKeyword: \"\",\r\n collapsed: this.defaultCollapsed,\r\n sidebarWidth: this.defaultCollapsed ? this.collapsedWidth : this.defaultWidth,\r\n isResizing: false,\r\n startX: 0,\r\n startWidth: 0,\r\n saveWidthTimer: null,\r\n rafId: null,\r\n isLoadingFromStorage: false,\r\n expandedAll: this.defaultExpandAll\r\n };\r\n },\r\n computed: {\r\n // 计算当前是否全部展开\r\n isExpandedAll: {\r\n get() {\r\n return this.expandedAll;\r\n },\r\n set(val) {\r\n this.expandedAll = val;\r\n }\r\n }\r\n },\r\n watch: {\r\n collapsed(newVal, oldVal) {\r\n if (newVal !== oldVal) {\r\n this.handleCollapseChange(newVal);\r\n this.$emit(\"collapsed-change\", newVal);\r\n }\r\n },\r\n // 监听内部展开状态变化,触发实际树的展开/收起\r\n expandedAll(newVal) {\r\n this.$nextTick(() => {\r\n if (newVal) {\r\n this.expandAllNodes();\r\n } else {\r\n this.collapseAllNodes();\r\n }\r\n });\r\n this.$emit(\"expanded-all-change\", newVal);\r\n },\r\n // 监听搜索关键词\r\n searchKeyword(val) {\r\n if (this.$refs.treeRef) {\r\n this.$refs.treeRef.filter(val);\r\n this.$emit(\"search\", val);\r\n }\r\n }\r\n },\r\n mounted() {\r\n this.isLoadingFromStorage = true\r\n if (!this.collapsed && this.enableStorage) {\r\n const savedWidth = this.getSavedWidth();\r\n if (savedWidth !== null) {\r\n this.sidebarWidth = savedWidth;\r\n }\r\n }\r\n this.$nextTick(() => {\r\n this.isLoadingFromStorage = false\r\n })\r\n if (this.expandedAll) {\r\n this.$nextTick(() => {\r\n this.expandAllNodes();\r\n });\r\n }\r\n },\r\n beforeDestroy() {\r\n this.cleanup();\r\n },\r\n methods: {\r\n // 节点过滤方法\r\n filterNodeMethod(value, data) {\r\n if (this.filterMethod) {\r\n return this.filterMethod(value, data);\r\n }\r\n if (!value) return true;\r\n return data.label && data.label.indexOf(value) !== -1;\r\n },\r\n // 清理定时器和动画帧\r\n cleanup() {\r\n if (this.rafId) {\r\n cancelAnimationFrame(this.rafId);\r\n this.rafId = null;\r\n }\r\n if (this.saveWidthTimer) {\r\n clearTimeout(this.saveWidthTimer);\r\n this.saveWidthTimer = null;\r\n }\r\n },\r\n // 处理收起/展开状态变化\r\n handleCollapseChange(isCollapsed) {\r\n if (isCollapsed) {\r\n this.saveWidthToStorage();\r\n this.sidebarWidth = this.collapsedWidth;\r\n } else {\r\n const savedWidth = this.getSavedWidth();\r\n this.sidebarWidth = savedWidth !== null ? savedWidth : this.defaultWidth;\r\n }\r\n },\r\n // 获取保存的宽度\r\n getSavedWidth() {\r\n if (!this.enableStorage) {\r\n return null;\r\n }\r\n try {\r\n const savedWidth = localStorage.getItem(this.storageKey);\r\n if (savedWidth) {\r\n const width = parseInt(savedWidth, 10);\r\n if (!isNaN(width) && width >= this.minWidth && width <= this.maxWidth) {\r\n return width;\r\n }\r\n }\r\n } catch (error) {\r\n console.warn(`Failed to load sidebar width from storage with key ${this.storageKey}:`, error);\r\n }\r\n return null;\r\n },\r\n // 保存宽度到本地存储\r\n saveWidthToStorage() {\r\n if (this.collapsed || !this.enableStorage) return;\r\n try {\r\n localStorage.setItem(this.storageKey, this.sidebarWidth.toString());\r\n } catch (error) {\r\n console.warn(`Failed to save sidebar width to storage with key ${this.storageKey}:`, error);\r\n }\r\n },\r\n // 切换侧边栏收起/展开状态\r\n toggleCollapsed() {\r\n this.collapsed = !this.collapsed;\r\n },\r\n // 切换展开/折叠所有节点\r\n toggleExpandAll() {\r\n this.isExpandedAll = !this.isExpandedAll;\r\n },\r\n // 展开所有节点\r\n expandAllNodes() {\r\n if (!this.$refs.treeRef) return;\r\n const allNodes = this.getAllNodes(this.$refs.treeRef.root);\r\n allNodes.forEach(node => {\r\n if (node.expanded !== undefined && !node.expanded) {\r\n node.expanded = true;\r\n }\r\n });\r\n },\r\n // 获取所有节点\r\n getAllNodes(rootNode) {\r\n const nodes = [];\r\n const traverse = (node) => {\r\n if (!node) return;\r\n nodes.push(node);\r\n if (node.childNodes && node.childNodes.length) {\r\n node.childNodes.forEach(child => traverse(child));\r\n }\r\n };\r\n traverse(rootNode);\r\n return nodes;\r\n },\r\n // 收起所有节点\r\n collapseAllNodes() {\r\n if (!this.$refs.treeRef) return;\r\n const allNodes = this.getAllNodes(this.$refs.treeRef.root);\r\n allNodes.forEach(node => {\r\n if (node.expanded !== undefined && node.expanded) {\r\n node.expanded = false;\r\n }\r\n });\r\n },\r\n // 处理刷新操作\r\n handleRefresh() {\r\n this.$emit(\"refresh\");\r\n },\r\n // 节点点击事件\r\n onNodeClick(data, node, e) {\r\n this.$emit(\"node-click\", data, node, e);\r\n },\r\n // 复选框选中事件\r\n onCheck(data, checkedInfo) {\r\n this.$emit(\"check\", data, checkedInfo);\r\n },\r\n // 节点展开事件\r\n onNodeExpand(data, node, e) {\r\n this.$emit(\"node-expand\", data, node, e);\r\n },\r\n // 节点折叠事件\r\n onNodeCollapse(data, node, e) {\r\n this.$emit(\"node-collapse\", data, node, e);\r\n },\r\n // 搜索处理\r\n onSearch() {\r\n // 搜索逻辑已在 watch 中处理\r\n },\r\n // 设置当前选中的节点\r\n setCurrentKey(key) {\r\n if (this.$refs.treeRef) {\r\n this.$refs.treeRef.setCurrentKey(key);\r\n }\r\n },\r\n // 获取当前选中的节点\r\n getCurrentNode() {\r\n if (this.$refs.treeRef) {\r\n return this.$refs.treeRef.getCurrentNode();\r\n }\r\n return null;\r\n },\r\n // 获取当前选中的节点的key\r\n getCurrentKey() {\r\n if (this.$refs.treeRef) {\r\n return this.$refs.treeRef.getCurrentKey();\r\n }\r\n return null;\r\n },\r\n // 设置选中的节点keys(复选框)\r\n setCheckedKeys(keys) {\r\n if (this.$refs.treeRef && this.showCheckbox) {\r\n this.$refs.treeRef.setCheckedKeys(keys);\r\n }\r\n },\r\n // 获取选中的节点keys(复选框)\r\n getCheckedKeys() {\r\n if (this.$refs.treeRef && this.showCheckbox) {\r\n return this.$refs.treeRef.getCheckedKeys();\r\n }\r\n return [];\r\n },\r\n // 获取选中的节点(复选框)\r\n getCheckedNodes() {\r\n if (this.$refs.treeRef && this.showCheckbox) {\r\n return this.$refs.treeRef.getCheckedNodes();\r\n }\r\n return [];\r\n },\r\n // 清空搜索\r\n clearSearch() {\r\n this.searchKeyword = \"\";\r\n if (this.$refs.treeRef) {\r\n this.$refs.treeRef.filter(\"\");\r\n }\r\n },\r\n // 过滤树\r\n filter(value) {\r\n this.searchKeyword = value;\r\n },\r\n // 开始调整大小\r\n startResize(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.isResizing = true;\r\n this.startX = e.type === 'mousedown' ? e.clientX : e.touches[0].clientX;\r\n this.startWidth = this.sidebarWidth;\r\n \r\n if (e.type === 'mousedown') {\r\n document.addEventListener('mousemove', this.handleResizeMove);\r\n document.addEventListener('mouseup', this.stopResize);\r\n } else {\r\n document.addEventListener('touchmove', this.handleResizeMove, { passive: false });\r\n document.addEventListener('touchend', this.stopResize);\r\n }\r\n this.disableUserSelect();\r\n },\r\n // 处理调整大小移动\r\n handleResizeMove(e) {\r\n if (!this.isResizing) return;\r\n if (this.rafId) {\r\n cancelAnimationFrame(this.rafId);\r\n }\r\n this.rafId = requestAnimationFrame(() => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const clientX = e.type === 'mousemove' ? e.clientX : e.touches[0].clientX;\r\n const deltaX = clientX - this.startX;\r\n const newWidth = this.startWidth + deltaX;\r\n const clampedWidth = Math.max(this.minWidth, Math.min(this.maxWidth, newWidth));\r\n if (Math.abs(clampedWidth - this.sidebarWidth) >= 1) {\r\n this.sidebarWidth = clampedWidth;\r\n }\r\n });\r\n },\r\n // 停止调整大小\r\n stopResize() {\r\n if (!this.isResizing) return;\r\n this.isResizing = false;\r\n if (this.rafId) {\r\n cancelAnimationFrame(this.rafId);\r\n this.rafId = null;\r\n }\r\n this.startX = 0;\r\n this.startWidth = 0;\r\n document.removeEventListener('mousemove', this.handleResizeMove);\r\n document.removeEventListener('mouseup', this.stopResize);\r\n document.removeEventListener('touchmove', this.handleResizeMove);\r\n document.removeEventListener('touchend', this.stopResize);\r\n this.enableUserSelect();\r\n this.saveWidthToStorage();\r\n },\r\n // 禁用用户选择\r\n disableUserSelect() {\r\n document.body.style.userSelect = 'none';\r\n document.body.style.webkitUserSelect = 'none';\r\n document.body.style.mozUserSelect = 'none';\r\n document.body.style.msUserSelect = 'none';\r\n },\r\n // 启用用户选择\r\n enableUserSelect() {\r\n document.body.style.userSelect = '';\r\n document.body.style.webkitUserSelect = '';\r\n document.body.style.mozUserSelect = '';\r\n document.body.style.msUserSelect = '';\r\n },\r\n // 重置宽度到默认值\r\n resetWidth() {\r\n this.sidebarWidth = this.defaultWidth;\r\n this.saveWidthToStorage();\r\n },\r\n // 获取当前宽度\r\n getCurrentWidth() {\r\n return this.sidebarWidth;\r\n },\r\n // 设置宽度\r\n setWidth(width) {\r\n if (typeof width === 'number' && width >= this.minWidth && width <= this.maxWidth) {\r\n this.sidebarWidth = width;\r\n if (!this.collapsed) {\r\n this.saveWidthToStorage();\r\n }\r\n }\r\n }\r\n }\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.tree-sidebar {\r\n flex-shrink: 0;\r\n width: 220px;\r\n background: #fff;\r\n border-right: 1px solid #e8eaed;\r\n display: flex;\r\n flex-direction: column;\r\n overflow: hidden;\r\n position: relative;\r\n transition: width 0.25s ease;\r\n \r\n &.collapsed {\r\n width: 42px;\r\n }\r\n \r\n &.resizing {\r\n transition: none;\r\n will-change: width;\r\n \r\n * {\r\n pointer-events: none !important;\r\n }\r\n }\r\n \r\n &.no-initial-transition {\r\n transition: none;\r\n }\r\n}\r\n\r\n.resize-handle {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n width: 6px;\r\n height: 100%;\r\n cursor: col-resize;\r\n z-index: 20;\r\n background: transparent;\r\n transition: background 0.2s;\r\n \r\n &:hover {\r\n background: rgba(64, 158, 255, 0.3);\r\n }\r\n \r\n &.active {\r\n background: rgba(64, 158, 255, 0.5);\r\n }\r\n}\r\n\r\n.collapse-button-container {\r\n position: absolute;\r\n top: 50%;\r\n right: 0;\r\n transform: translateY(-50%);\r\n z-index: 100;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 15px;\r\n height: 20px;\r\n background: #fff;\r\n border-radius: 0 4px 4px 0;\r\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\r\n transition: all 0.2s ease;\r\n \r\n .tree-sidebar.collapsed & {\r\n right: 0;\r\n background: #f7f8fa;\r\n border-radius: 0 4px 4px 0;\r\n }\r\n \r\n .tree-sidebar.resizing & {\r\n pointer-events: none;\r\n }\r\n}\r\n\r\n.collapse-button {\r\n font-size: 14px;\r\n color: #909399;\r\n cursor: pointer;\r\n padding: 4px;\r\n border-radius: 4px;\r\n transition: all 0.2s;\r\n \r\n &:hover {\r\n color: #00875A;\r\n background: #E6F4EA;\r\n }\r\n}\r\n\r\n.tree-header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 0 10px;\r\n height: 40px;\r\n border-bottom: 1px solid #e8eaed;\r\n background: #f7f8fa;\r\n flex-shrink: 0;\r\n\r\n .tree-title {\r\n font-size: 13px;\r\n font-weight: 600;\r\n color: #303133;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n display: flex;\r\n align-items: center;\r\n gap: 5px;\r\n\r\n i {\r\n color: #00875A;\r\n font-size: 14px;\r\n }\r\n }\r\n\r\n .tree-actions {\r\n display: flex;\r\n align-items: center;\r\n gap: 4px;\r\n flex-shrink: 0;\r\n }\r\n}\r\n\r\n.tree-action-icon {\r\n font-size: 14px;\r\n color: #909399;\r\n cursor: pointer;\r\n padding: 4px;\r\n border-radius: 4px;\r\n transition: all 0.2s;\r\n\r\n &:hover {\r\n color: #00875A;\r\n background: #E6F4EA;\r\n }\r\n}\r\n\r\n.tree-search {\r\n padding: 10px 10px 4px;\r\n flex-shrink: 0;\r\n}\r\n\r\n.tree-wrap {\r\n flex: 1;\r\n overflow-y: auto;\r\n padding: 6px 6px 12px;\r\n \r\n .tree-sidebar.resizing & {\r\n overflow: hidden;\r\n }\r\n\r\n &::-webkit-scrollbar {\r\n width: 4px;\r\n }\r\n\r\n &::-webkit-scrollbar-thumb {\r\n background: #dcdfe6;\r\n border-radius: 4px;\r\n \r\n &:hover {\r\n background: #c0c4cc;\r\n }\r\n }\r\n\r\n ::v-deep .el-tree-node__content {\r\n height: 32px;\r\n border-radius: 4px;\r\n margin-bottom: 1px;\r\n\r\n &:hover {\r\n background: #f0f7ff;\r\n }\r\n }\r\n\r\n ::v-deep .el-tree-node.is-current > .el-tree-node__content {\r\n background: #E3F2E9;\r\n color: #00875A;\r\n font-weight: 600;\r\n\r\n .node-icon {\r\n color: #00875A !important;\r\n }\r\n }\r\n}\r\n\r\n.tree-node {\r\n display: flex;\r\n align-items: center;\r\n gap: 5px;\r\n font-size: 13px;\r\n overflow: hidden;\r\n\r\n .node-icon {\r\n font-size: 14px;\r\n color: #f5a623;\r\n flex-shrink: 0;\r\n }\r\n\r\n .node-label {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n }\r\n}\r\n\r\n::v-deep .el-icon-document.node-icon {\r\n color: #909399 !important;\r\n}\r\n</style>"],"mappings":"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","ignoreList":[]}]}