@itwin/one-click-lca-react 0.4.0 → 0.6.0

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 (69) hide show
  1. package/lib/cjs/components/ExportModal.d.ts +4 -0
  2. package/lib/cjs/components/ExportModal.js +26 -23
  3. package/lib/cjs/components/ExportModal.js.map +1 -1
  4. package/lib/cjs/components/OneClickLCA.d.ts +2 -1
  5. package/lib/cjs/components/OneClickLCA.js +38 -10
  6. package/lib/cjs/components/OneClickLCA.js.map +1 -1
  7. package/lib/cjs/components/OneClickLCAProps.d.ts +24 -0
  8. package/lib/cjs/components/OneClickLCAProps.js +7 -0
  9. package/lib/cjs/components/OneClickLCAProps.js.map +1 -0
  10. package/lib/cjs/components/Reports.d.ts +4 -2
  11. package/lib/cjs/components/Reports.js +18 -11
  12. package/lib/cjs/components/Reports.js.map +1 -1
  13. package/lib/cjs/components/api/OCLCAApiHelper.d.ts +9 -0
  14. package/lib/cjs/components/api/OCLCAApiHelper.js +25 -0
  15. package/lib/cjs/components/api/OCLCAApiHelper.js.map +1 -0
  16. package/lib/cjs/components/context/OCLCAJobsClientContext.d.ts +15 -0
  17. package/lib/cjs/components/context/OCLCAJobsClientContext.js +26 -0
  18. package/lib/cjs/components/context/OCLCAJobsClientContext.js.map +1 -0
  19. package/lib/cjs/components/context/ReportsClientContext.d.ts +15 -0
  20. package/lib/cjs/components/context/ReportsClientContext.js +28 -0
  21. package/lib/cjs/components/context/ReportsClientContext.js.map +1 -0
  22. package/lib/cjs/components/utils.d.ts +1 -1
  23. package/lib/cjs/components/utils.js +4 -4
  24. package/lib/cjs/components/utils.js.map +1 -1
  25. package/lib/cjs/one-click-lca-widget.d.ts +2 -0
  26. package/lib/cjs/one-click-lca-widget.js +9 -4
  27. package/lib/cjs/one-click-lca-widget.js.map +1 -1
  28. package/lib/cjs/test/ExportModal.test.js +3 -3
  29. package/lib/cjs/test/ExportModal.test.js.map +1 -1
  30. package/lib/cjs/test/WidgetHeader.test.js +3 -3
  31. package/lib/cjs/test/WidgetHeader.test.js.map +1 -1
  32. package/lib/cjs/widgets/OneClickLCAWidget.d.ts +3 -0
  33. package/lib/cjs/widgets/OneClickLCAWidget.js +4 -5
  34. package/lib/cjs/widgets/OneClickLCAWidget.js.map +1 -1
  35. package/lib/esm/components/ExportModal.d.ts +4 -0
  36. package/lib/esm/components/ExportModal.js +25 -26
  37. package/lib/esm/components/ExportModal.js.map +1 -1
  38. package/lib/esm/components/OneClickLCA.d.ts +2 -1
  39. package/lib/esm/components/OneClickLCA.js +16 -8
  40. package/lib/esm/components/OneClickLCA.js.map +1 -1
  41. package/lib/esm/components/OneClickLCAProps.d.ts +24 -0
  42. package/lib/esm/components/OneClickLCAProps.js +6 -0
  43. package/lib/esm/components/OneClickLCAProps.js.map +1 -0
  44. package/lib/esm/components/Reports.d.ts +4 -2
  45. package/lib/esm/components/Reports.js +12 -11
  46. package/lib/esm/components/Reports.js.map +1 -1
  47. package/lib/esm/components/api/OCLCAApiHelper.d.ts +9 -0
  48. package/lib/esm/components/api/OCLCAApiHelper.js +21 -0
  49. package/lib/esm/components/api/OCLCAApiHelper.js.map +1 -0
  50. package/lib/esm/components/context/OCLCAJobsClientContext.d.ts +15 -0
  51. package/lib/esm/components/context/OCLCAJobsClientContext.js +21 -0
  52. package/lib/esm/components/context/OCLCAJobsClientContext.js.map +1 -0
  53. package/lib/esm/components/context/ReportsClientContext.d.ts +15 -0
  54. package/lib/esm/components/context/ReportsClientContext.js +23 -0
  55. package/lib/esm/components/context/ReportsClientContext.js.map +1 -0
  56. package/lib/esm/components/utils.d.ts +1 -1
  57. package/lib/esm/components/utils.js +4 -4
  58. package/lib/esm/components/utils.js.map +1 -1
  59. package/lib/esm/one-click-lca-widget.d.ts +2 -0
  60. package/lib/esm/one-click-lca-widget.js +4 -3
  61. package/lib/esm/one-click-lca-widget.js.map +1 -1
  62. package/lib/esm/test/ExportModal.test.js +3 -3
  63. package/lib/esm/test/ExportModal.test.js.map +1 -1
  64. package/lib/esm/test/WidgetHeader.test.js +3 -3
  65. package/lib/esm/test/WidgetHeader.test.js.map +1 -1
  66. package/lib/esm/widgets/OneClickLCAWidget.d.ts +3 -0
  67. package/lib/esm/widgets/OneClickLCAWidget.js +5 -6
  68. package/lib/esm/widgets/OneClickLCAWidget.js.map +1 -1
  69. package/package.json +29 -24
@@ -0,0 +1,15 @@
1
+ /// <reference types="react" />
2
+ import type { IReportsClient } from "@itwin/insights-client";
3
+ /**
4
+ * @internal
5
+ */
6
+ export declare const createDefaultReportsClient: (reportingBasePath?: string | undefined) => IReportsClient;
7
+ /**
8
+ * @internal
9
+ */
10
+ export declare const ReportsClientContext: import("react").Context<IReportsClient>;
11
+ /**
12
+ * @internal
13
+ */
14
+ export declare const useReportsClient: () => IReportsClient;
15
+ //# sourceMappingURL=ReportsClientContext.d.ts.map
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useReportsClient = exports.ReportsClientContext = exports.createDefaultReportsClient = void 0;
4
+ const insights_client_1 = require("@itwin/insights-client");
5
+ const react_1 = require("react");
6
+ /**
7
+ * @internal
8
+ */
9
+ const createDefaultReportsClient = (reportingBasePath) => {
10
+ return new insights_client_1.ReportsClient(reportingBasePath ?? insights_client_1.REPORTING_BASE_PATH);
11
+ };
12
+ exports.createDefaultReportsClient = createDefaultReportsClient;
13
+ /**
14
+ * @internal
15
+ */
16
+ exports.ReportsClientContext = (0, react_1.createContext)((0, exports.createDefaultReportsClient)());
17
+ /**
18
+ * @internal
19
+ */
20
+ const useReportsClient = () => {
21
+ const context = (0, react_1.useContext)(exports.ReportsClientContext);
22
+ if (!context) {
23
+ throw new Error("useReportsClient should be used within a ReportsClientContext provider");
24
+ }
25
+ return context;
26
+ };
27
+ exports.useReportsClient = useReportsClient;
28
+ //# sourceMappingURL=ReportsClientContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReportsClientContext.js","sourceRoot":"","sources":["../../../../src/components/context/ReportsClientContext.ts"],"names":[],"mappings":";;;AAKA,4DAA4E;AAC5E,iCAAkD;AAElD;;GAEG;AACI,MAAM,0BAA0B,GAAG,CAAC,iBAA0B,EAAkB,EAAE;IACvF,OAAO,IAAI,+BAAa,CAAC,iBAAiB,IAAI,qCAAmB,CAAC,CAAC;AACrE,CAAC,CAAC;AAFW,QAAA,0BAA0B,8BAErC;AAEF;;GAEG;AACU,QAAA,oBAAoB,GAAG,IAAA,qBAAa,EAAiB,IAAA,kCAA0B,GAAE,CAAC,CAAC;AAEhG;;GAEG;AACI,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,4BAAoB,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;KAC3F;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AANW,QAAA,gBAAgB,oBAM3B","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport type { IReportsClient } from \"@itwin/insights-client\";\nimport { REPORTING_BASE_PATH, ReportsClient } from \"@itwin/insights-client\";\nimport { createContext, useContext } from \"react\";\n\n/**\n * @internal\n */\nexport const createDefaultReportsClient = (reportingBasePath?: string): IReportsClient => {\n return new ReportsClient(reportingBasePath ?? REPORTING_BASE_PATH);\n};\n\n/**\n * @internal\n */\nexport const ReportsClientContext = createContext<IReportsClient>(createDefaultReportsClient());\n\n/**\n * @internal\n */\nexport const useReportsClient = () => {\n const context = useContext(ReportsClientContext);\n if (!context) {\n throw new Error(\"useReportsClient should be used within a ReportsClientContext provider\");\n }\n return context;\n};\n"]}
@@ -5,5 +5,5 @@ export interface WidgetHeaderProps {
5
5
  disabled?: boolean;
6
6
  returnFn?: () => Promise<void>;
7
7
  }
