{"version":3,"sources":["../../src/directory-sync.client.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n  DirectorySyncError,\n  DirectorySyncLoading,\n  DirectorySync as DirectorySyncPresentational,\n} from \"./lib/directory-sync.js\";\nimport type {\n  DirectorySyncErrorProps,\n  DirectorySyncLoadingProps,\n} from \"./lib/directory-sync.js\";\nimport { ApiProvider, AuthToken, useApiReady } from \"./api/api-provider.js\";\nimport { useWorkOsApiUrl } from \"./lib/widgets-context.js\";\nimport { ErrorBoundary } from \"./lib/error-boundary.js\";\nimport type { WidgetRootDomProps } from \"./lib/utils.js\";\nimport { DirectoryState, useListDirectories } from \"./api/endpoint.js\";\nimport { usePermissions } from \"./lib/use-permissions.js\";\ninterface DirectorySyncProps extends WidgetRootDomProps {\n  authToken: AuthToken;\n}\n\nconst DirectorySync: React.FC<DirectorySyncProps> = ({\n  authToken,\n  ...domProps\n}) => {\n  const baseUrl = useWorkOsApiUrl();\n\n  return (\n    <ErrorBoundary\n      fallbackRender={({ error }) => (\n        <DirectorySyncError {...domProps} error={error} />\n      )}\n    >\n      <ApiProvider\n        widgetType=\"directory-sync\"\n        authToken={authToken}\n        baseUrl={baseUrl}\n      >\n        <DirectorySyncImpl {...domProps} />\n      </ApiProvider>\n    </ErrorBoundary>\n  );\n};\n\nconst DirectorySyncImpl = (props: WidgetRootDomProps) => {\n  const isApiReady = useApiReady();\n  const { data: directories, isLoading, isError, error } = useListDirectories();\n  const permissionsQuery = usePermissions(\"widgets:dsync:manage\");\n\n  if (!isApiReady || isLoading || permissionsQuery.isLoading) {\n    return <DirectorySyncLoading {...props} />;\n  }\n\n  if (permissionsQuery.isError || isError) {\n    return (\n      <DirectorySyncError error={permissionsQuery.error || error} {...props} />\n    );\n  }\n\n  if (!directories?.data?.length) {\n    return (\n      <DirectorySyncPresentational\n        {...props}\n        state={DirectoryState.unlinked}\n        link={directories?.link}\n      />\n    );\n  }\n\n  return (\n    <ErrorBoundary\n      fallbackRender={({ error }) => (\n        <DirectorySyncError error={error} {...props} />\n      )}\n    >\n      {directories.data.map((directory) => {\n        const { id, state, type, metadata, lastSyncRunAt } = directory;\n        const commonProps = {\n          ...props,\n          type,\n          metadata,\n          lastSyncAt: lastSyncRunAt ?? null,\n          link: directories.link,\n        };\n\n        switch (state) {\n          case DirectoryState.invalid_credentials:\n            return (\n              <DirectorySyncPresentational\n                key={id}\n                {...commonProps}\n                state={state}\n                errorMessage=\"Your directory credentials are invalid or have expired. Please re-authenticate to resume syncing.\"\n              />\n            );\n          case DirectoryState.linked:\n            return (\n              <DirectorySyncPresentational\n                key={id}\n                {...commonProps}\n                state={state}\n              />\n            );\n          case DirectoryState.validating:\n            return (\n              <DirectorySyncPresentational\n                key={id}\n                {...commonProps}\n                state={state}\n              />\n            );\n          case DirectoryState.deleting:\n            return (\n              <DirectorySyncPresentational\n                key={id}\n                {...commonProps}\n                state={state}\n              />\n            );\n          case DirectoryState.unlinked:\n            return (\n              <DirectorySyncPresentational\n                key={id}\n                {...commonProps}\n                state={state}\n              />\n            );\n          case DirectoryState.requires_type:\n            return (\n              <DirectorySyncPresentational\n                key={id}\n                {...commonProps}\n                state={state}\n                errorMessage=\"Your directory requires additional configuration. Please complete setup to begin syncing.\"\n              />\n            );\n        }\n      })}\n    </ErrorBoundary>\n  );\n};\n\nexport type {\n  DirectorySyncProps,\n  DirectorySyncLoadingProps,\n  DirectorySyncErrorProps,\n};\nexport { DirectorySync, DirectorySyncLoading, DirectorySyncError };\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BQ;AA5BR,4BAIO;AAKP,0BAAoD;AACpD,6BAAgC;AAChC,4BAA8B;AAE9B,sBAAmD;AACnD,6BAA+B;AAK/B,MAAM,gBAA8C,CAAC;AAAA,EACnD;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,cAAU,wCAAgB;AAEhC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgB,CAAC,EAAE,MAAM,MACvB,4CAAC,4CAAoB,GAAG,UAAU,OAAc;AAAA,MAGlD;AAAA,QAAC;AAAA;AAAA,UACC,YAAW;AAAA,UACX;AAAA,UACA;AAAA,UAEA,sDAAC,qBAAmB,GAAG,UAAU;AAAA;AAAA,MACnC;AAAA;AAAA,EACF;AAEJ;AAEA,MAAM,oBAAoB,CAAC,UAA8B;AACvD,QAAM,iBAAa,iCAAY;AAC/B,QAAM,EAAE,MAAM,aAAa,WAAW,SAAS,MAAM,QAAI,oCAAmB;AAC5E,QAAM,uBAAmB,uCAAe,sBAAsB;AAE9D,MAAI,CAAC,cAAc,aAAa,iBAAiB,WAAW;AAC1D,WAAO,4CAAC,8CAAsB,GAAG,OAAO;AAAA,EAC1C;AAEA,MAAI,iBAAiB,WAAW,SAAS;AACvC,WACE,4CAAC,4CAAmB,OAAO,iBAAiB,SAAS,OAAQ,GAAG,OAAO;AAAA,EAE3E;AAEA,MAAI,CAAC,aAAa,MAAM,QAAQ;AAC9B,WACE;AAAA,MAAC,sBAAAA;AAAA,MAAA;AAAA,QACE,GAAG;AAAA,QACJ,OAAO,+BAAe;AAAA,QACtB,MAAM,aAAa;AAAA;AAAA,IACrB;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgB,CAAC,EAAE,OAAAC,OAAM,MACvB,4CAAC,4CAAmB,OAAOA,QAAQ,GAAG,OAAO;AAAA,MAG9C,sBAAY,KAAK,IAAI,CAAC,cAAc;AACnC,cAAM,EAAE,IAAI,OAAO,MAAM,UAAU,cAAc,IAAI;AACrD,cAAM,cAAc;AAAA,UAClB,GAAG;AAAA,UACH;AAAA,UACA;AAAA,UACA,YAAY,iBAAiB;AAAA,UAC7B,MAAM,YAAY;AAAA,QACpB;AAEA,gBAAQ,OAAO;AAAA,UACb,KAAK,+BAAe;AAClB,mBACE;AAAA,cAAC,sBAAAD;AAAA,cAAA;AAAA,gBAEE,GAAG;AAAA,gBACJ;AAAA,gBACA,cAAa;AAAA;AAAA,cAHR;AAAA,YAIP;AAAA,UAEJ,KAAK,+BAAe;AAClB,mBACE;AAAA,cAAC,sBAAAA;AAAA,cAAA;AAAA,gBAEE,GAAG;AAAA,gBACJ;AAAA;AAAA,cAFK;AAAA,YAGP;AAAA,UAEJ,KAAK,+BAAe;AAClB,mBACE;AAAA,cAAC,sBAAAA;AAAA,cAAA;AAAA,gBAEE,GAAG;AAAA,gBACJ;AAAA;AAAA,cAFK;AAAA,YAGP;AAAA,UAEJ,KAAK,+BAAe;AAClB,mBACE;AAAA,cAAC,sBAAAA;AAAA,cAAA;AAAA,gBAEE,GAAG;AAAA,gBACJ;AAAA;AAAA,cAFK;AAAA,YAGP;AAAA,UAEJ,KAAK,+BAAe;AAClB,mBACE;AAAA,cAAC,sBAAAA;AAAA,cAAA;AAAA,gBAEE,GAAG;AAAA,gBACJ;AAAA;AAAA,cAFK;AAAA,YAGP;AAAA,UAEJ,KAAK,+BAAe;AAClB,mBACE;AAAA,cAAC,sBAAAA;AAAA,cAAA;AAAA,gBAEE,GAAG;AAAA,gBACJ;AAAA,gBACA,cAAa;AAAA;AAAA,cAHR;AAAA,YAIP;AAAA,QAEN;AAAA,MACF,CAAC;AAAA;AAAA,EACH;AAEJ;","names":["DirectorySyncPresentational","error"]}