{"version":3,"file":"index.mjs","sources":["../../../../src/plugins/popoverController/index.ts"],"sourcesContent":["import {markRaw, type Plugin, ref, toRef, watch} from 'vue'\nimport {popoverPluginKey} from '../../utils/keys'\nimport type {\n  ControllerKey,\n  PopoverOrchestratorMapValue,\n  PopoverOrchestratorShowParam,\n  PrivateOrchestratedPopover,\n  PrivateOrchestratedTooltip,\n  TooltipOrchestratorMapValue,\n  TooltipOrchestratorShowParam,\n} from '../../types/ComponentOrchestratorTypes'\n\nexport const popoverPlugin: Plugin = {\n  install(app) {\n    const popovers = ref(new Map<ControllerKey, PopoverOrchestratorMapValue>())\n    /**\n     * @returns {ControllerKey} If `id` is passed to props, it will use that id, otherwise,\n     * a symbol will be created that corresponds to its unique id.\n     */\n    const popover = (obj: PopoverOrchestratorShowParam): ControllerKey => {\n      const resolvedProps = toRef(obj.props)\n      const reference = toRef(obj.target)\n\n      const _self = resolvedProps.value?.id || Symbol('Popover controller')\n\n      watch(\n        reference,\n        (newValue) => {\n          if (!newValue) {\n            popovers.value.delete(_self)\n          } else {\n            popovers.value.set(_self, {\n              component: !obj.component ? undefined : markRaw(obj.component),\n              props: {...resolvedProps.value, _target: newValue, _modelValue: false},\n            })\n          }\n        },\n        {immediate: true}\n      )\n\n      watch(resolvedProps, (newValue) => {\n        const previous = popovers.value.get(_self)\n        if (!previous) return\n        popovers.value.set(_self, {\n          component: !obj.component ? undefined : markRaw(obj.component),\n          props: {...previous.props, ...newValue},\n        })\n      })\n\n      return _self\n    }\n    /**\n     * @param {ControllerKey} self You can get the symbol param from the return value from the show method, or use props.id\n     */\n    const setPopover = (self: ControllerKey, val: Partial<PrivateOrchestratedPopover>) => {\n      const popover = popovers.value.get(self)\n      if (!popover?.props) return\n      popover.props = {\n        ...popover.props,\n        ...val,\n      }\n    }\n    /**\n     * @param {ControllerKey} self You can get the symbol param from the return value from the show method, or use props.id\n     */\n    const removePopover = (self: ControllerKey) => popovers.value.delete(self)\n\n    const tooltips = ref(new Map<ControllerKey, TooltipOrchestratorMapValue>())\n    /**\n     * @returns {ControllerKey} If `id` is passed to props, it will use that id, otherwise,\n     * a symbol will be created that corresponds to its unique id.\n     */\n    const tooltip = (obj: TooltipOrchestratorShowParam): ControllerKey => {\n      const resolvedProps = toRef(obj.props)\n      const reference = toRef(obj.target)\n\n      const _self = resolvedProps.value?.id || Symbol('Tooltip controller')\n\n      watch(\n        reference,\n        (newValue) => {\n          if (!newValue) {\n            tooltips.value.delete(_self)\n          } else {\n            tooltips.value.set(_self, {\n              component: !obj.component ? undefined : markRaw(obj.component),\n              props: {...resolvedProps.value, _modelValue: false, _target: newValue},\n            })\n          }\n        },\n        {\n          immediate: true,\n        }\n      )\n\n      watch(resolvedProps, (newValue) => {\n        const previous = tooltips.value.get(_self)\n        if (!previous) return\n        tooltips.value.set(_self, {\n          component: !obj.component ? undefined : markRaw(obj.component),\n          props: {...previous.props, ...newValue},\n        })\n      })\n\n      return _self\n    }\n    /**\n     * @param {ControllerKey} self You can get the symbol param from the return value from the show method, or use props.id\n     */\n    const setTooltip = (self: ControllerKey, val: Partial<PrivateOrchestratedTooltip>) => {\n      const tip = tooltips.value.get(self)\n      if (!tip?.props) return\n      tip.props = {\n        ...tip.props,\n        ...val,\n      }\n    }\n    /**\n     * @param {ControllerKey} self You can get the symbol param from the return value from the show method, or use props.id\n     */\n    const removeTooltip = (self: ControllerKey) => tooltips.value.delete(self)\n\n    app.provide(popoverPluginKey, {\n      popovers,\n      tooltips,\n      tooltip,\n      popover,\n      setPopover,\n      setTooltip,\n      removePopover,\n      removeTooltip,\n    })\n  },\n}\n"],"names":["popover"],"mappings":"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"}