{"version":3,"file":"index.mjs","sources":["../../../../../packages/hooks/use-ordered-children/index.ts"],"sourcesContent":["import { shallowRef } from 'vue'\r\nimport { flattedChildren } from '@sgui-plus/utils/vnode'\r\nimport { isVNode } from '@sgui-plus/utils/util'\r\n\r\nimport type { ComponentInternalInstance, VNode } from 'vue'\r\n\r\nconst getOrderedChildren = <T>(\r\n  vm: ComponentInternalInstance,\r\n  childComponentName: string,\r\n  children: Record<number, T>\r\n): T[] => {\r\n  const nodes = flattedChildren(vm.subTree).filter(\r\n    (n): n is VNode =>\r\n      isVNode(n) &&\r\n      (n.type as any)?.name === childComponentName &&\r\n      !!n.component\r\n  )\r\n  const uids = nodes.map((n) => n.component!.uid)\r\n  return uids.map((uid) => children[uid]).filter((p) => !!p)\r\n}\r\n\r\nexport const useOrderedChildren = <T extends { uid: number }>(\r\n  vm: ComponentInternalInstance,\r\n  childComponentName: string\r\n) => {\r\n  const children: Record<number, T> = {}\r\n  const orderedChildren = shallowRef<T[]>([])\r\n\r\n  const addChild = (child: T) => {\r\n    children[child.uid] = child\r\n    orderedChildren.value = getOrderedChildren(vm, childComponentName, children)\r\n  }\r\n  const removeChild = (uid: number) => {\r\n    delete children[uid]\r\n    orderedChildren.value = orderedChildren.value.filter(\r\n      (children) => children.uid !== uid\r\n    )\r\n  }\r\n\r\n  return {\r\n    children: orderedChildren,\r\n    addChild,\r\n    removeChild,\r\n  }\r\n}\r\n"],"names":[],"mappings":";;;;AAGA,MAAM,kBAAkB,GAAG,CAAC,EAAE,EAAE,kBAAkB,EAAE,QAAQ,KAAK;AACjE,EAAE,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;AAC1D,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,MAAM,kBAAkB,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5G,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACjD,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC,CAAC;AACU,MAAC,kBAAkB,GAAG,CAAC,EAAE,EAAE,kBAAkB,KAAK;AAC9D,EAAE,MAAM,QAAQ,GAAG,EAAE,CAAC;AACtB,EAAE,MAAM,eAAe,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;AACzC,EAAE,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK;AAC9B,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAChC,IAAI,eAAe,CAAC,KAAK,GAAG,kBAAkB,CAAC,EAAE,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC;AACjF,GAAG,CAAC;AACJ,EAAE,MAAM,WAAW,GAAG,CAAC,GAAG,KAAK;AAC/B,IAAI,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;AACzB,IAAI,eAAe,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AAC/F,GAAG,CAAC;AACJ,EAAE,OAAO;AACT,IAAI,QAAQ,EAAE,eAAe;AAC7B,IAAI,QAAQ;AACZ,IAAI,WAAW;AACf,GAAG,CAAC;AACJ;;;;"}