toolbar 出现事件

toolbar出现事件

// 当toolbar出现事件
// onToolbarShow((selection, toolbar, protyle) => {
//     console.log(selection, toolbar, protyle);
// });
function onToolbarShow(callback) {
    let isMouseupListenerActive = false; // 标志变量,用于跟踪是否已经绑定了 mouseup 事件
    document.addEventListener('selectionchange', () => {
        // 如果已经有 mouseup 监听器,直接返回,避免重复绑定
        if (isMouseupListenerActive) return;
        // 标记为已绑定 mouseup 监听器
        isMouseupListenerActive = true;
        const mouseupHandler = (event) => {
            // 获取当前选中的文本
            const selection = window.getSelection().toString().trim();
            if (!selection) {
                // 如果没有选中文本,重置标志变量并移除监听器
                isMouseupListenerActive = false;
                document.removeEventListener('mouseup', mouseupHandler);
                return;
            }

            // 查找最近的 .protyle 元素
            const protyle = event.target.closest('.protyle');
            if (!protyle) {
                // 如果没有找到 .protyle 元素,重置标志变量并移除监听器
                isMouseupListenerActive = false;
                document.removeEventListener('mouseup', mouseupHandler);
                return;
            }

            // 查找工具栏元素
            const toolbar = protyle.querySelector('.protyle-toolbar');
            if (!toolbar) {
                // 如果没有找到工具栏元素,重置标志变量并移除监听器
                isMouseupListenerActive = false;
                document.removeEventListener('mouseup', mouseupHandler);
                return;
            }

            // 执行回调函数
            if (typeof callback === 'function') {
                callback(selection, toolbar, protyle);
            }

            // 移除 mouseup 事件监听器,并重置标志变量
            isMouseupListenerActive = false;
            document.removeEventListener('mouseup', mouseupHandler);
        };

        // 绑定 mouseup 事件监听器
        document.addEventListener('mouseup', mouseupHandler);
    });
}
image.png

留下你的脚步
推荐阅读