{"version":3,"file":"useTags.mjs","names":["useQuery","ConfigService","UdpTag","UdpTagAssociation","apiMutate","TAG_ASSOCIATION_ENDPOINT","BASE_SEARCH_PAYLOAD","pageNumber","pageSize","filterElements","filterGroups","orderElements","groupingType","groupProperty","groupOperationList","eagerLoad","logicalSearchOperator","EMPTY_MAP","ReadonlyMap","Map","fetchTagAssociations","entityBusinessKeyPrefix","Promise","res","productV1ApiUrl","method","data","getAll","searchField","searchOperator","searchValue","pageList","buildTagMap","associations","map","a","id","entityBusinessKey","split","tag","udpTagAssociationUdpTag","existing","get","push","set","UseTagsResult","tagMap","isLoading","error","Error","useTags","options","$","_c","t0","t1","t2","enabled","t3","queryKey","queryFn","select","query","t4","t5"],"sources":["../../../src/udp/tags/useTags.ts"],"sourcesContent":["import { useQuery } from '@tanstack/react-query';\nimport { ConfigService } from '@univerus/udp-react-stencil-component-library';\nimport type {\n  UdpTag,\n  UdpTagAssociation,\n} from '@univerus/udp-stencil-component-library';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\n\nconst TAG_ASSOCIATION_ENDPOINT = 'udpTagAssociation/search';\n\nconst BASE_SEARCH_PAYLOAD = {\n  pageNumber: 1,\n  pageSize: 200,\n  filterElements: [],\n  filterGroups: [],\n  orderElements: [],\n  groupingType: '',\n  groupProperty: [],\n  groupOperationList: [],\n  eagerLoad: true,\n  logicalSearchOperator: 1,\n};\n\nconst EMPTY_MAP: ReadonlyMap<string, UdpTag[]> = new Map();\n\nconst fetchTagAssociations = async (\n  entityBusinessKeyPrefix: string,\n): Promise<UdpTagAssociation[]> => {\n  const res = (await apiMutate(\n    ConfigService.productV1ApiUrl,\n    TAG_ASSOCIATION_ENDPOINT,\n    { method: 'post' },\n    {\n      data: {\n        ...BASE_SEARCH_PAYLOAD,\n        getAll: true,\n        filterElements: [\n          {\n            searchField: 'entityBusinessKey',\n            searchOperator: 'STARTSWITH',\n            searchValue: entityBusinessKeyPrefix,\n          },\n        ],\n      },\n    },\n  )) as { data?: { pageList?: UdpTagAssociation[] } } | undefined;\n  return res?.data?.pageList ?? [];\n};\n\nconst buildTagMap = (\n  associations: UdpTagAssociation[],\n): Map<string, UdpTag[]> => {\n  const map = new Map<string, UdpTag[]>();\n  for (const a of associations) {\n    const id = a.entityBusinessKey?.split('|')[1];\n    const tag = a.udpTagAssociationUdpTag;\n    if (!id || !tag) continue;\n    const existing = map.get(id);\n    if (existing) {\n      existing.push(tag);\n    } else {\n      map.set(id, [tag]);\n    }\n  }\n  return map;\n};\n\nexport interface UseTagsResult {\n  tagMap: ReadonlyMap<string, UdpTag[]>;\n  isLoading: boolean;\n  error: Error | null;\n}\n\n/**\n * Fetch and cache tag associations for every record of a single entity type.\n *\n * Pass a type-only prefix ending in `|` — e.g.\n * `Univerus.Unity.Starter.Project.Models.ChargeCodeTask|`.\n *\n * Returns a `Map<entityId, UdpTag[]>` keyed by the GUID portion of the\n * business key. The query is shared across the app via TanStack Query, so\n * multiple components calling this hook with the same prefix dedupe to a\n * single request and stay in sync on invalidation.\n */\nexport const useTags = (\n  entityBusinessKeyPrefix: string,\n  options?: { enabled?: boolean },\n): UseTagsResult => {\n  const query = useQuery({\n    queryKey: [TAG_ASSOCIATION_ENDPOINT, entityBusinessKeyPrefix],\n    queryFn: () => fetchTagAssociations(entityBusinessKeyPrefix),\n    enabled: options?.enabled !== false && !!entityBusinessKeyPrefix,\n    select: buildTagMap,\n  });\n\n  return {\n    tagMap: query.data ?? EMPTY_MAP,\n    isLoading: query.isLoading,\n    error: query.error,\n  };\n};\n"],"mappings":";;;;;AAQA,MAAMK,2BAA2B;AAEjC,MAAMC,sBAAsB;CAC1BC,YAAY;CACZC,UAAU;CACVC,gBAAgB,EAAE;CAClBC,cAAc,EAAE;CAChBC,eAAe,EAAE;CACjBC,cAAc;CACdC,eAAe,EAAE;CACjBC,oBAAoB,EAAE;CACtBC,WAAW;CACXC,uBAAuB;CACxB;AAED,MAAMC,4BAA2C,IAAIE,KAAK;AAE1D,MAAMC,uBAAuB,OAC3BC,4BACiC;AAmBjC,SAlBa,MAAMjB,UACjBH,cAAcuB,iBACdnB,0BACA,EAAEoB,QAAQ,QAAQ,EAClB,EACEC,MAAM;EACJ,GAAGpB;EACHqB,QAAQ;EACRlB,gBAAgB,CACd;GACEmB,aAAa;GACbC,gBAAgB;GAChBC,aAAaT;GACd,CAAA;EAEL,EAEJ,CAAC,GACWK,MAAMK,YAAY,EAAE;;AAGlC,MAAMC,eACJC,iBAC0B;CAC1B,MAAMC,sBAAM,IAAIf,KAAuB;AACvC,MAAK,MAAMgB,KAAKF,cAAc;EAC5B,MAAMG,KAAKD,EAAEE,mBAAmBC,MAAM,IAAI,CAAC;EAC3C,MAAMC,MAAMJ,EAAEK;AACd,MAAI,CAACJ,MAAM,CAACG,IAAK;EACjB,MAAME,WAAWP,IAAIQ,IAAIN,GAAG;AAC5B,MAAIK,SACFA,UAASE,KAAKJ,IAAI;MAElBL,KAAIU,IAAIR,IAAI,CAACG,IAAI,CAAC;;AAGtB,QAAOL;;;;;;;;;;;;;AAoBT,MAAagB,WAAU7B,yBAAA8B,YAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAAA,IAAAC;CAAA,IAAAC;AAAA,KAAAH,EAAA,OAAA/B,yBAAA;AAKTiC,OAAA,CAACjD,0BAA0BgB,wBAAwB;AACpDkC,aAAMnC,qBAAqBC,wBAAwB;AAAA+B,IAAA,KAAA/B;AAAA+B,IAAA,KAAAE;AAAAF,IAAA,KAAAG;QAAA;AAAAD,OAAAF,EAAA;AAAAG,OAAAH,EAAA;;CACnD,MAAAI,KAAAL,SAAOM,YAAc,SAArB,CAA+B,CAACpC;CAAuB,IAAAqC;AAAA,KAAAN,EAAA,OAAAE,MAAAF,EAAA,OAAAG,MAAAH,EAAA,OAAAI,IAAA;AAH3CE,OAAA;GAAAC,UACXL;GAAmDM,SACpDL;GAAmDE,SACnDD;GAAuDK,QACxD7B;GACT;AAAAoB,IAAA,KAAAE;AAAAF,IAAA,KAAAG;AAAAH,IAAA,KAAAI;AAAAJ,IAAA,KAAAM;OAAAA,MAAAN,EAAA;CALD,MAAAU,QAAc9D,SAAS0D,GAKrB;CAGQ,MAAAK,KAAAD,MAAKpC,QAALT;CAAuB,IAAA+C;AAAA,KAAAZ,EAAA,OAAAU,MAAAd,SAAAI,EAAA,OAAAU,MAAAf,aAAAK,EAAA,OAAAW,IAAA;AAD1BC,OAAA;GAAAlB,QACGiB;GAAuBhB,WACpBe,MAAKf;GAAUC,OACnBc,MAAKd;GACb;AAAAI,IAAA,KAAAU,MAAAd;AAAAI,IAAA,KAAAU,MAAAf;AAAAK,IAAA,KAAAW;AAAAX,IAAA,MAAAY;OAAAA,MAAAZ,EAAA;AAAA,QAJMY"}