{"version":3,"file":"index.cjs","sources":[""],"sourcesContent":["export type TOnResizeObservedArgs = Parameters<typeof onResizeObserved>;\n\nexport type TOnResizeObservedReturn = ReturnType<typeof onResizeObserved>;\n\n/**\n * Observes size changes for one or more elements.\n * It is a no-op when ResizeObserver is unavailable.\n * @param {Element|Element[]} elements Elements to observe\n * @param {ResizeObserverCallback} callback Observer callback\n * @param {ResizeObserverOptions} [options={}] Per-element observer options\n * @param {boolean} [isAutoInit=true] Start observing immediately\n * @returns {{ observer: ResizeObserver|null; observe: () => void; disconnect: () => void; }} Controls\n * @throws {TypeError} onResizeObserved: arguments are invalid\n * @example\n * const sizing = onResizeObserved(panel, ([ entry ]) => update(entry.contentRect));\n * @example\n * // Resize a canvas when its container dimensions change\n * const canvasSizing = onResizeObserved(container, ([ entry ]) => {\n *   canvas.width = entry.contentRect.width;\n *   canvas.height = entry.contentRect.height;\n * });\n */\nexport const onResizeObserved = (\n  elements: Element | readonly Element[],\n  callback: ResizeObserverCallback,\n  options: ResizeObserverOptions = {},\n  isAutoInit: boolean = true\n): {\n  disconnect: () => void;\n  observe: () => void;\n  observer: ResizeObserver | null;\n} => {\n  const targets = Array.isArray(elements) ? elements : [ elements ];\n  if (targets.length === 0 || targets.some((element) => !element || element.nodeType !== 1)) {\n    throw new TypeError(\"onResizeObserved: elements must contain DOM elements\");\n  }\n  if (typeof callback !== \"function\") {\n    throw new TypeError(\"onResizeObserved: callback must be a function\");\n  }\n  if (!options || typeof options !== \"object\" || Array.isArray(options)) {\n    throw new TypeError(\"onResizeObserved: options must be a plain object\");\n  }\n  if (typeof isAutoInit !== \"boolean\") {\n    throw new TypeError(\"onResizeObserved: isAutoInit must be a boolean\");\n  }\n  const Observer = globalThis.ResizeObserver;\n  const observer = typeof Observer === \"function\" ? new Observer(callback) : null;\n  const observe = (): void => targets.forEach((element) => observer?.observe(element, options));\n  const disconnect = (): void => observer?.disconnect();\n  if (isAutoInit) {\n    observe();\n  }\n  return { disconnect, observe, observer };\n};\n"],"names":["onResizeObserved","elements","callback","options","isAutoInit","targets","Array","isArray","length","some","element","nodeType","TypeError","Observer","globalThis","ResizeObserver","observer","observe","forEach","disconnect"],"mappings":"+DAsBaA,iBAAmB,CAC9BC,SACAC,SACAC,QAAiC,CAAA,EACjCC,WAAsB,QAMtB,MAAMC,QAAUC,MAAMC,QAAQN,UAAYA,SAAW,CAAEA,UACvD,GAAII,QAAQG,SAAW,GAAKH,QAAQI,KAAMC,UAAaA,SAAWA,QAAQC,WAAa,GACrF,MAAM,IAAIC,UAAU,wDAEtB,UAAWV,WAAa,WACtB,MAAM,IAAIU,UAAU,iDAEtB,IAAKT,gBAAkBA,UAAY,UAAYG,MAAMC,QAAQJ,SAC3D,MAAM,IAAIS,UAAU,oDAEtB,UAAWR,aAAe,UACxB,MAAM,IAAIQ,UAAU,kDAEtB,MAAMC,SAAWC,WAAWC,eAC5B,MAAMC,gBAAkBH,WAAa,WAAa,IAAIA,SAASX,UAAY,KAC3E,MAAMe,QAAU,IAAYZ,QAAQa,QAASR,SAAYM,UAAUC,QAAQP,QAASP,UACpF,MAAMgB,WAAa,IAAYH,UAAUG,aACzC,GAAIf,WACFa,UAEF,MAAO,CAAEE,sBAAYF,gBAASD"}