8
- export declare const WidgetHeader: ({ title, disabled, returnFn, }: WidgetHeaderProps) => JSX.Element;
8
+ export declare const WidgetHeader: ({ title, disabled, returnFn }: WidgetHeaderProps) => JSX.Element;
9
9
  //# sourceMappingURL=utils.d.ts.map
@@ -5,14 +5,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.WidgetHeader = void 0;
7
7
  /*---------------------------------------------------------------------------------------------
8
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
9
- * See LICENSE.md in the project root for license terms and full copyright notice.
10
- *--------------------------------------------------------------------------------------------*/
8
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
9
+ * See LICENSE.md in the project root for license terms and full copyright notice.
10
+ *--------------------------------------------------------------------------------------------*/
11
11
  const itwinui_icons_react_1 = require("@itwin/itwinui-icons-react");
12
12
  const itwinui_react_1 = require("@itwin/itwinui-react");
13
13
  require("./utils.scss");
14
14
  const react_1 = __importDefault(require("react"));
15
- const WidgetHeader = ({ title, disabled = false, returnFn, }) => {
15
+ const WidgetHeader = ({ title, disabled = false, returnFn }) => {
16
16
  return (react_1.default.createElement("div", { className: "oclca-widget-header-container" },
17
17
  returnFn && (react_1.default.createElement("div", { className: disabled ? "oclca-chevron-disabled" : "oclca-chevron", onClick: disabled ? undefined : returnFn, onKeyUp: disabled ? undefined : returnFn },
18
18
  react_1.default.createElement(itwinui_icons_react_1.SvgChevronLeft, null))),
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/components/utils.tsx"],"names":[],"mappings":";;;;;;AAAA;;;+FAG+F;AAC/F,oEAA4D;AAC5D,wDAA4C;AAC5C,wBAAsB;AACtB,kDAA0B;AAQnB,MAAM,YAAY,GAAG,CAAC,EAC3B,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,QAAQ,GACU,EAAE,EAAE;IACtB,OAAO,CACL,uCAAK,SAAS,EAAC,+BAA+B;QAC3C,QAAQ,IAAI,CACX,uCACE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,eAAe,EAChE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EACxC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;YAExC,8BAAC,oCAAc,OAAG,CACd,CACP;QACD,8BAAC,oBAAI,IAAC,SAAS,EAAC,aAAa,EAAC,OAAO,EAAC,OAAO,IAC1C,KAAK,CACD,CACH,CACP,CAAC;AACJ,CAAC,CAAC;AArBW,QAAA,YAAY,gBAqBvB","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { SvgChevronLeft } from \"@itwin/itwinui-icons-react\";\nimport { Text } from \"@itwin/itwinui-react\";\nimport \"./utils.scss\";\nimport React from \"react\";\n\nexport interface WidgetHeaderProps {\n title: string;\n disabled?: boolean;\n returnFn?: () => Promise<void>;\n}\n\nexport const WidgetHeader = ({\n title,\n disabled = false,\n returnFn,\n}: WidgetHeaderProps) => {\n return (\n <div className=\"oclca-widget-header-container\">\n {returnFn && (\n <div\n className={disabled ? \"oclca-chevron-disabled\" : \"oclca-chevron\"}\n onClick={disabled ? undefined : returnFn}\n onKeyUp={disabled ? undefined : returnFn}\n >\n <SvgChevronLeft />\n </div>\n )}\n <Text className=\"oclca-title\" variant=\"title\">\n {title}\n </Text>\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/components/utils.tsx"],"names":[],"mappings":";;;;;;AAAA;;;gGAGgG;AAChG,oEAA4D;AAC5D,wDAA4C;AAC5C,wBAAsB;AACtB,kDAA0B;AAQnB,MAAM,YAAY,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,QAAQ,EAAqB,EAAE,EAAE;IACvF,OAAO,CACL,uCAAK,SAAS,EAAC,+BAA+B;QAC3C,QAAQ,IAAI,CACX,uCACE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,eAAe,EAChE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EACxC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;YAExC,8BAAC,oCAAc,OAAG,CACd,CACP;QACD,8BAAC,oBAAI,IAAC,SAAS,EAAC,aAAa,EAAC,OAAO,EAAC,OAAO,IAC1C,KAAK,CACD,CACH,CACP,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,YAAY,gBAiBvB","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport { SvgChevronLeft } from \"@itwin/itwinui-icons-react\";\nimport { Text } from \"@itwin/itwinui-react\";\nimport \"./utils.scss\";\nimport React from \"react\";\n\nexport interface WidgetHeaderProps {\n title: string;\n disabled?: boolean;\n returnFn?: () => Promise<void>;\n}\n\nexport const WidgetHeader = ({ title, disabled = false, returnFn }: WidgetHeaderProps) => {\n return (\n <div className=\"oclca-widget-header-container\">\n {returnFn && (\n <div\n className={disabled ? \"oclca-chevron-disabled\" : \"oclca-chevron\"}\n onClick={disabled ? undefined : returnFn}\n onKeyUp={disabled ? undefined : returnFn}\n >\n <SvgChevronLeft />\n </div>\n )}\n <Text className=\"oclca-title\" variant=\"title\">\n {title}\n </Text>\n </div>\n );\n};\n"]}
@@ -1,3 +1,5 @@
1
1
  /** UI Provider for iTwin Viewer Applications */
2
2
  export * from "./widgets/OneClickLCAWidget";
3
+ export * from "@itwin/insights-client";
4
+ export { OneClickLCAProps } from "./components/OneClickLCAProps";
3
5
  //# sourceMappingURL=one-click-lca-widget.d.ts.map
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -11,9 +15,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
11
15
  };
12
16
  Object.defineProperty(exports, "__esModule", { value: true });
13
17
  /*---------------------------------------------------------------------------------------------
14
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
15
- * See LICENSE.md in the project root for license terms and full copyright notice.
16
- *--------------------------------------------------------------------------------------------*/
18
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
19
+ * See LICENSE.md in the project root for license terms and full copyright notice.
20
+ *--------------------------------------------------------------------------------------------*/
17
21
  /** UI Provider for iTwin Viewer Applications */
18
22
  __exportStar(require("./widgets/OneClickLCAWidget"), exports);
23
+ __exportStar(require("@itwin/insights-client"), exports);
19
24
  //# sourceMappingURL=one-click-lca-widget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"one-click-lca-widget.js","sourceRoot":"","sources":["../../src/one-click-lca-widget.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;+FAG+F;AAC/F,gDAAgD;AAChD,8DAA4C","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** UI Provider for iTwin Viewer Applications */\nexport * from \"./widgets/OneClickLCAWidget\";\n"]}
1
+ {"version":3,"file":"one-click-lca-widget.js","sourceRoot":"","sources":["../../src/one-click-lca-widget.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;gGAGgG;AAChG,gDAAgD;AAChD,8DAA4C;AAE5C,yDAAuC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** UI Provider for iTwin Viewer Applications */\nexport * from \"./widgets/OneClickLCAWidget\";\n\nexport * from \"@itwin/insights-client\";\n\nexport { OneClickLCAProps } from \"./components/OneClickLCAProps\";\n"]}
@@ -4,9 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  /*---------------------------------------------------------------------------------------------
7
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
8
- * See LICENSE.md in the project root for license terms and full copyright notice.
9
- *--------------------------------------------------------------------------------------------*/
7
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
8
+ * See LICENSE.md in the project root for license terms and full copyright notice.
9
+ *--------------------------------------------------------------------------------------------*/
10
10
  const react_1 = __importDefault(require("react"));
11
11
  require("@testing-library/jest-dom");
12
12
  const react_2 = require("@testing-library/react");
