{"version":3,"file":"useToggleEmojiButtonSize.mjs","sources":["../../../../src/components/AlphaToggleEmojiButtonGroup/useToggleEmojiButtonSize.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react'\n\nexport const EMOJI_BUTTON_GROUP_GAP = 6\nexport const EMOJI_BUTTON_SIZE = 54\n\ninterface UseToggleEmojiButtonSizeProps {\n  container: HTMLDivElement | null\n  enabled: boolean\n  buttonCount: number\n}\n\nexport function useToggleEmojiButtonSize({\n  container,\n  enabled,\n  buttonCount,\n}: UseToggleEmojiButtonSizeProps) {\n  const [buttonSize, setButtonSize] = useState(EMOJI_BUTTON_SIZE)\n\n  const adjustButtonSize = useCallback(() => {\n    if (!container || !enabled) {\n      return\n    }\n\n    const containerWidth = container.clientWidth\n    const containerHeight = container.clientHeight\n    const size = Math.max(\n      Math.min(\n        (containerWidth - EMOJI_BUTTON_GROUP_GAP * (buttonCount - 1)) /\n          buttonCount,\n        containerHeight - EMOJI_BUTTON_GROUP_GAP\n      ),\n      EMOJI_BUTTON_SIZE\n    )\n\n    setButtonSize(size)\n  }, [buttonCount, container, enabled])\n\n  useEffect(\n    function setResizeObserver() {\n      let resizeObserver: ResizeObserver | null = null\n\n      if (enabled && container) {\n        resizeObserver = new ResizeObserver(() => {\n          adjustButtonSize()\n        })\n\n        resizeObserver.observe(container)\n        container.addEventListener('resize', adjustButtonSize)\n      }\n\n      return () => {\n        if (container) {\n          resizeObserver?.unobserve(container)\n          container?.removeEventListener('resize', adjustButtonSize)\n        }\n      }\n    },\n    [adjustButtonSize, container, enabled]\n  )\n\n  return buttonSize\n}\n"],"names":["EMOJI_BUTTON_GROUP_GAP","EMOJI_BUTTON_SIZE","useToggleEmojiButtonSize","container","enabled","buttonCount","buttonSize","setButtonSize","useState","adjustButtonSize","useCallback","containerWidth","clientWidth","containerHeight","clientHeight","size","Math","max","min","useEffect","setResizeObserver","resizeObserver","ResizeObserver","observe","addEventListener","_resizeObserver","unobserve","removeEventListener"],"mappings":";;AAEO,MAAMA,sBAAsB,GAAG;AAC/B,MAAMC,iBAAiB,GAAG;AAQ1B,SAASC,wBAAwBA,CAAC;EACvCC,SAAS;EACTC,OAAO;AACPC,EAAAA;AAC6B,CAAC,EAAE;EAChC,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAGC,QAAQ,CAACP,iBAAiB,CAAC;AAE/D,EAAA,MAAMQ,gBAAgB,GAAGC,WAAW,CAAC,MAAM;AACzC,IAAA,IAAI,CAACP,SAAS,IAAI,CAACC,OAAO,EAAE;AAC1B,MAAA;AACF;AAEA,IAAA,MAAMO,cAAc,GAAGR,SAAS,CAACS,WAAW;AAC5C,IAAA,MAAMC,eAAe,GAAGV,SAAS,CAACW,YAAY;AAC9C,IAAA,MAAMC,IAAI,GAAGC,IAAI,CAACC,GAAG,CACnBD,IAAI,CAACE,GAAG,CACN,CAACP,cAAc,GAAGX,sBAAsB,IAAIK,WAAW,GAAG,CAAC,CAAC,IAC1DA,WAAW,EACbQ,eAAe,GAAGb,sBACpB,CAAC,EACDC,iBACF,CAAC;IAEDM,aAAa,CAACQ,IAAI,CAAC;GACpB,EAAE,CAACV,WAAW,EAAEF,SAAS,EAAEC,OAAO,CAAC,CAAC;AAErCe,EAAAA,SAAS,CACP,SAASC,iBAAiBA,GAAG;IAC3B,IAAIC,cAAqC,GAAG,IAAI;IAEhD,IAAIjB,OAAO,IAAID,SAAS,EAAE;AACxBkB,MAAAA,cAAc,GAAG,IAAIC,cAAc,CAAC,MAAM;AACxCb,QAAAA,gBAAgB,EAAE;AACpB,OAAC,CAAC;AAEFY,MAAAA,cAAc,CAACE,OAAO,CAACpB,SAAS,CAAC;AACjCA,MAAAA,SAAS,CAACqB,gBAAgB,CAAC,QAAQ,EAAEf,gBAAgB,CAAC;AACxD;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAIN,SAAS,EAAE;AAAA,QAAA,IAAAsB,eAAA;QACb,CAAAA,eAAA,GAAAJ,cAAc,MAAAI,IAAAA,IAAAA,eAAA,KAAdA,KAAAA,CAAAA,IAAAA,eAAA,CAAgBC,SAAS,CAACvB,SAAS,CAAC;QACpCA,SAAS,KAAA,IAAA,IAATA,SAAS,KAAA,KAAA,CAAA,IAATA,SAAS,CAAEwB,mBAAmB,CAAC,QAAQ,EAAElB,gBAAgB,CAAC;AAC5D;KACD;GACF,EACD,CAACA,gBAAgB,EAAEN,SAAS,EAAEC,OAAO,CACvC,CAAC;AAED,EAAA,OAAOE,UAAU;AACnB;;;;"}