KJL后台-编辑器部件栏添加分类隐藏
// ==UserScript==
// @name KJL后台-编辑器部件栏添加分类隐藏
// @namespace Violentmonkey Scripts
// @match https://www.kujiale.com/vc/modeleditor/new
// @grant none
// @version 1.1
// @author hejie13250
// @description 2024/11/26 22:10:03
// ==/UserScript==
(function() {
'use strict';
// 添加样式到文档
var style = document.createElement('style');
document.head.appendChild(style);
style.type = 'text/css';
style.appendChild(document.createTextNode(`
/* 轮廓线的线宽与颜色 */
.profile-canvas .canvas-items-container .line {
stroke-width: 10;
stroke: rgba(0,0,0,.65);
}
/* 轮廓线选中后的线宽与颜色 */
.profile-canvas .canvas-items-container .line.selected {
stroke-width: 10;
stroke: #1a7af8;
}
/* 隐藏按钮的样式 */
.fwwEgA {
margin-left: 10px;
cursor: pointer;
color: #1a7af8;
}
`));
var count = 0;
// 创建隐藏按钮的函数
function createHideButtonForAll() {
// 获取所有的ul.tui-tree-new元素
var treeNewElements = document.querySelectorAll('ul.tui-tree-new');
treeNewElements.forEach(function(treeNew) {
// 查找特定的子元素位置
var targetElement = treeNew.querySelector('li:nth-child(1) > span:nth-child(1) > span:nth-child(2) > div:nth-child(1) > div:nth-child(1) > span:nth-child(1) > span:nth-child(1)');
if (targetElement) {
// 检查按钮是否已经存在,以避免重复添加
if (targetElement.nextElementSibling && targetElement.nextElementSibling.classList.contains('fwwEgA')) {
return;
}
// 创建全部隐藏按钮
var link = document.createElement('a');
link.setAttribute('role', 'button');
link.setAttribute('aria-disabled', 'false');
link.setAttribute('class', 'fwwEgA');
link.textContent = '隐藏';
// 创建隐藏布尔按钮
var booleanLink = document.createElement('a');
booleanLink.setAttribute('role', 'button');
booleanLink.setAttribute('aria-disabled', 'false');
booleanLink.setAttribute('class', 'fwwEgA');
booleanLink.textContent = '布尔';
// 添加点击事件监听器以隐藏布尔元素
booleanLink.addEventListener('click', function() {
var hideButtons = treeNew.querySelectorAll('.param-iconfont.param-yixianshibuermoxing-20px, .param-iconfont.param-yincangbuermoxing-20px');
hideButtons.forEach(function(button) {
button.click();
});
});
// 添加点击事件监听器以隐藏文本
link.addEventListener('click', function() {
var hideButtons = treeNew.querySelectorAll('.param-iconfont.param-eye-on, .param-iconfont.param-a-duixiang_yincang_20pxbeifen2');
hideButtons.forEach(function(button) {
button.click();
});
});
// 在目标元素后插入隐藏布尔按钮和全部隐藏按钮
targetElement.parentNode.insertBefore(link, targetElement.nextSibling);
if(count==0){
targetElement.parentNode.insertBefore(booleanLink, targetElement.nextSibling);
count++;
}
}
});
}
// MutationObserver配置
var observer = new MutationObserver(function(mutationsList) {
mutationsList.forEach(function(mutation) {
if (mutation.type === 'childList') {
// 当子节点列表变化时,为所有ul.tui-tree-new添加按钮
createHideButtonForAll();
}
});
});
// 观察器选项(监控子节点列表变化和子树变化)
var config = { childList: true, subtree: true };
// 开始监视body的变化
observer.observe(document.body, config);
// 初始化时也为所有ul.tui-tree-new添加按钮
createHideButtonForAll();
})();