@@ -1 +1 @@
1
- {"version":3,"file":"ExportModal.test.js","sourceRoot":"","sources":["../../../src/test/ExportModal.test.tsx"],"names":[],"mappings":";;;;;AAAA;;;+FAG+F;AAC/F,kDAA0B;AAC1B,qCAAmC;AACnC,kDAAwD;AACxD,4EAAoD;AAEpD,QAAQ,CAAC,sBAAsB,EAAE;IAC/B,EAAE,CAAC,QAAQ,EAAE;QACX,IAAA,cAAM,EAAC,8BAAC,qBAAW,IAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,CAAC;QAC5E,MAAM,CAAC,cAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACrD,MAAM,CAAC,cAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport \"@testing-library/jest-dom\";\nimport { render, screen } from \"@testing-library/react\";\nimport ExportModal from \"../components/ExportModal\";\n\ndescribe(\"Testing Export Modal\", function () {\n it(\"signin\", function () {\n render(<ExportModal isOpen={true} close={() => {}} reportId={undefined} />);\n expect(screen.getByLabelText(\"Email\")).toBeDefined();\n expect(screen.getByLabelText(\"Password\")).toBeDefined();\n });\n});\n"]}
1
+ {"version":3,"file":"ExportModal.test.js","sourceRoot":"","sources":["../../../src/test/ExportModal.test.tsx"],"names":[],"mappings":";;;;;AAAA;;;gGAGgG;AAChG,kDAA0B;AAC1B,qCAAmC;AACnC,kDAAwD;AACxD,4EAAoD;AAEpD,QAAQ,CAAC,sBAAsB,EAAE;IAC/B,EAAE,CAAC,QAAQ,EAAE;QACX,IAAA,cAAM,EAAC,8BAAC,qBAAW,IAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,CAAC;QAC5E,MAAM,CAAC,cAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACrD,MAAM,CAAC,cAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport \"@testing-library/jest-dom\";\nimport { render, screen } from \"@testing-library/react\";\nimport ExportModal from \"../components/ExportModal\";\n\ndescribe(\"Testing Export Modal\", function () {\n it(\"signin\", function () {\n render(<ExportModal isOpen={true} close={() => {}} reportId={undefined} />);\n expect(screen.getByLabelText(\"Email\")).toBeDefined();\n expect(screen.getByLabelText(\"Password\")).toBeDefined();\n });\n});\n"]}
@@ -4,9 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  /*---------------------------------------------------------------------------------------------
7
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
8
- * See LICENSE.md in the project root for license terms and full copyright notice.
9
- *--------------------------------------------------------------------------------------------*/
7
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
8
+ * See LICENSE.md in the project root for license terms and full copyright notice.
9
+ *--------------------------------------------------------------------------------------------*/
10
10
  const react_1 = __importDefault(require("react"));
11
11
  require("@testing-library/jest-dom");
12
12
  const react_2 = require("@testing-library/react");
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetHeader.test.js","sourceRoot":"","sources":["../../../src/test/WidgetHeader.test.tsx"],"names":[],"mappings":";;;;;AAAA;;;+FAG+F;AAC/F,kDAA0B;AAC1B,qCAAmC;AACnC,kDAAmE;AACnE,+CAAmD;AAEnD,QAAQ,CAAC,yBAAyB,EAAE;IAClC,EAAE,CAAC,4BAA4B,EAAE;QAC/B,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAAC,8BAAC,oBAAY,IAAC,KAAK,EAAC,OAAO,GAAG,CAAC,CAAC;QAC7D,MAAM,CAAC,cAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAChD,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;QAC1E,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE;QACzB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAC1B,8BAAC,oBAAY,IAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,GAAI,CACzD,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QACtE,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,WAAW,CACtD,wBAAwB,CACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE;QAClB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAC1B,8BAAC,oBAAY,IAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,GAAI,CACzE,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAC1E,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,WAAW,CAClD,wBAAwB,CACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAC1B,8BAAC,oBAAY,IAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,EAAE,YAAY,GAAI,CACvD,CAAC;QAEF,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAChE,IAAI,aAAa,KAAK,IAAI,EAAE;YAC1B,iBAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;SAChC;QACD,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport \"@testing-library/jest-dom\";\nimport { fireEvent, render, screen } from \"@testing-library/react\";\nimport { WidgetHeader } from \"../components/utils\";\n\ndescribe(\"Widget Header Component\", function () {\n it(\"should have hello as title\", function () {\n const { container } = render(<WidgetHeader title=\"hello\" />);\n expect(screen.getByText(\"hello\")).toBeDefined();\n expect(container.firstChild).toHaveClass(\"oclca-widget-header-container\");\n expect(container.firstChild?.firstChild).toHaveClass(\"oclca-title\");\n });\n\n it(\"with return function\", function () {\n const { container } = render(\n <WidgetHeader title=\"hello\" returnFn={async () => {}} />\n );\n expect(container.firstChild?.firstChild).toHaveClass(\"oclca-chevron\");\n expect(container.firstChild?.firstChild).not.toHaveClass(\n \"oclca-chevron-disabled\"\n );\n });\n\n it(\"with disabled\", function () {\n const { container } = render(\n <WidgetHeader title=\"hello\" disabled={true} returnFn={async () => {}} />\n );\n expect(container.firstChild?.firstChild).not.toHaveClass(\"oclca-chevron\");\n expect(container.firstChild?.firstChild).toHaveClass(\n \"oclca-chevron-disabled\"\n );\n });\n\n it(\"with mocked return function\", function () {\n const mockReturnFn = jest.fn();\n const { container } = render(\n <WidgetHeader title=\"hello\" returnFn={mockReturnFn} />\n );\n\n const toTestElement = container.querySelector(\"SvgChevronLeft\");\n if (toTestElement !== null) {\n fireEvent.click(toTestElement);\n }\n expect(mockReturnFn).toHaveBeenCalled;\n });\n});\n"]}
1
+ {"version":3,"file":"WidgetHeader.test.js","sourceRoot":"","sources":["../../../src/test/WidgetHeader.test.tsx"],"names":[],"mappings":";;;;;AAAA;;;gGAGgG;AAChG,kDAA0B;AAC1B,qCAAmC;AACnC,kDAAmE;AACnE,+CAAmD;AAEnD,QAAQ,CAAC,yBAAyB,EAAE;IAClC,EAAE,CAAC,4BAA4B,EAAE;QAC/B,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAAC,8BAAC,oBAAY,IAAC,KAAK,EAAC,OAAO,GAAG,CAAC,CAAC;QAC7D,MAAM,CAAC,cAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAChD,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;QAC1E,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE;QACzB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAAC,8BAAC,oBAAY,IAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,GAAI,CAAC,CAAC;QACvF,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QACtE,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE;QAClB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAAC,8BAAC,oBAAY,IAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,GAAI,CAAC,CAAC;QACvG,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAC1E,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAAC,8BAAC,oBAAY,IAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,EAAE,YAAY,GAAI,CAAC,CAAC;QAErF,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAChE,IAAI,aAAa,KAAK,IAAI,EAAE;YAC1B,iBAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;SAChC;QACD,MAAM,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport \"@testing-library/jest-dom\";\nimport { fireEvent, render, screen } from \"@testing-library/react\";\nimport { WidgetHeader } from \"../components/utils\";\n\ndescribe(\"Widget Header Component\", function () {\n it(\"should have hello as title\", function () {\n const { container } = render(<WidgetHeader title=\"hello\" />);\n expect(screen.getByText(\"hello\")).toBeDefined();\n expect(container.firstChild).toHaveClass(\"oclca-widget-header-container\");\n expect(container.firstChild?.firstChild).toHaveClass(\"oclca-title\");\n });\n\n it(\"with return function\", function () {\n const { container } = render(<WidgetHeader title=\"hello\" returnFn={async () => {}} />);\n expect(container.firstChild?.firstChild).toHaveClass(\"oclca-chevron\");\n expect(container.firstChild?.firstChild).not.toHaveClass(\"oclca-chevron-disabled\");\n });\n\n it(\"with disabled\", function () {\n const { container } = render(<WidgetHeader title=\"hello\" disabled={true} returnFn={async () => {}} />);\n expect(container.firstChild?.firstChild).not.toHaveClass(\"oclca-chevron\");\n expect(container.firstChild?.firstChild).toHaveClass(\"oclca-chevron-disabled\");\n });\n\n it(\"with mocked return function\", function () {\n const mockReturnFn = jest.fn();\n const { container } = render(<WidgetHeader title=\"hello\" returnFn={mockReturnFn} />);\n\n const toTestElement = container.querySelector(\"SvgChevronLeft\");\n if (toTestElement !== null) {\n fireEvent.click(toTestElement);\n }\n expect(mockReturnFn).toHaveBeenCalled;\n });\n});\n"]}
@@ -1,7 +1,10 @@
1
1
  import type { UiItemsProvider, Widget } from "@itwin/appui-react";
2
2
  import { StagePanelLocation, StagePanelSection } from "@itwin/appui-react";
3
+ import type { OneClickLCAProps } from "../components/OneClickLCAProps";
3
4
  export declare class OneClickLCAProvider implements UiItemsProvider {
5
+ private readonly _props?;
4
6
  readonly id = "OneClickLCAProvider";
7
+ constructor(_props?: OneClickLCAProps | undefined);
5
8
  provideWidgets(_stageId: string, stageUsage: string, location: StagePanelLocation, section?: StagePanelSection): ReadonlyArray<Widget>;
6
9
  }
7
10
  //# sourceMappingURL=OneClickLCAWidget.d.ts.map
