@omerdlw/base-framework 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/dist/atoms/index.d.ts +0 -1
  2. package/dist/atoms/index.d.ts.map +1 -1
  3. package/dist/atoms/index.js +1 -64
  4. package/dist/atoms/index.js.map +1 -1
  5. package/dist/error/index.js +22 -25
  6. package/dist/error/index.js.map +1 -1
  7. package/dist/hooks/index.d.ts +2 -0
  8. package/dist/hooks/index.d.ts.map +1 -1
  9. package/dist/hooks/index.js +97 -4
  10. package/dist/hooks/index.js.map +1 -1
  11. package/dist/hooks/types.d.ts +11 -0
  12. package/dist/hooks/types.d.ts.map +1 -1
  13. package/dist/hooks/use-controllable-state.d.ts +1 -1
  14. package/dist/hooks/use-controllable-state.d.ts.map +1 -1
  15. package/dist/hooks/use-hotkey.d.ts +1 -1
  16. package/dist/hooks/use-hotkey.d.ts.map +1 -1
  17. package/dist/index.js +10811 -10696
  18. package/dist/index.js.map +1 -1
  19. package/dist/kernel/adapters.d.ts.map +1 -1
  20. package/dist/kernel/index.d.ts +1 -0
  21. package/dist/kernel/index.d.ts.map +1 -1
  22. package/dist/kernel/index.js +13 -84
  23. package/dist/kernel/index.js.map +1 -1
  24. package/dist/kernel/installed.d.ts.map +1 -1
  25. package/dist/kernel/page-controller.d.ts.map +1 -1
  26. package/dist/kernel/provider.d.ts.map +1 -1
  27. package/dist/modules/ambient/constants.d.ts +1 -1
  28. package/dist/modules/ambient/constants.d.ts.map +1 -1
  29. package/dist/modules/ambient/index.js +180 -326
  30. package/dist/modules/ambient/index.js.map +1 -1
  31. package/dist/modules/ambient/module.d.ts.map +1 -1
  32. package/dist/modules/background/constants.d.ts +4 -2
  33. package/dist/modules/background/constants.d.ts.map +1 -1
  34. package/dist/modules/background/context.d.ts +3 -0
  35. package/dist/modules/background/context.d.ts.map +1 -1
  36. package/dist/modules/background/hooks.d.ts +1 -1
  37. package/dist/modules/background/index.d.ts +2 -2
  38. package/dist/modules/background/index.d.ts.map +1 -1
  39. package/dist/modules/background/index.js +1172 -1270
  40. package/dist/modules/background/index.js.map +1 -1
  41. package/dist/modules/background/overlay.d.ts +1 -1
  42. package/dist/modules/background/overlay.d.ts.map +1 -1
  43. package/dist/modules/background/types.d.ts +1 -1
  44. package/dist/modules/background/types.d.ts.map +1 -1
  45. package/dist/modules/context-menu/constants.d.ts +1 -1
  46. package/dist/modules/context-menu/constants.d.ts.map +1 -1
  47. package/dist/modules/context-menu/context.d.ts.map +1 -1
  48. package/dist/modules/context-menu/hooks.d.ts.map +1 -1
  49. package/dist/modules/context-menu/index.js +135 -240
  50. package/dist/modules/context-menu/index.js.map +1 -1
  51. package/dist/modules/controls/constants.d.ts +1 -1
  52. package/dist/modules/controls/constants.d.ts.map +1 -1
  53. package/dist/modules/controls/hooks.d.ts +1 -1
  54. package/dist/modules/controls/index.js +31 -165
  55. package/dist/modules/controls/index.js.map +1 -1
  56. package/dist/modules/controls/types.d.ts +1 -1
  57. package/dist/modules/controls/types.d.ts.map +1 -1
  58. package/dist/modules/dock/cards.d.ts +1 -1
  59. package/dist/modules/dock/constants.d.ts +1 -1
  60. package/dist/modules/dock/constants.d.ts.map +1 -1
  61. package/dist/modules/dock/context.d.ts +10 -6
  62. package/dist/modules/dock/context.d.ts.map +1 -1
  63. package/dist/modules/dock/hooks.d.ts +4 -4
  64. package/dist/modules/dock/hooks.d.ts.map +1 -1
  65. package/dist/modules/dock/index.d.ts +1 -1
  66. package/dist/modules/dock/index.d.ts.map +1 -1
  67. package/dist/modules/dock/index.js +2063 -2083
  68. package/dist/modules/dock/index.js.map +1 -1
  69. package/dist/modules/dock/runtime/dock.d.ts.map +1 -1
  70. package/dist/modules/dock/types.d.ts +1 -1
  71. package/dist/modules/dock/types.d.ts.map +1 -1
  72. package/dist/modules/index.js +10193 -10350
  73. package/dist/modules/index.js.map +1 -1
  74. package/dist/modules/loading/constants.d.ts +4 -2
  75. package/dist/modules/loading/constants.d.ts.map +1 -1
  76. package/dist/modules/loading/context.d.ts +3 -0
  77. package/dist/modules/loading/context.d.ts.map +1 -1
  78. package/dist/modules/loading/hooks.d.ts +1 -1
  79. package/dist/modules/loading/hooks.d.ts.map +1 -1
  80. package/dist/modules/loading/index.d.ts +2 -2
  81. package/dist/modules/loading/index.d.ts.map +1 -1
  82. package/dist/modules/loading/index.js +121 -225
  83. package/dist/modules/loading/index.js.map +1 -1
  84. package/dist/modules/loading/types.d.ts +1 -1
  85. package/dist/modules/loading/types.d.ts.map +1 -1
  86. package/dist/modules/media/constants.d.ts +2 -1
  87. package/dist/modules/media/constants.d.ts.map +1 -1
  88. package/dist/modules/media/context.d.ts +3 -0
  89. package/dist/modules/media/context.d.ts.map +1 -1
  90. package/dist/modules/media/index.d.ts +2 -2
  91. package/dist/modules/media/index.d.ts.map +1 -1
  92. package/dist/modules/media/index.js +61 -218
  93. package/dist/modules/media/index.js.map +1 -1
  94. package/dist/modules/modal/constants.d.ts +1 -1
  95. package/dist/modules/modal/constants.d.ts.map +1 -1
  96. package/dist/modules/modal/context.d.ts.map +1 -1
  97. package/dist/modules/modal/hooks.d.ts +2 -2
  98. package/dist/modules/modal/index.js +31 -293
  99. package/dist/modules/modal/index.js.map +1 -1
  100. package/dist/modules/notification/constants.d.ts +4 -2
  101. package/dist/modules/notification/constants.d.ts.map +1 -1
  102. package/dist/modules/notification/context.d.ts +4 -0
  103. package/dist/modules/notification/context.d.ts.map +1 -1
  104. package/dist/modules/notification/hooks.d.ts +1 -1
  105. package/dist/modules/notification/index.d.ts +2 -3
  106. package/dist/modules/notification/index.d.ts.map +1 -1
  107. package/dist/modules/notification/index.js +65 -151
  108. package/dist/modules/notification/index.js.map +1 -1
  109. package/dist/modules/notification/module.d.ts.map +1 -1
  110. package/dist/provider.js +255 -257
  111. package/dist/provider.js.map +1 -1
  112. package/dist/theme.d.ts +1 -0
  113. package/dist/theme.d.ts.map +1 -1
  114. package/dist/theme.js +2 -2
  115. package/dist/theme.js.map +1 -1
  116. package/dist/utils/dom.d.ts +2 -0
  117. package/dist/utils/dom.d.ts.map +1 -1
  118. package/dist/utils/index.d.ts +1 -1
  119. package/dist/utils/index.d.ts.map +1 -1
  120. package/dist/utils/index.js +28 -19
  121. package/dist/utils/index.js.map +1 -1
  122. package/docs/modules/loading.md +1 -1
  123. package/package.json +48 -2
  124. package/dist/hooks/use-async-action.d.ts +0 -3
  125. package/dist/hooks/use-async-action.d.ts.map +0 -1
  126. package/dist/hooks/use-debounce.d.ts +0 -2
  127. package/dist/hooks/use-debounce.d.ts.map +0 -1
  128. package/dist/hooks/use-intersection-observer.d.ts +0 -4
  129. package/dist/hooks/use-intersection-observer.d.ts.map +0 -1
  130. package/dist/hooks/use-media-query.d.ts +0 -2
  131. package/dist/hooks/use-media-query.d.ts.map +0 -1
  132. package/dist/hooks/use-mounted.d.ts +0 -2
  133. package/dist/hooks/use-mounted.d.ts.map +0 -1
  134. package/dist/hooks/use-server-action.d.ts +0 -4
  135. package/dist/hooks/use-server-action.d.ts.map +0 -1
  136. package/dist/hooks/use-storage-state.d.ts +0 -5
  137. package/dist/hooks/use-storage-state.d.ts.map +0 -1
  138. package/dist/modules/theme.d.ts +0 -3
  139. package/dist/modules/theme.d.ts.map +0 -1
  140. package/dist/utils/json.d.ts +0 -3
  141. package/dist/utils/json.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/use-required-context.ts","../../src/hooks/use-store.ts","../../src/hooks/use-click-outside.ts","../../src/utils/dom.ts","../../src/utils/report.ts","../../src/hooks/use-isomorphic-layout-effect.ts","../../src/events.ts","../../src/hooks/use-global-event.ts","../../src/hooks/use-fullscreen-state.ts"],"names":["useCallback","useEffect","listeners","useRef","useSyncExternalStore"],"mappings":"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","file":"index.js","sourcesContent":["\"use client\";\n\nimport { use, type Context } from \"react\";\n\nexport function useRequiredContext<T>(\n context: Context<T | null>,\n hookName: string,\n providerName: string,\n): T {\n const value = use(context);\n if (value === null) {\n throw new Error(`${hookName} must be used within ${providerName}`);\n }\n return value;\n}\n","\"use client\";\n\nimport { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { type ExternalStore } from \"../utils\";\n\nexport function useStore<TState, TSlice = TState>(\n store: ExternalStore<TState>,\n selector: (state: TState) => TSlice = (state: TState) =>\n state as unknown as TSlice,\n isEqual: (a: TSlice, b: TSlice) => boolean = Object.is,\n): TSlice {\n const cacheRef = useRef<{\n isEqual: ((a: TSlice, b: TSlice) => boolean) | null;\n selected: TSlice | undefined;\n selector: ((state: TState) => TSlice) | null;\n snapshot: TState | null;\n }>({\n isEqual: null,\n selected: undefined,\n selector: null,\n snapshot: null,\n });\n\n const getSelectedSnapshot = useCallback(() => {\n const snapshot = store.getSnapshot();\n const cache = cacheRef.current;\n if (\n cache.snapshot === snapshot &&\n cache.selector === selector &&\n cache.isEqual === isEqual\n ) {\n return cache.selected as TSlice;\n }\n\n const selected = selector(snapshot);\n if (\n cache.snapshot !== null &&\n cache.isEqual === isEqual &&\n isEqual(cache.selected as TSlice, selected)\n ) {\n cache.snapshot = snapshot;\n cache.selector = selector;\n return cache.selected as TSlice;\n }\n\n cacheRef.current = {\n isEqual,\n selected,\n selector,\n snapshot,\n };\n return selected;\n }, [isEqual, selector, store]);\n\n return useSyncExternalStore(\n store.subscribe,\n getSelectedSnapshot,\n getSelectedSnapshot,\n );\n}\n","\"use client\";\n\nimport { useCallback, useEffect, type RefObject } from \"react\";\n\nexport function useClickOutside<T extends HTMLElement = HTMLElement>(\n ref: RefObject<T | null> | null | undefined,\n callback?: (event: PointerEvent) => void,\n): void {\n const handlePointer = useCallback(\n (event: PointerEvent) => {\n if (ref?.current && !ref.current.contains(event.target as Node)) {\n callback?.(event);\n }\n },\n [callback, ref],\n );\n\n useEffect(() => {\n document.addEventListener(\"pointerdown\", handlePointer);\n return () => document.removeEventListener(\"pointerdown\", handlePointer);\n }, [handlePointer]);\n}\n","export const isBrowser: boolean = typeof window !== \"undefined\";\n\nlet globalScrollLockCount = 0;\n\nlet globalScrollLockStyles: {\n bodyOverflow: string;\n bodyOverscrollBehavior: string;\n htmlOverflow: string;\n htmlOverscrollBehavior: string;\n} | null = null;\n\nexport function acquireGlobalScrollLock(): () => void {\n if (typeof document === \"undefined\") return () => {};\n\n if (globalScrollLockCount === 0) {\n globalScrollLockStyles = {\n bodyOverflow: document.body.style.overflow,\n bodyOverscrollBehavior: document.body.style.overscrollBehavior,\n htmlOverflow: document.documentElement.style.overflow,\n htmlOverscrollBehavior: document.documentElement.style.overscrollBehavior,\n };\n }\n\n globalScrollLockCount += 1;\n document.body.style.overflow = \"hidden\";\n document.body.style.overscrollBehavior = \"none\";\n document.documentElement.style.overflow = \"hidden\";\n document.documentElement.style.overscrollBehavior = \"none\";\n\n let released = false;\n return () => {\n if (released) return;\n released = true;\n globalScrollLockCount = Math.max(0, globalScrollLockCount - 1);\n if (globalScrollLockCount > 0 || !globalScrollLockStyles) return;\n\n document.body.style.overflow = globalScrollLockStyles.bodyOverflow;\n document.body.style.overscrollBehavior =\n globalScrollLockStyles.bodyOverscrollBehavior;\n document.documentElement.style.overflow =\n globalScrollLockStyles.htmlOverflow;\n document.documentElement.style.overscrollBehavior =\n globalScrollLockStyles.htmlOverscrollBehavior;\n globalScrollLockStyles = null;\n };\n}\n","export type ReportLevel = \"error\" | \"warn\";\n\nexport type ReportSink = (\n scope: string,\n error: unknown,\n level: ReportLevel,\n) => void;\n\nlet sink: ReportSink | null = null;\n\nexport function report(\n scope: string,\n error: unknown,\n level: ReportLevel = \"error\",\n): void {\n if (sink) {\n try {\n sink(scope, error, level);\n return;\n } catch {}\n }\n\n if (process.env.NODE_ENV === \"production\" && typeof window !== \"undefined\") {\n return;\n }\n console[level](`[${scope}]`, error);\n}\n\nexport function setReportSink(next: ReportSink): () => void {\n sink = next;\n return () => {\n if (sink === next) sink = null;\n };\n}\n","\"use client\";\n\nimport { useEffect, useLayoutEffect } from \"react\";\nimport { isBrowser } from \"../utils\";\n\nexport const useIsomorphicLayoutEffect = isBrowser\n ? useLayoutEffect\n : useEffect;\n","import { report } from \"./utils/report\";\nexport type EventListener<T = unknown> = (payload: T) => void;\n\nexport const EVENT_TYPES = Object.freeze({\n API_UNAUTHORIZED: \"API_UNAUTHORIZED\",\n STATE_CHANGE: \"STATE_CHANGE\",\n API_ERROR: \"API_ERROR\",\n APP_ERROR: \"APP_ERROR\",\n} as const);\n\nexport interface FrameworkEventMap {\n [EVENT_TYPES.API_UNAUTHORIZED]: {\n error?: unknown;\n status?: number;\n [key: string]: unknown;\n };\n [EVENT_TYPES.API_ERROR]: {\n error: unknown;\n isCritical?: boolean;\n message?: string;\n retry?: () => void;\n status?: number;\n [key: string]: unknown;\n };\n [EVENT_TYPES.APP_ERROR]: {\n error?: unknown;\n message?: string;\n resetError?: () => void;\n source?: string;\n [key: string]: unknown;\n };\n [EVENT_TYPES.STATE_CHANGE]: {\n message?: string;\n status?: \"success\" | \"warning\" | \"info\" | \"error\" | string;\n [key: string]: unknown;\n };\n}\n\nexport class EventEmitter<TEvents extends object = FrameworkEventMap> {\n private events: Map<string, Set<EventListener<never>>> = new Map();\n private debounceTimers: Map<string, ReturnType<typeof setTimeout>> =\n new Map();\n\n subscribe<K extends keyof TEvents>(\n event: K,\n callback: EventListener<TEvents[K]>,\n ): () => void;\n subscribe<T = unknown>(event: string, callback: EventListener<T>): () => void;\n subscribe(event: string, callback: EventListener<never>): () => void {\n if (typeof event !== \"string\" || !event || typeof callback !== \"function\") {\n return () => {};\n }\n const listeners = this.events.get(event) || new Set<EventListener<never>>();\n listeners.add(callback);\n this.events.set(event, listeners);\n\n return () => {\n listeners.delete(callback);\n if (listeners.size === 0) this.events.delete(event);\n };\n }\n\n emit<K extends keyof TEvents>(\n event: K,\n ...args: TEvents[K] extends void | undefined\n ? [payload?: TEvents[K]]\n : [payload: TEvents[K]]\n ): void;\n emit<T = unknown>(event: string, payload?: T): void;\n emit(event: string, payload?: unknown): void {\n const listeners = this.events.get(event);\n if (!listeners || listeners.size === 0) return;\n const snapshot = Array.from(listeners);\n for (const callback of snapshot) {\n try {\n (callback as EventListener<unknown>)(payload);\n } catch (error) {\n report(`Event listener (${String(event)})`, error);\n }\n }\n }\n\n emitDebounced<K extends keyof TEvents>(\n event: K,\n payload: TEvents[K],\n waitMs?: number,\n ): void;\n emitDebounced<T = unknown>(event: string, payload?: T, waitMs?: number): void;\n emitDebounced(event: string, payload?: unknown, waitMs: number = 100): void {\n const existing = this.debounceTimers.get(event);\n if (existing) clearTimeout(existing);\n\n const timer = setTimeout(() => {\n this.debounceTimers.delete(event);\n this.emit(event, payload);\n }, waitMs);\n\n this.debounceTimers.set(event, timer);\n }\n\n cancelDebounced(event?: string): void {\n if (event) {\n const timer = this.debounceTimers.get(event);\n if (timer) {\n clearTimeout(timer);\n this.debounceTimers.delete(event);\n }\n } else {\n for (const timer of this.debounceTimers.values()) {\n clearTimeout(timer);\n }\n this.debounceTimers.clear();\n }\n }\n\n unsubscribeAll(event?: string): void {\n this.cancelDebounced(event);\n if (event) this.events.delete(event);\n else this.events.clear();\n }\n\n hasListeners(event: string): boolean {\n return Boolean(this.events.get(event)?.size);\n }\n\n getListenerCount(event: string): number {\n return this.events.get(event)?.size || 0;\n }\n\n getAllEvents(): string[] {\n return [...this.events.keys()];\n }\n}\n\nconst GLOBAL_EVENTS_KEY = Symbol.for(\"__base_framework_global_events__\");\ntype GlobalWithEvents = typeof globalThis & {\n [GLOBAL_EVENTS_KEY]?: EventEmitter<FrameworkEventMap>;\n};\n\nconst _global = globalThis as GlobalWithEvents;\nexport const globalEvents: EventEmitter<FrameworkEventMap> =\n _global[GLOBAL_EVENTS_KEY] ??\n (_global[GLOBAL_EVENTS_KEY] = new EventEmitter<FrameworkEventMap>());\n","\"use client\";\n\nimport { useEffect, useRef } from \"react\";\nimport { globalEvents, type FrameworkEventMap } from \"@/events\";\nimport { useIsomorphicLayoutEffect } from \"./use-isomorphic-layout-effect\";\nimport { UseGlobalEventOptions } from \"./types\";\n\nexport function useGlobalEvent<K extends keyof FrameworkEventMap>(\n event: K | K[] | null | undefined,\n callback: (payload: FrameworkEventMap[K]) => void,\n options?: UseGlobalEventOptions,\n): void;\n\nexport function useGlobalEvent<T = unknown>(\n event: string | string[] | null | undefined,\n callback: (payload: T) => void,\n options?: UseGlobalEventOptions,\n): void;\n\nexport function useGlobalEvent(\n event: string | string[] | null | undefined,\n callback: (payload: never) => void,\n options?: UseGlobalEventOptions,\n): void {\n const callbackRef = useRef(callback);\n const debounceTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const lastThrottleTimeRef = useRef<number>(0);\n const throttleTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useIsomorphicLayoutEffect(() => {\n callbackRef.current = callback;\n });\n\n const debounceMs = options?.debounceMs;\n const throttleMs = options?.throttleMs;\n\n useEffect(() => {\n if (!event) return;\n const events = Array.isArray(event) ? event.filter(Boolean) : [event];\n if (events.length === 0) return;\n\n const handler = (payload: never) => {\n if (debounceMs != null && debounceMs > 0) {\n if (debounceTimerRef.current !== null) {\n clearTimeout(debounceTimerRef.current);\n }\n debounceTimerRef.current = setTimeout(() => {\n debounceTimerRef.current = null;\n callbackRef.current?.(payload);\n }, debounceMs);\n return;\n }\n\n if (throttleMs != null && throttleMs > 0) {\n const now = Date.now();\n const remaining = throttleMs - (now - lastThrottleTimeRef.current);\n if (remaining <= 0) {\n if (throttleTimerRef.current !== null) {\n clearTimeout(throttleTimerRef.current);\n throttleTimerRef.current = null;\n }\n lastThrottleTimeRef.current = now;\n callbackRef.current?.(payload);\n } else if (throttleTimerRef.current === null) {\n throttleTimerRef.current = setTimeout(() => {\n lastThrottleTimeRef.current = Date.now();\n throttleTimerRef.current = null;\n callbackRef.current?.(payload);\n }, remaining);\n }\n return;\n }\n\n callbackRef.current?.(payload);\n };\n\n const unsubs = events.map((ev) => globalEvents.subscribe(ev, handler));\n\n return () => {\n unsubs.forEach((unsub) => unsub());\n if (debounceTimerRef.current !== null) {\n clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = null;\n }\n if (throttleTimerRef.current !== null) {\n clearTimeout(throttleTimerRef.current);\n throttleTimerRef.current = null;\n }\n };\n }, [event, debounceMs, throttleMs]);\n}\n","\"use client\";\n\nimport { useSyncExternalStore } from \"react\";\n\nconst listeners = new Set<() => void>();\nconst activeFullscreenStateIds = new Set<string>();\n\nconst ACTIVE_FULLSCREEN_ROOT_SELECTOR =\n '[data-fullscreen-state-root=\"true\"][data-affect-global-state=\"true\"]';\n\nlet domObserver: MutationObserver | null = null;\nlet lastSnapshot = false;\n\nfunction getDomSnapshot(): boolean {\n if (typeof document === \"undefined\") {\n return activeFullscreenStateIds.size > 0;\n }\n\n return document.querySelector(ACTIVE_FULLSCREEN_ROOT_SELECTOR) !== null;\n}\n\nfunction emitChange(): void {\n listeners.forEach((listener) => listener());\n}\n\nfunction emitIfSnapshotChanged(): void {\n const nextSnapshot = getDomSnapshot();\n\n if (nextSnapshot === lastSnapshot) {\n return;\n }\n\n lastSnapshot = nextSnapshot;\n emitChange();\n}\n\nfunction ensureDomObserver(): void {\n if (typeof document === \"undefined\" || domObserver || listeners.size === 0) {\n return;\n }\n\n domObserver = new MutationObserver(() => {\n emitIfSnapshotChanged();\n });\n\n domObserver.observe(document.documentElement, {\n attributes: true,\n childList: true,\n subtree: true,\n attributeFilter: [\n \"data-fullscreen-state\",\n \"data-fullscreen-state-root\",\n \"data-affect-global-state\",\n ],\n });\n}\n\nfunction releaseDomObserver(): void {\n if (listeners.size > 0 || !domObserver) {\n return;\n }\n\n domObserver.disconnect();\n domObserver = null;\n}\n\nfunction subscribe(listener: () => void): () => void {\n listeners.add(listener);\n ensureDomObserver();\n emitIfSnapshotChanged();\n\n return () => {\n listeners.delete(listener);\n releaseDomObserver();\n };\n}\n\nfunction getSnapshot(): boolean {\n return getDomSnapshot();\n}\n\nexport function registerFullscreenState(id: string): void {\n activeFullscreenStateIds.add(id);\n emitIfSnapshotChanged();\n}\n\nexport function unregisterFullscreenState(id: string): void {\n activeFullscreenStateIds.delete(id);\n emitIfSnapshotChanged();\n}\n\nexport function useIsFullscreenStateActive(): boolean {\n return useSyncExternalStore(subscribe, getSnapshot, () => false);\n}\n"]}
