/*

This script will add an encapsulating box around the currently selected elements in Excalidraw.

See documentation for more details: https://zsviczian.github.io/obsidian-excalidraw-plugin/ExcalidrawScriptsEngine.html

```javascript */ if(!ea.verifyMinimumPluginVersion || !ea.verifyMinimumPluginVersion(“1.5.21”)) { new Notice(“This script requires a newer version of Excalidraw. Please install the latest version.”); return; } settings = ea.getScriptSettings(); //set default values on first run if(!settings[“Default padding”]) { settings = { “Prompt for padding?”: true, “Default padding” : { value: 10, description: “Padding between the bounding box of the selected elements, and the box the script creates” } }; ea.setScriptSettings(settings); }

let padding = settings[“Default padding”].value;

if(settings[“Prompt for padding?”]) { padding = parseInt (await utils.inputPrompt(“padding?”,”number”,padding.toString())); }

if(isNaN(padding)) { new Notice(“The padding value provided is not a number”); return; } elements = ea.getViewSelectedElements(); const box = ea.getBoundingBox(elements); color = ea .getExcalidrawAPI() .getAppState() .currentItemStrokeColor; //uncomment for random color: //color = ‘#’+(Math.random()0xFFFFFF«0).toString(16).padStart(6,”0”); ea.style.strokeColor = color; id = ea.addRect( box.topX - padding, box.topY - padding, box.width + 2padding, box.height + 2*padding ); ea.copyViewElementsToEAforEditing(elements); ea.addToGroup([id].concat(elements.map((el)=>el.id))); ea.addElementsToView(false,false);


KhattaMicah Website © 2022 by Micah is licensed under CC BY-SA 4.0