To use these download my Bridge here
Then save the code blocks I add in this topic into a folder (Bridge Scripts) Luke Tools lets you load them as you need them.
Save the contes of the block as a *.txt file - So this one is a Rotate.txt
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<style>
body {
padding: 15px;
color: #eaeaea;
font-family: Arial, sans-serif;
background: transparent;
}
.container {
display: flex;
flex-direction: column;
gap: 15px;
}
.info-box {
background: rgba(255, 255, 255, 0.05);
padding: 10px;
border-radius: 8px;
font-size: 13px;
border: 1px solid rgba(255, 255, 255, 0.1);
}
.control-group {
display: flex;
flex-direction: column;
gap: 8px;
}
input[type=range] {
width: 100%;
cursor: pointer;
}
.label-row {
display: flex;
justify-content: space-between;
font-weight: bold;
}
button {
padding: 8px;
border-radius: 6px;
border: none;
background: #21b26b;
color: white;
cursor: pointer;
font-weight: bold;
}
button:hover { background: #1a8e56; }
</style>
</head>
<body>
<div class="container">
<div class="info-box" id="selectionDisplay">
No clip captured. Click "Capture Selection" below.
</div>
<div class="control-group">
<div class="label-row">
<span>Rotation</span>
<span id="angleValue">0°</span>
</div>
<input type="range" id="rotateSlider" min="0" max="360" value="0">
</div>
<button id="captureBtn">Capture Selected Clip</button>
</div>
<script>
const bridge = window.LukeToolsBridge;
const slider = document.getElementById('rotateSlider');
const angleDisplay = document.getElementById('angleValue');
const selectionDisplay = document.getElementById('selectionDisplay');
const captureBtn = document.getElementById('captureBtn');
var F_Screen = 0;
let lastAngle = 0;
function updateSelectionInfo() {
// Use the bridge to get the currently selected clip info [cite: 504, 516]
const info = bridge.getSelectionInfo();
if (info && info.ok) {
selectionDisplay.innerHTML = `<strong>Selected:</strong> ${info.name || 'Unnamed'}<br><small>UUID: ${info.uuid}</small>`;
return info;
} else {
selectionDisplay.innerText = "Nothing selected in editor.";
return null;
}
}
slider.addEventListener('input', () => {
const currentAngle = parseInt(slider.value);
const delta = currentAngle - lastAngle;
angleDisplay.innerText = `${currentAngle}°`;
// Rotate the selection via the bridge [cite: 518, 520]
// We use viaInspector: false for direct property manipulation to keep focus
bridge.rotateSelection(delta, {
viaInspector: false,
keyframe: true
});
lastAngle = currentAngle;
});
captureBtn.addEventListener('click', () => {
// Force bridge to capture and store selection in localStorage [cite: 505, 512]
const result = bridge.captureSelectionNow();
if (result.ok) {
updateSelectionInfo();
slider.value = 0;
lastAngle = 0;
angleDisplay.innerText = "0°";
}
});
// Initial check
updateSelectionInfo();
</script>
</body>
</html>
Create a clip on stage give it a name select it and run Luke Tools and load the Rotat.txt.