CoCo点击方式添加控件!
目前為
/*
* ============================================================================== *
******************************* CoCoClick v1.0.1 *******************************
****************** Copyright (C) 2023 xiaohong2022 *****************
* ============================================================================== *
*/
// ==UserScript==
// @name CoCoClick
// @namespace http://tampermonkey.net/
// @version 1.0.1
// @description CoCo点击方式添加控件!
// @author 小宏XeLa
// @match *://coco.codemao.cn/editor/*
// @icon https://coco.codemao.cn/favicon.ico
// @grant GM_addStyle
// @license GPL-3.0
// @run-at document-start
// ==/UserScript==
(function () {
"use strict";
var dataTransfer = {
setData(n, v) {
this[n] = v;
},
getData(n) {
return this[n];
}
};
setInterval(() => {
document.querySelectorAll(`*[class*="WidgetList_widgetItem"]`).forEach((e) => {
if (e.cococlick) return;
e.cococlick = true;
e.draggable = false;
e.style.cursor = "pointer";
e.addEventListener("click", function () {
var sen = document.querySelector(`*[class*="PreviewArea_main"]`);
var x = sen.offsetLeft + sen.offsetWidth / 2;
var y = sen.offsetTop + sen.offsetHeight / 2;
var keys = Object.keys(e);
var key = keys.find((e) => e.startsWith("__reactEventHandlers"));
e[key].onDragStart({
target: e,
dataTransfer,
persist() {
return true;
},
clientX: x,
clientY: y,
x: x + 100,
y
});
var stage = document.querySelector(`*[class*="PreviewArea_stage"]`);
stage[key].onDragOver({ preventDefault() { } });
stage[key].onDrop({
dataTransfer,
persist() {
return true;
},
clientX: x + 142,
clientY: y - 3,
x: x + 100,
y
});
if (e.dataset.widgetType == "BRUSH_WIDGET" || e.dataset.widgetType == "ACTOR_WIDGET") {
document.querySelectorAll(`*[data-widget-type="CANVAS_WIDGET"][id*="CANVAS_WIDGET"]`).forEach((en, _, array) => {
function click(ew) {
en[key].onDragEnter({
dataTransfer,
persist: () => true,
stopPropagation: () => true,
});
stage[key].onDragOver({ preventDefault() { } });
en[key].onDrop({
dataTransfer,
persist: () => true,
stopPropagation: () => true,
clientX: ew.clientX,
clientY: ew.clientY,
x: ew.x,
y: ew.y
});
stage[key].onDrop({
dataTransfer,
persist: () => true,
});
array.forEach(e => e.removeEventListener("click", e.cococlickfunc, false));
e[key].onDragEnd();
}
en.cococlickfunc = click;
en.addEventListener("click", click, false);
});
} else {
e[key].onDragEnd();
}
});
});
}, 100);
GM_addStyle(`[class*=WidgetList_widgetItem]:before{top:-16px;padding:3px 7px;width:auto;border-radius:5px;background:#fff;box-shadow:1px 1px 10px rgba(0,0,0,.33);content:"点击导入";transform:translateX(-50%)}[class*=WidgetList_widgetItem]:after,[class*=WidgetList_widgetItem]:before{position:absolute;left:50%;z-index:1e+27;color:#000;font-size:12px;opacity:0;transition:.1s}[class*=WidgetList_widgetItem]:after{top:5px;border-color:transparent transparent #fff;border-style:solid;border-width:0 5px 8px;content:"";transform:translateX(-50%) rotate(180deg)}[class*=WidgetList_widgetItem]{position:relative;z-index:1e+27}[class*=WidgetList_widgetItem]:hover:before{top:-28px;opacity:1}[class*=WidgetList_widgetItem]:hover:after{top:-6px;opacity:1}[class*=WidgetList_widgetItem]:hover{box-shadow:none!important;-webkit-transform:none!important;transform:none!important}`);
})();