From f80a96c703feb0201012d406602a93d02cc33741 Mon Sep 17 00:00:00 2001 From: Sora Liu Date: Wed, 8 Nov 2023 17:11:55 +0400 Subject: [PATCH] feat(scripts): support repeat texts --- ea-scripts/Repeat Texts.md | 96 ++++++++++++++++++++++++++++++++ ea-scripts/Repeat Texts.svg | 7 +++ ea-scripts/index-new.md | 9 ++- images/scripts-repeat-texts.png | Bin 0 -> 28700 bytes 4 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 ea-scripts/Repeat Texts.md create mode 100644 ea-scripts/Repeat Texts.svg create mode 100755 images/scripts-repeat-texts.png diff --git a/ea-scripts/Repeat Texts.md b/ea-scripts/Repeat Texts.md new file mode 100644 index 0000000..17affc0 --- /dev/null +++ b/ea-scripts/Repeat Texts.md @@ -0,0 +1,96 @@ +/* + +![](https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/scripts-repeat-texts.png) +In the following script, we address the concept of repetition through the lens of numerical progression. As visualized by the image, where multiple circles each labeled with an even task number are being condensed into a linear sequence, our script will similarly iterate through a set of numbers. + +Inspired from [Repeat Elements](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Repeat%20Elements.md) + + +```javascript +*/ + +if(!ea.verifyMinimumPluginVersion || !ea.verifyMinimumPluginVersion("1.7.19")) { + new Notice("This script requires a newer version of Excalidraw. Please install the latest version."); + return; +} + +let repeatNum = parseInt(await utils.inputPrompt("repeat times?","number","5")); +if(!repeatNum) { + new Notice("Please enter a number."); + return; +} + +const selectedElements = ea.getViewSelectedElements().sort((lha,rha) => lha.x === rha.x ? lha.y - rha.y : lha.x - rha.x); + +const selectedBounds = selectedElements.filter(e => e.type !== "text"); +const selectedTexts = selectedElements.filter(e => e.type === "text"); +const selectedTextsById = selectedTexts.reduce((prev, next) => (prev[next.id] = next, prev), {}) + + +if(selectedTexts.length !== 2 || ![0, 2].includes(selectedBounds.length)) { + new Notice("Please select only 2 text elements."); + return; +} + +if(selectedBounds.length === 2) { + if(selectedBounds[0].type !== selectedBounds[1].type) { + new Notice("The selected elements must be of the same type."); + return; + } + if (!selectedBounds.every(e => e.boundElements?.length === 1)) { + new Notice("Only support the bound element with 1 text element."); + return; + } + if (!selectedBounds.every(e => !!selectedTextsById[e.boundElements?.[0]?.id])) { + new Notice("Bound element must refer to the text element."); + return; + } +} + +const prevBoundEl = selectedBounds.length ? selectedBounds[0] : selectedTexts[0]; +const nextBoundEl = selectedBounds.length ? selectedBounds[1] : selectedTexts[1]; +const prevTextEl = prevBoundEl.type === 'text' ? prevBoundEl : selectedTextsById[prevBoundEl.boundElements[0].id] +const nextTextEl = nextBoundEl.type === 'text' ? nextBoundEl : selectedTextsById[nextBoundEl.boundElements[0].id] + +const xDistance = nextBoundEl.x - prevBoundEl.x; +const yDistance = nextBoundEl.y - prevBoundEl.y; + +const numReg = /\d+/ +let textNumDiff +try { + const num0 = +prevTextEl.text.match(numReg) + const num1 = +nextTextEl.text.match(numReg) + textNumDiff = num1 - num0 +} catch(e) { + new Notice("Text must include a number!") + return; +} + +const repeatEl = (newEl, step) => { + ea.elementsDict[newEl.id] = newEl; + newEl.x += xDistance * (step + 1); + newEl.y += yDistance * (step + 1); + + if(newEl.text) { + const text = newEl.text.replace(numReg, (match) => +match + (step + 1) * textNumDiff) + newEl.originalText = text + newEl.rawText = text + newEl.text = text + } +} + +ea.copyViewElementsToEAforEditing(selectedBounds); +for(let i=0; i + + + + Svg Vector Icons : http://www.onlinewebfonts.com/icon + + diff --git a/ea-scripts/index-new.md b/ea-scripts/index-new.md index 81096ce..53da53f 100644 --- a/ea-scripts/index-new.md +++ b/ea-scripts/index-new.md @@ -120,6 +120,7 @@ I would love to include your contribution in the script library. If you have a s |
|[[#PDF Page Text to Clipboard]]| |
|[[#Rename Image]]| |
|[[#Repeat Elements]]| +|
|[[#Repeat Texts]]| |
|[[#Select Elements of Type]]| |
|[[#Select Similar Elements]]| |
|[[#Slideshow]]| @@ -428,6 +429,12 @@ https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea ```
Author@1-2-3
SourceFile on GitHub
DescriptionThis script will detect the difference between 2 selected elements, including position, size, angle, stroke and background color, and create several elements that repeat these differences based on the number of repetitions entered by the user.
+## Repeat Texts +```excalidraw-script-install +https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/Repeat%20Texts.md +``` +
Author@soraliu
SourceFile on GitHub
DescriptionIn the following script, we address the concept of repetition through the lens of numerical progression. As visualized by the image, where multiple circles each labeled with an even task number are being condensed into a linear sequence, our script will similarly iterate through a set of numbers
+ ## Reverse arrows ```excalidraw-script-install https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/Reverse%20arrows.md @@ -546,4 +553,4 @@ https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea ```excalidraw-script-install https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/Zoom%20to%20Fit%20Selected%20Elements.md ``` -
Author@zsviczian
SourceFile on GitHub
DescriptionSimilar to Excalidraw standard SHIFT+2 feature: Zoom to fit selected elements, but with the ability to zoom to 1000%. Inspiration: [#272](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/272)
\ No newline at end of file +
Author@zsviczian
SourceFile on GitHub
DescriptionSimilar to Excalidraw standard SHIFT+2 feature: Zoom to fit selected elements, but with the ability to zoom to 1000%. Inspiration: [#272](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/272)
diff --git a/images/scripts-repeat-texts.png b/images/scripts-repeat-texts.png new file mode 100755 index 0000000000000000000000000000000000000000..c781bfbe01468ee4d3db5aa0460dd3655ccd7809 GIT binary patch literal 28700 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

o7S@`;$*Bx*z?mHl%Z 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