1
+ {"version":3,"sources":["../../src/hooks/use-required-context.ts","../../src/hooks/use-store.ts","../../src/hooks/use-click-outside.ts","../../src/utils/dom.ts","../../src/utils/report.ts","../../src/hooks/use-isomorphic-layout-effect.ts","../../src/events.ts","../../src/hooks/use-global-event.ts","../../src/hooks/use-fullscreen-state.ts","../../src/hooks/use-controllable-state.ts","../../src/hooks/use-hotkey.ts"],"names":["useCallback","useEffect","listeners","useRef","useSyncExternalStore"],"mappings":"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","file":"index.js","sourcesContent":["\"use client\";\n\nimport { use, type Context } from \"react\";\n\nexport function useRequiredContext<T>(\n context: Context<T | null>,\n hookName: string,\n providerName: string,\n): T {\n const value = use(context);\n if (value === null) {\n throw new Error(`${hookName} must be used within ${providerName}`);\n }\n return value;\n}\n","\"use client\";\n\nimport { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { type ExternalStore } from \"../utils\";\n\nexport function useStore<TState, TSlice = TState>(\n store: ExternalStore<TState>,\n selector: (state: TState) => TSlice = (state: TState) =>\n state as unknown as TSlice,\n isEqual: (a: TSlice, b: TSlice) => boolean = Object.is,\n): TSlice {\n const cacheRef = useRef<{\n isEqual: ((a: TSlice, b: TSlice) => boolean) | null;\n selected: TSlice | undefined;\n selector: ((state: TState) => TSlice) | null;\n snapshot: TState | null;\n }>({\n isEqual: null,\n selected: undefined,\n selector: null,\n snapshot: null,\n });\n\n const getSelectedSnapshot = useCallback(() => {\n const snapshot = store.getSnapshot();\n const cache = cacheRef.current;\n if (\n cache.snapshot === snapshot &&\n cache.selector === selector &&\n cache.isEqual === isEqual\n ) {\n return cache.selected as TSlice;\n }\n\n const selected = selector(snapshot);\n if (\n cache.snapshot !== null &&\n cache.isEqual === isEqual &&\n isEqual(cache.selected as TSlice, selected)\n ) {\n cache.snapshot = snapshot;\n cache.selector = selector;\n return cache.selected as TSlice;\n }\n\n cacheRef.current = {\n isEqual,\n selected,\n selector,\n snapshot,\n };\n return selected;\n }, [isEqual, selector, store]);\n\n return useSyncExternalStore(\n store.subscribe,\n getSelectedSnapshot,\n getSelectedSnapshot,\n );\n}\n","\"use client\";\n\nimport { useCallback, useEffect, type RefObject } from \"react\";\n\nexport function useClickOutside<T extends HTMLElement = HTMLElement>(\n ref: RefObject<T | null> | null | undefined,\n callback?: (event: PointerEvent) => void,\n): void {\n const handlePointer = useCallback(\n (event: PointerEvent) => {\n if (ref?.current && !ref.current.contains(event.target as Node)) {\n callback?.(event);\n }\n },\n [callback, ref],\n );\n\n useEffect(() => {\n document.addEventListener(\"pointerdown\", handlePointer);\n return () => document.removeEventListener(\"pointerdown\", handlePointer);\n }, [handlePointer]);\n}\n","import { stripTrailingSlash } from \"./string\";\n\nexport const isBrowser: boolean = typeof window !== \"undefined\";\n\nlet globalScrollLockCount = 0;\n\nlet globalScrollLockStyles: {\n bodyOverflow: string;\n bodyOverscrollBehavior: string;\n htmlOverflow: string;\n htmlOverscrollBehavior: string;\n} | null = null;\n\nexport function acquireGlobalScrollLock(): () => void {\n if (typeof document === \"undefined\") return () => {};\n\n if (globalScrollLockCount === 0) {\n globalScrollLockStyles = {\n bodyOverflow: document.body.style.overflow,\n bodyOverscrollBehavior: document.body.style.overscrollBehavior,\n htmlOverflow: document.documentElement.style.overflow,\n htmlOverscrollBehavior: document.documentElement.style.overscrollBehavior,\n };\n }\n\n globalScrollLockCount += 1;\n document.body.style.overflow = \"hidden\";\n document.body.style.overscrollBehavior = \"none\";\n document.documentElement.style.overflow = \"hidden\";\n document.documentElement.style.overscrollBehavior = \"none\";\n\n let released = false;\n return () => {\n if (released) return;\n released = true;\n globalScrollLockCount = Math.max(0, globalScrollLockCount - 1);\n if (globalScrollLockCount > 0 || !globalScrollLockStyles) return;\n\n document.body.style.overflow = globalScrollLockStyles.bodyOverflow;\n document.body.style.overscrollBehavior =\n globalScrollLockStyles.bodyOverscrollBehavior;\n document.documentElement.style.overflow =\n globalScrollLockStyles.htmlOverflow;\n document.documentElement.style.overscrollBehavior =\n globalScrollLockStyles.htmlOverscrollBehavior;\n globalScrollLockStyles = null;\n };\n}\n\nexport function getSiteUrl(): string {\n return stripTrailingSlash(\n process.env.NEXT_PUBLIC_SITE_URL || \"http://localhost:3000\",\n );\n}\n\nexport function getCurrentPath(): string {\n if (!isBrowser) return \"/\";\n return `${window.location.pathname}${window.location.search}`;\n}\n\n","export type ReportLevel = \"error\" | \"warn\";\n\nexport type ReportSink = (\n scope: string,\n error: unknown,\n level: ReportLevel,\n) => void;\n\nlet sink: ReportSink | null = null;\n\nexport function report(\n scope: string,\n error: unknown,\n level: ReportLevel = \"error\",\n): void {\n if (sink) {\n try {\n sink(scope, error, level);\n return;\n } catch {}\n }\n\n if (process.env.NODE_ENV === \"production\" && typeof window !== \"undefined\") {\n return;\n }\n console[level](`[${scope}]`, error);\n}\n\nexport function setReportSink(next: ReportSink): () => void {\n sink = next;\n return () => {\n if (sink === next) sink = null;\n };\n}\n","\"use client\";\n\nimport { useEffect, useLayoutEffect } from \"react\";\nimport { isBrowser } from \"../utils\";\n\nexport const useIsomorphicLayoutEffect = isBrowser\n ? useLayoutEffect\n : useEffect;\n","import { report } from \"./utils/report\";\nexport type EventListener<T = unknown> = (payload: T) => void;\n\nexport const EVENT_TYPES = Object.freeze({\n API_UNAUTHORIZED: \"API_UNAUTHORIZED\",\n STATE_CHANGE: \"STATE_CHANGE\",\n API_ERROR: \"API_ERROR\",\n APP_ERROR: \"APP_ERROR\",\n} as const);\n\nexport interface FrameworkEventMap {\n [EVENT_TYPES.API_UNAUTHORIZED]: {\n error?: unknown;\n status?: number;\n [key: string]: unknown;\n };\n [EVENT_TYPES.API_ERROR]: {\n error: unknown;\n isCritical?: boolean;\n message?: string;\n retry?: () => void;\n status?: number;\n [key: string]: unknown;\n };\n [EVENT_TYPES.APP_ERROR]: {\n error?: unknown;\n message?: string;\n resetError?: () => void;\n source?: string;\n [key: string]: unknown;\n };\n [EVENT_TYPES.STATE_CHANGE]: {\n message?: string;\n status?: \"success\" | \"warning\" | \"info\" | \"error\" | string;\n [key: string]: unknown;\n };\n}\n\nexport class EventEmitter<TEvents extends object = FrameworkEventMap> {\n private events: Map<string, Set<EventListener<never>>> = new Map();\n private debounceTimers: Map<string, ReturnType<typeof setTimeout>> =\n new Map();\n\n subscribe<K extends keyof TEvents>(\n event: K,\n callback: EventListener<TEvents[K]>,\n ): () => void;\n subscribe<T = unknown>(event: string, callback: EventListener<T>): () => void;\n subscribe(event: string, callback: EventListener<never>): () => void {\n if (typeof event !== \"string\" || !event || typeof callback !== \"function\") {\n return () => {};\n }\n const listeners = this.events.get(event) || new Set<EventListener<never>>();\n listeners.add(callback);\n this.events.set(event, listeners);\n\n return () => {\n listeners.delete(callback);\n if (listeners.size === 0) this.events.delete(event);\n };\n }\n\n emit<K extends keyof TEvents>(\n event: K,\n ...args: TEvents[K] extends void | undefined\n ? [payload?: TEvents[K]]\n : [payload: TEvents[K]]\n ): void;\n emit<T = unknown>(event: string, payload?: T): void;\n emit(event: string, payload?: unknown): void {\n const listeners = this.events.get(event);\n if (!listeners || listeners.size === 0) return;\n const snapshot = Array.from(listeners);\n for (const callback of snapshot) {\n try {\n (callback as EventListener<unknown>)(payload);\n } catch (error) {\n report(`Event listener (${String(event)})`, error);\n }\n }\n }\n\n emitDebounced<K extends keyof TEvents>(\n event: K,\n payload: TEvents[K],\n waitMs?: number,\n ): void;\n emitDebounced<T = unknown>(event: string, payload?: T, waitMs?: number): void;\n emitDebounced(event: string, payload?: unknown, waitMs: number = 100): void {\n const existing = this.debounceTimers.get(event);\n if (existing) clearTimeout(existing);\n\n const timer = setTimeout(() => {\n this.debounceTimers.delete(event);\n this.emit(event, payload);\n }, waitMs);\n\n this.debounceTimers.set(event, timer);\n }\n\n cancelDebounced(event?: string): void {\n if (event) {\n const timer = this.debounceTimers.get(event);\n if (timer) {\n clearTimeout(timer);\n this.debounceTimers.delete(event);\n }\n } else {\n for (const timer of this.debounceTimers.values()) {\n clearTimeout(timer);\n }\n this.debounceTimers.clear();\n }\n }\n\n unsubscribeAll(event?: string): void {\n this.cancelDebounced(event);\n if (event) this.events.delete(event);\n else this.events.clear();\n }\n\n hasListeners(event: string): boolean {\n return Boolean(this.events.get(event)?.size);\n }\n\n getListenerCount(event: string): number {\n return this.events.get(event)?.size || 0;\n }\n\n getAllEvents(): string[] {\n return [...this.events.keys()];\n }\n}\n\nconst GLOBAL_EVENTS_KEY = Symbol.for(\"__base_framework_global_events__\");\ntype GlobalWithEvents = typeof globalThis & {\n [GLOBAL_EVENTS_KEY]?: EventEmitter<FrameworkEventMap>;\n};\n\nconst _global = globalThis as GlobalWithEvents;\nexport const globalEvents: EventEmitter<FrameworkEventMap> =\n _global[GLOBAL_EVENTS_KEY] ??\n (_global[GLOBAL_EVENTS_KEY] = new EventEmitter<FrameworkEventMap>());\n","\"use client\";\n\nimport { useEffect, useRef } from \"react\";\nimport { globalEvents, type FrameworkEventMap } from \"@/events\";\nimport { useIsomorphicLayoutEffect } from \"./use-isomorphic-layout-effect\";\nimport { UseGlobalEventOptions } from \"./types\";\n\nexport function useGlobalEvent<K extends keyof FrameworkEventMap>(\n event: K | K[] | null | undefined,\n callback: (payload: FrameworkEventMap[K]) => void,\n options?: UseGlobalEventOptions,\n): void;\n\nexport function useGlobalEvent<T = unknown>(\n event: string | string[] | null | undefined,\n callback: (payload: T) => void,\n options?: UseGlobalEventOptions,\n): void;\n\nexport function useGlobalEvent(\n event: string | string[] | null | undefined,\n callback: (payload: never) => void,\n options?: UseGlobalEventOptions,\n): void {\n const callbackRef = useRef(callback);\n const debounceTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const lastThrottleTimeRef = useRef<number>(0);\n const throttleTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useIsomorphicLayoutEffect(() => {\n callbackRef.current = callback;\n });\n\n const debounceMs = options?.debounceMs;\n const throttleMs = options?.throttleMs;\n\n useEffect(() => {\n if (!event) return;\n const events = Array.isArray(event) ? event.filter(Boolean) : [event];\n if (events.length === 0) return;\n\n const handler = (payload: never) => {\n if (debounceMs != null && debounceMs > 0) {\n if (debounceTimerRef.current !== null) {\n clearTimeout(debounceTimerRef.current);\n }\n debounceTimerRef.current = setTimeout(() => {\n debounceTimerRef.current = null;\n callbackRef.current?.(payload);\n }, debounceMs);\n return;\n }\n\n if (throttleMs != null && throttleMs > 0) {\n const now = Date.now();\n const remaining = throttleMs - (now - lastThrottleTimeRef.current);\n if (remaining <= 0) {\n if (throttleTimerRef.current !== null) {\n clearTimeout(throttleTimerRef.current);\n throttleTimerRef.current = null;\n }\n lastThrottleTimeRef.current = now;\n callbackRef.current?.(payload);\n } else if (throttleTimerRef.current === null) {\n throttleTimerRef.current = setTimeout(() => {\n lastThrottleTimeRef.current = Date.now();\n throttleTimerRef.current = null;\n callbackRef.current?.(payload);\n }, remaining);\n }\n return;\n }\n\n callbackRef.current?.(payload);\n };\n\n const unsubs = events.map((ev) => globalEvents.subscribe(ev, handler));\n\n return () => {\n unsubs.forEach((unsub) => unsub());\n if (debounceTimerRef.current !== null) {\n clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = null;\n }\n if (throttleTimerRef.current !== null) {\n clearTimeout(throttleTimerRef.current);\n throttleTimerRef.current = null;\n }\n };\n }, [event, debounceMs, throttleMs]);\n}\n","\"use client\";\n\nimport { useSyncExternalStore } from \"react\";\n\nconst listeners = new Set<() => void>();\nconst activeFullscreenStateIds = new Set<string>();\n\nconst ACTIVE_FULLSCREEN_ROOT_SELECTOR =\n '[data-fullscreen-state-root=\"true\"][data-affect-global-state=\"true\"]';\n\nlet domObserver: MutationObserver | null = null;\nlet lastSnapshot = false;\n\nfunction getDomSnapshot(): boolean {\n if (typeof document === \"undefined\") {\n return activeFullscreenStateIds.size > 0;\n }\n\n return document.querySelector(ACTIVE_FULLSCREEN_ROOT_SELECTOR) !== null;\n}\n\nfunction emitChange(): void {\n listeners.forEach((listener) => listener());\n}\n\nfunction emitIfSnapshotChanged(): void {\n const nextSnapshot = getDomSnapshot();\n\n if (nextSnapshot === lastSnapshot) {\n return;\n }\n\n lastSnapshot = nextSnapshot;\n emitChange();\n}\n\nfunction ensureDomObserver(): void {\n if (typeof document === \"undefined\" || domObserver || listeners.size === 0) {\n return;\n }\n\n domObserver = new MutationObserver(() => {\n emitIfSnapshotChanged();\n });\n\n domObserver.observe(document.documentElement, {\n attributes: true,\n childList: true,\n subtree: true,\n attributeFilter: [\n \"data-fullscreen-state\",\n \"data-fullscreen-state-root\",\n \"data-affect-global-state\",\n ],\n });\n}\n\nfunction releaseDomObserver(): void {\n if (listeners.size > 0 || !domObserver) {\n return;\n }\n\n domObserver.disconnect();\n domObserver = null;\n}\n\nfunction subscribe(listener: () => void): () => void {\n listeners.add(listener);\n ensureDomObserver();\n emitIfSnapshotChanged();\n\n return () => {\n listeners.delete(listener);\n releaseDomObserver();\n };\n}\n\nfunction getSnapshot(): boolean {\n return getDomSnapshot();\n}\n\nexport function registerFullscreenState(id: string): void {\n activeFullscreenStateIds.add(id);\n emitIfSnapshotChanged();\n}\n\nexport function unregisterFullscreenState(id: string): void {\n activeFullscreenStateIds.delete(id);\n emitIfSnapshotChanged();\n}\n\nexport function useIsFullscreenStateActive(): boolean {\n return useSyncExternalStore(subscribe, getSnapshot, () => false);\n}\n","\"use client\";\n\nimport { useCallback, useRef, useState } from \"react\";\nimport { useIsomorphicLayoutEffect } from \"./use-isomorphic-layout-effect\";\nimport { type UseControllableStateOptions } from \"./types\";\n\nexport function useControllableState<T>({\n defaultValue,\n onChange,\n value,\n}: UseControllableStateOptions<T>): [T, (next: T | ((prev: T) => T)) => void] {\n const [uncontrolledValue, setUncontrolledValue] = useState<T>(defaultValue);\n const isControlled = value !== undefined;\n const currentValue = isControlled ? (value as T) : uncontrolledValue;\n const valueRef = useRef<T>(currentValue);\n const onChangeRef = useRef(onChange);\n\n useIsomorphicLayoutEffect(() => {\n valueRef.current = currentValue;\n onChangeRef.current = onChange;\n });\n\n const setValue = useCallback(\n (next: T | ((prev: T) => T)) => {\n const resolvedNext =\n typeof next === \"function\"\n ? (next as (prev: T) => T)(valueRef.current)\n : next;\n if (!Object.is(valueRef.current, resolvedNext)) {\n if (!isControlled) {\n setUncontrolledValue(resolvedNext);\n }\n onChangeRef.current?.(resolvedNext);\n }\n },\n [isControlled],\n );\n\n return [currentValue, setValue];\n}\n","\"use client\";\n\nimport { useEffect, useRef } from \"react\";\nimport { isBrowser } from \"../utils\";\nimport { useIsomorphicLayoutEffect } from \"./use-isomorphic-layout-effect\";\nimport { type UseHotkeyOptions } from \"./types\";\n\nfunction isEditableElement(target: EventTarget | null): boolean {\n if (!target || typeof (target as HTMLElement).tagName !== \"string\") {\n return false;\n }\n const element = target as HTMLElement;\n const tagName = element.tagName.toLowerCase();\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n return true;\n }\n return Boolean(element.isContentEditable);\n}\n\nfunction matchesKeyCombo(event: KeyboardEvent, combo: string): boolean {\n const parts = combo\n .toLowerCase()\n .split(\"+\")\n .map((p) => p.trim())\n .filter(Boolean);\n if (parts.length === 0) return false;\n\n const keyPart = parts[parts.length - 1];\n const modifiers = new Set(parts.slice(0, -1));\n\n const wantsMod =\n modifiers.has(\"mod\") || modifiers.has(\"cmd\") || modifiers.has(\"meta\");\n const wantsCtrl = modifiers.has(\"ctrl\") || modifiers.has(\"control\");\n const wantsAlt = modifiers.has(\"alt\") || modifiers.has(\"option\");\n const wantsShift = modifiers.has(\"shift\");\n\n const isModPressed = event.metaKey || event.ctrlKey;\n if (wantsMod && !isModPressed) return false;\n if (!wantsMod && !wantsCtrl && (event.metaKey || event.ctrlKey)) return false;\n if (wantsCtrl && !event.ctrlKey) return false;\n if (wantsAlt !== event.altKey) return false;\n if (wantsShift !== event.shiftKey) return false;\n\n const pressedKey = event.key.toLowerCase();\n if (keyPart === \"esc\" || keyPart === \"escape\") {\n return pressedKey === \"escape\" || pressedKey === \"esc\";\n }\n if (keyPart === \"space\") {\n return pressedKey === \" \" || pressedKey === \"spacebar\";\n }\n return pressedKey === keyPart;\n}\n\nexport function useHotkey(\n combo: string | string[] | null | undefined,\n callback: (event: KeyboardEvent) => void,\n options?: UseHotkeyOptions,\n): void {\n const callbackRef = useRef(callback);\n useIsomorphicLayoutEffect(() => {\n callbackRef.current = callback;\n });\n\n const enabled = options?.enabled ?? true;\n const enableOnFormTags = options?.enableOnFormTags ?? false;\n const preventDefault = options?.preventDefault ?? true;\n const stopPropagation = options?.stopPropagation ?? false;\n\n useEffect(() => {\n if (!isBrowser || !enabled || !combo) return;\n const combos = (Array.isArray(combo) ? combo : [combo]).filter(Boolean);\n if (combos.length === 0) return;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (!enableOnFormTags && isEditableElement(event.target)) return;\n const matched = combos.some((c) => matchesKeyCombo(event, c));\n if (!matched) return;\n if (preventDefault) event.preventDefault();\n if (stopPropagation) event.stopPropagation();\n callbackRef.current?.(event);\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [combo, enabled, enableOnFormTags, preventDefault, stopPropagation]);\n}\n\nexport function useEscapeKey(\n callback: (event: KeyboardEvent) => void,\n enabled: boolean = true,\n): void {\n useHotkey(\"escape\", callback, {\n enabled,\n enableOnFormTags: true,\n preventDefault: false,\n });\n}\n"]}
@@ -2,4 +2,15 @@ export interface UseGlobalEventOptions {
2
2
  debounceMs?: number;
3
3
  throttleMs?: number;
4
4
  }
