element-plus
Version:
A Component Library for Vue 3
1 lines • 1.95 kB
Source Map (JSON)
{"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;;;;"}