@@ -8,18 +8,17 @@ const appui_react_1 = require("@itwin/appui-react");
8
8
  const OneClickLCA_1 = __importDefault(require("../components/OneClickLCA"));
9
9
  const react_1 = __importDefault(require("react"));
10
10
  class OneClickLCAProvider {
11
- constructor() {
11
+ constructor(_props) {
12
+ this._props = _props;
12
13
  this.id = "OneClickLCAProvider";
13
14
  }
14
15
  provideWidgets(_stageId, stageUsage, location, section) {
15
16
  const widgets = [];
16
- if (location === appui_react_1.StagePanelLocation.Left &&
17
- section === appui_react_1.StagePanelSection.Start &&
18
- stageUsage === appui_react_1.StageUsage.General) {
17
+ if (location === appui_react_1.StagePanelLocation.Left && section === appui_react_1.StagePanelSection.Start && stageUsage === appui_react_1.StageUsage.General) {
19
18
  const OneClickLCAWidget = {
20
19
  id: "OneClickLCAWidget",
21
20
  label: "One Click LCA",
22
- content: react_1.default.createElement(OneClickLCA_1.default, null),
21
+ content: react_1.default.createElement(OneClickLCA_1.default, { ...this._props }),
23
22
  };
24
23
  widgets.push(OneClickLCAWidget);
25
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OneClickLCAWidget.js","sourceRoot":"","sources":["../../../src/widgets/OneClickLCAWidget.tsx"],"names":[],"mappings":";;;;;;AAQA,oDAI4B;AAC5B,4EAAoD;AACpD,kDAA0B;AAE1B,MAAa,mBAAmB;IAAhC;QACkB,OAAE,GAAG,qBAAqB,CAAC;IAyB7C,CAAC;IAvBQ,cAAc,CACnB,QAAgB,EAChB,UAAkB,EAClB,QAA4B,EAC5B,OAA2B;QAE3B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IACE,QAAQ,KAAK,gCAAkB,CAAC,IAAI;YACpC,OAAO,KAAK,+BAAiB,CAAC,KAAK;YACnC,UAAU,KAAK,wBAAU,CAAC,OAAO,EACjC;YACA,MAAM,iBAAiB,GAAW;gBAChC,EAAE,EAAE,mBAAmB;gBACvB,KAAK,EAAE,eAAe;gBACtB,OAAO,EAAE,8BAAC,qBAAW,OAAE;aACxB,CAAC;YAEF,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SACjC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AA1BD,kDA0BC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type {\n UiItemsProvider,\n Widget,\n} from \"@itwin/appui-react\";\nimport {\n StagePanelLocation,\n StagePanelSection,\n StageUsage,\n} from \"@itwin/appui-react\";\nimport OneClickLCA from \"../components/OneClickLCA\";\nimport React from \"react\";\n\nexport class OneClickLCAProvider implements UiItemsProvider {\n public readonly id = \"OneClickLCAProvider\";\n\n public provideWidgets(\n _stageId: string,\n stageUsage: string,\n location: StagePanelLocation,\n section?: StagePanelSection\n ): ReadonlyArray<Widget> {\n const widgets: Widget[] = [];\n if (\n location === StagePanelLocation.Left &&\n section === StagePanelSection.Start &&\n stageUsage === StageUsage.General\n ) {\n const OneClickLCAWidget: Widget = {\n id: \"OneClickLCAWidget\",\n label: \"One Click LCA\",\n content: <OneClickLCA/>,\n };\n\n widgets.push(OneClickLCAWidget);\n }\n\n return widgets;\n }\n}\n"]}
1
+ {"version":3,"file":"OneClickLCAWidget.js","sourceRoot":"","sources":["../../../src/widgets/OneClickLCAWidget.tsx"],"names":[],"mappings":";;;;;;AAKA,oDAAuF;AACvF,4EAAoD;AACpD,kDAA0B;AAG1B,MAAa,mBAAmB;IAG9B,YAA6B,MAAyB;QAAzB,WAAM,GAAN,MAAM,CAAmB;QAFtC,OAAE,GAAG,qBAAqB,CAAC;IAEc,CAAC;IAEnD,cAAc,CAAC,QAAgB,EAAE,UAAkB,EAAE,QAA4B,EAAE,OAA2B;QACnH,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,QAAQ,KAAK,gCAAkB,CAAC,IAAI,IAAI,OAAO,KAAK,+BAAiB,CAAC,KAAK,IAAI,UAAU,KAAK,wBAAU,CAAC,OAAO,EAAE;YACpH,MAAM,iBAAiB,GAAW;gBAChC,EAAE,EAAE,mBAAmB;gBACvB,KAAK,EAAE,eAAe;gBACtB,OAAO,EAAE,8BAAC,qBAAW,OAAK,IAAI,CAAC,MAAM,GAAI;aAC1C,CAAC;YAEF,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SACjC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAnBD,kDAmBC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport type { UiItemsProvider, Widget } from \"@itwin/appui-react\";\nimport { StagePanelLocation, StagePanelSection, StageUsage } from \"@itwin/appui-react\";\nimport OneClickLCA from \"../components/OneClickLCA\";\nimport React from \"react\";\nimport type { OneClickLCAProps } from \"../components/OneClickLCAProps\";\n\nexport class OneClickLCAProvider implements UiItemsProvider {\n public readonly id = \"OneClickLCAProvider\";\n\n constructor(private readonly _props?: OneClickLCAProps) {}\n\n public provideWidgets(_stageId: string, stageUsage: string, location: StagePanelLocation, section?: StagePanelSection): ReadonlyArray<Widget> {\n const widgets: Widget[] = [];\n if (location === StagePanelLocation.Left && section === StagePanelSection.Start && stageUsage === StageUsage.General) {\n const OneClickLCAWidget: Widget = {\n id: \"OneClickLCAWidget\",\n label: \"One Click LCA\",\n content: <OneClickLCA {...this._props} />,\n };\n\n widgets.push(OneClickLCAWidget);\n }\n\n return widgets;\n }\n}\n"]}
@@ -4,7 +4,11 @@ interface ExportProps {
4
4
  isOpen: boolean;
5
5
  close: () => void;
6
6
  reportId: string | undefined;
7
+ carbonCalculationBasePath?: string;
7
8
  }
9
+ /**
10
+ * @internal
11
+ */
8
12
  declare const ExportModal: (props: ExportProps) => JSX.Element;
9
13
  export default ExportModal;
10
14
  //# sourceMappingURL=ExportModal.d.ts.map
@@ -1,18 +1,24 @@
1
1
  /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
5
  import "./ExportModal.scss";
6
- import React, { useCallback, useEffect, useMemo, useRef, useState, } from "react";
6
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
7
7
  import { IModelApp } from "@itwin/core-frontend";
8
- import { Alert, Button, LabeledInput, Modal, ProgressLinear, ProgressRadial, Text, toaster, } from "@itwin/itwinui-react";
9
- import { SvgVisibilityHide, SvgVisibilityShow, } from "@itwin/itwinui-icons-react";
10
- import { CarbonUploadState, OCLCAJobsClient } from "@itwin/insights-client";
8
+ import { Alert, Button, LabeledInput, Modal, ProgressLinear, ProgressRadial, Text, toaster } from "@itwin/itwinui-react";
9
+ import { SvgVisibilityHide, SvgVisibilityShow } from "@itwin/itwinui-icons-react";
10
+ import { CarbonUploadState } from "@itwin/insights-client";
11
11
  import logo from "../../public/logo/oneClickLCALogo.png";
12
+ import { useOCLCAJobsClient } from "./context/OCLCAJobsClientContext";
13
+ import { OCLCAApiHelper } from "./api/OCLCAApiHelper";
14
+ /**
15
+ * @internal
16
+ */
12
17
  const ExportModal = (props) => {
13
18
  const MILI_SECONDS = 1000;
14
19
  const PIN_INTERVAL = 1000;
15
- const oneClickLCAClientApi = useMemo(() => new OCLCAJobsClient(), []);
20
+ const oneClickLCAClient = useOCLCAJobsClient();
21
+ const oclcaApiHelper = useMemo(() => new OCLCAApiHelper(), []);
16
22
  const [email, setEmail] = useState("");
17
23
  const [password, setPassword] = useState("");
18
24
  const [passwordIsVisible, showPassword] = useState(false);
@@ -46,7 +52,7 @@ const ExportModal = (props) => {
46
52
  const intervalId = window.setInterval(async () => {
47
53
  const token = (await IModelApp.authorizationClient?.getAccessToken()) ?? "";
48
54
  if (job.id && token) {
49
- const currentJobStatus = await oneClickLCAClientApi.getOCLCAJobStatus(token, job?.id);
55
+ const currentJobStatus = await oneClickLCAClient.getOCLCAJobStatus(token, job?.id);
50
56
  if (currentJobStatus.status) {
51
57
  if (currentJobStatus.status === CarbonUploadState.Succeeded) {
52
58
  setJobLink(!!currentJobStatus?._links?.oneclicklca?.href ? { href: currentJobStatus._links.oneclicklca.href } : undefined);
@@ -60,12 +66,12 @@ const ExportModal = (props) => {
60
66
  }
61
67
  }, PIN_INTERVAL);
62
68
  intervalRef.current = intervalId;
63
- }, [setJobLink, setJobStatus, oneClickLCAClientApi]);
69
+ }, [setJobLink, setJobStatus, oneClickLCAClient]);
64
70
  const runJob = useCallback(async (token) => {
65
71
  const accessToken = (await IModelApp.authorizationClient?.getAccessToken()) ?? "";
66
72
  if (props.reportId && token) {
67
73
  try {
68
- const jobCreated = await oneClickLCAClientApi.createJob(accessToken, {
74
+ const jobCreated = await oneClickLCAClient.createJob(accessToken, {
69
75
  reportId: props.reportId,
70
76
  token,
71
77
  });
@@ -88,12 +94,12 @@ const ExportModal = (props) => {
88
94
  setJobStatus(CarbonUploadState.Failed);
89
95
  toaster.negative("Invalid reportId.");
90
96
  }
91
- }, [props, pinStatus, oneClickLCAClientApi]);
97
+ }, [props, pinStatus, oneClickLCAClient]);
92
98
  const signin = useCallback(async (e) => {
93
99
  e.preventDefault();
94
100
  startSigningIn(true);
95
101
  try {
96
- const result = await oneClickLCAClientApi.getOCLCAAccessToken(email, password);
102
+ const result = await oclcaApiHelper.getOCLCAAccessToken(email, password);
97
103
  if (result && result.access_token && result.expires_in) {
98
104
  cacheToken({
99
105
  token: result.access_token,
@@ -112,14 +118,7 @@ const ExportModal = (props) => {
112
118
  console.error(err);
113
119
  }
114
120
  startSigningIn(false);
115
- }, [
116
- email,
117
- password,
118
- resetSignin,
119
- cacheToken,
120
- showSigninError,
121
- oneClickLCAClientApi,
122
- ]);
121
+ }, [email, password, resetSignin, cacheToken, showSigninError, oclcaApiHelper]);
123
122
  const onClose = useCallback(() => {
124
123
  resetSignin();
125
124
  setJobStatus(undefined);
@@ -151,7 +150,8 @@ const ExportModal = (props) => {
151
150
  default:
152
151
  return (React.createElement("div", { className: "oclca-progress-radial-container" },
153
152
  React.createElement(Text, null,
154
- "Invalid Job Status ",
153
+ "Invalid Job Status",
154
+ " ",
155
155
  React.createElement("span", { role: "img", "aria-label": "sad" }, "\uD83D\uDE14"))));
156
156
  }
157
157
  }, []);
@@ -166,8 +166,7 @@ const ExportModal = (props) => {
166
166
  }
167
167
  }, [props.isOpen, isSignedIn, cache, runJob]);
168
168
  useEffect(() => {
169
- if (jobStatus === CarbonUploadState.Succeeded ||
170
- jobStatus === CarbonUploadState.Failed) {
169
+ if (jobStatus === CarbonUploadState.Succeeded || jobStatus === CarbonUploadState.Failed) {
171
170
  if (intervalRef.current) {
172
171
  window.clearInterval(intervalRef.current);
173
172
  }
@@ -192,9 +191,9 @@ const ExportModal = (props) => {
192
191
  React.createElement("div", { className: "oclca-signin-input" },
193
192
  React.createElement(LabeledInput, { label: "Email", value: email, onChange: (v) => setEmail(v.target.value), type: "email", status: emailError ? "negative" : undefined, message: emailError ? "Invalid email address." : "", required: true })),
194
193
  React.createElement("div", { className: "oclca-signin-input" },
195
- React.createElement(LabeledInput, { label: "Password", value: password, onChange: (e) => setPassword(e.target.value), type: passwordIsVisible ? "text" : "password", svgIcon: passwordIsVisible ? (React.createElement(SvgVisibilityHide, { onClick: () => showPassword(!passwordIsVisible) })) : (React.createElement(SvgVisibilityShow, null)), iconDisplayStyle: "inline", required: true })),
194
+ React.createElement(LabeledInput, { label: "Password", value: password, onChange: (e) => setPassword(e.target.value), type: passwordIsVisible ? "text" : "password", svgIcon: passwordIsVisible ? React.createElement(SvgVisibilityHide, { onClick: () => showPassword(!passwordIsVisible) }) : React.createElement(SvgVisibilityShow, null), iconDisplayStyle: "inline", required: true })),
196
195
  React.createElement("div", { className: "oclca-signin-button-container" },
197
- React.createElement(Button, { className: "oclca-signin-button", type: "submit", styleType: "cta", disabled: !isValidSignin() }, isSigningIn ? (React.createElement(ProgressRadial, { className: "oclca-signin-wait", indeterminate: true, size: "small", value: 50 })) : ("Sign In")))))),
196
+ React.createElement(Button, { className: "oclca-signin-button", type: "submit", styleType: "cta", disabled: !isValidSignin() }, isSigningIn ? React.createElement(ProgressRadial, { className: "oclca-signin-wait", indeterminate: true, size: "small", value: 50 }) : "Sign In"))))),
198
197
  isSignedIn && !jobStatus && (React.createElement("div", { className: "oclca-progress-radial-container" },
199
198
  React.createElement(ProgressRadial, { indeterminate: true, size: "large", value: 50 }))),
200
199
  isSignedIn && jobStatus && getStatusComponent(jobStatus, jobLink?.href)));
