refactor: replace debounce/throttle deps with first-party code (#38610)

Adds `web_src/js/utils/func.ts` with `debounce` and `throttle`, dropping
`throttle-debounce` and `perfect-debounce` dependencies. Both were
needed before: the former has no promise-returning debounce, which
`TextExpander` requires, and the latter no `throttle`.

Signature follows lodash and es-toolkit: `(func, wait, {leading,
trailing})` plus `cancel`, so argument order flips at the migrated call
sites.
This commit is contained in:
silverwind
2026-07-24 18:39:15 +02:00
committed by GitHub
parent 1e42317b66
commit 66794e0549
12 changed files with 173 additions and 44 deletions
+3 -3
View File
@@ -1,4 +1,4 @@
import {throttle} from 'throttle-debounce';
import {throttle} from '../utils/func.ts';
import {addDelegatedEventListener, generateElemId, isDocumentFragmentOrElementNode} from '../utils/dom.ts';
import octiconKebabHorizontal from '../../../public/assets/img/svg/octicon-kebab-horizontal.svg';
@@ -37,7 +37,7 @@ window.customElements.define('overflow-menu', class extends HTMLElement {
}
};
updateItems = throttle(100, () => {
updateItems = throttle(() => {
if (!this.popup) {
const div = document.createElement('div');
div.classList.add('overflow-menu-popup');
@@ -183,7 +183,7 @@ window.customElements.define('overflow-menu', class extends HTMLElement {
this.append(this.button);
this.append(this.popup);
this.updateButtonActivationState();
});
}, 100);
init() {
// for horizontal menus where fomantic boldens active items, prevent this bold text from