UNPKG

@lisn.js/react

Version:
1 lines 3.2 kB
{"version":3,"file":"useWidget.cjs","names":["Object","defineProperty","exports","value","useWidget","_react","require","_useDeepMemo","newWidget","config","widgetRef","configs","Array","elementRef","useRef","widgetRefsInternal","configsMemo","useDeepMemo","useEffect","current","Element","thisConfig","widget","push","widgets","destroy","useImperativeHandle","getWidget","_widgetRefsInternal$c","getWidgets"],"sources":["../../src/useWidget.ts"],"sourcesContent":["\"use client\";\nimport {\n useRef,\n useEffect,\n useImperativeHandle,\n RefObject,\n ComponentRef,\n ElementType,\n} from \"react\";\n\nimport type { Widget } from \"lisn.js\";\nimport { WidgetComponentRef } from \"./types\";\nimport { useDeepMemo } from \"./useDeepMemo\";\n\nexport const useWidget = <\n T extends ElementType,\n W extends Widget,\n C extends object,\n>(\n newWidget: (element: Element, config?: C) => W | null,\n config?: C | C[],\n widgetRef?: RefObject<WidgetComponentRef<W> | null>,\n) => {\n const configs = config instanceof Array ? config : [config];\n\n const elementRef = useRef<ComponentRef<T>>(null);\n const widgetRefsInternal = useRef<W[]>([]);\n const configsMemo = useDeepMemo(configs);\n\n useEffect(() => {\n if (elementRef.current instanceof Element) {\n for (const thisConfig of configsMemo) {\n const widget = newWidget(elementRef.current, thisConfig);\n\n if (widget) {\n widgetRefsInternal.current.push(widget);\n }\n }\n }\n const widgets = widgetRefsInternal.current;\n\n return () => {\n for (const widget of widgets) {\n widget.destroy();\n }\n widgetRefsInternal.current = [];\n };\n }, [configsMemo, newWidget]);\n\n useImperativeHandle(widgetRef, () => {\n return {\n getWidget: () => widgetRefsInternal.current[0] ?? null,\n getWidgets: () => widgetRefsInternal.current,\n };\n });\n\n return elementRef;\n};\n"],"mappings":";AAAA,YAAY;;AAACA,MAAA,CAAAC,cAAA,CAAAC,OAAA;EAAAC,KAAA;AAAA;AAAAD,OAAA,CAAAE,SAAA;AACb,IAAAC,MAAA,GAAAC,OAAA;AAWA,IAAAC,YAAA,GAAAD,OAAA;AAEO,MAAMF,SAAS,GAAGA,CAKvBI,SAAqD,EACrDC,MAAgB,EAChBC,SAAmD,KAChD;EACH,MAAMC,OAAO,GAAGF,MAAM,YAAYG,KAAK,GAAGH,MAAM,GAAG,CAACA,MAAM,CAAC;EAE3D,MAAMI,UAAU,GAAG,IAAAC,aAAM,EAAkB,IAAI,CAAC;EAChD,MAAMC,kBAAkB,GAAG,IAAAD,aAAM,EAAM,EAAE,CAAC;EAC1C,MAAME,WAAW,GAAG,IAAAC,wBAAW,EAACN,OAAO,CAAC;EAExC,IAAAO,gBAAS,EAAC,MAAM;IACd,IAAIL,UAAU,CAACM,OAAO,YAAYC,OAAO,EAAE;MACzC,KAAK,MAAMC,UAAU,IAAIL,WAAW,EAAE;QACpC,MAAMM,MAAM,GAAGd,SAAS,CAACK,UAAU,CAACM,OAAO,EAAEE,UAAU,CAAC;QAExD,IAAIC,MAAM,EAAE;UACVP,kBAAkB,CAACI,OAAO,CAACI,IAAI,CAACD,MAAM,CAAC;QACzC;MACF;IACF;IACA,MAAME,OAAO,GAAGT,kBAAkB,CAACI,OAAO;IAE1C,OAAO,MAAM;MACX,KAAK,MAAMG,MAAM,IAAIE,OAAO,EAAE;QAC5BF,MAAM,CAACG,OAAO,CAAC,CAAC;MAClB;MACAV,kBAAkB,CAACI,OAAO,GAAG,EAAE;IACjC,CAAC;EACH,CAAC,EAAE,CAACH,WAAW,EAAER,SAAS,CAAC,CAAC;EAE5B,IAAAkB,0BAAmB,EAAChB,SAAS,EAAE,MAAM;IACnC,OAAO;MACLiB,SAAS,EAAEA,CAAA;QAAA,IAAAC,qBAAA;QAAA,QAAAA,qBAAA,GAAMb,kBAAkB,CAACI,OAAO,CAAC,CAAC,CAAC,cAAAS,qBAAA,cAAAA,qBAAA,GAAI,IAAI;MAAA;MACtDC,UAAU,EAAEA,CAAA,KAAMd,kBAAkB,CAACI;IACvC,CAAC;EACH,CAAC,CAAC;EAEF,OAAON,UAAU;AACnB,CAAC;AAACX,OAAA,CAAAE,SAAA,GAAAA,SAAA","ignoreList":[]}