@ioca/react 1.5.3 → 1.5.5

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 (57) hide show
  1. package/lib/cjs/components/editor/controls.js +31 -40
  2. package/lib/cjs/components/editor/controls.js.map +1 -1
  3. package/lib/cjs/components/editor/editor.js +204 -41
  4. package/lib/cjs/components/editor/editor.js.map +1 -1
  5. package/lib/cjs/components/editor/memtion.js +171 -0
  6. package/lib/cjs/components/editor/memtion.js.map +1 -0
  7. package/lib/cjs/components/image/image.js +46 -30
  8. package/lib/cjs/components/image/image.js.map +1 -1
  9. package/lib/cjs/components/input/textarea.js +12 -5
  10. package/lib/cjs/components/input/textarea.js.map +1 -1
  11. package/lib/cjs/components/modal/hookModal.js +1 -1
  12. package/lib/cjs/components/modal/hookModal.js.map +1 -1
  13. package/lib/cjs/components/picker/colors/footer.js +1 -1
  14. package/lib/cjs/components/picker/colors/footer.js.map +1 -1
  15. package/lib/cjs/components/popconfirm/popconfirm.js +3 -3
  16. package/lib/cjs/components/popconfirm/popconfirm.js.map +1 -1
  17. package/lib/cjs/components/tabs/tabs.js +95 -37
  18. package/lib/cjs/components/tabs/tabs.js.map +1 -1
  19. package/lib/cjs/js/hooks.js +60 -40
  20. package/lib/cjs/js/hooks.js.map +1 -1
  21. package/lib/css/colors.css +13 -8
  22. package/lib/css/index.css +1 -1
  23. package/lib/css/index.css.map +1 -1
  24. package/lib/css/input.css +12 -6
  25. package/lib/css/reset.css +2 -5
  26. package/lib/css/utilities.css +9 -10
  27. package/lib/es/components/editor/controls.js +32 -37
  28. package/lib/es/components/editor/controls.js.map +1 -1
  29. package/lib/es/components/editor/editor.js +205 -42
  30. package/lib/es/components/editor/editor.js.map +1 -1
  31. package/lib/es/components/editor/memtion.js +160 -0
  32. package/lib/es/components/editor/memtion.js.map +1 -0
  33. package/lib/es/components/image/image.js +47 -31
  34. package/lib/es/components/image/image.js.map +1 -1
  35. package/lib/es/components/image/index.js +2 -2
  36. package/lib/es/components/image/list.js +2 -2
  37. package/lib/es/components/image/list.js.map +1 -1
  38. package/lib/es/components/input/textarea.js +12 -5
  39. package/lib/es/components/input/textarea.js.map +1 -1
  40. package/lib/es/components/modal/hookModal.js +1 -1
  41. package/lib/es/components/modal/hookModal.js.map +1 -1
  42. package/lib/es/components/picker/colors/footer.js +1 -1
  43. package/lib/es/components/picker/colors/footer.js.map +1 -1
  44. package/lib/es/components/popconfirm/popconfirm.js +3 -3
  45. package/lib/es/components/popconfirm/popconfirm.js.map +1 -1
  46. package/lib/es/components/tabs/tabs.js +95 -37
  47. package/lib/es/components/tabs/tabs.js.map +1 -1
  48. package/lib/es/components/upload/renderFile.js +2 -2
  49. package/lib/es/components/upload/renderFile.js.map +1 -1
  50. package/lib/es/js/hooks.js +61 -41
  51. package/lib/es/js/hooks.js.map +1 -1
  52. package/lib/index.js +608 -195
  53. package/lib/types/components/editor/type.d.ts +25 -12
  54. package/lib/types/components/image/image.d.ts +2 -2
  55. package/lib/types/components/image/index.d.ts +2 -2
  56. package/lib/types/components/input/type.d.ts +1 -0
  57. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../packages/js/hooks.ts"],"sourcesContent":["import { DependencyList, useEffect, useMemo, useRef, useState } from \"react\";\r\n\r\ntype TMouseEvent = (e: MouseEvent) => void;\r\ntype TKeyboardEvent = (e: KeyboardEvent) => void;\r\ntype TEventOption = {\r\n\tdisabled?: boolean;\r\n};\r\n\r\nconst MouseMoveEvents = new Set<TMouseEvent>();\r\nconst MouseUpEvents = new Set<TMouseEvent>();\r\nconst KeydownEvents = new Set<TKeyboardEvent>();\r\n\r\nlet initialized = false;\r\n\r\nconst initEvents = () => {\r\n\tif (typeof document === \"undefined\" || initialized) return;\r\n\tinitialized = true;\r\n\r\n\tconst touchable = \"ontouchend\" in document;\r\n\tconst EVENTS: Record<string, any> = {\r\n\t\tMOVE: touchable ? \"touchmove\" : \"mousemove\",\r\n\t\tUP: touchable ? \"touchend\" : \"mouseup\",\r\n\t\tKEYDOWN: \"keydown\",\r\n\t};\r\n\r\n\tdocument.addEventListener(\r\n\t\tEVENTS.MOVE,\r\n\t\t(e) => {\r\n\t\t\tfor (const listener of MouseMoveEvents.values()) {\r\n\t\t\t\tlistener(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t{ passive: false },\r\n\t);\r\n\r\n\tdocument.addEventListener(EVENTS.UP, (e) => {\r\n\t\tfor (const listener of MouseUpEvents.values()) {\r\n\t\t\tlistener(e);\r\n\t\t}\r\n\t});\r\n\r\n\tdocument.addEventListener(EVENTS.KEYDOWN, (e) => {\r\n\t\tfor (const listener of KeydownEvents.values()) {\r\n\t\t\tlistener(e);\r\n\t\t}\r\n\t});\r\n};\r\n\r\nfunction initEventsOnce() {\r\n\tuseEffect(initEvents, []);\r\n}\r\n\r\nexport function useMouseMove(listener: TMouseEvent, options?: TEventOption) {\r\n\tinitEventsOnce();\r\n\r\n\tuseEffect(() => {\r\n\t\tif (options?.disabled) return;\r\n\r\n\t\tMouseMoveEvents.add(listener);\r\n\t\treturn () => {\r\n\t\t\tMouseMoveEvents.delete(listener);\r\n\t\t};\r\n\t}, []);\r\n}\r\n\r\nexport function useMouseUp(listener: TMouseEvent, options?: TEventOption) {\r\n\tinitEventsOnce();\r\n\r\n\tuseEffect(() => {\r\n\t\tif (options?.disabled) return;\r\n\r\n\t\tMouseUpEvents.add(listener);\r\n\t\treturn () => {\r\n\t\t\tMouseUpEvents.delete(listener);\r\n\t\t};\r\n\t}, []);\r\n}\r\n\r\nexport function useKeydown(listener: TKeyboardEvent, options?: TEventOption) {\r\n\tinitEventsOnce();\r\n\r\n\tuseEffect(() => {\r\n\t\tif (options?.disabled) return;\r\n\r\n\t\tKeydownEvents.add(listener);\r\n\t\treturn () => {\r\n\t\t\tKeydownEvents.delete(listener);\r\n\t\t};\r\n\t}, []);\r\n}\r\n\r\nexport function useCreation<T>(factory: () => T, deps: DependencyList) {\r\n\treturn useMemo(factory, deps);\r\n}\r\n\r\nexport function useReactive<T extends object>(initialState: T): T {\r\n\tconst [, setFlag] = useState(0);\r\n\tconst scheduledRef = useRef(false);\r\n\tconst proxyCacheRef = useRef(new WeakMap<object, any>());\r\n\tconst rootRef = useRef<T | null>(null);\r\n\tconst proxyRef = useRef<T | null>(null);\r\n\r\n\tconst notify = () => {\r\n\t\tif (scheduledRef.current) return;\r\n\t\tscheduledRef.current = true;\r\n\r\n\t\tconst flush = () => {\r\n\t\t\tscheduledRef.current = false;\r\n\t\t\tsetFlag((n) => n + 1);\r\n\t\t};\r\n\r\n\t\tif (typeof queueMicrotask !== \"undefined\") {\r\n\t\t\tqueueMicrotask(flush);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tPromise.resolve().then(flush);\r\n\t};\r\n\r\n\tconst createProxy = (target: any): any => {\r\n\t\tif (!target || typeof target !== \"object\") return target;\r\n\r\n\t\tif (!Array.isArray(target)) {\r\n\t\t\tconst proto = Object.getPrototypeOf(target);\r\n\t\t\tconst isPlainObject = proto === Object.prototype || proto === null;\r\n\t\t\tif (!isPlainObject) return target;\r\n\t\t}\r\n\r\n\t\tconst cached = proxyCacheRef.current.get(target);\r\n\t\tif (cached) return cached;\r\n\r\n\t\tconst proxy = new Proxy(target, {\r\n\t\t\tget(t, p, r) {\r\n\t\t\t\treturn createProxy(Reflect.get(t, p, r));\r\n\t\t\t},\r\n\t\t\tset(t, p, v, r) {\r\n\t\t\t\tconst prev = Reflect.get(t, p, r);\r\n\t\t\t\tconst ok = Reflect.set(t, p, v, r);\r\n\t\t\t\tif (prev !== v) notify();\r\n\t\t\t\treturn ok;\r\n\t\t\t},\r\n\t\t\tdeleteProperty(t, p) {\r\n\t\t\t\tconst had = Object.prototype.hasOwnProperty.call(t, p);\r\n\t\t\t\tconst ok = Reflect.deleteProperty(t, p);\r\n\t\t\t\tif (had) notify();\r\n\t\t\t\treturn ok;\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tproxyCacheRef.current.set(target, proxy);\r\n\t\treturn proxy;\r\n\t};\r\n\r\n\tif (!proxyRef.current) {\r\n\t\trootRef.current = initialState;\r\n\t\tproxyRef.current = createProxy(rootRef.current);\r\n\t}\r\n\r\n\treturn proxyRef.current as T;\r\n}\r\n\r\ntype TSetState<T> = (\r\n\tvalue: T | undefined | ((prev: T | undefined) => T),\r\n) => void;\r\n\r\ntype TLocalStorageOptions<T> = {\r\n\tdefaultValue?: T | (() => T);\r\n\tlistenStorageChange?: boolean;\r\n};\r\n\r\nexport function useLocalStorageState<T>(\r\n\tkey: string,\r\n\toptions?: TLocalStorageOptions<T>,\r\n): [T | undefined, TSetState<T>] {\r\n\tconst { defaultValue, listenStorageChange } = options ?? {};\r\n\r\n\tconst getDefault = () => {\r\n\t\treturn typeof defaultValue === \"function\"\r\n\t\t\t? (defaultValue as () => T)()\r\n\t\t\t: defaultValue;\r\n\t};\r\n\r\n\tconst read = (): T | undefined => {\r\n\t\tif (typeof window === \"undefined\") return getDefault();\r\n\r\n\t\tconst raw = window.localStorage.getItem(key);\r\n\t\tif (raw === null) return getDefault();\r\n\r\n\t\ttry {\r\n\t\t\treturn JSON.parse(raw) as T;\r\n\t\t} catch (e) {\r\n\t\t\treturn raw as unknown as T;\r\n\t\t}\r\n\t};\r\n\r\n\tconst [state, setState] = useState<T | undefined>(() => read());\r\n\r\n\tconst set: TSetState<T> = (value) => {\r\n\t\tsetState((prev) => {\r\n\t\t\tconst next =\r\n\t\t\t\ttypeof value === \"function\"\r\n\t\t\t\t\t? (value as (prev: T | undefined) => T)(prev)\r\n\t\t\t\t\t: value;\r\n\r\n\t\t\tif (typeof window !== \"undefined\") {\r\n\t\t\t\tif (next === undefined) {\r\n\t\t\t\t\twindow.localStorage.removeItem(key);\r\n\t\t\t\t} else {\r\n\t\t\t\t\twindow.localStorage.setItem(key, JSON.stringify(next));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn next;\r\n\t\t});\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!listenStorageChange) return;\r\n\t\tif (typeof window === \"undefined\") return;\r\n\r\n\t\tconst onStorage = (e: StorageEvent) => {\r\n\t\t\tif (e.key !== key) return;\r\n\r\n\t\t\tif (e.newValue === null) {\r\n\t\t\t\tsetState(getDefault());\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\ttry {\r\n\t\t\t\tsetState(JSON.parse(e.newValue) as T);\r\n\t\t\t} catch (err) {\r\n\t\t\t\tsetState(e.newValue as unknown as T);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\twindow.addEventListener(\"storage\", onStorage);\r\n\t\treturn () => {\r\n\t\t\twindow.removeEventListener(\"storage\", onStorage);\r\n\t\t};\r\n\t}, [key, listenStorageChange]);\r\n\r\n\treturn [state, set];\r\n}\r\n\r\ntype TResponsiveConfig = Record<string, number>;\r\n\r\nlet responsiveConfig: TResponsiveConfig = {};\r\n\r\nexport function configResponsive(config: TResponsiveConfig) {\r\n\tresponsiveConfig = config;\r\n}\r\n\r\nexport function useResponsive() {\r\n\tconst compute = () => {\r\n\t\tif (typeof window === \"undefined\") return {};\r\n\t\tconst w = window.innerWidth;\r\n\t\tconst result: Record<string, boolean> = {};\r\n\r\n\t\tfor (const key in responsiveConfig) {\r\n\t\t\tresult[key] = w >= responsiveConfig[key];\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t};\r\n\r\n\tconst [state, setState] = useState<Record<string, boolean>>(() =>\r\n\t\tcompute(),\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (typeof window === \"undefined\") return;\r\n\r\n\t\tconst onResize = () => {\r\n\t\t\tconst next = compute();\r\n\t\t\tsetState((prev) => {\r\n\t\t\t\tconst prevKeys = Object.keys(prev);\r\n\t\t\t\tconst nextKeys = Object.keys(next);\r\n\t\t\t\tif (prevKeys.length !== nextKeys.length) return next;\r\n\r\n\t\t\t\tfor (const k of nextKeys) {\r\n\t\t\t\t\tif (prev[k] !== next[k]) return next;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn prev;\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tonResize();\r\n\t\twindow.addEventListener(\"resize\", onResize);\r\n\t\treturn () => {\r\n\t\t\twindow.removeEventListener(\"resize\", onResize);\r\n\t\t};\r\n\t}, []);\r\n\r\n\treturn state;\r\n}\r\n\r\ntype TSize = { width: number; height: number };\r\n\r\nexport function useSize(target: any): TSize | undefined {\r\n\tconst [size, setSize] = useState<TSize>();\r\n\r\n\tuseEffect(() => {\r\n\t\tif (typeof window === \"undefined\") return;\r\n\r\n\t\tconst resolveTarget = () => {\r\n\t\t\tif (!target) return null;\r\n\t\t\tif (typeof target === \"function\") return target();\r\n\t\t\tif (typeof target === \"object\" && \"current\" in target) {\r\n\t\t\t\treturn target.current;\r\n\t\t\t}\r\n\t\t\treturn target;\r\n\t\t};\r\n\r\n\t\tconst el = resolveTarget() as HTMLElement | null;\r\n\t\tif (!el) return;\r\n\r\n\t\tconst update = () => {\r\n\t\t\tconst rect = el.getBoundingClientRect();\r\n\t\t\tsetSize({ width: rect.width, height: rect.height });\r\n\t\t};\r\n\r\n\t\tupdate();\r\n\r\n\t\tlet ro: ResizeObserver | undefined;\r\n\t\tif (typeof ResizeObserver !== \"undefined\") {\r\n\t\t\tro = new ResizeObserver(update);\r\n\t\t\tro.observe(el);\r\n\t\t}\r\n\r\n\t\twindow.addEventListener(\"resize\", update);\r\n\t\treturn () => {\r\n\t\t\twindow.removeEventListener(\"resize\", update);\r\n\t\t\tro?.disconnect();\r\n\t\t};\r\n\t}, [target]);\r\n\r\n\treturn size;\r\n}\r\n\r\nconst defaultObserver = {\r\n\tobserve: undefined,\r\n\tunobserve: undefined,\r\n\tdisconnect: undefined,\r\n};\r\n\r\nexport function useIntersectionObserver(configs?: IntersectionObserverInit) {\r\n\tif (typeof window === \"undefined\") {\r\n\t\treturn {\r\n\t\t\t...defaultObserver,\r\n\t\t};\r\n\t}\r\n\r\n\tconst WM = new WeakMap();\r\n\tconst IO = new IntersectionObserver((entries) => {\r\n\t\tentries.map((entry) => {\r\n\t\t\tconst callback = WM.get(entry.target);\r\n\t\t\tcallback?.(entry.target, entry.isIntersecting);\r\n\t\t});\r\n\t}, configs);\r\n\r\n\tfunction observe(target: HTMLElement, callback: Function) {\r\n\t\tif (WM.get(target)) return;\r\n\t\tWM.set(target, callback);\r\n\t\ttarget && IO.observe(target);\r\n\t}\r\n\r\n\tfunction unobserve(target: HTMLElement) {\r\n\t\ttarget && IO.unobserve(target);\r\n\t\tWM.delete(target);\r\n\t}\r\n\r\n\tfunction disconnect() {\r\n\t\tIO.disconnect();\r\n\t}\r\n\r\n\treturn {\r\n\t\tobserve,\r\n\t\tunobserve,\r\n\t\tdisconnect,\r\n\t};\r\n}\r\n\r\nexport function useResizeObserver() {\r\n\tif (typeof window === \"undefined\") {\r\n\t\treturn {\r\n\t\t\t...defaultObserver,\r\n\t\t};\r\n\t}\r\n\r\n\tconst WM = new WeakMap();\r\n\tconst IO = new ResizeObserver((entries) => {\r\n\t\tentries.map((entry) => {\r\n\t\t\tconst callback = WM.get(entry.target);\r\n\t\t\tcallback?.(entry.target);\r\n\t\t});\r\n\t});\r\n\r\n\tfunction observe(target: HTMLElement, callback: Function) {\r\n\t\tif (WM.get(target)) return;\r\n\t\ttarget && IO.observe(target);\r\n\t\tWM.set(target, callback);\r\n\t}\r\n\r\n\tfunction unobserve(target: HTMLElement) {\r\n\t\ttarget && IO.unobserve(target);\r\n\t\tWM.delete(target);\r\n\t}\r\n\r\n\tfunction disconnect() {\r\n\t\tIO.disconnect();\r\n\t}\r\n\r\n\treturn {\r\n\t\tobserve,\r\n\t\tunobserve,\r\n\t\tdisconnect,\r\n\t};\r\n}\r\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../packages/js/hooks.ts"],"sourcesContent":["import {\r\n DependencyList,\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n useRef,\r\n useState,\r\n} from \"react\";\r\n\r\ntype TMouseEvent = (e: MouseEvent) => void;\r\ntype TKeyboardEvent = (e: KeyboardEvent) => void;\r\ntype TEventOption = {\r\n disabled?: boolean;\r\n};\r\n\r\nconst MouseMoveEvents = new Set<TMouseEvent>();\r\nconst MouseUpEvents = new Set<TMouseEvent>();\r\nconst KeydownEvents = new Set<TKeyboardEvent>();\r\n\r\nlet initialized = false;\r\n\r\nconst initEvents = () => {\r\n if (typeof document === \"undefined\" || initialized) return;\r\n initialized = true;\r\n\r\n const touchable = \"ontouchend\" in document;\r\n const EVENTS: Record<string, any> = {\r\n MOVE: touchable ? \"touchmove\" : \"mousemove\",\r\n UP: touchable ? \"touchend\" : \"mouseup\",\r\n KEYDOWN: \"keydown\",\r\n };\r\n\r\n document.addEventListener(\r\n EVENTS.MOVE,\r\n (e) => {\r\n for (const listener of MouseMoveEvents.values()) {\r\n listener(e);\r\n }\r\n },\r\n { passive: false },\r\n );\r\n\r\n document.addEventListener(EVENTS.UP, (e) => {\r\n for (const listener of MouseUpEvents.values()) {\r\n listener(e);\r\n }\r\n });\r\n\r\n document.addEventListener(EVENTS.KEYDOWN, (e) => {\r\n for (const listener of KeydownEvents.values()) {\r\n listener(e);\r\n }\r\n });\r\n};\r\n\r\nfunction initEventsOnce() {\r\n useEffect(initEvents, []);\r\n}\r\n\r\nexport function useMouseMove(listener: TMouseEvent, options?: TEventOption) {\r\n initEventsOnce();\r\n\r\n useEffect(() => {\r\n if (options?.disabled) return;\r\n\r\n MouseMoveEvents.add(listener);\r\n return () => {\r\n MouseMoveEvents.delete(listener);\r\n };\r\n }, []);\r\n}\r\n\r\nexport function useMouseUp(listener: TMouseEvent, options?: TEventOption) {\r\n initEventsOnce();\r\n\r\n useEffect(() => {\r\n if (options?.disabled) return;\r\n\r\n MouseUpEvents.add(listener);\r\n return () => {\r\n MouseUpEvents.delete(listener);\r\n };\r\n }, []);\r\n}\r\n\r\nexport function useKeydown(listener: TKeyboardEvent, options?: TEventOption) {\r\n initEventsOnce();\r\n\r\n useEffect(() => {\r\n if (options?.disabled) return;\r\n\r\n KeydownEvents.add(listener);\r\n return () => {\r\n KeydownEvents.delete(listener);\r\n };\r\n }, []);\r\n}\r\n\r\nexport function useCreation<T>(factory: () => T, deps: DependencyList) {\r\n return useMemo(factory, deps);\r\n}\r\n\r\nexport function useReactive<T extends object>(initialState: T): T {\r\n const [, setFlag] = useState(0);\r\n const scheduledRef = useRef(false);\r\n const proxyCacheRef = useRef(new WeakMap<object, any>());\r\n const rootRef = useRef<T | null>(null);\r\n const proxyRef = useRef<T | null>(null);\r\n\r\n const notify = () => {\r\n if (scheduledRef.current) return;\r\n scheduledRef.current = true;\r\n\r\n const flush = () => {\r\n scheduledRef.current = false;\r\n setFlag((n) => n + 1);\r\n };\r\n\r\n if (typeof queueMicrotask !== \"undefined\") {\r\n queueMicrotask(flush);\r\n return;\r\n }\r\n\r\n Promise.resolve().then(flush);\r\n };\r\n\r\n const createProxy = (target: any): any => {\r\n if (!target || typeof target !== \"object\") return target;\r\n\r\n if (!Array.isArray(target)) {\r\n const proto = Object.getPrototypeOf(target);\r\n const isPlainObject = proto === Object.prototype || proto === null;\r\n if (!isPlainObject) return target;\r\n }\r\n\r\n const cached = proxyCacheRef.current.get(target);\r\n if (cached) return cached;\r\n\r\n const proxy = new Proxy(target, {\r\n get(t, p, r) {\r\n return createProxy(Reflect.get(t, p, r));\r\n },\r\n set(t, p, v, r) {\r\n const prev = Reflect.get(t, p, r);\r\n const ok = Reflect.set(t, p, v, r);\r\n if (prev !== v) notify();\r\n return ok;\r\n },\r\n deleteProperty(t, p) {\r\n const had = Object.prototype.hasOwnProperty.call(t, p);\r\n const ok = Reflect.deleteProperty(t, p);\r\n if (had) notify();\r\n return ok;\r\n },\r\n });\r\n\r\n proxyCacheRef.current.set(target, proxy);\r\n return proxy;\r\n };\r\n\r\n if (!proxyRef.current) {\r\n rootRef.current = initialState;\r\n proxyRef.current = createProxy(rootRef.current);\r\n }\r\n\r\n return proxyRef.current as T;\r\n}\r\n\r\ntype TSetState<T> = (\r\n value: T | undefined | ((prev: T | undefined) => T),\r\n) => void;\r\n\r\ntype TLocalStorageOptions<T> = {\r\n defaultValue?: T | (() => T);\r\n listenStorageChange?: boolean;\r\n};\r\n\r\nexport function useLocalStorageState<T>(\r\n key: string,\r\n options?: TLocalStorageOptions<T>,\r\n): [T | undefined, TSetState<T>] {\r\n const { defaultValue, listenStorageChange } = options ?? {};\r\n\r\n const getDefault = () => {\r\n return typeof defaultValue === \"function\"\r\n ? (defaultValue as () => T)()\r\n : defaultValue;\r\n };\r\n\r\n const read = (): T | undefined => {\r\n if (typeof window === \"undefined\") return getDefault();\r\n\r\n const raw = window.localStorage.getItem(key);\r\n if (raw === null) return getDefault();\r\n\r\n try {\r\n return JSON.parse(raw) as T;\r\n } catch (e) {\r\n return raw as unknown as T;\r\n }\r\n };\r\n\r\n const [state, setState] = useState<T | undefined>(() => read());\r\n\r\n const set: TSetState<T> = (value) => {\r\n setState((prev) => {\r\n const next =\r\n typeof value === \"function\"\r\n ? (value as (prev: T | undefined) => T)(prev)\r\n : value;\r\n\r\n if (typeof window !== \"undefined\") {\r\n if (next === undefined) {\r\n window.localStorage.removeItem(key);\r\n } else {\r\n window.localStorage.setItem(key, JSON.stringify(next));\r\n }\r\n }\r\n\r\n return next;\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (!listenStorageChange) return;\r\n if (typeof window === \"undefined\") return;\r\n\r\n const onStorage = (e: StorageEvent) => {\r\n if (e.key !== key) return;\r\n\r\n if (e.newValue === null) {\r\n setState(getDefault());\r\n return;\r\n }\r\n\r\n try {\r\n setState(JSON.parse(e.newValue) as T);\r\n } catch (err) {\r\n setState(e.newValue as unknown as T);\r\n }\r\n };\r\n\r\n window.addEventListener(\"storage\", onStorage);\r\n return () => {\r\n window.removeEventListener(\"storage\", onStorage);\r\n };\r\n }, [key, listenStorageChange]);\r\n\r\n return [state, set];\r\n}\r\n\r\ntype TResponsiveConfig = Record<string, number>;\r\n\r\nlet responsiveConfig: TResponsiveConfig = {};\r\n\r\nexport function configResponsive(config: TResponsiveConfig) {\r\n responsiveConfig = config;\r\n}\r\n\r\nexport function useResponsive() {\r\n const compute = () => {\r\n if (typeof window === \"undefined\") return {};\r\n const w = window.innerWidth;\r\n const result: Record<string, boolean> = {};\r\n\r\n for (const key in responsiveConfig) {\r\n result[key] = w >= responsiveConfig[key];\r\n }\r\n\r\n return result;\r\n };\r\n\r\n const [state, setState] = useState<Record<string, boolean>>(() =>\r\n compute(),\r\n );\r\n\r\n useEffect(() => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const onResize = () => {\r\n const next = compute();\r\n setState((prev) => {\r\n const prevKeys = Object.keys(prev);\r\n const nextKeys = Object.keys(next);\r\n if (prevKeys.length !== nextKeys.length) return next;\r\n\r\n for (const k of nextKeys) {\r\n if (prev[k] !== next[k]) return next;\r\n }\r\n\r\n return prev;\r\n });\r\n };\r\n\r\n onResize();\r\n window.addEventListener(\"resize\", onResize);\r\n return () => {\r\n window.removeEventListener(\"resize\", onResize);\r\n };\r\n }, []);\r\n\r\n return state;\r\n}\r\n\r\ntype TSize = { width: number; height: number };\r\n\r\nexport function useSize(target: any): TSize | undefined {\r\n const [size, setSize] = useState<TSize>();\r\n\r\n useEffect(() => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const resolveTarget = () => {\r\n if (!target) return null;\r\n if (typeof target === \"function\") return target();\r\n if (typeof target === \"object\" && \"current\" in target) {\r\n return target.current;\r\n }\r\n return target;\r\n };\r\n\r\n const el = resolveTarget() as HTMLElement | null;\r\n if (!el) return;\r\n\r\n const update = () => {\r\n const rect = el.getBoundingClientRect();\r\n setSize({ width: rect.width, height: rect.height });\r\n };\r\n\r\n update();\r\n\r\n let ro: ResizeObserver | undefined;\r\n if (typeof ResizeObserver !== \"undefined\") {\r\n ro = new ResizeObserver(update);\r\n ro.observe(el);\r\n }\r\n\r\n window.addEventListener(\"resize\", update);\r\n return () => {\r\n window.removeEventListener(\"resize\", update);\r\n ro?.disconnect();\r\n };\r\n }, [target]);\r\n\r\n return size;\r\n}\r\n\r\nconst defaultObserver = {\r\n observe: undefined,\r\n unobserve: undefined,\r\n disconnect: undefined,\r\n};\r\n\r\nexport function useIntersectionObserver(configs?: IntersectionObserverInit) {\r\n const wmRef = useRef(new WeakMap());\r\n const ioRef = useRef<IntersectionObserver | undefined>(undefined);\r\n\r\n if (typeof window !== \"undefined\" && !ioRef.current) {\r\n ioRef.current = new IntersectionObserver((entries) => {\r\n entries.map((entry) => {\r\n const callback = wmRef.current.get(entry.target);\r\n callback?.(entry.target, entry.isIntersecting);\r\n });\r\n }, configs);\r\n }\r\n\r\n const observe = useCallback((target: HTMLElement, callback: Function) => {\r\n if (!target || !ioRef.current || wmRef.current.get(target)) return;\r\n wmRef.current.set(target, callback);\r\n ioRef.current.observe(target);\r\n }, []);\r\n\r\n const unobserve = useCallback((target: HTMLElement) => {\r\n if (!target || !ioRef.current) return;\r\n ioRef.current.unobserve(target);\r\n wmRef.current.delete(target);\r\n }, []);\r\n\r\n const disconnect = useCallback(() => {\r\n ioRef.current?.disconnect();\r\n }, []);\r\n\r\n useEffect(() => {\r\n return () => {\r\n ioRef.current?.disconnect();\r\n };\r\n }, []);\r\n\r\n if (typeof window === \"undefined\") {\r\n return {\r\n ...defaultObserver,\r\n };\r\n }\r\n\r\n return {\r\n observe,\r\n unobserve,\r\n disconnect,\r\n };\r\n}\r\n\r\nexport function useResizeObserver() {\r\n const wmRef = useRef(new WeakMap());\r\n const ioRef = useRef<ResizeObserver | undefined>(undefined);\r\n\r\n if (typeof window !== \"undefined\" && !ioRef.current) {\r\n ioRef.current = new ResizeObserver((entries) => {\r\n entries.map((entry) => {\r\n const callback = wmRef.current.get(entry.target);\r\n callback?.(entry.target);\r\n });\r\n });\r\n }\r\n\r\n const observe = useCallback((target: HTMLElement, callback: Function) => {\r\n if (!target || !ioRef.current || wmRef.current.get(target)) return;\r\n ioRef.current.observe(target);\r\n wmRef.current.set(target, callback);\r\n }, []);\r\n\r\n const unobserve = useCallback((target: HTMLElement) => {\r\n if (!target || !ioRef.current) return;\r\n ioRef.current.unobserve(target);\r\n wmRef.current.delete(target);\r\n }, []);\r\n\r\n const disconnect = useCallback(() => {\r\n ioRef.current?.disconnect();\r\n }, []);\r\n\r\n useEffect(() => {\r\n return () => {\r\n ioRef.current?.disconnect();\r\n };\r\n }, []);\r\n\r\n if (typeof window === \"undefined\") {\r\n return {\r\n ...defaultObserver,\r\n };\r\n }\r\n\r\n return {\r\n observe,\r\n unobserve,\r\n disconnect,\r\n };\r\n}\r\n"],"names":[],"mappings":"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"}