mirror of
https://github.com/sissbruecker/linkding
synced 2024-11-25 12:50:23 +00:00
be789ea9e6
* Extract bookmark view contexts * Implement basic partial updates for bookmark list and tag cloud * Refactor confirm button JS into web component * Refactor bulk edit JS into web component * Refactor tag autocomplete JS into web component * Refactor bookmark page JS into web component * Refactor global shortcuts JS into web component * Update tests * Add E2E test for partial updates * Add partial updates for archived bookmarks * Add partial updates for shared bookmarks * Cleanup helpers * Improve naming in bulk edit * Refactor shared components into behaviors * Refactor bulk edit components into behaviors * Refactor bookmark list components into behaviors * Update tests * Combine all scripts into bundle * Fix E2E CI
37 lines
840 B
JavaScript
37 lines
840 B
JavaScript
export function debounce(callback, delay = 250) {
|
|
let timeoutId;
|
|
return (...args) => {
|
|
clearTimeout(timeoutId);
|
|
timeoutId = setTimeout(() => {
|
|
timeoutId = null;
|
|
callback(...args);
|
|
}, delay);
|
|
};
|
|
}
|
|
|
|
export function clampText(text, maxChars = 30) {
|
|
if (!text || text.length <= 30) return text;
|
|
|
|
return text.substr(0, maxChars) + "...";
|
|
}
|
|
|
|
export function getCurrentWordBounds(input) {
|
|
const text = input.value;
|
|
const end = input.selectionStart;
|
|
let start = end;
|
|
|
|
let currentChar = text.charAt(start - 1);
|
|
|
|
while (currentChar && currentChar !== " " && start > 0) {
|
|
start--;
|
|
currentChar = text.charAt(start - 1);
|
|
}
|
|
|
|
return { start, end };
|
|
}
|
|
|
|
export function getCurrentWord(input) {
|
|
const bounds = getCurrentWordBounds(input);
|
|
|
|
return input.value.substring(bounds.start, bounds.end);
|
|
}
|