{"version":3,"sources":["../../src/utils/useHandlersAndProps.ts","../../src/utils/getConnectedEventsAndProps.ts","../../src/utils/handleHas.ts"],"names":["useConst","props","useLayoutEffect","useEffect","CHANGED"],"mappings":"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","file":"chunk-QWMSBSOL.cjs","sourcesContent":["import { useEffect, useLayoutEffect } from 'react';\nimport type { UnGet } from '../types';\nimport useConst from 'react-helpful-utils/useConst';\nimport { CHANGED } from './constants';\n\n/** @internal */\nconst useHandlersAndProps = <\n  Props extends Record<string, any>,\n  Instance extends google.maps.MVCObject & {\n    setOptions(options: Record<string, any>): void;\n  },\n>(\n  props: Props,\n  connectedPairs: Map<string, UnGet<keyof Instance>>,\n  isKeyOmitted: (key: keyof Props) => boolean\n) =>\n  useConst(() => {\n    const isTriggeredBySetStateSet = new Set<string>();\n\n    const handlersList: string[] = [];\n\n    const propsList: string[] = [];\n\n    let isUpdated: boolean;\n\n    let instance: Instance;\n\n    for (const key in props) {\n      if (!isKeyOmitted(key)) {\n        (key.startsWith('on') ? handlersList : propsList).push(key);\n      }\n    }\n\n    return (props: Props) => {\n      for (let i = propsList.length; i--; ) {\n        const key = propsList[i];\n\n        const value: any = props[key];\n\n        useLayoutEffect(() => {\n          if (isUpdated) {\n            isTriggeredBySetStateSet.add(key);\n\n            instance.setOptions({ [key]: value });\n          }\n        }, [value]);\n      }\n\n      if (propsList.length) {\n        useLayoutEffect(() => {\n          isUpdated = true;\n\n          return () => {\n            isUpdated = false;\n          };\n        }, []);\n      }\n\n      for (let i = handlersList.length; i--; ) {\n        const key = handlersList[i];\n\n        const value = props[key] as ((...args: any[]) => void) | undefined;\n\n        useEffect(() => {\n          if (value) {\n            const eventName = (\n              key.endsWith('Changed')\n                ? key.slice(2, -7) + CHANGED\n                : key.slice(2)\n            ).toLowerCase();\n\n            let fn = value;\n\n            if (connectedPairs.has(eventName)) {\n              const dependBy = connectedPairs.get(eventName)!;\n\n              const boundFn = fn.bind(instance);\n\n              if (dependBy in props) {\n                isTriggeredBySetStateSet.delete(dependBy);\n\n                fn = () => {\n                  if (!isTriggeredBySetStateSet.delete(dependBy)) {\n                    boundFn(instance.get(dependBy));\n                  }\n                };\n              } else if (fn.length) {\n                fn = () => {\n                  boundFn(instance.get(dependBy));\n                };\n              }\n            }\n\n            const listener = instance.addListener(eventName, fn);\n\n            return () => listener.remove();\n          }\n        }, [value]);\n      }\n\n      return (_instance: Instance) => {\n        instance = _instance;\n      };\n    };\n  })(props);\n\n/** @internal */\nexport default useHandlersAndProps;\n","import type { UnGet } from '../types';\nimport { CHANGED } from './constants';\n\n/** @internal */\nconst getConnectedEventsAndProps = <Instance>(\n  arr: Array<UnGet<keyof Instance>> | undefined\n) => {\n  const connectedEventsAndProps = new Map<string, UnGet<keyof Instance>>();\n\n  if (arr) {\n    for (let i = 0; i < arr.length; i++) {\n      const item = arr[i];\n\n      connectedEventsAndProps.set(\n        (item as string).toLowerCase() + CHANGED,\n        item\n      );\n    }\n  }\n\n  return connectedEventsAndProps;\n};\n\n/** @internal */\nexport default getConnectedEventsAndProps;\n","const handleHas = <O extends Record<string, any>>(keys: Array<keyof O>) => {\n  const set = new Set(keys);\n\n  return set.has.bind(set);\n};\n\nexport default handleHas;\n"]}