Replaces LICENSE (GPLv3 -> AGPLv3) and prepends `SPDX-License-Identifier: AGPL-3.0-or-later` to every source file across decnet/, decnet_web/, tests/, scripts/, and tools/. Rationale: closes the GPLv3 ASP loophole so any party operating a modified DECNET as a network service must offer their modified source. Personal copyright (Samuel Paschuan) + inbound=outbound contributions make a future unilateral relicense infeasible. - LICENSE: full AGPL-3.0 text (gnu.org/licenses/agpl-3.0.txt) - COPYRIGHT: project copyright notice - tools/add_spdx_headers.py: idempotent header injector (shebang- and PEP 263-aware) Touches 1565 source files (.py, .ts, .tsx, .js, .jsx, .css, .sh). No behavior change; comments only.
21 lines
669 B
TypeScript
21 lines
669 B
TypeScript
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
import { useEffect } from 'react';
|
|
import type { RefObject } from 'react';
|
|
|
|
/**
|
|
* Focus the given input when the global `decnet:focus-search` event fires
|
|
* (dispatched by the `/` hotkey in useGlobalHotkeys).
|
|
*/
|
|
export function useFocusSearch(ref: RefObject<HTMLInputElement | null>): void {
|
|
useEffect(() => {
|
|
const handler = () => {
|
|
const el = ref.current;
|
|
if (!el) return;
|
|
el.focus();
|
|
try { el.select(); } catch { /* ignore */ }
|
|
};
|
|
window.addEventListener('decnet:focus-search', handler);
|
|
return () => window.removeEventListener('decnet:focus-search', handler);
|
|
}, [ref]);
|
|
}
|