mirror of
https://github.com/zsviczian/obsidian-excalidraw-plugin.git
synced 2025-08-06 05:46:28 +00:00
publishing relative font size cycle
This commit is contained in:
40
ea-scripts/Relative Font Size Cycle.md
Normal file
40
ea-scripts/Relative Font Size Cycle.md
Normal file
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
The script will cycle through S, M, L, XL font sizes scaled to the current canvas zoom.
|
||||
```js*/
|
||||
const FONTSIZES = [16, 20, 28, 36];
|
||||
const api = ea.getExcalidrawAPI();
|
||||
const st = api.getAppState();
|
||||
const zoom = st.zoom.value;
|
||||
const currentItemFontSize = st.currentItemFontSize;
|
||||
|
||||
const fontsizes = FONTSIZES.map(s=>s/zoom);
|
||||
const els = ea.getViewSelectedElements().filter(el=>el.type === "text");
|
||||
|
||||
const findClosestIndex = (val, list) => {
|
||||
let closestIndex = 0;
|
||||
let closestDifference = Math.abs(list[0] - val);
|
||||
for (let i = 1; i < list.length; i++) {
|
||||
const difference = Math.abs(list[i] - val);
|
||||
if (difference <= closestDifference) {
|
||||
closestDifference = difference;
|
||||
closestIndex = i;
|
||||
}
|
||||
}
|
||||
return closestIndex;
|
||||
}
|
||||
|
||||
ea.viewUpdateScene({appState:{currentItemFontSize: fontsizes[(findClosestIndex(currentItemFontSize, fontsizes)+1) % fontsizes.length] }});
|
||||
|
||||
if(els.length>0) {
|
||||
ea.copyViewElementsToEAforEditing(els);
|
||||
ea.getElements().forEach(el=> {
|
||||
el.fontSize = fontsizes[(findClosestIndex(el.fontSize, fontsizes)+1) % fontsizes.length];
|
||||
const font = ExcalidrawLib.getFontString(el);
|
||||
const lineHeight = ExcalidrawLib.getDefaultLineHeight(el.fontFamily);
|
||||
const {width, height, baseline} = ExcalidrawLib.measureText(el.originalText, font, lineHeight);
|
||||
el.width = width;
|
||||
el.height = height;
|
||||
el.baseline = baseline;
|
||||
});
|
||||
ea.addElementsToView();
|
||||
}
|
||||
4
ea-scripts/Relative Font Size Cycle.svg
Normal file
4
ea-scripts/Relative Font Size Cycle.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg viewBox="0 0 50 30" xmlns="http://www.w3.org/2000/svg">
|
||||
<text fill="currentColor" x="10" y="30" font-size="16px" font-weight="light">A</text>
|
||||
<text fill="currentColor" x="22" y="30" font-size="36px" font-weight="light">A</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 243 B |
File diff suppressed because one or more lines are too long
@@ -67,6 +67,7 @@ I would love to include your contribution in the script library. If you have a s
|
||||
| | |
|
||||
|----|-----|
|
||||
|<div><img src="https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/Convert%20selected%20text%20elements%20to%20sticky%20notes.svg"/></div>|[[#Convert selected text elements to sticky notes]]|
|
||||
|<div><img src="https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/Relative%20Font%20Size%20Cycle.svg"/></div>|[[#Relative Font Size Cycle]]|
|
||||
|<div><img src="https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/Scribble%20Helper.svg"/></div>|[[#Scribble Helper]]|
|
||||
|<div><img src="https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/Set%20Font%20Family.svg"/></div>|[[#Set Font Family]]|
|
||||
|<div><img src="https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/Set%20Text%20Alignment.svg"/></div>|[[#Set Text Alignment]]|
|
||||
@@ -432,6 +433,12 @@ https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea
|
||||
```
|
||||
<table><tr valign='top'><td class="label">Author</td><td class="data"><a href='https://github.com/zsviczian'>@zsviczian</a></td></tr><tr valign='top'><td class="label">Source</td><td class="data"><a href='https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/PDF%20Page%20Text%20to%20Clipboard.md'>File on GitHub</a></td></tr><tr valign='top'><td class="label">Description</td><td class="data">Copies the text from the selected PDF page on the Excalidraw canvas to the clipboard.<br><iframe width="400" height="225" src="https://www.youtube.com/embed/Kwt_8WdOUT4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><br><a href='https://youtu.be/Kwt_8WdOUT4' target='_blank'>Link to video on YouTube</a></td></tr></table>
|
||||
|
||||
## Relative Font Size Cycle
|
||||
```excalidraw-script-install
|
||||
https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/Relative%20Font%20Size%20Cycle.md
|
||||
```
|
||||
<table><tr valign='top'><td class="label">Author</td><td class="data"><a href='https://github.com/zsviczian'>@zsviczian</a></td></tr><tr valign='top'><td class="label">Source</td><td class="data"><a href='https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Relative%20Font%20Size%20Cycle.md'>File on GitHub</a></td></tr><tr valign='top'><td class="label">Description</td><td class="data">The script will cycle through S, M, L, XL font sizes scaled to the current canvas zoom.</td></tr></table>
|
||||
|
||||
## Rename Image
|
||||
```excalidraw-script-install
|
||||
https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/Rename%20Image.md
|
||||
|
||||
Reference in New Issue
Block a user