5
+ export interface UseControllableStateOptions<T> {
6
+ defaultValue: T;
7
+ onChange?: (nextValue: T) => void;
8
+ value?: T;
9
+ }
10
+ export interface UseHotkeyOptions {
11
+ enabled?: boolean;
12
+ enableOnFormTags?: boolean;
13
+ preventDefault?: boolean;
14
+ stopPropagation?: boolean;
15
+ }
5
16
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/hooks/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/hooks/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,2BAA2B,CAAC,CAAC;IAC5C,YAAY,EAAE,CAAC,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,IAAI,CAAC;IAClC,KAAK,CAAC,EAAE,CAAC,CAAC;CACX;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B"}
@@ -1,3 +1,3 @@
1
- import { UseControllableStateOptions } from "./types";
1
+ import { type UseControllableStateOptions } from "./types";
2
2
  export declare function useControllableState<T>({ defaultValue, onChange, value, }: UseControllableStateOptions<T>): [T, (next: T | ((prev: T) => T)) => void];
3
3
  //# sourceMappingURL=use-controllable-state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-controllable-state.d.ts","sourceRoot":"","sources":["../../src/hooks/use-controllable-state.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAEtD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,EACtC,YAAY,EACZ,QAAQ,EACR,KAAK,GACN,EAAE,2BAA2B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CA6B5E"}
