- Add new libraries: ui-accessibility, ui-animations, ui-backgrounds, ui-code-display, ui-data-utils, ui-font-manager, hcl-studio - Add extensive layout components: gallery-grid, infinite-scroll-container, kanban-board, masonry, split-view, sticky-layout - Add comprehensive demo components for all new features - Update project configuration and dependencies - Expand component exports and routing structure - Add UI landing pages planning document 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
32 lines
1.1 KiB
TypeScript
32 lines
1.1 KiB
TypeScript
import type { TimerHandle } from './timerHandle';
|
|
type SetIntervalFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;
|
|
type ClearIntervalFunction = (handle: TimerHandle) => void;
|
|
|
|
interface IntervalProvider {
|
|
setInterval: SetIntervalFunction;
|
|
clearInterval: ClearIntervalFunction;
|
|
delegate:
|
|
| {
|
|
setInterval: SetIntervalFunction;
|
|
clearInterval: ClearIntervalFunction;
|
|
}
|
|
| undefined;
|
|
}
|
|
|
|
export const intervalProvider: IntervalProvider = {
|
|
// When accessing the delegate, use the variable rather than `this` so that
|
|
// the functions can be called without being bound to the provider.
|
|
setInterval(handler: () => void, timeout?: number, ...args) {
|
|
const { delegate } = intervalProvider;
|
|
if (delegate?.setInterval) {
|
|
return delegate.setInterval(handler, timeout, ...args);
|
|
}
|
|
return setInterval(handler, timeout, ...args);
|
|
},
|
|
clearInterval(handle) {
|
|
const { delegate } = intervalProvider;
|
|
return (delegate?.clearInterval || clearInterval)(handle as any);
|
|
},
|
|
delegate: undefined,
|
|
};
|