{"version":3,"file":"resize-event.mjs","sources":["../../../../packages/utils/resize-event.ts"],"sourcesContent":["import isServer from './isServer'\n\nimport type { CustomizedHTMLElement } from './types'\n\nexport type ResizableElement = CustomizedHTMLElement<{\n  __resizeListeners__?: Array<(...args: unknown[]) => unknown>\n  __ro__?: ResizeObserver\n}>\n\nconst resizeHandler = function (entries: ResizeObserverEntry[]) {\n  for (const entry of entries) {\n    const listeners =\n      (entry.target as ResizableElement).__resizeListeners__ || []\n    if (listeners.length) {\n      listeners.forEach((fn) => {\n        fn()\n      })\n    }\n  }\n}\n\nexport const addResizeListener = function (\n  element: ResizableElement,\n  fn: (...args: unknown[]) => unknown\n): void {\n  if (isServer || !element) return\n  if (!element.__resizeListeners__) {\n    element.__resizeListeners__ = []\n    element.__ro__ = new ResizeObserver(resizeHandler)\n    element.__ro__.observe(element)\n  }\n  element.__resizeListeners__.push(fn)\n}\n\nexport const removeResizeListener = function (\n  element: ResizableElement,\n  fn: (...args: unknown[]) => unknown\n): void {\n  if (!element || !element.__resizeListeners__) return\n  element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1)\n  if (!element.__resizeListeners__.length) {\n    element.__ro__?.disconnect()\n  }\n}\n"],"names":[],"mappings":";;AASA,MAAM,gBAAgB,SAAU,SAAgC;AAC9D,aAAW,SAAS,SAAS;AAC3B,UAAM,YACH,MAAM,OAA4B,uBAAuB;AAC5D,QAAI,UAAU,QAAQ;AACpB,gBAAU,QAAQ,CAAC,OAAO;AACxB;AAAA;AAAA;AAAA;AAAA;MAMK,oBAAoB,SAC/B,SACA,IACM;AACN,MAAI,YAAY,CAAC;AAAS;AAC1B,MAAI,CAAC,QAAQ,qBAAqB;AAChC,YAAQ,sBAAsB;AAC9B,YAAQ,SAAS,IAAI,eAAe;AACpC,YAAQ,OAAO,QAAQ;AAAA;AAEzB,UAAQ,oBAAoB,KAAK;AAAA;MAGtB,uBAAuB,SAClC,SACA,IACM;AArCR;AAsCE,MAAI,CAAC,WAAW,CAAC,QAAQ;AAAqB;AAC9C,UAAQ,oBAAoB,OAAO,QAAQ,oBAAoB,QAAQ,KAAK;AAC5E,MAAI,CAAC,QAAQ,oBAAoB,QAAQ;AACvC,kBAAQ,WAAR,mBAAgB;AAAA;AAAA;;;;"}