@@ -1 +1 @@
1
- {"version":3,"file":"ExportModal.js","sourceRoot":"","sources":["../../../src/components/ExportModal.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport \"./ExportModal.scss\";\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport {\n Alert,\n Button,\n LabeledInput,\n Modal,\n ProgressLinear,\n ProgressRadial,\n Text,\n toaster,\n} from \"@itwin/itwinui-react\";\nimport {\n SvgVisibilityHide,\n SvgVisibilityShow,\n} from \"@itwin/itwinui-icons-react\";\nimport type { Link, OCLCAJob } from \"@itwin/insights-client\";\nimport { CarbonUploadState, OCLCAJobsClient } from \"@itwin/insights-client\";\nimport logo from \"../../public/logo/oneClickLCALogo.png\";\n\ninterface ExportProps {\n isOpen: boolean;\n close: () => void;\n reportId: string | undefined;\n}\n\ninterface OclcaTokenCache {\n token: string;\n exp: number;\n}\n\nconst ExportModal = (props: ExportProps) => {\n const MILI_SECONDS = 1000;\n const PIN_INTERVAL = 1000;\n const oneClickLCAClientApi = useMemo(() => new OCLCAJobsClient(), []);\n\n const [email, setEmail] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [passwordIsVisible, showPassword] = useState(false);\n const [signinError, showSigninError] = useState(false);\n const [emailError, setEmailError] = useState(false);\n const [cache, cacheToken] = useState<OclcaTokenCache>();\n\n const [jobStatus, setJobStatus] = useState<CarbonUploadState>();\n const [jobLink, setJobLink] = useState<Link | undefined>();\n\n const isValidEmail = useCallback(() => {\n return /\\S+@\\S+\\.\\S+/.test(email);\n }, [email]);\n\n const isValidPassword = useCallback(() => {\n return password !== \"\";\n }, [password]);\n\n const validateSignin = useCallback(() => {\n return cache?.token && cache?.exp > Date.now();\n }, [cache]);\n\n const [isSignedIn, setIsSignedIn] = useState(validateSignin());\n const [isSigningIn, startSigningIn] = useState(false);\n const intervalRef = useRef<number>();\n\n const isValidSignin = useCallback(() => {\n return isValidEmail() && isValidPassword();\n }, [isValidEmail, isValidPassword]);\n\n const resetSignin = useCallback(() => {\n setEmail(\"\");\n setPassword(\"\");\n showPassword(false);\n showSigninError(false);\n }, [setEmail, setPassword, showPassword, showSigninError]);\n\n const pinStatus = useCallback(\n (job: OCLCAJob) => {\n const intervalId = window.setInterval(async () => {\n const token =\n (await IModelApp.authorizationClient?.getAccessToken()) ?? \"\";\n if (job.id && token) {\n const currentJobStatus =\n await oneClickLCAClientApi.getOCLCAJobStatus(token, job?.id);\n if (currentJobStatus.status) {\n if (\n currentJobStatus.status === CarbonUploadState.Succeeded\n ) {\n setJobLink(!!currentJobStatus?._links?.oneclicklca?.href ? { href: currentJobStatus._links.oneclicklca.href } : undefined);\n }\n setJobStatus(currentJobStatus.status);\n } else {\n setJobStatus(CarbonUploadState.Failed);\n toaster.negative(\"Failed to get job status. 😔\");\n }\n }\n }, PIN_INTERVAL);\n intervalRef.current = intervalId;\n },\n [setJobLink, setJobStatus, oneClickLCAClientApi]\n );\n\n const runJob = useCallback(\n async (token: string) => {\n const accessToken =\n (await IModelApp.authorizationClient?.getAccessToken()) ?? \"\";\n if (props.reportId && token) {\n try {\n const jobCreated = await oneClickLCAClientApi.createJob(\n accessToken,\n {\n reportId: props.reportId,\n token,\n }\n );\n if (jobCreated.id) {\n pinStatus(jobCreated);\n } else {\n setJobStatus(CarbonUploadState.Failed);\n toaster.negative(\"Failed to create one click lca job. 😔\");\n }\n } catch (e) {\n setJobStatus(CarbonUploadState.Failed);\n toaster.negative(\"You do not have the required permissions. Please contact the project administrator.\");\n /* eslint-disable no-console */\n console.error(e);\n }\n } else {\n setJobStatus(CarbonUploadState.Failed);\n toaster.negative(\"Invalid reportId.\");\n }\n },\n [props, pinStatus, oneClickLCAClientApi]\n );\n\n const signin = useCallback(\n async (e) => {\n e.preventDefault();\n startSigningIn(true);\n try {\n const result = await oneClickLCAClientApi.getOCLCAAccessToken(\n email,\n password\n );\n if (result && result.access_token && result.expires_in) {\n cacheToken({\n token: result.access_token,\n exp: Date.now() + result.expires_in * MILI_SECONDS,\n });\n resetSignin();\n setIsSignedIn(true);\n } else {\n showSigninError(true);\n }\n } catch (err) {\n toaster.negative(\"Failed to sign in One Click LCA.\");\n /* eslint-disable no-console */\n console.error(err);\n }\n startSigningIn(false);\n },\n [\n email,\n password,\n resetSignin,\n cacheToken,\n showSigninError,\n oneClickLCAClientApi,\n ]\n );\n\n const onClose = useCallback(() => {\n resetSignin();\n setJobStatus(undefined);\n setJobLink(undefined);\n if (intervalRef.current) {\n window.clearInterval(intervalRef.current);\n }\n props.close();\n }, [props, resetSignin]);\n\n const getStatusComponent = useCallback(\n (status: CarbonUploadState, link: string | undefined) => {\n switch (status) {\n case CarbonUploadState.Queued:\n return (\n <div className=\"oclca-progress-radial-container\">\n <ProgressRadial indeterminate size=\"small\" value={50} />\n <Text variant=\"leading\" className=\"oclca-status-text\">\n Export queued\n </Text>\n </div>\n );\n case CarbonUploadState.Running:\n return (\n <div className=\"oclca-progress-linear-container\">\n <ProgressLinear indeterminate />\n <Text variant=\"leading\" className=\"oclca-status-text\">\n Export running\n </Text>\n </div>\n );\n case CarbonUploadState.Succeeded:\n return (\n link && (\n <div className=\"oclca-progress-radial-container\">\n <ProgressRadial status=\"positive\" size=\"small\" value={50} />\n <a\n className=\"oclca-report-button\"\n href={link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <Button styleType=\"cta\">Open in One Click LCA</Button>\n </a>\n </div>\n )\n );\n case CarbonUploadState.Failed:\n return (\n <div className=\"oclca-progress-radial-container\">\n <ProgressRadial status=\"negative\" size=\"small\" value={100} />\n <Text variant=\"leading\" className=\"oclca-status-text\">\n Export failed\n </Text>\n </div>\n );\n default:\n return (\n <div className=\"oclca-progress-radial-container\">\n <Text>Invalid Job Status <span role=\"img\" aria-label=\"sad\">😔</span></Text>\n </div>\n );\n }\n },\n []\n );\n\n useEffect(() => {\n if (props.isOpen && isSignedIn && cache?.token) {\n runJob(cache.token).catch((err) => {\n setJobStatus(CarbonUploadState.Failed);\n toaster.negative(\"Error occurs while running the job. 😔\");\n /* eslint-disable no-console */\n console.error(err);\n });\n }\n }, [props.isOpen, isSignedIn, cache, runJob]);\n\n useEffect(() => {\n if (\n jobStatus === CarbonUploadState.Succeeded ||\n jobStatus === CarbonUploadState.Failed\n ) {\n if (intervalRef.current) {\n window.clearInterval(intervalRef.current);\n }\n }\n }, [jobStatus]);\n\n useEffect(() => {\n if (email !== \"\") {\n const timeoutId = setTimeout(() => setEmailError(!isValidEmail()), 1000);\n return () => clearTimeout(timeoutId);\n } else {\n setEmailError(false);\n return;\n }\n }, [email, isValidEmail]);\n\n return (\n <Modal\n data-testid=\"export-modal\"\n isOpen={props.isOpen}\n onClose={onClose}\n title={null}\n closeOnExternalClick={false}\n >\n {!isSignedIn && (\n <div className=\"oclca-signin\">\n <img\n className=\"oclca-signin-icon\"\n src={logo}\n alt=\"One Click LCA® software\"\n data-height-percentage=\"80\"\n data-actual-width=\"1200\"\n data-actual-height=\"600\"\n />\n <form onSubmit={signin} className=\"oclca-signin-form\">\n <div className=\"oclca-signin-prompt\">Sign in to One Click LCA.</div>\n {signinError && (\n <Alert type=\"negative\" className=\"oclca-signin-error\">\n Incorrect email or password.\n </Alert>\n )}\n <div className=\"oclca-signin-input\">\n <LabeledInput\n label=\"Email\"\n value={email}\n onChange={(v) => setEmail(v.target.value)}\n type=\"email\"\n status={emailError ? \"negative\" : undefined}\n message={emailError ? \"Invalid email address.\" : \"\"}\n required\n />\n </div>\n <div className=\"oclca-signin-input\">\n <LabeledInput\n label=\"Password\"\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n type={passwordIsVisible ? \"text\" : \"password\"}\n svgIcon={\n passwordIsVisible ? (\n <SvgVisibilityHide\n onClick={() => showPassword(!passwordIsVisible)}\n />\n ) : (\n <SvgVisibilityShow />\n )\n }\n iconDisplayStyle=\"inline\"\n required\n />\n </div>\n\n <div className=\"oclca-signin-button-container\">\n <Button\n className=\"oclca-signin-button\"\n type=\"submit\"\n styleType=\"cta\"\n disabled={!isValidSignin()}\n >\n {isSigningIn ? (\n <ProgressRadial\n className=\"oclca-signin-wait\"\n indeterminate\n size=\"small\"\n value={50}\n />\n ) : (\n \"Sign In\"\n )}\n </Button>\n </div>\n </form>\n </div>\n )}\n {isSignedIn && !jobStatus && (\n <div className=\"oclca-progress-radial-container\">\n <ProgressRadial indeterminate size=\"large\" value={50} />\n </div>\n )}\n {isSignedIn && jobStatus && getStatusComponent(jobStatus, jobLink?.href)}\n </Modal>\n );\n};\n\nexport default ExportModal;\n"]}
1
+ {"version":3,"file":"ExportModal.js","sourceRoot":"","sources":["../../../src/components/ExportModal.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport \"./ExportModal.scss\";\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { Alert, Button, LabeledInput, Modal, ProgressLinear, ProgressRadial, Text, toaster } from \"@itwin/itwinui-react\";\nimport { SvgVisibilityHide, SvgVisibilityShow } from \"@itwin/itwinui-icons-react\";\nimport type { Link, OCLCAJob } from \"@itwin/insights-client\";\nimport { CarbonUploadState } from \"@itwin/insights-client\";\nimport logo from \"../../public/logo/oneClickLCALogo.png\";\nimport { useOCLCAJobsClient } from \"./context/OCLCAJobsClientContext\";\nimport { OCLCAApiHelper } from \"./api/OCLCAApiHelper\";\n\ninterface ExportProps {\n isOpen: boolean;\n close: () => void;\n reportId: string | undefined;\n carbonCalculationBasePath?: string;\n}\n\ninterface OclcaTokenCache {\n token: string;\n exp: number;\n}\n\n/**\n * @internal\n */\nconst ExportModal = (props: ExportProps) => {\n const MILI_SECONDS = 1000;\n const PIN_INTERVAL = 1000;\n const oneClickLCAClient = useOCLCAJobsClient();\n const oclcaApiHelper = useMemo(() => new OCLCAApiHelper(), []);\n\n const [email, setEmail] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [passwordIsVisible, showPassword] = useState(false);\n const [signinError, showSigninError] = useState(false);\n const [emailError, setEmailError] = useState(false);\n const [cache, cacheToken] = useState<OclcaTokenCache>();\n\n const [jobStatus, setJobStatus] = useState<CarbonUploadState>();\n const [jobLink, setJobLink] = useState<Link | undefined>();\n\n const isValidEmail = useCallback(() => {\n return /\\S+@\\S+\\.\\S+/.test(email);\n }, [email]);\n\n const isValidPassword = useCallback(() => {\n return password !== \"\";\n }, [password]);\n\n const validateSignin = useCallback(() => {\n return cache?.token && cache?.exp > Date.now();\n }, [cache]);\n\n const [isSignedIn, setIsSignedIn] = useState(validateSignin());\n const [isSigningIn, startSigningIn] = useState(false);\n const intervalRef = useRef<number>();\n\n const isValidSignin = useCallback(() => {\n return isValidEmail() && isValidPassword();\n }, [isValidEmail, isValidPassword]);\n\n const resetSignin = useCallback(() => {\n setEmail(\"\");\n setPassword(\"\");\n showPassword(false);\n showSigninError(false);\n }, [setEmail, setPassword, showPassword, showSigninError]);\n\n const pinStatus = useCallback(\n (job: OCLCAJob) => {\n const intervalId = window.setInterval(async () => {\n const token = (await IModelApp.authorizationClient?.getAccessToken()) ?? \"\";\n if (job.id && token) {\n const currentJobStatus = await oneClickLCAClient.getOCLCAJobStatus(token, job?.id);\n if (currentJobStatus.status) {\n if (currentJobStatus.status === CarbonUploadState.Succeeded) {\n setJobLink(!!currentJobStatus?._links?.oneclicklca?.href ? { href: currentJobStatus._links.oneclicklca.href } : undefined);\n }\n setJobStatus(currentJobStatus.status);\n } else {\n setJobStatus(CarbonUploadState.Failed);\n toaster.negative(\"Failed to get job status. 😔\");\n }\n }\n }, PIN_INTERVAL);\n intervalRef.current = intervalId;\n },\n [setJobLink, setJobStatus, oneClickLCAClient],\n );\n\n const runJob = useCallback(\n async (token: string) => {\n const accessToken = (await IModelApp.authorizationClient?.getAccessToken()) ?? \"\";\n if (props.reportId && token) {\n try {\n const jobCreated = await oneClickLCAClient.createJob(accessToken, {\n reportId: props.reportId,\n token,\n });\n if (jobCreated.id) {\n pinStatus(jobCreated);\n } else {\n setJobStatus(CarbonUploadState.Failed);\n toaster.negative(\"Failed to create one click lca job. 😔\");\n }\n } catch (e) {\n setJobStatus(CarbonUploadState.Failed);\n toaster.negative(\"You do not have the required permissions. Please contact the project administrator.\");\n /* eslint-disable no-console */\n console.error(e);\n }\n } else {\n setJobStatus(CarbonUploadState.Failed);\n toaster.negative(\"Invalid reportId.\");\n }\n },\n [props, pinStatus, oneClickLCAClient],\n );\n\n const signin = useCallback(\n async (e) => {\n e.preventDefault();\n startSigningIn(true);\n try {\n const result = await oclcaApiHelper.getOCLCAAccessToken(email, password);\n if (result && result.access_token && result.expires_in) {\n cacheToken({\n token: result.access_token,\n exp: Date.now() + result.expires_in * MILI_SECONDS,\n });\n resetSignin();\n setIsSignedIn(true);\n } else {\n showSigninError(true);\n }\n } catch (err) {\n toaster.negative(\"Failed to sign in One Click LCA.\");\n /* eslint-disable no-console */\n console.error(err);\n }\n startSigningIn(false);\n },\n [email, password, resetSignin, cacheToken, showSigninError, oclcaApiHelper],\n );\n\n const onClose = useCallback(() => {\n resetSignin();\n setJobStatus(undefined);\n setJobLink(undefined);\n if (intervalRef.current) {\n window.clearInterval(intervalRef.current);\n }\n props.close();\n }, [props, resetSignin]);\n\n const getStatusComponent = useCallback((status: CarbonUploadState, link: string | undefined) => {\n switch (status) {\n case CarbonUploadState.Queued:\n return (\n <div className=\"oclca-progress-radial-container\">\n <ProgressRadial indeterminate size=\"small\" value={50} />\n <Text variant=\"leading\" className=\"oclca-status-text\">\n Export queued\n </Text>\n </div>\n );\n case CarbonUploadState.Running:\n return (\n <div className=\"oclca-progress-linear-container\">\n <ProgressLinear indeterminate />\n <Text variant=\"leading\" className=\"oclca-status-text\">\n Export running\n </Text>\n </div>\n );\n case CarbonUploadState.Succeeded:\n return (\n link && (\n <div className=\"oclca-progress-radial-container\">\n <ProgressRadial status=\"positive\" size=\"small\" value={50} />\n <a className=\"oclca-report-button\" href={link} target=\"_blank\" rel=\"noopener noreferrer\">\n <Button styleType=\"cta\">Open in One Click LCA</Button>\n </a>\n </div>\n )\n );\n case CarbonUploadState.Failed:\n return (\n <div className=\"oclca-progress-radial-container\">\n <ProgressRadial status=\"negative\" size=\"small\" value={100} />\n <Text variant=\"leading\" className=\"oclca-status-text\">\n Export failed\n </Text>\n </div>\n );\n default:\n return (\n <div className=\"oclca-progress-radial-container\">\n <Text>\n Invalid Job Status{\" \"}\n <span role=\"img\" aria-label=\"sad\">\n 😔\n </span>\n </Text>\n </div>\n );\n }\n }, []);\n\n useEffect(() => {\n if (props.isOpen && isSignedIn && cache?.token) {\n runJob(cache.token).catch((err) => {\n setJobStatus(CarbonUploadState.Failed);\n toaster.negative(\"Error occurs while running the job. 😔\");\n /* eslint-disable no-console */\n console.error(err);\n });\n }\n }, [props.isOpen, isSignedIn, cache, runJob]);\n\n useEffect(() => {\n if (jobStatus === CarbonUploadState.Succeeded || jobStatus === CarbonUploadState.Failed) {\n if (intervalRef.current) {\n window.clearInterval(intervalRef.current);\n }\n }\n }, [jobStatus]);\n\n useEffect(() => {\n if (email !== \"\") {\n const timeoutId = setTimeout(() => setEmailError(!isValidEmail()), 1000);\n return () => clearTimeout(timeoutId);\n } else {\n setEmailError(false);\n return;\n }\n }, [email, isValidEmail]);\n\n return (\n <Modal data-testid=\"export-modal\" isOpen={props.isOpen} onClose={onClose} title={null} closeOnExternalClick={false}>\n {!isSignedIn && (\n <div className=\"oclca-signin\">\n <img\n className=\"oclca-signin-icon\"\n src={logo}\n alt=\"One Click LCA® software\"\n data-height-percentage=\"80\"\n data-actual-width=\"1200\"\n data-actual-height=\"600\"\n />\n <form onSubmit={signin} className=\"oclca-signin-form\">\n <div className=\"oclca-signin-prompt\">Sign in to One Click LCA.</div>\n {signinError && (\n <Alert type=\"negative\" className=\"oclca-signin-error\">\n Incorrect email or password.\n </Alert>\n )}\n <div className=\"oclca-signin-input\">\n <LabeledInput\n label=\"Email\"\n value={email}\n onChange={(v) => setEmail(v.target.value)}\n type=\"email\"\n status={emailError ? \"negative\" : undefined}\n message={emailError ? \"Invalid email address.\" : \"\"}\n required\n />\n </div>\n <div className=\"oclca-signin-input\">\n <LabeledInput\n label=\"Password\"\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n type={passwordIsVisible ? \"text\" : \"password\"}\n svgIcon={passwordIsVisible ? <SvgVisibilityHide onClick={() => showPassword(!passwordIsVisible)} /> : <SvgVisibilityShow />}\n iconDisplayStyle=\"inline\"\n required\n />\n </div>\n\n <div className=\"oclca-signin-button-container\">\n <Button className=\"oclca-signin-button\" type=\"submit\" styleType=\"cta\" disabled={!isValidSignin()}>\n {isSigningIn ? <ProgressRadial className=\"oclca-signin-wait\" indeterminate size=\"small\" value={50} /> : \"Sign In\"}\n </Button>\n </div>\n </form>\n </div>\n )}\n {isSignedIn && !jobStatus && (\n <div className=\"oclca-progress-radial-container\">\n <ProgressRadial indeterminate size=\"large\" value={50} />\n </div>\n )}\n {isSignedIn && jobStatus && getStatusComponent(jobStatus, jobLink?.href)}\n </Modal>\n );\n};\n\nexport default ExportModal;\n"]}
@@ -1,5 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import "./Reports.scss";
3
- declare const OneClickLCA: () => JSX.Element;
3
+ import type { OneClickLCAProps } from "./OneClickLCAProps";
4
+ declare const OneClickLCA: (props?: OneClickLCAProps | undefined) => JSX.Element;
4
5
  export default OneClickLCA;
