diff --git a/ea-scripts/Box Each Selected Groups.md b/ea-scripts/Box Each Selected Groups.md index 4f5019d..6875f96 100644 --- a/ea-scripts/Box Each Selected Groups.md +++ b/ea-scripts/Box Each Selected Groups.md @@ -20,7 +20,37 @@ https://zsviczian.github.io/obsidian-excalidraw-plugin/ExcalidrawScriptsEngine.h ```javascript */ -const paddingStr = await utils.inputPrompt("padding?","string","8"); +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" + }, + "Remember last padding?": false + }; + ea.setScriptSettings(settings); +} + +let paddingStr = settings["Default padding"].value.toString(); +const rememberLastPadding = settings["Remember last padding?"]; + +if(settings["Prompt for padding?"]) { + paddingStr = await utils.inputPrompt("padding?","string",paddingStr); +} +if(!paddingStr) { + return; +} +if(rememberLastPadding) { + settings["Default padding"].value = paddingStr; + ea.setScriptSettings(settings); +} var paddingLR = 0; var paddingTB = 0; if(paddingStr.indexOf(',') > 0) { @@ -41,7 +71,6 @@ const groups = ea.getMaximumGroups(selectedElements); const allIndividualArrows = ea.getMaximumGroups(ea.getViewElements()) .reduce((result, group) => (group.length === 1 && (group[0].type === 'arrow' || group[0].type === 'line')) ? [...result, group[0]] : result, []); - for(const elements of groups) { if(elements.length === 1 && elements[0].type ==="arrow" || elements[0].type==="line") { // individual arrows or lines are not affected diff --git a/ea-scripts/Fixed spacing.md b/ea-scripts/Fixed spacing.md index 801e010..b4c3902 100644 --- a/ea-scripts/Fixed spacing.md +++ b/ea-scripts/Fixed spacing.md @@ -11,13 +11,42 @@ When we create an architecture diagram or mind map, we often need to arrange a l ```javascript */ -const spacing = parseInt (await utils.inputPrompt("spacing?","number","8")); +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 spacing"]) { + settings = { + "Prompt for spacing?": true, + "Default spacing" : { + value: 10, + description: "Fixed horizontal spacing between elements" + }, + "Remember last spacing?": false + }; + ea.setScriptSettings(settings); +} + +let spacingStr = settings["Default spacing"].value.toString(); +const rememberLastSpacing = settings["Remember last spacing?"]; + +if(settings["Prompt for spacing?"]) { + spacingStr = await utils.inputPrompt("spacing?","number",spacingStr); +} + +const spacing = parseInt(spacingStr); if(isNaN(spacing)) { return; } -const elements=ea.getViewSelectedElements() +if(rememberLastSpacing) { + settings["Default spacing"].value = spacing; + ea.setScriptSettings(settings); +} +const elements=ea.getViewSelectedElements(); +const topGroups = ea.getMaximumGroups(elements) .filter(els => !(els.length === 1 && els[0].type ==="arrow")); // ignore individual arrows -const topGroups = ea.getMaximumGroups(elements); const groups = topGroups.sort((lha,rha) => lha[0].x - rha[0].x); for(var i=0; i !(els.length === 1 && els[0].type ==="arrow")); // ignore individual arrows diff --git a/ea-scripts/Modify background color opacity.md b/ea-scripts/Modify background color opacity.md index 8229850..e043fb8 100644 --- a/ea-scripts/Modify background color opacity.md +++ b/ea-scripts/Modify background color opacity.md @@ -13,10 +13,39 @@ Although excalidraw has the opacity option in its native property Settings, it a ```javascript */ -const alpha = parseFloat(await utils.inputPrompt("Background color opacity?","number","0.6")); +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 opacity"]) { + settings = { + "Prompt for opacity?": true, + "Default opacity" : { + value: 0.6, + description: "Element's background color transparency" + }, + "Remember last opacity?": false + }; + ea.setScriptSettings(settings); +} + +let opacityStr = settings["Default opacity"].value.toString(); +const rememberLastOpacity = settings["Remember last opacity?"]; + +if(settings["Prompt for opacity?"]) { + opacityStr = await utils.inputPrompt("Background color opacity?","number",opacityStr); +} + +const alpha = parseFloat(opacityStr); if(isNaN(alpha)) { return; } +if(rememberLastOpacity) { + settings["Default opacity"].value = alpha; + ea.setScriptSettings(settings); +} const elements=ea.getViewSelectedElements().filter((el)=>["rectangle","ellipse","diamond","line","image"].includes(el.type)); ea.copyViewElementsToEAforEditing(elements); ea.getElements().forEach((el)=>{