{"version":3,"file":"utils-DPq73bs8.mjs","sources":["../src/directives/utils.ts"],"sourcesContent":["import type {ComponentInternalInstance, DirectiveBinding, VNode} from 'vue'\n\ninterface _ComponentInternalInstance extends ComponentInternalInstance {\n  provides?: Record<string, unknown>\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  setupState?: any\n}\n\ninterface _VNode extends VNode {\n  ctx?: _ComponentInternalInstance | null\n  ssContent?: VNode | null\n}\n\n// taken from vuetify https://github.com/vuetifyjs/vuetify/blob/master/packages/vuetify/src/composables/directiveComponent.ts\n\nexport function findProvides(binding: DirectiveBinding, vnode: _VNode): Record<string, unknown> {\n  const provides =\n    (vnode.ctx === binding.instance!.$\n      ? findComponentParent(vnode, binding.instance!.$)?.provides\n      : vnode.ctx?.provides) ?? binding.instance!.$.provides\n\n  return provides\n}\n\nexport function findComponentParent(\n  vnode: VNode,\n  root: ComponentInternalInstance\n): _ComponentInternalInstance | null {\n  // Walk the tree from root until we find the child vnode\n  const stack = new Set<VNode>()\n  const walk = (children: _VNode[]): boolean => {\n    for (const child of children) {\n      if (!child) continue\n\n      if (child === vnode || (child.el && vnode.el && child.el === vnode.el)) {\n        return true\n      }\n\n      stack.add(child)\n      let result\n      if (child.suspense) {\n        result = walk([child.ssContent!])\n      } else if (Array.isArray(child.children)) {\n        result = walk(child.children as VNode[])\n      } else if (child.component?.vnode) {\n        result = walk([child.component?.subTree])\n      }\n      if (result) {\n        return result\n      }\n      stack.delete(child)\n    }\n\n    return false\n  }\n  if (!walk([root.subTree])) {\n    // eslint-disable-next-line no-console\n    console.error('Could not find original vnode,  will not inherit provides')\n    return root\n  }\n\n  // Return the first component parent\n  const result = Array.from(stack).reverse()\n  for (const child of result) {\n    if (child.component) {\n      return child.component\n    }\n  }\n  return root\n}\n"],"names":["result"],"mappings":"AAegB,SAAA,aAAa,SAA2B,OAAwC;AAAhF;AACd,QAAM,YACH,MAAM,QAAQ,QAAQ,SAAU,KAC7B,yBAAoB,OAAO,QAAQ,SAAU,CAAC,MAA9C,mBAAiD,YACjD,WAAM,QAAN,mBAAW,aAAa,QAAQ,SAAU,EAAE;AAE3C,SAAA;AACT;AAEgB,SAAA,oBACd,OACA,MACmC;AAE7B,QAAA,4BAAY,IAAW;AACvB,QAAA,OAAO,CAAC,aAAgC;AAfhC;AAgBZ,eAAW,SAAS,UAAU;AAC5B,UAAI,CAAC,MAAO;AAER,UAAA,UAAU,SAAU,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,MAAM,IAAK;AAC/D,eAAA;AAAA,MAAA;AAGT,YAAM,IAAI,KAAK;AACXA,UAAAA;AACJ,UAAI,MAAM,UAAU;AAClBA,kBAAS,KAAK,CAAC,MAAM,SAAU,CAAC;AAAA,MACvB,WAAA,MAAM,QAAQ,MAAM,QAAQ,GAAG;AACxCA,kBAAS,KAAK,MAAM,QAAmB;AAAA,MAAA,YAC9B,WAAM,cAAN,mBAAiB,OAAO;AACjCA,kBAAS,KAAK,EAAC,WAAM,cAAN,mBAAiB,OAAO,CAAC;AAAA,MAAA;AAE1C,UAAIA,SAAQ;AACHA,eAAAA;AAAAA,MAAA;AAET,YAAM,OAAO,KAAK;AAAA,IAAA;AAGb,WAAA;AAAA,EACT;AACA,MAAI,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,GAAG;AAEzB,YAAQ,MAAM,2DAA2D;AAClE,WAAA;AAAA,EAAA;AAIT,QAAM,SAAS,MAAM,KAAK,KAAK,EAAE,QAAQ;AACzC,aAAW,SAAS,QAAQ;AAC1B,QAAI,MAAM,WAAW;AACnB,aAAO,MAAM;AAAA,IAAA;AAAA,EACf;AAEK,SAAA;AACT;"}