1
+ {"version":3,"file":"use-controllable-state.d.ts","sourceRoot":"","sources":["../../src/hooks/use-controllable-state.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAE3D,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,EACtC,YAAY,EACZ,QAAQ,EACR,KAAK,GACN,EAAE,2BAA2B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CA6B5E"}
@@ -1,4 +1,4 @@
1
- import { UseHotkeyOptions } from "./types";
1
+ import { type UseHotkeyOptions } from "./types";
2
2
  export declare function useHotkey(combo: string | string[] | null | undefined, callback: (event: KeyboardEvent) => void, options?: UseHotkeyOptions): void;
3
3
  export declare function useEscapeKey(callback: (event: KeyboardEvent) => void, enabled?: boolean): void;
4
4
  //# sourceMappingURL=use-hotkey.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-hotkey.d.ts","sourceRoot":"","sources":["../../src/hooks/use-hotkey.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAgD3C,wBAAgB,SAAS,CACvB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,EAC3C,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,EACxC,OAAO,CAAC,EAAE,gBAAgB,GACzB,IAAI,CA4BN;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,EACxC,OAAO,GAAE,OAAc,GACtB,IAAI,CAMN"}
1
+ {"version":3,"file":"use-hotkey.d.ts","sourceRoot":"","sources":["../../src/hooks/use-hotkey.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAgDhD,wBAAgB,SAAS,CACvB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,EAC3C,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,EACxC,OAAO,CAAC,EAAE,gBAAgB,GACzB,IAAI,CA4BN;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,EACxC,OAAO,GAAE,OAAc,GACtB,IAAI,CAMN"}