@contember/react-identity 2.1.0-alpha.36 → 2.1.0-alpha.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/development/index.cjs +20 -0
  2. package/dist/development/index.cjs.map +1 -0
  3. package/dist/development/index.js +14 -0
  4. package/dist/development/index.js.map +1 -0
  5. package/dist/development/src/components/HasRole.cjs +32 -0
  6. package/dist/development/src/components/HasRole.cjs.map +1 -0
  7. package/dist/development/src/components/HasRole.js +32 -0
  8. package/dist/development/src/components/HasRole.js.map +1 -0
  9. package/dist/development/src/components/IdentityEnvironmentProvider.cjs +16 -0
  10. package/dist/development/src/components/IdentityEnvironmentProvider.cjs.map +1 -0
  11. package/dist/development/src/components/IdentityEnvironmentProvider.js +16 -0
  12. package/dist/development/src/components/IdentityEnvironmentProvider.js.map +1 -0
  13. package/dist/development/src/environment/IdentityEnvironmentExtension.cjs +13 -0
  14. package/dist/development/src/environment/IdentityEnvironmentExtension.cjs.map +1 -0
  15. package/dist/development/src/environment/IdentityEnvironmentExtension.js +13 -0
  16. package/dist/development/src/environment/IdentityEnvironmentExtension.js.map +1 -0
  17. package/dist/development/src/environment/ProjectEnvironmentExtension.cjs +13 -0
  18. package/dist/development/src/environment/ProjectEnvironmentExtension.cjs.map +1 -0
  19. package/dist/development/src/environment/ProjectEnvironmentExtension.js +13 -0
  20. package/dist/development/src/environment/ProjectEnvironmentExtension.js.map +1 -0
  21. package/dist/development/src/hooks/useProjectUserRoles.cjs +21 -0
  22. package/dist/development/src/hooks/useProjectUserRoles.cjs.map +1 -0
  23. package/dist/development/src/hooks/useProjectUserRoles.js +21 -0
  24. package/dist/development/src/hooks/useProjectUserRoles.js.map +1 -0
  25. package/dist/production/index.cjs +20 -0
  26. package/dist/production/index.cjs.map +1 -0
  27. package/dist/production/index.js +14 -0
  28. package/dist/production/index.js.map +1 -0
  29. package/dist/production/src/components/HasRole.cjs +24 -0
  30. package/dist/production/src/components/HasRole.cjs.map +1 -0
  31. package/dist/production/src/components/HasRole.js +24 -0
  32. package/dist/production/src/components/HasRole.js.map +1 -0
  33. package/dist/production/src/components/IdentityEnvironmentProvider.cjs +12 -0
  34. package/dist/production/src/components/IdentityEnvironmentProvider.cjs.map +1 -0
  35. package/dist/production/src/components/IdentityEnvironmentProvider.js +12 -0
  36. package/dist/production/src/components/IdentityEnvironmentProvider.js.map +1 -0
  37. package/dist/production/src/environment/IdentityEnvironmentExtension.cjs +13 -0
  38. package/dist/production/src/environment/IdentityEnvironmentExtension.cjs.map +1 -0
  39. package/dist/production/src/environment/IdentityEnvironmentExtension.js +13 -0
  40. package/dist/production/src/environment/IdentityEnvironmentExtension.js.map +1 -0
  41. package/dist/production/src/environment/ProjectEnvironmentExtension.cjs +13 -0
  42. package/dist/production/src/environment/ProjectEnvironmentExtension.cjs.map +1 -0
  43. package/dist/production/src/environment/ProjectEnvironmentExtension.js +13 -0
  44. package/dist/production/src/environment/ProjectEnvironmentExtension.js.map +1 -0
  45. package/dist/production/src/hooks/useProjectUserRoles.cjs +21 -0
  46. package/dist/production/src/hooks/useProjectUserRoles.cjs.map +1 -0
  47. package/dist/production/src/hooks/useProjectUserRoles.js +21 -0
  48. package/dist/production/src/hooks/useProjectUserRoles.js.map +1 -0
  49. package/dist/types/components/HasRole.d.ts +11 -0
  50. package/dist/types/components/HasRole.d.ts.map +1 -0
  51. package/dist/types/components/IdentityEnvironmentProvider.d.ts +6 -0
  52. package/dist/types/components/IdentityEnvironmentProvider.d.ts.map +1 -0
  53. package/dist/types/components/index.d.ts +3 -0
  54. package/dist/types/components/index.d.ts.map +1 -0
  55. package/dist/types/environment/IdentityEnvironmentExtension.d.ts +6 -0
  56. package/dist/types/environment/IdentityEnvironmentExtension.d.ts.map +1 -0
  57. package/dist/types/environment/ProjectEnvironmentExtension.d.ts +5 -0
  58. package/dist/types/environment/ProjectEnvironmentExtension.d.ts.map +1 -0
  59. package/dist/types/environment/index.d.ts +3 -0
  60. package/dist/types/environment/index.d.ts.map +1 -0
  61. package/dist/types/hooks/index.d.ts +2 -0
  62. package/dist/types/hooks/index.d.ts.map +1 -0
  63. package/dist/types/hooks/useProjectUserRoles.d.ts +3 -0
  64. package/dist/types/hooks/useProjectUserRoles.d.ts.map +1 -0
  65. package/dist/types/index.d.ts +5 -0
  66. package/dist/types/index.d.ts.map +1 -0
  67. package/dist/types/tsconfig.tsbuildinfo +1 -0
  68. package/package.json +8 -8
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const reactClientTenant = require("@contember/react-client-tenant");
4
+ const HasRole = require("./src/components/HasRole.cjs");
5
+ const IdentityEnvironmentProvider = require("./src/components/IdentityEnvironmentProvider.cjs");
6
+ const IdentityEnvironmentExtension = require("./src/environment/IdentityEnvironmentExtension.cjs");
7
+ const ProjectEnvironmentExtension = require("./src/environment/ProjectEnvironmentExtension.cjs");
8
+ const useProjectUserRoles = require("./src/hooks/useProjectUserRoles.cjs");
9
+ exports.HasRole = HasRole.HasRole;
10
+ exports.IdentityEnvironmentProvider = IdentityEnvironmentProvider.IdentityEnvironmentProvider;
11
+ exports.identityEnvironmentExtension = IdentityEnvironmentExtension.identityEnvironmentExtension;
12
+ exports.projectEnvironmentExtension = ProjectEnvironmentExtension.projectEnvironmentExtension;
13
+ exports.useProjectUserRoles = useProjectUserRoles.useProjectUserRoles;
14
+ Object.keys(reactClientTenant).forEach((k) => {
15
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
16
+ enumerable: true,
17
+ get: () => reactClientTenant[k]
18
+ });
19
+ });
20
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,14 @@
1
+ export * from "@contember/react-client-tenant";
2
+ import { HasRole } from "./src/components/HasRole.js";
3
+ import { IdentityEnvironmentProvider } from "./src/components/IdentityEnvironmentProvider.js";
4
+ import { identityEnvironmentExtension } from "./src/environment/IdentityEnvironmentExtension.js";
5
+ import { projectEnvironmentExtension } from "./src/environment/ProjectEnvironmentExtension.js";
6
+ import { useProjectUserRoles } from "./src/hooks/useProjectUserRoles.js";
7
+ export {
8
+ HasRole,
9
+ IdentityEnvironmentProvider,
10
+ identityEnvironmentExtension,
11
+ projectEnvironmentExtension,
12
+ useProjectUserRoles
13
+ };
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxDevRuntime = require("react/jsx-dev-runtime");
4
+ const reactBinding = require("@contember/react-binding");
5
+ const useProjectUserRoles = require("../hooks/useProjectUserRoles.cjs");
6
+ const IdentityEnvironmentExtension = require("../environment/IdentityEnvironmentExtension.cjs");
7
+ const ProjectEnvironmentExtension = require("../environment/ProjectEnvironmentExtension.cjs");
8
+ const HasRole = reactBinding.Component(({ children, role }) => {
9
+ const projectRoles = useProjectUserRoles.useProjectUserRoles();
10
+ return evaluateCondition(role, projectRoles) ? /* @__PURE__ */ jsxDevRuntime.jsxDEV(jsxDevRuntime.Fragment, { children }, void 0, false, {
11
+ fileName: "/home/runner/work/contember/contember/packages/react-identity/src/components/HasRole.tsx",
12
+ lineNumber: 19,
13
+ columnNumber: 49
14
+ }, void 0) : null;
15
+ }, ({ children, role }, env) => {
16
+ const identity = env.getExtension(IdentityEnvironmentExtension.identityEnvironmentExtension).identity;
17
+ const project = env.getExtension(ProjectEnvironmentExtension.projectEnvironmentExtension).slug;
18
+ const projectRoles = new Set(identity?.projects.find((it) => it.slug === project)?.roles ?? []);
19
+ return evaluateCondition(role, projectRoles) ? /* @__PURE__ */ jsxDevRuntime.jsxDEV(jsxDevRuntime.Fragment, { children }, void 0, false, {
20
+ fileName: "/home/runner/work/contember/contember/packages/react-identity/src/components/HasRole.tsx",
21
+ lineNumber: 25,
22
+ columnNumber: 49
23
+ }, void 0) : null;
24
+ });
25
+ const evaluateCondition = (condition, roles) => {
26
+ if (typeof condition === "string") {
27
+ return roles.has(condition);
28
+ }
29
+ return condition(roles);
30
+ };
31
+ exports.HasRole = HasRole;
32
+ //# sourceMappingURL=HasRole.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HasRole.cjs","sources":["../../../../../packages/react-identity/src/components/HasRole.tsx"],"sourcesContent":["import { Component } from '@contember/react-binding'\nimport { ReactNode } from 'react'\nimport { useProjectUserRoles } from '../hooks'\nimport { identityEnvironmentExtension, projectEnvironmentExtension } from '../environment'\n\nexport type RoleCondition = string | ((roles: Set<string>) => boolean)\n\nexport interface HasRoleProps {\n\tchildren?: ReactNode\n\trole: RoleCondition\n}\n\n/**\n * @group Logic Components\n */\nexport const HasRole = Component<HasRoleProps>(({ children, role }) => {\n\tconst projectRoles = useProjectUserRoles()\n\n\treturn evaluateCondition(role, projectRoles) ? <>{children}</> : null\n}, ({ children, role }, env) => {\n\tconst identity = env.getExtension(identityEnvironmentExtension).identity\n\tconst project = env.getExtension(projectEnvironmentExtension).slug\n\tconst projectRoles = new Set<string>(identity?.projects.find(it => it.slug === project)?.roles ?? [])\n\n\treturn evaluateCondition(role, projectRoles) ? <>{children}</> : null\n})\n\nconst evaluateCondition = (condition: RoleCondition, roles: Set<string>) => {\n\tif (typeof condition === 'string') {\n\t\treturn roles.has(condition)\n\t}\n\treturn condition(roles)\n}\n"],"names":["Component","useProjectUserRoles","this","identityEnvironmentExtension","projectEnvironmentExtension"],"mappings":";;;;;;;AAeO,MAAM,UAAUA,aAAAA,UAAwB,CAAC,EAAE,UAAU,WAAW;AACtE,QAAM,eAAeC,oBAAAA,oBAAA;AAErB,SAAO,kBAAkB,MAAM,YAAY,mEAAO,SAAA,GAAH,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAC,MAAY,IAAM;AAClE,GAAG,CAAC,EAAE,UAAU,KAAA,GAAQ,QAAQ;AAC/B,QAAM,WAAW,IAAI,aAAaC,6BAAAA,4BAA4B,EAAE;AAChE,QAAM,UAAU,IAAI,aAAaC,4BAAAA,2BAA2B,EAAE;AAC9D,QAAM,eAAe,IAAI,IAAY,UAAU,SAAS,KAAK,CAAA,OAAM,GAAG,SAAS,OAAO,GAAG,SAAS,CAAA,CAAE;AAEpG,SAAO,kBAAkB,MAAM,YAAY,mEAAO,SAAA,GAAH,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAF,MAAY,IAAM;AAClE,CAAC;AAED,MAAM,oBAAoB,CAAC,WAA0B,UAAuB;AAC3E,MAAI,OAAO,cAAc,UAAU;AAClC,WAAO,MAAM,IAAI,SAAS;AAAA,EAC3B;AACA,SAAO,UAAU,KAAK;AACvB;;"}
@@ -0,0 +1,32 @@
1
+ import { jsxDEV, Fragment } from "react/jsx-dev-runtime";
2
+ import { Component } from "@contember/react-binding";
3
+ import { useProjectUserRoles } from "../hooks/useProjectUserRoles.js";
4
+ import { identityEnvironmentExtension } from "../environment/IdentityEnvironmentExtension.js";
5
+ import { projectEnvironmentExtension } from "../environment/ProjectEnvironmentExtension.js";
6
+ const HasRole = Component(({ children, role }) => {
7
+ const projectRoles = useProjectUserRoles();
8
+ return evaluateCondition(role, projectRoles) ? /* @__PURE__ */ jsxDEV(Fragment, { children }, void 0, false, {
9
+ fileName: "/home/runner/work/contember/contember/packages/react-identity/src/components/HasRole.tsx",
10
+ lineNumber: 19,
11
+ columnNumber: 49
12
+ }, void 0) : null;
13
+ }, ({ children, role }, env) => {
14
+ const identity = env.getExtension(identityEnvironmentExtension).identity;
15
+ const project = env.getExtension(projectEnvironmentExtension).slug;
16
+ const projectRoles = new Set(identity?.projects.find((it) => it.slug === project)?.roles ?? []);
17
+ return evaluateCondition(role, projectRoles) ? /* @__PURE__ */ jsxDEV(Fragment, { children }, void 0, false, {
18
+ fileName: "/home/runner/work/contember/contember/packages/react-identity/src/components/HasRole.tsx",
19
+ lineNumber: 25,
20
+ columnNumber: 49
21
+ }, void 0) : null;
22
+ });
23
+ const evaluateCondition = (condition, roles) => {
24
+ if (typeof condition === "string") {
25
+ return roles.has(condition);
26
+ }
27
+ return condition(roles);
28
+ };
29
+ export {
30
+ HasRole
31
+ };
32
+ //# sourceMappingURL=HasRole.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HasRole.js","sources":["../../../../../packages/react-identity/src/components/HasRole.tsx"],"sourcesContent":["import { Component } from '@contember/react-binding'\nimport { ReactNode } from 'react'\nimport { useProjectUserRoles } from '../hooks'\nimport { identityEnvironmentExtension, projectEnvironmentExtension } from '../environment'\n\nexport type RoleCondition = string | ((roles: Set<string>) => boolean)\n\nexport interface HasRoleProps {\n\tchildren?: ReactNode\n\trole: RoleCondition\n}\n\n/**\n * @group Logic Components\n */\nexport const HasRole = Component<HasRoleProps>(({ children, role }) => {\n\tconst projectRoles = useProjectUserRoles()\n\n\treturn evaluateCondition(role, projectRoles) ? <>{children}</> : null\n}, ({ children, role }, env) => {\n\tconst identity = env.getExtension(identityEnvironmentExtension).identity\n\tconst project = env.getExtension(projectEnvironmentExtension).slug\n\tconst projectRoles = new Set<string>(identity?.projects.find(it => it.slug === project)?.roles ?? [])\n\n\treturn evaluateCondition(role, projectRoles) ? <>{children}</> : null\n})\n\nconst evaluateCondition = (condition: RoleCondition, roles: Set<string>) => {\n\tif (typeof condition === 'string') {\n\t\treturn roles.has(condition)\n\t}\n\treturn condition(roles)\n}\n"],"names":["this"],"mappings":";;;;;AAeO,MAAM,UAAU,UAAwB,CAAC,EAAE,UAAU,WAAW;AACtE,QAAM,eAAe,oBAAA;AAErB,SAAO,kBAAkB,MAAM,YAAY,uCAAO,SAAA,GAAH,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAA,MAAY,IAAM;AAClE,GAAG,CAAC,EAAE,UAAU,KAAA,GAAQ,QAAQ;AAC/B,QAAM,WAAW,IAAI,aAAa,4BAA4B,EAAE;AAChE,QAAM,UAAU,IAAI,aAAa,2BAA2B,EAAE;AAC9D,QAAM,eAAe,IAAI,IAAY,UAAU,SAAS,KAAK,CAAA,OAAM,GAAG,SAAS,OAAO,GAAG,SAAS,CAAA,CAAE;AAEpG,SAAO,kBAAkB,MAAM,YAAY,uCAAO,SAAA,GAAH,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAA,MAAY,IAAM;AAClE,CAAC;AAED,MAAM,oBAAoB,CAAC,WAA0B,UAAuB;AAC3E,MAAI,OAAO,cAAc,UAAU;AAClC,WAAO,MAAM,IAAI,SAAS;AAAA,EAC3B;AACA,SAAO,UAAU,KAAK;AACvB;"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxDevRuntime = require("react/jsx-dev-runtime");
4
+ const reactBinding = require("@contember/react-binding");
5
+ const reactClientTenant = require("@contember/react-client-tenant");
6
+ const IdentityEnvironmentExtension = require("../environment/IdentityEnvironmentExtension.cjs");
7
+ const IdentityEnvironmentProvider = ({ children }) => {
8
+ const identity = reactClientTenant.useIdentity();
9
+ return /* @__PURE__ */ jsxDevRuntime.jsxDEV(reactBinding.EnvironmentExtensionProvider, { extension: IdentityEnvironmentExtension.identityEnvironmentExtension, state: identity ?? null, children }, void 0, false, {
10
+ fileName: "/home/runner/work/contember/contember/packages/react-identity/src/components/IdentityEnvironmentProvider.tsx",
11
+ lineNumber: 13,
12
+ columnNumber: 3
13
+ }, void 0);
14
+ };
15
+ exports.IdentityEnvironmentProvider = IdentityEnvironmentProvider;
16
+ //# sourceMappingURL=IdentityEnvironmentProvider.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdentityEnvironmentProvider.cjs","sources":["../../../../../packages/react-identity/src/components/IdentityEnvironmentProvider.tsx"],"sourcesContent":["import { ReactNode } from 'react'\nimport { EnvironmentExtensionProvider } from '@contember/react-binding'\nimport { identityEnvironmentExtension } from '../environment'\nimport { useIdentity } from '@contember/react-client-tenant'\n\nexport interface IdentityEnvironmentProviderProps {\n\tchildren: ReactNode\n}\n\nexport const IdentityEnvironmentProvider: React.FC<IdentityEnvironmentProviderProps> = ({ children }) => {\n\tconst identity = useIdentity()\n\treturn (\n\t\t<EnvironmentExtensionProvider extension={identityEnvironmentExtension} state={identity ?? null}>\n\t\t\t{children}\n\t\t</EnvironmentExtensionProvider>\n\t)\n}\n"],"names":["useIdentity","EnvironmentExtensionProvider","identityEnvironmentExtension","this"],"mappings":";;;;;;AASO,MAAM,8BAA0E,CAAC,EAAE,eAAe;AACxG,QAAM,WAAWA,kBAAAA,YAAA;AACjB,8CACEC,aAAAA,8BAAA,EAA6B,WAAWC,6BAAAA,8BAA8B,OAAO,YAAY,MACxF,YADF,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAC,MAEA;AAEF;;"}
@@ -0,0 +1,16 @@
1
+ import { jsxDEV } from "react/jsx-dev-runtime";
2
+ import { EnvironmentExtensionProvider } from "@contember/react-binding";
3
+ import { useIdentity } from "@contember/react-client-tenant";
4
+ import { identityEnvironmentExtension } from "../environment/IdentityEnvironmentExtension.js";
5
+ const IdentityEnvironmentProvider = ({ children }) => {
6
+ const identity = useIdentity();
7
+ return /* @__PURE__ */ jsxDEV(EnvironmentExtensionProvider, { extension: identityEnvironmentExtension, state: identity ?? null, children }, void 0, false, {
8
+ fileName: "/home/runner/work/contember/contember/packages/react-identity/src/components/IdentityEnvironmentProvider.tsx",
9
+ lineNumber: 13,
10
+ columnNumber: 3
11
+ }, void 0);
12
+ };
13
+ export {
14
+ IdentityEnvironmentProvider
15
+ };
16
+ //# sourceMappingURL=IdentityEnvironmentProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdentityEnvironmentProvider.js","sources":["../../../../../packages/react-identity/src/components/IdentityEnvironmentProvider.tsx"],"sourcesContent":["import { ReactNode } from 'react'\nimport { EnvironmentExtensionProvider } from '@contember/react-binding'\nimport { identityEnvironmentExtension } from '../environment'\nimport { useIdentity } from '@contember/react-client-tenant'\n\nexport interface IdentityEnvironmentProviderProps {\n\tchildren: ReactNode\n}\n\nexport const IdentityEnvironmentProvider: React.FC<IdentityEnvironmentProviderProps> = ({ children }) => {\n\tconst identity = useIdentity()\n\treturn (\n\t\t<EnvironmentExtensionProvider extension={identityEnvironmentExtension} state={identity ?? null}>\n\t\t\t{children}\n\t\t</EnvironmentExtensionProvider>\n\t)\n}\n"],"names":["this"],"mappings":";;;;AASO,MAAM,8BAA0E,CAAC,EAAE,eAAe;AACxG,QAAM,WAAW,YAAA;AACjB,gCACE,8BAAA,EAA6B,WAAW,8BAA8B,OAAO,YAAY,MACxF,YADF,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAA,MAEA;AAEF;"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const reactBinding = require("@contember/react-binding");
4
+ const identityEnvironmentExtension = reactBinding.Environment.createExtension((state) => {
5
+ if (state === void 0) {
6
+ throw new reactBinding.BindingError("Environment does not contain identity state.");
7
+ }
8
+ return {
9
+ identity: state ?? void 0
10
+ };
11
+ });
12
+ exports.identityEnvironmentExtension = identityEnvironmentExtension;
13
+ //# sourceMappingURL=IdentityEnvironmentExtension.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdentityEnvironmentExtension.cjs","sources":["../../../../../packages/react-identity/src/environment/IdentityEnvironmentExtension.ts"],"sourcesContent":["import { BindingError, Environment } from '@contember/react-binding'\nimport { Identity } from '@contember/react-client-tenant'\n\nexport const identityEnvironmentExtension = Environment.createExtension((state: Identity | null | undefined) => {\n\tif (state === undefined) {\n\t\tthrow new BindingError('Environment does not contain identity state.')\n\t}\n\n\treturn {\n\t\tidentity: state ?? undefined,\n\t}\n})\n"],"names":["Environment","BindingError"],"mappings":";;;AAGO,MAAM,+BAA+BA,aAAAA,YAAY,gBAAgB,CAAC,UAAuC;AAC/G,MAAI,UAAU,QAAW;AACxB,UAAM,IAAIC,aAAAA,aAAa,8CAA8C;AAAA,EACtE;AAEA,SAAO;AAAA,IACN,UAAU,SAAS;AAAA,EAAA;AAErB,CAAC;;"}
@@ -0,0 +1,13 @@
1
+ import { Environment, BindingError } from "@contember/react-binding";
2
+ const identityEnvironmentExtension = Environment.createExtension((state) => {
3
+ if (state === void 0) {
4
+ throw new BindingError("Environment does not contain identity state.");
5
+ }
6
+ return {
7
+ identity: state ?? void 0
8
+ };
9
+ });
10
+ export {
11
+ identityEnvironmentExtension
12
+ };
13
+ //# sourceMappingURL=IdentityEnvironmentExtension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdentityEnvironmentExtension.js","sources":["../../../../../packages/react-identity/src/environment/IdentityEnvironmentExtension.ts"],"sourcesContent":["import { BindingError, Environment } from '@contember/react-binding'\nimport { Identity } from '@contember/react-client-tenant'\n\nexport const identityEnvironmentExtension = Environment.createExtension((state: Identity | null | undefined) => {\n\tif (state === undefined) {\n\t\tthrow new BindingError('Environment does not contain identity state.')\n\t}\n\n\treturn {\n\t\tidentity: state ?? undefined,\n\t}\n})\n"],"names":[],"mappings":";AAGO,MAAM,+BAA+B,YAAY,gBAAgB,CAAC,UAAuC;AAC/G,MAAI,UAAU,QAAW;AACxB,UAAM,IAAI,aAAa,8CAA8C;AAAA,EACtE;AAEA,SAAO;AAAA,IACN,UAAU,SAAS;AAAA,EAAA;AAErB,CAAC;"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const reactBinding = require("@contember/react-binding");
4
+ const projectEnvironmentExtension = reactBinding.Environment.createExtension((slug) => {
5
+ if (slug === void 0) {
6
+ throw new reactBinding.BindingError("Environment does not contain project slug state.");
7
+ }
8
+ return {
9
+ slug: slug ?? void 0
10
+ };
11
+ });
12
+ exports.projectEnvironmentExtension = projectEnvironmentExtension;
13
+ //# sourceMappingURL=ProjectEnvironmentExtension.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectEnvironmentExtension.cjs","sources":["../../../../../packages/react-identity/src/environment/ProjectEnvironmentExtension.tsx"],"sourcesContent":["import { BindingError, Environment } from '@contember/react-binding'\n\nexport const projectEnvironmentExtension = Environment.createExtension((slug: string | null | undefined) => {\n\tif (slug === undefined) {\n\t\tthrow new BindingError('Environment does not contain project slug state.')\n\t}\n\treturn {\n\t\tslug: slug ?? undefined,\n\t}\n})\n"],"names":["Environment","BindingError"],"mappings":";;;AAEO,MAAM,8BAA8BA,aAAAA,YAAY,gBAAgB,CAAC,SAAoC;AAC3G,MAAI,SAAS,QAAW;AACvB,UAAM,IAAIC,aAAAA,aAAa,kDAAkD;AAAA,EAC1E;AACA,SAAO;AAAA,IACN,MAAM,QAAQ;AAAA,EAAA;AAEhB,CAAC;;"}
@@ -0,0 +1,13 @@
1
+ import { Environment, BindingError } from "@contember/react-binding";
2
+ const projectEnvironmentExtension = Environment.createExtension((slug) => {
3
+ if (slug === void 0) {
4
+ throw new BindingError("Environment does not contain project slug state.");
5
+ }
6
+ return {
7
+ slug: slug ?? void 0
8
+ };
9
+ });
10
+ export {
11
+ projectEnvironmentExtension
12
+ };
13
+ //# sourceMappingURL=ProjectEnvironmentExtension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectEnvironmentExtension.js","sources":["../../../../../packages/react-identity/src/environment/ProjectEnvironmentExtension.tsx"],"sourcesContent":["import { BindingError, Environment } from '@contember/react-binding'\n\nexport const projectEnvironmentExtension = Environment.createExtension((slug: string | null | undefined) => {\n\tif (slug === undefined) {\n\t\tthrow new BindingError('Environment does not contain project slug state.')\n\t}\n\treturn {\n\t\tslug: slug ?? undefined,\n\t}\n})\n"],"names":[],"mappings":";AAEO,MAAM,8BAA8B,YAAY,gBAAgB,CAAC,SAAoC;AAC3G,MAAI,SAAS,QAAW;AACvB,UAAM,IAAI,aAAa,kDAAkD;AAAA,EAC1E;AACA,SAAO;AAAA,IACN,MAAM,QAAQ;AAAA,EAAA;AAEhB,CAAC;"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const React = require("react");
4
+ const reactClient = require("@contember/react-client");
5
+ const reactClientTenant = require("@contember/react-client-tenant");
6
+ const useProjectUserRoles = () => {
7
+ const identity = reactClientTenant.useIdentity();
8
+ const projectSlug = reactClient.useProjectSlug();
9
+ return React.useMemo(() => {
10
+ if (!projectSlug) {
11
+ return /* @__PURE__ */ new Set();
12
+ }
13
+ const targetProject = identity?.projects.find((project) => project.slug === projectSlug);
14
+ if (targetProject === void 0) {
15
+ return /* @__PURE__ */ new Set();
16
+ }
17
+ return new Set(targetProject.roles);
18
+ }, [identity?.projects, projectSlug]);
19
+ };
20
+ exports.useProjectUserRoles = useProjectUserRoles;
21
+ //# sourceMappingURL=useProjectUserRoles.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProjectUserRoles.cjs","sources":["../../../../../packages/react-identity/src/hooks/useProjectUserRoles.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { useProjectSlug } from '@contember/react-client'\nimport { useIdentity } from '@contember/react-client-tenant'\n\nexport type ProjectUserRoles = Set<string>\n\nexport const useProjectUserRoles = (): ProjectUserRoles => {\n\tconst identity = useIdentity()\n\tconst projectSlug = useProjectSlug()\n\treturn useMemo(() => {\n\t\tif (!projectSlug) {\n\t\t\treturn new Set()\n\t\t}\n\t\tconst targetProject = identity?.projects.find(project => project.slug === projectSlug)\n\t\tif (targetProject === undefined) {\n\t\t\treturn new Set()\n\t\t}\n\n\t\treturn new Set(targetProject.roles)\n\t}, [identity?.projects, projectSlug])\n}\n"],"names":["useIdentity","useProjectSlug","useMemo"],"mappings":";;;;;AAMO,MAAM,sBAAsB,MAAwB;AAC1D,QAAM,WAAWA,kBAAAA,YAAA;AACjB,QAAM,cAAcC,YAAAA,eAAA;AACpB,SAAOC,MAAAA,QAAQ,MAAM;AACpB,QAAI,CAAC,aAAa;AACjB,iCAAW,IAAA;AAAA,IACZ;AACA,UAAM,gBAAgB,UAAU,SAAS,KAAK,CAAA,YAAW,QAAQ,SAAS,WAAW;AACrF,QAAI,kBAAkB,QAAW;AAChC,iCAAW,IAAA;AAAA,IACZ;AAEA,WAAO,IAAI,IAAI,cAAc,KAAK;AAAA,EACnC,GAAG,CAAC,UAAU,UAAU,WAAW,CAAC;AACrC;;"}
@@ -0,0 +1,21 @@
1
+ import { useMemo } from "react";
2
+ import { useProjectSlug } from "@contember/react-client";
3
+ import { useIdentity } from "@contember/react-client-tenant";
4
+ const useProjectUserRoles = () => {
5
+ const identity = useIdentity();
6
+ const projectSlug = useProjectSlug();
7
+ return useMemo(() => {
8
+ if (!projectSlug) {
9
+ return /* @__PURE__ */ new Set();
10
+ }
11
+ const targetProject = identity?.projects.find((project) => project.slug === projectSlug);
12
+ if (targetProject === void 0) {
13
+ return /* @__PURE__ */ new Set();
14
+ }
15
+ return new Set(targetProject.roles);
16
+ }, [identity?.projects, projectSlug]);
17
+ };
18
+ export {
19
+ useProjectUserRoles
20
+ };
21
+ //# sourceMappingURL=useProjectUserRoles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProjectUserRoles.js","sources":["../../../../../packages/react-identity/src/hooks/useProjectUserRoles.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { useProjectSlug } from '@contember/react-client'\nimport { useIdentity } from '@contember/react-client-tenant'\n\nexport type ProjectUserRoles = Set<string>\n\nexport const useProjectUserRoles = (): ProjectUserRoles => {\n\tconst identity = useIdentity()\n\tconst projectSlug = useProjectSlug()\n\treturn useMemo(() => {\n\t\tif (!projectSlug) {\n\t\t\treturn new Set()\n\t\t}\n\t\tconst targetProject = identity?.projects.find(project => project.slug === projectSlug)\n\t\tif (targetProject === undefined) {\n\t\t\treturn new Set()\n\t\t}\n\n\t\treturn new Set(targetProject.roles)\n\t}, [identity?.projects, projectSlug])\n}\n"],"names":[],"mappings":";;;AAMO,MAAM,sBAAsB,MAAwB;AAC1D,QAAM,WAAW,YAAA;AACjB,QAAM,cAAc,eAAA;AACpB,SAAO,QAAQ,MAAM;AACpB,QAAI,CAAC,aAAa;AACjB,iCAAW,IAAA;AAAA,IACZ;AACA,UAAM,gBAAgB,UAAU,SAAS,KAAK,CAAA,YAAW,QAAQ,SAAS,WAAW;AACrF,QAAI,kBAAkB,QAAW;AAChC,iCAAW,IAAA;AAAA,IACZ;AAEA,WAAO,IAAI,IAAI,cAAc,KAAK;AAAA,EACnC,GAAG,CAAC,UAAU,UAAU,WAAW,CAAC;AACrC;"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const reactClientTenant = require("@contember/react-client-tenant");
4
+ const HasRole = require("./src/components/HasRole.cjs");
5
+ const IdentityEnvironmentProvider = require("./src/components/IdentityEnvironmentProvider.cjs");
6
+ const IdentityEnvironmentExtension = require("./src/environment/IdentityEnvironmentExtension.cjs");
7
+ const ProjectEnvironmentExtension = require("./src/environment/ProjectEnvironmentExtension.cjs");
8
+ const useProjectUserRoles = require("./src/hooks/useProjectUserRoles.cjs");
9
+ exports.HasRole = HasRole.HasRole;
10
+ exports.IdentityEnvironmentProvider = IdentityEnvironmentProvider.IdentityEnvironmentProvider;
11
+ exports.identityEnvironmentExtension = IdentityEnvironmentExtension.identityEnvironmentExtension;
12
+ exports.projectEnvironmentExtension = ProjectEnvironmentExtension.projectEnvironmentExtension;
13
+ exports.useProjectUserRoles = useProjectUserRoles.useProjectUserRoles;
14
+ Object.keys(reactClientTenant).forEach((k) => {
15
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
16
+ enumerable: true,
17
+ get: () => reactClientTenant[k]
18
+ });
19
+ });
20
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,14 @@
1
+ export * from "@contember/react-client-tenant";
2
+ import { HasRole } from "./src/components/HasRole.js";
3
+ import { IdentityEnvironmentProvider } from "./src/components/IdentityEnvironmentProvider.js";
4
+ import { identityEnvironmentExtension } from "./src/environment/IdentityEnvironmentExtension.js";
5
+ import { projectEnvironmentExtension } from "./src/environment/ProjectEnvironmentExtension.js";
6
+ import { useProjectUserRoles } from "./src/hooks/useProjectUserRoles.js";
7
+ export {
8
+ HasRole,
9
+ IdentityEnvironmentProvider,
10
+ identityEnvironmentExtension,
11
+ projectEnvironmentExtension,
12
+ useProjectUserRoles
13
+ };
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const reactBinding = require("@contember/react-binding");
5
+ const useProjectUserRoles = require("../hooks/useProjectUserRoles.cjs");
6
+ const IdentityEnvironmentExtension = require("../environment/IdentityEnvironmentExtension.cjs");
7
+ const ProjectEnvironmentExtension = require("../environment/ProjectEnvironmentExtension.cjs");
8
+ const HasRole = reactBinding.Component(({ children, role }) => {
9
+ const projectRoles = useProjectUserRoles.useProjectUserRoles();
10
+ return evaluateCondition(role, projectRoles) ? /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children }) : null;
11
+ }, ({ children, role }, env) => {
12
+ const identity = env.getExtension(IdentityEnvironmentExtension.identityEnvironmentExtension).identity;
13
+ const project = env.getExtension(ProjectEnvironmentExtension.projectEnvironmentExtension).slug;
14
+ const projectRoles = new Set(identity?.projects.find((it) => it.slug === project)?.roles ?? []);
15
+ return evaluateCondition(role, projectRoles) ? /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children }) : null;
16
+ });
17
+ const evaluateCondition = (condition, roles) => {
18
+ if (typeof condition === "string") {
19
+ return roles.has(condition);
20
+ }
21
+ return condition(roles);
22
+ };
23
+ exports.HasRole = HasRole;
24
+ //# sourceMappingURL=HasRole.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HasRole.cjs","sources":["../../../../../packages/react-identity/src/components/HasRole.tsx"],"sourcesContent":["import { Component } from '@contember/react-binding'\nimport { ReactNode } from 'react'\nimport { useProjectUserRoles } from '../hooks'\nimport { identityEnvironmentExtension, projectEnvironmentExtension } from '../environment'\n\nexport type RoleCondition = string | ((roles: Set<string>) => boolean)\n\nexport interface HasRoleProps {\n\tchildren?: ReactNode\n\trole: RoleCondition\n}\n\n/**\n * @group Logic Components\n */\nexport const HasRole = Component<HasRoleProps>(({ children, role }) => {\n\tconst projectRoles = useProjectUserRoles()\n\n\treturn evaluateCondition(role, projectRoles) ? <>{children}</> : null\n}, ({ children, role }, env) => {\n\tconst identity = env.getExtension(identityEnvironmentExtension).identity\n\tconst project = env.getExtension(projectEnvironmentExtension).slug\n\tconst projectRoles = new Set<string>(identity?.projects.find(it => it.slug === project)?.roles ?? [])\n\n\treturn evaluateCondition(role, projectRoles) ? <>{children}</> : null\n})\n\nconst evaluateCondition = (condition: RoleCondition, roles: Set<string>) => {\n\tif (typeof condition === 'string') {\n\t\treturn roles.has(condition)\n\t}\n\treturn condition(roles)\n}\n"],"names":["Component","useProjectUserRoles","jsx","Fragment","identityEnvironmentExtension","projectEnvironmentExtension"],"mappings":";;;;;;;AAeO,MAAM,UAAUA,aAAAA,UAAwB,CAAC,EAAE,UAAU,WAAW;AACtE,QAAM,eAAeC,oBAAAA,oBAAA;AAErB,SAAO,kBAAkB,MAAM,YAAY,IAAIC,2BAAAA,IAAAC,qBAAA,EAAG,UAAS,IAAM;AAClE,GAAG,CAAC,EAAE,UAAU,KAAA,GAAQ,QAAQ;AAC/B,QAAM,WAAW,IAAI,aAAaC,6BAAAA,4BAA4B,EAAE;AAChE,QAAM,UAAU,IAAI,aAAaC,4BAAAA,2BAA2B,EAAE;AAC9D,QAAM,eAAe,IAAI,IAAY,UAAU,SAAS,KAAK,CAAA,OAAM,GAAG,SAAS,OAAO,GAAG,SAAS,CAAA,CAAE;AAEpG,SAAO,kBAAkB,MAAM,YAAY,IAAIH,2BAAAA,IAAAC,qBAAA,EAAG,UAAS,IAAM;AAClE,CAAC;AAED,MAAM,oBAAoB,CAAC,WAA0B,UAAuB;AAC3E,MAAI,OAAO,cAAc,UAAU;AAClC,WAAO,MAAM,IAAI,SAAS;AAAA,EAC3B;AACA,SAAO,UAAU,KAAK;AACvB;;"}
@@ -0,0 +1,24 @@
1
+ import { jsx, Fragment } from "react/jsx-runtime";
2
+ import { Component } from "@contember/react-binding";
3
+ import { useProjectUserRoles } from "../hooks/useProjectUserRoles.js";
4
+ import { identityEnvironmentExtension } from "../environment/IdentityEnvironmentExtension.js";
5
+ import { projectEnvironmentExtension } from "../environment/ProjectEnvironmentExtension.js";
6
+ const HasRole = Component(({ children, role }) => {
7
+ const projectRoles = useProjectUserRoles();
8
+ return evaluateCondition(role, projectRoles) ? /* @__PURE__ */ jsx(Fragment, { children }) : null;
9
+ }, ({ children, role }, env) => {
10
+ const identity = env.getExtension(identityEnvironmentExtension).identity;
11
+ const project = env.getExtension(projectEnvironmentExtension).slug;
12
+ const projectRoles = new Set(identity?.projects.find((it) => it.slug === project)?.roles ?? []);
13
+ return evaluateCondition(role, projectRoles) ? /* @__PURE__ */ jsx(Fragment, { children }) : null;
14
+ });
15
+ const evaluateCondition = (condition, roles) => {
16
+ if (typeof condition === "string") {
17
+ return roles.has(condition);
18
+ }
19
+ return condition(roles);
20
+ };
21
+ export {
22
+ HasRole
23
+ };
24
+ //# sourceMappingURL=HasRole.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HasRole.js","sources":["../../../../../packages/react-identity/src/components/HasRole.tsx"],"sourcesContent":["import { Component } from '@contember/react-binding'\nimport { ReactNode } from 'react'\nimport { useProjectUserRoles } from '../hooks'\nimport { identityEnvironmentExtension, projectEnvironmentExtension } from '../environment'\n\nexport type RoleCondition = string | ((roles: Set<string>) => boolean)\n\nexport interface HasRoleProps {\n\tchildren?: ReactNode\n\trole: RoleCondition\n}\n\n/**\n * @group Logic Components\n */\nexport const HasRole = Component<HasRoleProps>(({ children, role }) => {\n\tconst projectRoles = useProjectUserRoles()\n\n\treturn evaluateCondition(role, projectRoles) ? <>{children}</> : null\n}, ({ children, role }, env) => {\n\tconst identity = env.getExtension(identityEnvironmentExtension).identity\n\tconst project = env.getExtension(projectEnvironmentExtension).slug\n\tconst projectRoles = new Set<string>(identity?.projects.find(it => it.slug === project)?.roles ?? [])\n\n\treturn evaluateCondition(role, projectRoles) ? <>{children}</> : null\n})\n\nconst evaluateCondition = (condition: RoleCondition, roles: Set<string>) => {\n\tif (typeof condition === 'string') {\n\t\treturn roles.has(condition)\n\t}\n\treturn condition(roles)\n}\n"],"names":[],"mappings":";;;;;AAeO,MAAM,UAAU,UAAwB,CAAC,EAAE,UAAU,WAAW;AACtE,QAAM,eAAe,oBAAA;AAErB,SAAO,kBAAkB,MAAM,YAAY,IAAI,oBAAA,UAAA,EAAG,UAAS,IAAM;AAClE,GAAG,CAAC,EAAE,UAAU,KAAA,GAAQ,QAAQ;AAC/B,QAAM,WAAW,IAAI,aAAa,4BAA4B,EAAE;AAChE,QAAM,UAAU,IAAI,aAAa,2BAA2B,EAAE;AAC9D,QAAM,eAAe,IAAI,IAAY,UAAU,SAAS,KAAK,CAAA,OAAM,GAAG,SAAS,OAAO,GAAG,SAAS,CAAA,CAAE;AAEpG,SAAO,kBAAkB,MAAM,YAAY,IAAI,oBAAA,UAAA,EAAG,UAAS,IAAM;AAClE,CAAC;AAED,MAAM,oBAAoB,CAAC,WAA0B,UAAuB;AAC3E,MAAI,OAAO,cAAc,UAAU;AAClC,WAAO,MAAM,IAAI,SAAS;AAAA,EAC3B;AACA,SAAO,UAAU,KAAK;AACvB;"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const reactBinding = require("@contember/react-binding");
5
+ const reactClientTenant = require("@contember/react-client-tenant");
6
+ const IdentityEnvironmentExtension = require("../environment/IdentityEnvironmentExtension.cjs");
7
+ const IdentityEnvironmentProvider = ({ children }) => {
8
+ const identity = reactClientTenant.useIdentity();
9
+ return /* @__PURE__ */ jsxRuntime.jsx(reactBinding.EnvironmentExtensionProvider, { extension: IdentityEnvironmentExtension.identityEnvironmentExtension, state: identity ?? null, children });
10
+ };
11
+ exports.IdentityEnvironmentProvider = IdentityEnvironmentProvider;
12
+ //# sourceMappingURL=IdentityEnvironmentProvider.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdentityEnvironmentProvider.cjs","sources":["../../../../../packages/react-identity/src/components/IdentityEnvironmentProvider.tsx"],"sourcesContent":["import { ReactNode } from 'react'\nimport { EnvironmentExtensionProvider } from '@contember/react-binding'\nimport { identityEnvironmentExtension } from '../environment'\nimport { useIdentity } from '@contember/react-client-tenant'\n\nexport interface IdentityEnvironmentProviderProps {\n\tchildren: ReactNode\n}\n\nexport const IdentityEnvironmentProvider: React.FC<IdentityEnvironmentProviderProps> = ({ children }) => {\n\tconst identity = useIdentity()\n\treturn (\n\t\t<EnvironmentExtensionProvider extension={identityEnvironmentExtension} state={identity ?? null}>\n\t\t\t{children}\n\t\t</EnvironmentExtensionProvider>\n\t)\n}\n"],"names":["useIdentity","EnvironmentExtensionProvider","identityEnvironmentExtension"],"mappings":";;;;;;AASO,MAAM,8BAA0E,CAAC,EAAE,eAAe;AACxG,QAAM,WAAWA,kBAAAA,YAAA;AACjB,wCACEC,2CAAA,EAA6B,WAAWC,6BAAAA,8BAA8B,OAAO,YAAY,MACxF,UACF;AAEF;;"}
@@ -0,0 +1,12 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { EnvironmentExtensionProvider } from "@contember/react-binding";
3
+ import { useIdentity } from "@contember/react-client-tenant";
4
+ import { identityEnvironmentExtension } from "../environment/IdentityEnvironmentExtension.js";
5
+ const IdentityEnvironmentProvider = ({ children }) => {
6
+ const identity = useIdentity();
7
+ return /* @__PURE__ */ jsx(EnvironmentExtensionProvider, { extension: identityEnvironmentExtension, state: identity ?? null, children });
8
+ };
9
+ export {
10
+ IdentityEnvironmentProvider
11
+ };
12
+ //# sourceMappingURL=IdentityEnvironmentProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdentityEnvironmentProvider.js","sources":["../../../../../packages/react-identity/src/components/IdentityEnvironmentProvider.tsx"],"sourcesContent":["import { ReactNode } from 'react'\nimport { EnvironmentExtensionProvider } from '@contember/react-binding'\nimport { identityEnvironmentExtension } from '../environment'\nimport { useIdentity } from '@contember/react-client-tenant'\n\nexport interface IdentityEnvironmentProviderProps {\n\tchildren: ReactNode\n}\n\nexport const IdentityEnvironmentProvider: React.FC<IdentityEnvironmentProviderProps> = ({ children }) => {\n\tconst identity = useIdentity()\n\treturn (\n\t\t<EnvironmentExtensionProvider extension={identityEnvironmentExtension} state={identity ?? null}>\n\t\t\t{children}\n\t\t</EnvironmentExtensionProvider>\n\t)\n}\n"],"names":[],"mappings":";;;;AASO,MAAM,8BAA0E,CAAC,EAAE,eAAe;AACxG,QAAM,WAAW,YAAA;AACjB,6BACE,8BAAA,EAA6B,WAAW,8BAA8B,OAAO,YAAY,MACxF,UACF;AAEF;"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const reactBinding = require("@contember/react-binding");
4
+ const identityEnvironmentExtension = reactBinding.Environment.createExtension((state) => {
5
+ if (state === void 0) {
6
+ throw new reactBinding.BindingError("Environment does not contain identity state.");
7
+ }
8
+ return {
9
+ identity: state ?? void 0
10
+ };
11
+ });
12
+ exports.identityEnvironmentExtension = identityEnvironmentExtension;
13
+ //# sourceMappingURL=IdentityEnvironmentExtension.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdentityEnvironmentExtension.cjs","sources":["../../../../../packages/react-identity/src/environment/IdentityEnvironmentExtension.ts"],"sourcesContent":["import { BindingError, Environment } from '@contember/react-binding'\nimport { Identity } from '@contember/react-client-tenant'\n\nexport const identityEnvironmentExtension = Environment.createExtension((state: Identity | null | undefined) => {\n\tif (state === undefined) {\n\t\tthrow new BindingError('Environment does not contain identity state.')\n\t}\n\n\treturn {\n\t\tidentity: state ?? undefined,\n\t}\n})\n"],"names":["Environment","BindingError"],"mappings":";;;AAGO,MAAM,+BAA+BA,aAAAA,YAAY,gBAAgB,CAAC,UAAuC;AAC/G,MAAI,UAAU,QAAW;AACxB,UAAM,IAAIC,aAAAA,aAAa,8CAA8C;AAAA,EACtE;AAEA,SAAO;AAAA,IACN,UAAU,SAAS;AAAA,EAAA;AAErB,CAAC;;"}
@@ -0,0 +1,13 @@
1
+ import { Environment, BindingError } from "@contember/react-binding";
2
+ const identityEnvironmentExtension = Environment.createExtension((state) => {
3
+ if (state === void 0) {
4
+ throw new BindingError("Environment does not contain identity state.");
5
+ }
6
+ return {
7
+ identity: state ?? void 0
8
+ };
9
+ });
10
+ export {
11
+ identityEnvironmentExtension
12
+ };
13
+ //# sourceMappingURL=IdentityEnvironmentExtension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdentityEnvironmentExtension.js","sources":["../../../../../packages/react-identity/src/environment/IdentityEnvironmentExtension.ts"],"sourcesContent":["import { BindingError, Environment } from '@contember/react-binding'\nimport { Identity } from '@contember/react-client-tenant'\n\nexport const identityEnvironmentExtension = Environment.createExtension((state: Identity | null | undefined) => {\n\tif (state === undefined) {\n\t\tthrow new BindingError('Environment does not contain identity state.')\n\t}\n\n\treturn {\n\t\tidentity: state ?? undefined,\n\t}\n})\n"],"names":[],"mappings":";AAGO,MAAM,+BAA+B,YAAY,gBAAgB,CAAC,UAAuC;AAC/G,MAAI,UAAU,QAAW;AACxB,UAAM,IAAI,aAAa,8CAA8C;AAAA,EACtE;AAEA,SAAO;AAAA,IACN,UAAU,SAAS;AAAA,EAAA;AAErB,CAAC;"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const reactBinding = require("@contember/react-binding");
4
+ const projectEnvironmentExtension = reactBinding.Environment.createExtension((slug) => {
5
+ if (slug === void 0) {
6
+ throw new reactBinding.BindingError("Environment does not contain project slug state.");
7
+ }
8
+ return {
9
+ slug: slug ?? void 0
10
+ };
11
+ });
12
+ exports.projectEnvironmentExtension = projectEnvironmentExtension;
13
+ //# sourceMappingURL=ProjectEnvironmentExtension.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectEnvironmentExtension.cjs","sources":["../../../../../packages/react-identity/src/environment/ProjectEnvironmentExtension.tsx"],"sourcesContent":["import { BindingError, Environment } from '@contember/react-binding'\n\nexport const projectEnvironmentExtension = Environment.createExtension((slug: string | null | undefined) => {\n\tif (slug === undefined) {\n\t\tthrow new BindingError('Environment does not contain project slug state.')\n\t}\n\treturn {\n\t\tslug: slug ?? undefined,\n\t}\n})\n"],"names":["Environment","BindingError"],"mappings":";;;AAEO,MAAM,8BAA8BA,aAAAA,YAAY,gBAAgB,CAAC,SAAoC;AAC3G,MAAI,SAAS,QAAW;AACvB,UAAM,IAAIC,aAAAA,aAAa,kDAAkD;AAAA,EAC1E;AACA,SAAO;AAAA,IACN,MAAM,QAAQ;AAAA,EAAA;AAEhB,CAAC;;"}
@@ -0,0 +1,13 @@
1
+ import { Environment, BindingError } from "@contember/react-binding";
2
+ const projectEnvironmentExtension = Environment.createExtension((slug) => {
3
+ if (slug === void 0) {
4
+ throw new BindingError("Environment does not contain project slug state.");
5
+ }
6
+ return {
7
+ slug: slug ?? void 0
8
+ };
9
+ });
10
+ export {
11
+ projectEnvironmentExtension
12
+ };
13
+ //# sourceMappingURL=ProjectEnvironmentExtension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectEnvironmentExtension.js","sources":["../../../../../packages/react-identity/src/environment/ProjectEnvironmentExtension.tsx"],"sourcesContent":["import { BindingError, Environment } from '@contember/react-binding'\n\nexport const projectEnvironmentExtension = Environment.createExtension((slug: string | null | undefined) => {\n\tif (slug === undefined) {\n\t\tthrow new BindingError('Environment does not contain project slug state.')\n\t}\n\treturn {\n\t\tslug: slug ?? undefined,\n\t}\n})\n"],"names":[],"mappings":";AAEO,MAAM,8BAA8B,YAAY,gBAAgB,CAAC,SAAoC;AAC3G,MAAI,SAAS,QAAW;AACvB,UAAM,IAAI,aAAa,kDAAkD;AAAA,EAC1E;AACA,SAAO;AAAA,IACN,MAAM,QAAQ;AAAA,EAAA;AAEhB,CAAC;"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const React = require("react");
4
+ const reactClient = require("@contember/react-client");
5
+ const reactClientTenant = require("@contember/react-client-tenant");
6
+ const useProjectUserRoles = () => {
7
+ const identity = reactClientTenant.useIdentity();
8
+ const projectSlug = reactClient.useProjectSlug();
9
+ return React.useMemo(() => {
10
+ if (!projectSlug) {
11
+ return /* @__PURE__ */ new Set();
12
+ }
13
+ const targetProject = identity?.projects.find((project) => project.slug === projectSlug);
14
+ if (targetProject === void 0) {
15
+ return /* @__PURE__ */ new Set();
16
+ }
17
+ return new Set(targetProject.roles);
18
+ }, [identity?.projects, projectSlug]);
19
+ };
20
+ exports.useProjectUserRoles = useProjectUserRoles;
21
+ //# sourceMappingURL=useProjectUserRoles.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProjectUserRoles.cjs","sources":["../../../../../packages/react-identity/src/hooks/useProjectUserRoles.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { useProjectSlug } from '@contember/react-client'\nimport { useIdentity } from '@contember/react-client-tenant'\n\nexport type ProjectUserRoles = Set<string>\n\nexport const useProjectUserRoles = (): ProjectUserRoles => {\n\tconst identity = useIdentity()\n\tconst projectSlug = useProjectSlug()\n\treturn useMemo(() => {\n\t\tif (!projectSlug) {\n\t\t\treturn new Set()\n\t\t}\n\t\tconst targetProject = identity?.projects.find(project => project.slug === projectSlug)\n\t\tif (targetProject === undefined) {\n\t\t\treturn new Set()\n\t\t}\n\n\t\treturn new Set(targetProject.roles)\n\t}, [identity?.projects, projectSlug])\n}\n"],"names":["useIdentity","useProjectSlug","useMemo"],"mappings":";;;;;AAMO,MAAM,sBAAsB,MAAwB;AAC1D,QAAM,WAAWA,kBAAAA,YAAA;AACjB,QAAM,cAAcC,YAAAA,eAAA;AACpB,SAAOC,MAAAA,QAAQ,MAAM;AACpB,QAAI,CAAC,aAAa;AACjB,iCAAW,IAAA;AAAA,IACZ;AACA,UAAM,gBAAgB,UAAU,SAAS,KAAK,CAAA,YAAW,QAAQ,SAAS,WAAW;AACrF,QAAI,kBAAkB,QAAW;AAChC,iCAAW,IAAA;AAAA,IACZ;AAEA,WAAO,IAAI,IAAI,cAAc,KAAK;AAAA,EACnC,GAAG,CAAC,UAAU,UAAU,WAAW,CAAC;AACrC;;"}
@@ -0,0 +1,21 @@
1
+ import { useMemo } from "react";
2
+ import { useProjectSlug } from "@contember/react-client";
3
+ import { useIdentity } from "@contember/react-client-tenant";
4
+ const useProjectUserRoles = () => {
5
+ const identity = useIdentity();
6
+ const projectSlug = useProjectSlug();
7
+ return useMemo(() => {
8
+ if (!projectSlug) {
9
+ return /* @__PURE__ */ new Set();
10
+ }
11
+ const targetProject = identity?.projects.find((project) => project.slug === projectSlug);
12
+ if (targetProject === void 0) {
13
+ return /* @__PURE__ */ new Set();
14
+ }
15
+ return new Set(targetProject.roles);
16
+ }, [identity?.projects, projectSlug]);
17
+ };
18
+ export {
19
+ useProjectUserRoles
20
+ };
21
+ //# sourceMappingURL=useProjectUserRoles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProjectUserRoles.js","sources":["../../../../../packages/react-identity/src/hooks/useProjectUserRoles.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { useProjectSlug } from '@contember/react-client'\nimport { useIdentity } from '@contember/react-client-tenant'\n\nexport type ProjectUserRoles = Set<string>\n\nexport const useProjectUserRoles = (): ProjectUserRoles => {\n\tconst identity = useIdentity()\n\tconst projectSlug = useProjectSlug()\n\treturn useMemo(() => {\n\t\tif (!projectSlug) {\n\t\t\treturn new Set()\n\t\t}\n\t\tconst targetProject = identity?.projects.find(project => project.slug === projectSlug)\n\t\tif (targetProject === undefined) {\n\t\t\treturn new Set()\n\t\t}\n\n\t\treturn new Set(targetProject.roles)\n\t}, [identity?.projects, projectSlug])\n}\n"],"names":[],"mappings":";;;AAMO,MAAM,sBAAsB,MAAwB;AAC1D,QAAM,WAAW,YAAA;AACjB,QAAM,cAAc,eAAA;AACpB,SAAO,QAAQ,MAAM;AACpB,QAAI,CAAC,aAAa;AACjB,iCAAW,IAAA;AAAA,IACZ;AACA,UAAM,gBAAgB,UAAU,SAAS,KAAK,CAAA,YAAW,QAAQ,SAAS,WAAW;AACrF,QAAI,kBAAkB,QAAW;AAChC,iCAAW,IAAA;AAAA,IACZ;AAEA,WAAO,IAAI,IAAI,cAAc,KAAK;AAAA,EACnC,GAAG,CAAC,UAAU,UAAU,WAAW,CAAC;AACrC;"}
@@ -0,0 +1,11 @@
1
+ import { ReactNode } from 'react';
2
+ export type RoleCondition = string | ((roles: Set<string>) => boolean);
3
+ export interface HasRoleProps {
4
+ children?: ReactNode;
5
+ role: RoleCondition;
6
+ }
7
+ /**
8
+ * @group Logic Components
9
+ */
10
+ export declare const HasRole: import("react").NamedExoticComponent<HasRoleProps>;
11
+ //# sourceMappingURL=HasRole.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HasRole.d.ts","sourceRoot":"","sources":["../../../src/components/HasRole.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAIjC,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,CAAA;AAEtE,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,aAAa,CAAA;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,oDAUlB,CAAA"}