5
6
  //# sourceMappingURL=OneClickLCA.d.ts.map
@@ -1,13 +1,21 @@
1
1
  /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
5
- import React from "react";
6
- import Reports from "./Reports";
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import React, { useEffect, useState } from "react";
6
+ import { Reports } from "./Reports";
7
7
  import "./Reports.scss";
8
- const OneClickLCA = () => {
9
- return (React.createElement("div", { className: "oclca-container" },
10
- React.createElement(Reports, null)));
8
+ import { createDefaultReportsClient, ReportsClientContext } from "./context/ReportsClientContext";
9
+ import { createDefaultOCLCAJobsClient, OCLCAJobsClientContext } from "./context/OCLCAJobsClientContext";
10
+ const OneClickLCA = (props) => {
11
+ const [reportsClient, setReportsClient] = useState(props?.reportsClient ?? createDefaultReportsClient(props?.reportingBasePath));
12
+ const [oclcaJobsClient, setOclcaJobsClient] = useState(props?.oclcaJobsClient ?? createDefaultOCLCAJobsClient(props?.carbonCalculationBasePath));
13
+ useEffect(() => setReportsClient(props?.reportsClient ?? createDefaultReportsClient(props?.reportingBasePath)), [props?.reportingBasePath, props?.reportsClient]);
14
+ useEffect(() => setOclcaJobsClient(props?.oclcaJobsClient ?? createDefaultOCLCAJobsClient(props?.carbonCalculationBasePath)), [props?.carbonCalculationBasePath, props?.oclcaJobsClient]);
15
+ return (React.createElement(ReportsClientContext.Provider, { value: reportsClient },
16
+ React.createElement(OCLCAJobsClientContext.Provider, { value: oclcaJobsClient },
17
+ React.createElement("div", { className: "oclca-container" },
18
+ React.createElement(Reports, null)))));
11
19
  };
12
20
  export default OneClickLCA;
13
21
  //# sourceMappingURL=OneClickLCA.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OneClickLCA.js","sourceRoot":"","sources":["../../../src/components/OneClickLCA.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,gBAAgB,CAAC;AAExB,MAAM,WAAW,GAAG,GAAG,EAAE;IACvB,OAAO,CACL,6BAAK,SAAS,EAAC,iBAAiB;QAC9B,oBAAC,OAAO,OAAG,CACP,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport Reports from \"./Reports\";\nimport \"./Reports.scss\";\n\nconst OneClickLCA = () => {\n return (\n <div className=\"oclca-container\">\n <Reports />\n </div>\n );\n};\n\nexport default OneClickLCA;\n"]}
1
+ {"version":3,"file":"OneClickLCA.js","sourceRoot":"","sources":["../../../src/components/OneClickLCA.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,gBAAgB,CAAC;AAGxB,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAElG,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAExG,MAAM,WAAW,GAAG,CAAC,KAAwB,EAAE,EAAE;IAC/C,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAiB,KAAK,EAAE,aAAa,IAAI,0BAA0B,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACjJ,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CACpD,KAAK,EAAE,eAAe,IAAI,4BAA4B,CAAC,KAAK,EAAE,yBAAyB,CAAC,CACzF,CAAC;IAEF,SAAS,CACP,GAAG,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,IAAI,0BAA0B,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,EACpG,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,aAAa,CAAC,CACjD,CAAC;IACF,SAAS,CACP,GAAG,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,eAAe,IAAI,4BAA4B,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC,EAClH,CAAC,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,eAAe,CAAC,CAC3D,CAAC;IAEF,OAAO,CACL,oBAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,aAAa;QACjD,oBAAC,sBAAsB,CAAC,QAAQ,IAAC,KAAK,EAAE,eAAe;YACrD,6BAAK,SAAS,EAAC,iBAAiB;gBAC9B,oBAAC,OAAO,OAAG,CACP,CAC0B,CACJ,CACjC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport React, { useEffect, useState } from \"react\";\nimport { Reports } from \"./Reports\";\nimport \"./Reports.scss\";\n\nimport type { OneClickLCAProps } from \"./OneClickLCAProps\";\nimport { createDefaultReportsClient, ReportsClientContext } from \"./context/ReportsClientContext\";\nimport type { IOCLCAJobsClient, IReportsClient } from \"@itwin/insights-client\";\nimport { createDefaultOCLCAJobsClient, OCLCAJobsClientContext } from \"./context/OCLCAJobsClientContext\";\n\nconst OneClickLCA = (props?: OneClickLCAProps) => {\n const [reportsClient, setReportsClient] = useState<IReportsClient>(props?.reportsClient ?? createDefaultReportsClient(props?.reportingBasePath));\n const [oclcaJobsClient, setOclcaJobsClient] = useState<IOCLCAJobsClient>(\n props?.oclcaJobsClient ?? createDefaultOCLCAJobsClient(props?.carbonCalculationBasePath),\n );\n\n useEffect(\n () => setReportsClient(props?.reportsClient ?? createDefaultReportsClient(props?.reportingBasePath)),\n [props?.reportingBasePath, props?.reportsClient],\n );\n useEffect(\n () => setOclcaJobsClient(props?.oclcaJobsClient ?? createDefaultOCLCAJobsClient(props?.carbonCalculationBasePath)),\n [props?.carbonCalculationBasePath, props?.oclcaJobsClient],\n );\n\n return (\n <ReportsClientContext.Provider value={reportsClient}>\n <OCLCAJobsClientContext.Provider value={oclcaJobsClient}>\n <div className=\"oclca-container\">\n <Reports />\n </div>\n </OCLCAJobsClientContext.Provider>\n </ReportsClientContext.Provider>\n );\n};\n\nexport default OneClickLCA;\n"]}
@@ -0,0 +1,24 @@
1
+ import type { IOCLCAJobsClient, IReportsClient } from "@itwin/insights-client";
2
+ /**
3
+ * Props for the {@link OneClickLCA} component.
4
+ * @public
5
+ */
6
+ export interface OneClickLCAProps {
7
+ /**
8
+ * The base path for the Reporting API endpoints. If not specified, it defaults to REPORTING_BASE_PATH from @itwin/insights-client.
9
+ */
10
+ reportingBasePath?: string;
11
+ /**
12
+ * The base path for the Carbon Calculation API endpoints. If not specified, it defaults to CARBON_CALCULATION_BASE_PATH from @itwin/insights-client.
13
+ */
14
+ carbonCalculationBasePath?: string;
15
+ /**
16
+ * A custom implementation of IReportsClient. If provided, reportingBasePath is ignored.
17
+ */
18
+ reportsClient?: IReportsClient;
19
+ /**
20
+ * A custom implementation of IOCLCAJobsClient. If provided, carbonCalculationBasePath is ignored.
21
+ */
22
+ oclcaJobsClient?: IOCLCAJobsClient;
23
+ }
24
+ //# sourceMappingURL=OneClickLCAProps.d.ts.map
@@ -0,0 +1,6 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ export {};
6
+ //# sourceMappingURL=OneClickLCAProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OneClickLCAProps.js","sourceRoot":"","sources":["../../../src/components/OneClickLCAProps.ts"],"names":[],"mappings":"AAAA;;;gGAGgG","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport type { IOCLCAJobsClient, IReportsClient } from \"@itwin/insights-client\";\n\n/**\n * Props for the {@link OneClickLCA} component.\n * @public\n */\nexport interface OneClickLCAProps {\n /**\n * The base path for the Reporting API endpoints. If not specified, it defaults to REPORTING_BASE_PATH from @itwin/insights-client.\n */\n reportingBasePath?: string;\n\n /**\n * The base path for the Carbon Calculation API endpoints. If not specified, it defaults to CARBON_CALCULATION_BASE_PATH from @itwin/insights-client.\n */\n carbonCalculationBasePath?: string;\n\n /**\n * A custom implementation of IReportsClient. If provided, reportingBasePath is ignored.\n */\n reportsClient?: IReportsClient;\n\n /**\n * A custom implementation of IOCLCAJobsClient. If provided, carbonCalculationBasePath is ignored.\n */\n oclcaJobsClient?: IOCLCAJobsClient;\n}\n"]}
@@ -1,5 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import "./Reports.scss";
3
- declare const Reports: () => JSX.Element;
4
- export default Reports;
3
+ /**
4
+ * @internal
5
+ */
6
+ export declare const Reports: () => JSX.Element;
5
7
  //# sourceMappingURL=Reports.d.ts.map