From 5832060d394fd2cef7fa9c5d30c9fd7cbe05cd3f Mon Sep 17 00:00:00 2001 From: Arun George Date: Mon, 6 Jan 2025 14:12:04 -0500 Subject: [PATCH 1/6] point to next --- common/config/rush/version-policies.json | 2 +- rush.json | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/common/config/rush/version-policies.json b/common/config/rush/version-policies.json index cd3473a2..135be5a2 100644 --- a/common/config/rush/version-policies.json +++ b/common/config/rush/version-policies.json @@ -6,7 +6,7 @@ { "policyName": "prerelease-monorepo-lockStep", "definitionName": "lockStepVersion", - "version": "4.0.0-dev.49", + "version": "5.0.0-dev", "nextBump": "prerelease" } ] diff --git a/rush.json b/rush.json index 8b3072a0..5ca2dcdc 100644 --- a/rush.json +++ b/rush.json @@ -18,31 +18,31 @@ { "packageName": "@itwin/viewer-react", "projectFolder": "packages/modules/viewer-react", - "versionPolicyName": "independentModule", + "versionPolicyName": "prerelease-monorepo-lockStep", "shouldPublish": true }, { "packageName": "@itwin/web-viewer-react", "projectFolder": "packages/modules/web-viewer-react", - "versionPolicyName": "independentModule", + "versionPolicyName": "prerelease-monorepo-lockStep", "shouldPublish": true }, { "packageName": "@itwin/desktop-viewer-react", "projectFolder": "packages/modules/desktop-viewer-react", - "versionPolicyName": "independentModule", + "versionPolicyName": "prerelease-monorepo-lockStep", "shouldPublish": true }, { "packageName": "@itwin/cra-template-web-viewer", "projectFolder": "packages/templates/cra-template-web-viewer", - "versionPolicyName": "independentModule", + "versionPolicyName": "prerelease-monorepo-lockStep", "shouldPublish": true }, { "packageName": "@itwin/cra-template-desktop-viewer", "projectFolder": "packages/templates/cra-template-desktop-viewer", - "versionPolicyName": "independentModule", + "versionPolicyName": "prerelease-monorepo-lockStep", "shouldPublish": true }, { From e34f635e28629438f1d8de37924481c3cae38639 Mon Sep 17 00:00:00 2001 From: Arun George <11051042+aruniverse@users.noreply.github.com> Date: Wed, 8 Jan 2025 10:38:46 -0500 Subject: [PATCH 2/6] update to appui 5 (#343) * update to appui 5.0 * gah how were we not linting everything before * seems to compile and run fine. need to review changes * cleanup * get web-viewer-react to lint * disable tests for now --------- Co-authored-by: Arun George --- .github/workflows/ci-next.yml | 4 +- common/config/rush/pnpm-lock.yaml | 664 ++++++++++++++---- packages/apps/desktop-viewer-test/.env | 2 +- .../apps/desktop-viewer-test/package.json | 3 +- packages/apps/web-viewer-test/.env | 2 +- packages/apps/web-viewer-test/package.json | 11 +- .../src/components/home/ViewerHome.tsx | 15 +- packages/apps/web-viewer-test/src/index.tsx | 9 +- .../modules/desktop-viewer-react/package.json | 30 +- .../modules/desktop-viewer-react/src/types.ts | 31 +- packages/modules/viewer-react/package.json | 42 +- .../src/components/BaseViewer.tsx | 10 +- .../providers/BackstageItemsProvider.ts | 69 -- ...der.ts => DefaultContentGroupProvider.tsx} | 47 +- .../UnifiedSelectionViewportControl.tsx | 73 -- .../providers/ViewerContentToolsProvider.tsx | 22 +- .../ViewerNavigationToolsProvider.tsx | 128 +--- .../ViewerStatusbarItemsProvider.tsx | 72 +- .../src/components/app-ui/providers/index.ts | 2 - .../src/components/error/ErrorBoundary.tsx | 2 +- .../src/components/iModel/IModelLoader.tsx | 35 +- .../src/components/iModel/IModelViewer.tsx | 16 +- .../modules/viewer-react/src/hooks/index.ts | 1 - .../src/hooks/useBaseViewerInitializer.tsx | 8 +- .../viewer-react/src/hooks/useFrontstages.tsx | 18 +- .../viewer-react/src/hooks/useTheme.tsx | 17 - .../src/services/BaseInitializer.ts | 39 +- .../src/services/iModel/IModelService.ts | 2 +- .../src/tests/components/BaseViewer.test.tsx | 11 +- .../providers/BackstageItemsProvider.test.tsx | 124 ---- .../components/iModel/IModelLoader.test.tsx | 26 +- .../tests/services/BaseInitializer.test.ts | 11 +- packages/modules/viewer-react/src/types.ts | 11 +- .../src/utilities/MakeCancellable.ts | 4 +- packages/modules/viewer-react/tsconfig.json | 3 +- .../modules/web-viewer-react/package.json | 32 +- .../src/tests/services/Initializer.test.ts | 3 +- .../modules/web-viewer-react/src/types.ts | 20 +- .../modules/web-viewer-react/tsconfig.json | 2 +- .../cra-template-desktop-viewer/template.json | 3 +- .../cra-template-desktop-viewer/template/.env | 2 +- .../cra-template-web-viewer/template.json | 3 +- .../cra-template-web-viewer/template/.env | 2 +- 43 files changed, 859 insertions(+), 772 deletions(-) delete mode 100644 packages/modules/viewer-react/src/components/app-ui/providers/BackstageItemsProvider.ts rename packages/modules/viewer-react/src/components/app-ui/providers/{DefaultContentGroupProvider.ts => DefaultContentGroupProvider.tsx} (63%) delete mode 100644 packages/modules/viewer-react/src/components/app-ui/providers/UnifiedSelectionViewportControl.tsx delete mode 100644 packages/modules/viewer-react/src/hooks/useTheme.tsx delete mode 100644 packages/modules/viewer-react/src/tests/components/app-ui/providers/BackstageItemsProvider.test.tsx diff --git a/.github/workflows/ci-next.yml b/.github/workflows/ci-next.yml index 7cec2333..2b8486fa 100644 --- a/.github/workflows/ci-next.yml +++ b/.github/workflows/ci-next.yml @@ -34,6 +34,6 @@ jobs: echo 'Linting...' node common/scripts/install-run-rush.js lint - echo 'Testing...' - node common/scripts/install-run-rush.js test --verbose + # echo 'Testing...' + # node common/scripts/install-run-rush.js test --verbose diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 73cfe3a6..354892cd 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -23,7 +23,6 @@ importers: '@bentley/icons-generic-webfont': ^1.0.34 '@bentley/react-scripts': ^5.0.5 '@itwin/appui-abstract': ^4.7.3 - '@itwin/appui-layout-react': ^4.3.0 '@itwin/appui-react': ^4.3.0 '@itwin/build-tools': ^4.0.6 '@itwin/components-react': ^4.3.0 @@ -54,7 +53,7 @@ importers: '@itwin/itwinui-illustrations-react': ^2.0.1 '@itwin/itwinui-layouts-css': ^0.2.0 '@itwin/itwinui-layouts-react': ^0.2.0 - '@itwin/itwinui-react': ^2.12.0 + '@itwin/itwinui-react': ^3.16.0 '@itwin/itwinui-variables': ^2.0.0 '@itwin/measure-tools-react': ^0.23.2 '@itwin/presentation-backend': ^4.7.3 @@ -90,7 +89,6 @@ importers: dependencies: '@bentley/icons-generic-webfont': 1.0.34 '@itwin/appui-abstract': 4.7.4_@itwin+core-bentley@4.7.4 - '@itwin/appui-layout-react': 4.8.3_jscgs7su4cyo55wt5klvj3iepa '@itwin/appui-react': 4.15.1_yrqai5hl5gvsf4dek6el5aloii '@itwin/components-react': 4.15.1_jscgs7su4cyo55wt5klvj3iepa '@itwin/core-backend': 4.7.4_zzr6hivuljmnvzdhcyobjpaqme @@ -120,15 +118,15 @@ importers: '@itwin/itwinui-illustrations-react': 2.1.0_nnrd3gsncyragczmpvfhocinkq '@itwin/itwinui-layouts-css': 0.2.0 '@itwin/itwinui-layouts-react': 0.2.0_nnrd3gsncyragczmpvfhocinkq - '@itwin/itwinui-react': 2.12.26_nnrd3gsncyragczmpvfhocinkq + '@itwin/itwinui-react': 3.16.3_psuonouaqi5wuc37nxyknoubym '@itwin/itwinui-variables': 2.1.2 - '@itwin/measure-tools-react': 0.23.2_hhvtoxm2vupiyzv3tuuiwwirjq + '@itwin/measure-tools-react': 0.23.2_4lk5crizznvcytyjhv4sytu6si '@itwin/presentation-backend': 4.7.4_nztxufmverfbgaq2tic42bdzqu '@itwin/presentation-common': 4.7.4_jrcxtioaccikuahb3i3h6f5rhe - '@itwin/presentation-components': 5.4.1_coeiqitrdc3kbyoxwt3ak4fycm + '@itwin/presentation-components': 5.4.1_vsgychkrhhcqnl34xxqvqnicea '@itwin/presentation-frontend': 4.7.4_lbci6e5ivpkspr33wpe53pcp5i '@itwin/property-grid-react': 1.10.0_qjr4doayn7cutuokumbiwhomja - '@itwin/tree-widget-react': 3.0.1_i672swagn374al3m4ors5guk4q + '@itwin/tree-widget-react': 3.0.1_qmonqnyb76mcc5lxvubqnbx5ki '@itwin/unified-selection': 1.1.1 '@itwin/webgl-compatibility': 4.7.4 dotenv-flow: 3.3.0 @@ -162,10 +160,9 @@ importers: '@bentley/icons-generic': ^1.0.34 '@bentley/react-scripts': ^5.0.4 '@itwin/appui-abstract': ^4.7.3 - '@itwin/appui-layout-react': ^4.3.0 - '@itwin/appui-react': ^4.3.0 + '@itwin/appui-react': ^5.0.0 '@itwin/browser-authorization': ^1.0.1 - '@itwin/components-react': ^4.3.0 + '@itwin/components-react': ^5.0.0 '@itwin/core-bentley': ^4.7.3 '@itwin/core-common': ^4.7.3 '@itwin/core-frontend': ^4.7.3 @@ -174,14 +171,14 @@ importers: '@itwin/core-markup': ^4.7.3 '@itwin/core-orbitgt': ^4.7.3 '@itwin/core-quantity': ^4.7.3 - '@itwin/core-react': ^4.3.0 + '@itwin/core-react': ^5.0.0 '@itwin/core-telemetry': ^4.7.3 '@itwin/ecschema-metadata': ^4.7.3 '@itwin/ecschema-rpcinterface-common': ^4.7.3 '@itwin/frontend-devtools': ^4.7.3 - '@itwin/imodel-components-react': ^4.3.0 + '@itwin/imodel-components-react': ^5.0.0 '@itwin/imodels-access-frontend': ^5.2.1 - '@itwin/itwinui-react': ^2.12.0 + '@itwin/itwinui-react': ^3.16.0 '@itwin/measure-tools-react': ^0.23.2 '@itwin/presentation-common': ^4.7.3 '@itwin/presentation-components': ^5.0.0 @@ -208,10 +205,9 @@ importers: dependencies: '@bentley/icons-generic': 1.0.34 '@itwin/appui-abstract': 4.7.4_@itwin+core-bentley@4.7.4 - '@itwin/appui-layout-react': 4.8.3_jscgs7su4cyo55wt5klvj3iepa - '@itwin/appui-react': 4.15.1_yrqai5hl5gvsf4dek6el5aloii + '@itwin/appui-react': 5.0.0_bb3u4xzbep6lfapdosie4rdavm '@itwin/browser-authorization': 1.1.2_7i4fuy3zzvrtjsnyekcav72ie4 - '@itwin/components-react': 4.15.1_jscgs7su4cyo55wt5klvj3iepa + '@itwin/components-react': 5.0.0_vdvcaslqtdzlaqofn3df2kfe3y '@itwin/core-bentley': 4.7.4 '@itwin/core-common': 4.7.4_7i4fuy3zzvrtjsnyekcav72ie4 '@itwin/core-frontend': 4.7.4_phc4rse3pm3zzqfro3xbf2awbu @@ -220,22 +216,22 @@ importers: '@itwin/core-markup': 4.7.4_aa3bt7vk4zzsxcvhcdi4ojlcwe '@itwin/core-orbitgt': 4.7.4 '@itwin/core-quantity': 4.7.4_@itwin+core-bentley@4.7.4 - '@itwin/core-react': 4.15.1_bpptdsfauwdziiwg4uklizbr74 + '@itwin/core-react': 5.0.0_bat3aeftvdggsll265mlscthr4 '@itwin/core-telemetry': 4.7.4_@itwin+core-geometry@4.7.4 '@itwin/ecschema-metadata': 4.7.4_jokiwfzdpldlrb2ppvojwoxovq '@itwin/ecschema-rpcinterface-common': 4.7.4_bcf6l4a62o6ayq645yaljtfq2i '@itwin/frontend-devtools': 4.7.4_7jxo73lwmrfxldbvkntwilqkhe - '@itwin/imodel-components-react': 4.15.1_avm2jbcgpodgccdhk4zetypeem + '@itwin/imodel-components-react': 5.0.0_fsn2txmqjvoy7xalov6bf4jq34 '@itwin/imodels-access-frontend': 5.2.1_r7pomf6q3izykcd6xffknqbpim - '@itwin/itwinui-react': 2.12.26_nnrd3gsncyragczmpvfhocinkq - '@itwin/measure-tools-react': 0.23.2_hhvtoxm2vupiyzv3tuuiwwirjq + '@itwin/itwinui-react': 3.16.3_psuonouaqi5wuc37nxyknoubym + '@itwin/measure-tools-react': 0.23.2_vuwuhgtuamybjudj7a3k6i7fzy '@itwin/presentation-common': 4.7.4_jrcxtioaccikuahb3i3h6f5rhe - '@itwin/presentation-components': 5.4.1_coeiqitrdc3kbyoxwt3ak4fycm + '@itwin/presentation-components': 5.4.1_c6sfquaec4rzsgis43ur6hv4ui '@itwin/presentation-frontend': 4.7.4_lbci6e5ivpkspr33wpe53pcp5i - '@itwin/property-grid-react': 1.10.0_qjr4doayn7cutuokumbiwhomja + '@itwin/property-grid-react': 1.10.0_zgwkemo3kfhesxpfdnsxiis6ka '@itwin/reality-data-client': 1.2.1_@itwin+core-bentley@4.7.4 '@itwin/test-local-extension': link:../../modules/test-local-extension - '@itwin/tree-widget-react': 3.0.1_i672swagn374al3m4ors5guk4q + '@itwin/tree-widget-react': 3.0.1_zup47iojulowp72m2r6fz4nihq '@itwin/unified-selection': 1.1.1 '@itwin/web-viewer-react': link:../../modules/web-viewer-react '@itwin/webgl-compatibility': 4.7.4 @@ -257,10 +253,9 @@ importers: ../../packages/modules/desktop-viewer-react: specifiers: '@itwin/appui-abstract': ^4.7.3 - '@itwin/appui-layout-react': ^4.0.0 - '@itwin/appui-react': ^4.0.0 + '@itwin/appui-react': ^5.0.0 '@itwin/build-tools': ^4.7.3 - '@itwin/components-react': ^4.0.0 + '@itwin/components-react': ^5.0.0 '@itwin/core-backend': ^4.7.3 '@itwin/core-bentley': ^4.7.3 '@itwin/core-common': ^4.7.3 @@ -270,11 +265,11 @@ importers: '@itwin/core-markup': ^4.7.3 '@itwin/core-orbitgt': ^4.7.3 '@itwin/core-quantity': ^4.7.3 - '@itwin/core-react': ^4.0.0 + '@itwin/core-react': ^5.0.0 '@itwin/core-telemetry': ^4.7.3 '@itwin/ecschema-metadata': ^4.7.3 '@itwin/electron-authorization': ^0.15.0 - '@itwin/imodel-components-react': ^4.0.0 + '@itwin/imodel-components-react': ^5.0.0 '@itwin/imodels-client-management': ^5.2.1 '@itwin/presentation-common': ^4.7.3 '@itwin/presentation-components': ^5.0.0 @@ -292,6 +287,7 @@ importers: concurrently: ^5.2.0 copyfiles: ^2.1.0 electron: ^24.8.3 + eslint: ^7.11.0 identity-obj-proxy: ^3.0.0 jest: ^29.1.0 react: ^18.2.0 @@ -306,10 +302,9 @@ importers: '@itwin/viewer-react': link:../viewer-react devDependencies: '@itwin/appui-abstract': 4.7.4_@itwin+core-bentley@4.7.4 - '@itwin/appui-layout-react': 4.8.3_jscgs7su4cyo55wt5klvj3iepa - '@itwin/appui-react': 4.15.1_yrqai5hl5gvsf4dek6el5aloii + '@itwin/appui-react': 5.0.0_f7mluli6gphi644ppji74mdem4 '@itwin/build-tools': 4.7.4_@types+node@18.19.39 - '@itwin/components-react': 4.15.1_jscgs7su4cyo55wt5klvj3iepa + '@itwin/components-react': 5.0.0_ek5rphe37jjarmnycbpdu4q62a '@itwin/core-backend': 4.7.4_zzr6hivuljmnvzdhcyobjpaqme '@itwin/core-bentley': 4.7.4 '@itwin/core-common': 4.7.4_7i4fuy3zzvrtjsnyekcav72ie4 @@ -319,13 +314,13 @@ importers: '@itwin/core-markup': 4.7.4_aa3bt7vk4zzsxcvhcdi4ojlcwe '@itwin/core-orbitgt': 4.7.4 '@itwin/core-quantity': 4.7.4_@itwin+core-bentley@4.7.4 - '@itwin/core-react': 4.15.1_bpptdsfauwdziiwg4uklizbr74 + '@itwin/core-react': 5.0.0_pziseddj4fywh45qpm2erfqgyy '@itwin/core-telemetry': 4.7.4_@itwin+core-geometry@4.7.4 '@itwin/ecschema-metadata': 4.7.4_jokiwfzdpldlrb2ppvojwoxovq '@itwin/electron-authorization': 0.15.0_4vf3fjdy4loqcqolj5aeocucyi - '@itwin/imodel-components-react': 4.15.1_avm2jbcgpodgccdhk4zetypeem + '@itwin/imodel-components-react': 5.0.0_bonqqwr76xuyqrlfhkxxm53o4y '@itwin/presentation-common': 4.7.4_jrcxtioaccikuahb3i3h6f5rhe - '@itwin/presentation-components': 5.4.1_tr757zhbqqbt4rcaxvlnctg2de + '@itwin/presentation-components': 5.4.1_g2rvzsgzcfmjwruzqwltjgx5mq '@itwin/presentation-frontend': 4.7.4_lbci6e5ivpkspr33wpe53pcp5i '@itwin/webgl-compatibility': 4.7.4 '@testing-library/jest-dom': 4.2.4 @@ -339,6 +334,7 @@ importers: concurrently: 5.3.0 copyfiles: 2.4.1 electron: 24.8.8 + eslint: 7.32.0 identity-obj-proxy: 3.0.0 jest: 29.7.0_@types+node@18.19.39 react: 18.3.1 @@ -427,10 +423,9 @@ importers: specifiers: '@bentley/icons-generic-webfont': ^1.0.15 '@itwin/appui-abstract': ^4.7.3 - '@itwin/appui-layout-react': ^4.0.0 - '@itwin/appui-react': ^4.0.0 + '@itwin/appui-react': ^5.0.0 '@itwin/build-tools': ^4.7.3 - '@itwin/components-react': ^4.0.0 + '@itwin/components-react': ^5.0.0 '@itwin/core-bentley': ^4.7.3 '@itwin/core-common': ^4.7.3 '@itwin/core-frontend': ^4.7.3 @@ -439,14 +434,14 @@ importers: '@itwin/core-markup': ^4.7.3 '@itwin/core-orbitgt': ^4.7.3 '@itwin/core-quantity': ^4.7.3 - '@itwin/core-react': ^4.0.0 + '@itwin/core-react': ^5.0.0 '@itwin/core-telemetry': ^4.7.3 '@itwin/ecschema-metadata': ^4.7.3 - '@itwin/imodel-components-react': ^4.0.0 + '@itwin/imodel-components-react': ^5.0.0 '@itwin/imodels-access-frontend': ^5.2.1 '@itwin/imodels-client-management': ^5.2.1 '@itwin/itwinui-illustrations-react': ^2.0.1 - '@itwin/itwinui-react': ^2.6.0 + '@itwin/itwinui-react': ^3.16.0 '@itwin/presentation-common': ^4.7.3 '@itwin/presentation-components': ^5.0.0 '@itwin/presentation-core-interop': ^1.0.0 @@ -466,6 +461,7 @@ importers: '@types/react-redux': ^7.1.9 concurrently: ^5.2.0 copyfiles: ^2.1.0 + eslint: ^7.11.0 identity-obj-proxy: ^3.0.0 jest: ^29.1.0 jest-environment-jsdom: ^29.1.0 @@ -480,7 +476,7 @@ importers: dependencies: '@bentley/icons-generic-webfont': 1.0.34 '@itwin/itwinui-illustrations-react': 2.1.0_nnrd3gsncyragczmpvfhocinkq - '@itwin/itwinui-react': 2.12.26_nnrd3gsncyragczmpvfhocinkq + '@itwin/itwinui-react': 3.16.3_psuonouaqi5wuc37nxyknoubym '@itwin/presentation-core-interop': 1.1.1_rll2n26bhzrezeyt23jhdcbtsy '@itwin/presentation-shared': 1.1.0 '@itwin/reality-data-client': 1.2.1_@itwin+core-bentley@4.7.4 @@ -488,10 +484,9 @@ importers: lodash.isequal: 4.5.0 devDependencies: '@itwin/appui-abstract': 4.7.4_@itwin+core-bentley@4.7.4 - '@itwin/appui-layout-react': 4.8.3_jscgs7su4cyo55wt5klvj3iepa - '@itwin/appui-react': 4.15.1_yrqai5hl5gvsf4dek6el5aloii + '@itwin/appui-react': 5.0.0_bb3u4xzbep6lfapdosie4rdavm '@itwin/build-tools': 4.7.4_@types+node@18.19.39 - '@itwin/components-react': 4.15.1_jscgs7su4cyo55wt5klvj3iepa + '@itwin/components-react': 5.0.0_vdvcaslqtdzlaqofn3df2kfe3y '@itwin/core-bentley': 4.7.4 '@itwin/core-common': 4.7.4_7i4fuy3zzvrtjsnyekcav72ie4 '@itwin/core-frontend': 4.7.4_phc4rse3pm3zzqfro3xbf2awbu @@ -500,14 +495,14 @@ importers: '@itwin/core-markup': 4.7.4_aa3bt7vk4zzsxcvhcdi4ojlcwe '@itwin/core-orbitgt': 4.7.4 '@itwin/core-quantity': 4.7.4_@itwin+core-bentley@4.7.4 - '@itwin/core-react': 4.15.1_bpptdsfauwdziiwg4uklizbr74 + '@itwin/core-react': 5.0.0_bat3aeftvdggsll265mlscthr4 '@itwin/core-telemetry': 4.7.4_@itwin+core-geometry@4.7.4 '@itwin/ecschema-metadata': 4.7.4_jokiwfzdpldlrb2ppvojwoxovq - '@itwin/imodel-components-react': 4.15.1_avm2jbcgpodgccdhk4zetypeem + '@itwin/imodel-components-react': 5.0.0_fsn2txmqjvoy7xalov6bf4jq34 '@itwin/imodels-access-frontend': 5.2.1_r7pomf6q3izykcd6xffknqbpim '@itwin/imodels-client-management': 5.8.1 '@itwin/presentation-common': 4.7.4_jrcxtioaccikuahb3i3h6f5rhe - '@itwin/presentation-components': 5.4.1_coeiqitrdc3kbyoxwt3ak4fycm + '@itwin/presentation-components': 5.4.1_c6sfquaec4rzsgis43ur6hv4ui '@itwin/presentation-frontend': 4.7.4_lbci6e5ivpkspr33wpe53pcp5i '@itwin/webgl-compatibility': 4.7.4 '@testing-library/jest-dom': 4.2.4 @@ -521,6 +516,7 @@ importers: '@types/react-redux': 7.1.33 concurrently: 5.3.0 copyfiles: 2.4.1 + eslint: 7.32.0 identity-obj-proxy: 3.0.0 jest: 29.7.0_@types+node@18.19.39 jest-environment-jsdom: 29.7.0 @@ -535,10 +531,9 @@ importers: ../../packages/modules/web-viewer-react: specifiers: '@itwin/appui-abstract': ^4.7.3 - '@itwin/appui-layout-react': ^4.0.0 - '@itwin/appui-react': ^4.0.0 + '@itwin/appui-react': ^5.0.0 '@itwin/build-tools': ^4.7.3 - '@itwin/components-react': ^4.0.0 + '@itwin/components-react': ^5.0.0 '@itwin/core-bentley': ^4.7.3 '@itwin/core-common': ^4.7.3 '@itwin/core-frontend': ^4.7.3 @@ -546,10 +541,10 @@ importers: '@itwin/core-markup': ^4.7.3 '@itwin/core-orbitgt': ^4.7.3 '@itwin/core-quantity': ^4.7.3 - '@itwin/core-react': ^4.0.0 + '@itwin/core-react': ^5.0.0 '@itwin/core-telemetry': ^4.7.3 '@itwin/ecschema-metadata': ^4.7.3 - '@itwin/imodel-components-react': ^4.0.0 + '@itwin/imodel-components-react': ^5.0.0 '@itwin/imodels-client-management': ^5.2.1 '@itwin/presentation-common': ^4.7.3 '@itwin/presentation-components': ^5.0.0 @@ -566,6 +561,7 @@ importers: '@types/react-redux': ^7.1.9 concurrently: ^5.2.0 copyfiles: ^2.1.0 + eslint: ^7.11.0 identity-obj-proxy: ^3.0.0 jest: ^29.1.0 jest-environment-jsdom: ^29.1.0 @@ -581,10 +577,9 @@ importers: '@itwin/viewer-react': link:../viewer-react devDependencies: '@itwin/appui-abstract': 4.7.4_@itwin+core-bentley@4.7.4 - '@itwin/appui-layout-react': 4.8.3_jscgs7su4cyo55wt5klvj3iepa - '@itwin/appui-react': 4.15.1_yrqai5hl5gvsf4dek6el5aloii + '@itwin/appui-react': 5.0.0_f7mluli6gphi644ppji74mdem4 '@itwin/build-tools': 4.7.4_@types+node@18.19.39 - '@itwin/components-react': 4.15.1_jscgs7su4cyo55wt5klvj3iepa + '@itwin/components-react': 5.0.0_ek5rphe37jjarmnycbpdu4q62a '@itwin/core-bentley': 4.7.4 '@itwin/core-common': 4.7.4_7i4fuy3zzvrtjsnyekcav72ie4 '@itwin/core-frontend': 4.7.4_phc4rse3pm3zzqfro3xbf2awbu @@ -592,12 +587,12 @@ importers: '@itwin/core-markup': 4.7.4_aa3bt7vk4zzsxcvhcdi4ojlcwe '@itwin/core-orbitgt': 4.7.4 '@itwin/core-quantity': 4.7.4_@itwin+core-bentley@4.7.4 - '@itwin/core-react': 4.15.1_bpptdsfauwdziiwg4uklizbr74 + '@itwin/core-react': 5.0.0_pziseddj4fywh45qpm2erfqgyy '@itwin/core-telemetry': 4.7.4_@itwin+core-geometry@4.7.4 '@itwin/ecschema-metadata': 4.7.4_jokiwfzdpldlrb2ppvojwoxovq - '@itwin/imodel-components-react': 4.15.1_avm2jbcgpodgccdhk4zetypeem + '@itwin/imodel-components-react': 5.0.0_bonqqwr76xuyqrlfhkxxm53o4y '@itwin/presentation-common': 4.7.4_jrcxtioaccikuahb3i3h6f5rhe - '@itwin/presentation-components': 5.4.1_tr757zhbqqbt4rcaxvlnctg2de + '@itwin/presentation-components': 5.4.1_g2rvzsgzcfmjwruzqwltjgx5mq '@itwin/presentation-frontend': 4.7.4_lbci6e5ivpkspr33wpe53pcp5i '@itwin/webgl-compatibility': 4.7.4 '@testing-library/jest-dom': 4.2.4 @@ -610,6 +605,7 @@ importers: '@types/react-redux': 7.1.33 concurrently: 5.3.0 copyfiles: 2.4.1 + eslint: 7.32.0 identity-obj-proxy: 3.0.0 jest: 29.7.0_@types+node@18.19.39 jest-environment-jsdom: 29.7.0 @@ -2341,6 +2337,7 @@ packages: /@bentley/icons-generic/1.0.34: resolution: {integrity: sha512-IIs1wDcY2oZ8tJ3EZRw0U51M+0ZL3MvwoDYYmhUXaa9/UZqpFoOyLBGaxjirQteWXqTIMm3mFvmC+Nbn1ok4Iw==} + dev: false /@bentley/imodeljs-native/4.7.29: resolution: {integrity: sha512-zJNHKurImoPk+8DbTUFAs6Pph56c1do/S/eFRfqnKPcxQGS6nfvrxBWyEulwmslnt1zMYdB766+myuJlPVXxFw==} @@ -2778,16 +2775,16 @@ packages: /@floating-ui/core/1.6.4: resolution: {integrity: sha512-a4IowK4QkXl4SCWTGUR0INAfEOX3wtsYw3rKK5InQEHMGObkR8Xk44qYQD9P4r6HHw0iIfK6GUKECmY8sTkqRA==} dependencies: - '@floating-ui/utils': 0.2.4 + '@floating-ui/utils': 0.2.8 /@floating-ui/dom/1.6.7: resolution: {integrity: sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng==} dependencies: '@floating-ui/core': 1.6.4 - '@floating-ui/utils': 0.2.4 + '@floating-ui/utils': 0.2.8 - /@floating-ui/react-dom/2.1.1_nnrd3gsncyragczmpvfhocinkq: - resolution: {integrity: sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==} + /@floating-ui/react-dom/2.1.2_nnrd3gsncyragczmpvfhocinkq: + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' @@ -2796,20 +2793,20 @@ packages: react: 18.3.1 react-dom: 18.3.1_react@18.3.1 - /@floating-ui/react/0.26.19_nnrd3gsncyragczmpvfhocinkq: - resolution: {integrity: sha512-Jk6zITdjjIvjO/VdQFvpRaD3qPwOHH6AoDHxjhpy+oK4KFgaSP871HYWUAPdnLmx1gQ+w/pB312co3tVml+BXA==} + /@floating-ui/react/0.26.28_nnrd3gsncyragczmpvfhocinkq: + resolution: {integrity: sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: - '@floating-ui/react-dom': 2.1.1_nnrd3gsncyragczmpvfhocinkq - '@floating-ui/utils': 0.2.4 + '@floating-ui/react-dom': 2.1.2_nnrd3gsncyragczmpvfhocinkq + '@floating-ui/utils': 0.2.8 react: 18.3.1 react-dom: 18.3.1_react@18.3.1 tabbable: 6.2.0 - /@floating-ui/utils/0.2.4: - resolution: {integrity: sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==} + /@floating-ui/utils/0.2.8: + resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} /@humanwhocodes/config-array/0.11.14: resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} @@ -2885,31 +2882,6 @@ packages: dependencies: '@itwin/core-bentley': 4.7.4 - /@itwin/appui-layout-react/4.8.3_jscgs7su4cyo55wt5klvj3iepa: - resolution: {integrity: sha512-7jyEefXWeOXMxREE5+dON2IJ3KercWz7xkMvHSXzHZARjedHZRZKgrgMM5QETrEsRNDixxp0em23mIzwCpVSRg==} - peerDependencies: - '@itwin/appui-abstract': ^3.7.0 || ^4.0.0 - '@itwin/core-bentley': ^3.7.0 || ^4.0.0 - '@itwin/core-react': ^4.8.3 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - dependencies: - '@itwin/appui-abstract': 4.7.4_@itwin+core-bentley@4.7.4 - '@itwin/core-bentley': 4.7.4 - '@itwin/core-react': 4.15.1_bpptdsfauwdziiwg4uklizbr74 - '@itwin/itwinui-icons-react': 2.8.0_nnrd3gsncyragczmpvfhocinkq - '@itwin/itwinui-variables': 2.1.2 - classnames: 2.3.1 - immer: 9.0.6 - lodash: 4.17.21 - react: 18.3.1 - react-dom: 18.3.1_react@18.3.1 - react-transition-group: 4.4.5_nnrd3gsncyragczmpvfhocinkq - ts-key-enum: 2.0.12 - zustand: 4.5.4_djzcoonmr6xkxvxv5wbacldipi - transitivePeerDependencies: - - '@types/react' - /@itwin/appui-react/4.15.1_yrqai5hl5gvsf4dek6el5aloii: resolution: {integrity: sha512-WwIDI0YgUjnlZjjJBMjWfrNsdcQKvXlu1RAhE8/8FkWejmwhrB+B07+15E4tDvCBAQpEyl1TroQo4pnfOmLpDg==} peerDependencies: @@ -2941,7 +2913,7 @@ packages: '@itwin/imodel-components-react': 4.15.1_avm2jbcgpodgccdhk4zetypeem '@itwin/itwinui-icons-react': 2.8.0_nnrd3gsncyragczmpvfhocinkq '@itwin/itwinui-illustrations-react': 2.1.0_nnrd3gsncyragczmpvfhocinkq - '@itwin/itwinui-react': 3.12.2_psuonouaqi5wuc37nxyknoubym + '@itwin/itwinui-react': 3.16.3_psuonouaqi5wuc37nxyknoubym '@itwin/itwinui-react-v2': /@itwin/itwinui-react/2.12.26_nnrd3gsncyragczmpvfhocinkq '@itwin/itwinui-variables': 3.2.0 classnames: 2.3.1 @@ -2959,6 +2931,101 @@ packages: zustand: 4.5.4_djzcoonmr6xkxvxv5wbacldipi transitivePeerDependencies: - '@types/react' + dev: false + + /@itwin/appui-react/5.0.0_bb3u4xzbep6lfapdosie4rdavm: + resolution: {integrity: sha512-Q+ao006pPbMHp24U8PjEbumNiWhhpsRL9ktD94N2i/m40HCwChamqWUZqcCKTUUkt7KjxeyssBTCjiSIxkEQ8g==} + peerDependencies: + '@itwin/appui-abstract': ^4.0.0 + '@itwin/components-react': ^5.0.0 + '@itwin/core-bentley': ^4.0.0 + '@itwin/core-common': ^4.0.0 + '@itwin/core-frontend': ^4.0.0 + '@itwin/core-geometry': ^4.0.0 + '@itwin/core-quantity': ^4.0.0 + '@itwin/core-react': ^5.0.0 + '@itwin/core-telemetry': ^4.0.0 + '@itwin/imodel-components-react': ^5.0.0 + '@itwin/itwinui-react': ^3.15.0 + react: ^18.0.0 + react-dom: ^18.0.0 + react-redux: ^7.2.2 || ^8.0.0 || ^9.0.0 + redux: ^4.1.0 || ^5.0.0 + dependencies: + '@itwin/appui-abstract': 4.7.4_@itwin+core-bentley@4.7.4 + '@itwin/components-react': 5.0.0_vdvcaslqtdzlaqofn3df2kfe3y + '@itwin/core-bentley': 4.7.4 + '@itwin/core-common': 4.7.4_7i4fuy3zzvrtjsnyekcav72ie4 + '@itwin/core-frontend': 4.7.4_phc4rse3pm3zzqfro3xbf2awbu + '@itwin/core-geometry': 4.7.4 + '@itwin/core-quantity': 4.7.4_@itwin+core-bentley@4.7.4 + '@itwin/core-react': 5.0.0_bat3aeftvdggsll265mlscthr4 + '@itwin/core-telemetry': 4.7.4_@itwin+core-geometry@4.7.4 + '@itwin/imodel-components-react': 5.0.0_fsn2txmqjvoy7xalov6bf4jq34 + '@itwin/itwinui-icons-react': 2.8.0_nnrd3gsncyragczmpvfhocinkq + '@itwin/itwinui-illustrations-react': 2.1.0_nnrd3gsncyragczmpvfhocinkq + '@itwin/itwinui-react': 3.16.3_psuonouaqi5wuc37nxyknoubym + classnames: 2.5.1 + immer: 10.1.1 + lodash: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + react-error-boundary: 4.0.3_react@18.3.1 + react-redux: 7.2.9_nnrd3gsncyragczmpvfhocinkq + react-transition-group: 4.4.5_nnrd3gsncyragczmpvfhocinkq + redux: 4.2.1 + rxjs: 7.8.1 + ts-key-enum: 2.0.12 + zustand: 4.5.4_pkovrptl7wv2iqloyky3y37yx4 + transitivePeerDependencies: + - '@types/react' + + /@itwin/appui-react/5.0.0_f7mluli6gphi644ppji74mdem4: + resolution: {integrity: sha512-Q+ao006pPbMHp24U8PjEbumNiWhhpsRL9ktD94N2i/m40HCwChamqWUZqcCKTUUkt7KjxeyssBTCjiSIxkEQ8g==} + peerDependencies: + '@itwin/appui-abstract': ^4.0.0 + '@itwin/components-react': ^5.0.0 + '@itwin/core-bentley': ^4.0.0 + '@itwin/core-common': ^4.0.0 + '@itwin/core-frontend': ^4.0.0 + '@itwin/core-geometry': ^4.0.0 + '@itwin/core-quantity': ^4.0.0 + '@itwin/core-react': ^5.0.0 + '@itwin/core-telemetry': ^4.0.0 + '@itwin/imodel-components-react': ^5.0.0 + '@itwin/itwinui-react': ^3.15.0 + react: ^18.0.0 + react-dom: ^18.0.0 + react-redux: ^7.2.2 || ^8.0.0 || ^9.0.0 + redux: ^4.1.0 || ^5.0.0 + dependencies: + '@itwin/appui-abstract': 4.7.4_@itwin+core-bentley@4.7.4 + '@itwin/components-react': 5.0.0_ek5rphe37jjarmnycbpdu4q62a + '@itwin/core-bentley': 4.7.4 + '@itwin/core-common': 4.7.4_7i4fuy3zzvrtjsnyekcav72ie4 + '@itwin/core-frontend': 4.7.4_phc4rse3pm3zzqfro3xbf2awbu + '@itwin/core-geometry': 4.7.4 + '@itwin/core-quantity': 4.7.4_@itwin+core-bentley@4.7.4 + '@itwin/core-react': 5.0.0_pziseddj4fywh45qpm2erfqgyy + '@itwin/core-telemetry': 4.7.4_@itwin+core-geometry@4.7.4 + '@itwin/imodel-components-react': 5.0.0_bonqqwr76xuyqrlfhkxxm53o4y + '@itwin/itwinui-icons-react': 2.8.0_nnrd3gsncyragczmpvfhocinkq + '@itwin/itwinui-illustrations-react': 2.1.0_nnrd3gsncyragczmpvfhocinkq + classnames: 2.5.1 + immer: 10.1.1 + lodash: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + react-error-boundary: 4.0.3_react@18.3.1 + react-redux: 7.2.9_nnrd3gsncyragczmpvfhocinkq + react-transition-group: 4.4.5_nnrd3gsncyragczmpvfhocinkq + redux: 4.2.1 + rxjs: 7.8.1 + ts-key-enum: 2.0.12 + zustand: 4.5.4_pkovrptl7wv2iqloyky3y37yx4 + transitivePeerDependencies: + - '@types/react' + dev: true /@itwin/browser-authorization/1.1.2_7i4fuy3zzvrtjsnyekcav72ie4: resolution: {integrity: sha512-OP27aV5nCYX3t+ux7E2Kzs/YDeMBMLWJFsa/m/u0gStaa+ywccIPCy6yVXMT9S2iB9kaRPrkdtLE2SkrjHndBg==} @@ -3056,7 +3123,7 @@ packages: '@itwin/core-bentley': 4.7.4 '@itwin/core-react': 4.15.1_bpptdsfauwdziiwg4uklizbr74 '@itwin/itwinui-icons-react': 2.8.0_nnrd3gsncyragczmpvfhocinkq - '@itwin/itwinui-react': 3.12.2_psuonouaqi5wuc37nxyknoubym + '@itwin/itwinui-react': 3.16.3_psuonouaqi5wuc37nxyknoubym '@itwin/itwinui-variables': 3.2.0 classnames: 2.3.1 immer: 9.0.6 @@ -3070,6 +3137,57 @@ packages: ts-key-enum: 2.0.12 transitivePeerDependencies: - '@types/react' + dev: false + + /@itwin/components-react/5.0.0_ek5rphe37jjarmnycbpdu4q62a: + resolution: {integrity: sha512-kFZqb8CCaC8XEtDvIIj4a/OiFep0VQO8+BTFVkb06oN/UZWEF+vBKKP351Y9zmHo/SXAA5rl/Uu5eodS+d4ksw==} + peerDependencies: + '@itwin/appui-abstract': ^4.0.0 + '@itwin/core-bentley': ^4.0.0 + '@itwin/core-react': ^5.0.0 + '@itwin/itwinui-react': ^3.15.0 + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@itwin/appui-abstract': 4.7.4_@itwin+core-bentley@4.7.4 + '@itwin/core-bentley': 4.7.4 + '@itwin/core-react': 5.0.0_pziseddj4fywh45qpm2erfqgyy + '@itwin/itwinui-icons-react': 2.8.0_nnrd3gsncyragczmpvfhocinkq + classnames: 2.5.1 + immer: 10.1.1 + linkify-it: 2.2.0 + lodash: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + react-window: 1.8.10_nnrd3gsncyragczmpvfhocinkq + rxjs: 7.8.1 + ts-key-enum: 2.0.12 + dev: true + + /@itwin/components-react/5.0.0_vdvcaslqtdzlaqofn3df2kfe3y: + resolution: {integrity: sha512-kFZqb8CCaC8XEtDvIIj4a/OiFep0VQO8+BTFVkb06oN/UZWEF+vBKKP351Y9zmHo/SXAA5rl/Uu5eodS+d4ksw==} + peerDependencies: + '@itwin/appui-abstract': ^4.0.0 + '@itwin/core-bentley': ^4.0.0 + '@itwin/core-react': ^5.0.0 + '@itwin/itwinui-react': ^3.15.0 + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@itwin/appui-abstract': 4.7.4_@itwin+core-bentley@4.7.4 + '@itwin/core-bentley': 4.7.4 + '@itwin/core-react': 5.0.0_bat3aeftvdggsll265mlscthr4 + '@itwin/itwinui-icons-react': 2.8.0_nnrd3gsncyragczmpvfhocinkq + '@itwin/itwinui-react': 3.16.3_psuonouaqi5wuc37nxyknoubym + classnames: 2.5.1 + immer: 10.1.1 + linkify-it: 2.2.0 + lodash: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + react-window: 1.8.10_nnrd3gsncyragczmpvfhocinkq + rxjs: 7.8.1 + ts-key-enum: 2.0.12 /@itwin/core-backend/4.7.4_zzr6hivuljmnvzdhcyobjpaqme: resolution: {integrity: sha512-pHWHZdgn3dIuOjiC0eJIo8F3MapkeZBTHIwLJr57M3BJH0kyJ8zRy5fWvK20lE985m6VR7a2SxGcybgRVv4sBg==} @@ -3267,7 +3385,7 @@ packages: '@itwin/appui-abstract': 4.7.4_@itwin+core-bentley@4.7.4 '@itwin/core-bentley': 4.7.4 '@itwin/itwinui-icons-react': 2.8.0_nnrd3gsncyragczmpvfhocinkq - '@itwin/itwinui-react': 3.12.2_psuonouaqi5wuc37nxyknoubym + '@itwin/itwinui-react': 3.16.3_psuonouaqi5wuc37nxyknoubym '@itwin/itwinui-variables': 3.2.0 classnames: 2.3.1 dompurify: 2.5.6 @@ -3279,6 +3397,49 @@ packages: ts-key-enum: 2.0.12 transitivePeerDependencies: - '@types/react' + dev: false + + /@itwin/core-react/5.0.0_bat3aeftvdggsll265mlscthr4: + resolution: {integrity: sha512-GBtCGt+FBqckVRDeQ8YZS0BTo67cmzLUzcetnslgSoJP679yVmvSCeOzfZQEgRAtvaEsx8pDK7AOsoD2c5lekQ==} + peerDependencies: + '@itwin/appui-abstract': ^4.0.0 + '@itwin/core-bentley': ^4.0.0 + '@itwin/itwinui-react': ^3.15.0 + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@itwin/appui-abstract': 4.7.4_@itwin+core-bentley@4.7.4 + '@itwin/core-bentley': 4.7.4 + '@itwin/itwinui-icons-react': 2.8.0_nnrd3gsncyragczmpvfhocinkq + '@itwin/itwinui-react': 3.16.3_psuonouaqi5wuc37nxyknoubym + classnames: 2.5.1 + dompurify: 2.5.6 + lodash: 4.17.21 + react: 18.3.1 + react-autosuggest: 10.1.0_react@18.3.1 + react-dom: 18.3.1_react@18.3.1 + ts-key-enum: 2.0.12 + + /@itwin/core-react/5.0.0_pziseddj4fywh45qpm2erfqgyy: + resolution: {integrity: sha512-GBtCGt+FBqckVRDeQ8YZS0BTo67cmzLUzcetnslgSoJP679yVmvSCeOzfZQEgRAtvaEsx8pDK7AOsoD2c5lekQ==} + peerDependencies: + '@itwin/appui-abstract': ^4.0.0 + '@itwin/core-bentley': ^4.0.0 + '@itwin/itwinui-react': ^3.15.0 + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@itwin/appui-abstract': 4.7.4_@itwin+core-bentley@4.7.4 + '@itwin/core-bentley': 4.7.4 + '@itwin/itwinui-icons-react': 2.8.0_nnrd3gsncyragczmpvfhocinkq + classnames: 2.5.1 + dompurify: 2.5.6 + lodash: 4.17.21 + react: 18.3.1 + react-autosuggest: 10.1.0_react@18.3.1 + react-dom: 18.3.1_react@18.3.1 + ts-key-enum: 2.0.12 + dev: true /@itwin/core-telemetry/4.7.4_@itwin+core-geometry@4.7.4: resolution: {integrity: sha512-4z0M4t8ONET66Mg3xRzRQrY2v4p5dNxrfOTghxFEbRWg7iocYN+YLrLXJCQyyAFaJhKaNCq9slqB/sqcaEjZCw==} @@ -3435,7 +3596,7 @@ packages: '@itwin/core-quantity': 4.7.4_@itwin+core-bentley@4.7.4 '@itwin/core-react': 4.15.1_bpptdsfauwdziiwg4uklizbr74 '@itwin/itwinui-icons-react': 2.8.0_nnrd3gsncyragczmpvfhocinkq - '@itwin/itwinui-react': 3.12.2_psuonouaqi5wuc37nxyknoubym + '@itwin/itwinui-react': 3.16.3_psuonouaqi5wuc37nxyknoubym '@itwin/itwinui-variables': 3.2.0 classnames: 2.3.1 react: 18.3.1 @@ -3443,6 +3604,67 @@ packages: ts-key-enum: 2.0.12 transitivePeerDependencies: - '@types/react' + dev: false + + /@itwin/imodel-components-react/5.0.0_bonqqwr76xuyqrlfhkxxm53o4y: + resolution: {integrity: sha512-gCn73sIMnJR95kYHRnT42fXpGRCFQUML5irE9IOn64kV7Dkh+t2G1wU0oVIPvJbSWyO81gxnAU9T8bHasaKSxQ==} + peerDependencies: + '@itwin/appui-abstract': ^4.0.0 + '@itwin/components-react': ^5.0.0 + '@itwin/core-bentley': ^4.0.0 + '@itwin/core-common': ^4.0.0 + '@itwin/core-frontend': ^4.0.0 + '@itwin/core-geometry': ^4.0.0 + '@itwin/core-quantity': ^4.0.0 + '@itwin/core-react': ^5.0.0 + '@itwin/itwinui-react': ^3.15.0 + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@itwin/appui-abstract': 4.7.4_@itwin+core-bentley@4.7.4 + '@itwin/components-react': 5.0.0_ek5rphe37jjarmnycbpdu4q62a + '@itwin/core-bentley': 4.7.4 + '@itwin/core-common': 4.7.4_7i4fuy3zzvrtjsnyekcav72ie4 + '@itwin/core-frontend': 4.7.4_phc4rse3pm3zzqfro3xbf2awbu + '@itwin/core-geometry': 4.7.4 + '@itwin/core-quantity': 4.7.4_@itwin+core-bentley@4.7.4 + '@itwin/core-react': 5.0.0_pziseddj4fywh45qpm2erfqgyy + '@itwin/itwinui-icons-react': 2.8.0_nnrd3gsncyragczmpvfhocinkq + classnames: 2.5.1 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + ts-key-enum: 2.0.12 + dev: true + + /@itwin/imodel-components-react/5.0.0_fsn2txmqjvoy7xalov6bf4jq34: + resolution: {integrity: sha512-gCn73sIMnJR95kYHRnT42fXpGRCFQUML5irE9IOn64kV7Dkh+t2G1wU0oVIPvJbSWyO81gxnAU9T8bHasaKSxQ==} + peerDependencies: + '@itwin/appui-abstract': ^4.0.0 + '@itwin/components-react': ^5.0.0 + '@itwin/core-bentley': ^4.0.0 + '@itwin/core-common': ^4.0.0 + '@itwin/core-frontend': ^4.0.0 + '@itwin/core-geometry': ^4.0.0 + '@itwin/core-quantity': ^4.0.0 + '@itwin/core-react': ^5.0.0 + '@itwin/itwinui-react': ^3.15.0 + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@itwin/appui-abstract': 4.7.4_@itwin+core-bentley@4.7.4 + '@itwin/components-react': 5.0.0_vdvcaslqtdzlaqofn3df2kfe3y + '@itwin/core-bentley': 4.7.4 + '@itwin/core-common': 4.7.4_7i4fuy3zzvrtjsnyekcav72ie4 + '@itwin/core-frontend': 4.7.4_phc4rse3pm3zzqfro3xbf2awbu + '@itwin/core-geometry': 4.7.4 + '@itwin/core-quantity': 4.7.4_@itwin+core-bentley@4.7.4 + '@itwin/core-react': 5.0.0_bat3aeftvdggsll265mlscthr4 + '@itwin/itwinui-icons-react': 2.8.0_nnrd3gsncyragczmpvfhocinkq + '@itwin/itwinui-react': 3.16.3_psuonouaqi5wuc37nxyknoubym + classnames: 2.5.1 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + ts-key-enum: 2.0.12 /@itwin/imodels-access-backend/5.2.1_4z423c7twni3c7p4vwjttw7w4q: resolution: {integrity: sha512-A913LDaA6K0va71s3hhqpiIHNUcX7TAIcOt1Qqvu84P57/DdR45fh3+bI0dWY4DqzD3Cu7cnFL9Qw1xSh3qP9w==} @@ -3555,6 +3777,7 @@ packages: /@itwin/itwinui-react/2.12.26_nnrd3gsncyragczmpvfhocinkq: resolution: {integrity: sha512-SzedS6sz1iupq0JZm0SAfynFPR8xB9/GbTtQz/8XyuTEvrBoXyHMZJGAySR99TdLwpm3r+cxAEpFK5UOpQ+0Vw==} + deprecated: iTwinUI v2 has reached end-of-life. Please upgrade to the latest version. peerDependencies: react: '>=16.8.6 < 19.0.0' react-dom: '>=16.8.6 < 19.0.0' @@ -3568,16 +3791,18 @@ packages: react-table: 7.8.0_react@18.3.1 react-transition-group: 4.4.5_nnrd3gsncyragczmpvfhocinkq tippy.js: 6.3.7 + dev: false - /@itwin/itwinui-react/3.12.2_psuonouaqi5wuc37nxyknoubym: - resolution: {integrity: sha512-ARRr8rx3YlBkL02gJ59wt7qVK93/qpB91neXMnXTJ1QkADIl32fUtzOXvx3nlgt9RzBnoj3NbswIm75HQd/joQ==} + /@itwin/itwinui-react/3.16.3_psuonouaqi5wuc37nxyknoubym: + resolution: {integrity: sha512-lXv+gWVSR8ItqGU3Kmr2yCRTiZQg8gZiLeqtVZUyD77lcUMwRQ+FvJq65Bbr62py9/IfHwFOFdaNEBP5cV259g==} peerDependencies: - react: '>= 17.0.0 < 19.0.0' - react-dom: '>=17.0.0 < 19.0.0' + react: '>=17.0.0 <19.0.0' + react-dom: '>=17.0.0 <19.0.0' dependencies: - '@floating-ui/react': 0.26.19_nnrd3gsncyragczmpvfhocinkq + '@floating-ui/react': 0.26.28_nnrd3gsncyragczmpvfhocinkq '@itwin/itwinui-illustrations-react': 2.1.0_nnrd3gsncyragczmpvfhocinkq '@swc/helpers': 0.5.11 + '@tanstack/react-virtual': 3.11.2_nnrd3gsncyragczmpvfhocinkq classnames: 2.5.1 jotai: 2.9.0_3vdbhqr2ncalcx7opnshezpx3q react: 18.3.1 @@ -3593,11 +3818,13 @@ packages: /@itwin/itwinui-variables/2.1.2: resolution: {integrity: sha512-bwaoiqJdPvMCEhccXh5jE/uF83IoHaHofURZV62t9BEhKXW0LF+iaAwCPC+G4Sttgs6tUtqEGsPqj5RnbdipsQ==} + dev: false /@itwin/itwinui-variables/3.2.0: resolution: {integrity: sha512-YuJ3IyqRRynQRKPiTz6odF8hVxmAVABxitrqj2VZ1ZtKRVO6EyrWMgZP90cYF1l0EjqzOxG71focaHcZH5C6Ow==} + dev: false - /@itwin/measure-tools-react/0.23.2_hhvtoxm2vupiyzv3tuuiwwirjq: + /@itwin/measure-tools-react/0.23.2_4lk5crizznvcytyjhv4sytu6si: resolution: {integrity: sha512-CqkJW8hY2YHlcJCoH2dabUNp0t0jxjzaJZmsvYKqGr+wmjp5j4lhOSwtHDfVBTE6a9/pWQS+/yVou/9rTt4TLg==} peerDependencies: '@itwin/appui-abstract': ^4.7.0 @@ -3615,7 +3842,6 @@ packages: dependencies: '@bentley/icons-generic-webfont': 1.0.34 '@itwin/appui-abstract': 4.7.4_@itwin+core-bentley@4.7.4 - '@itwin/appui-layout-react': 4.8.3_jscgs7su4cyo55wt5klvj3iepa '@itwin/appui-react': 4.15.1_yrqai5hl5gvsf4dek6el5aloii '@itwin/components-react': 4.15.1_jscgs7su4cyo55wt5klvj3iepa '@itwin/core-bentley': 4.7.4 @@ -3631,6 +3857,39 @@ packages: redux: 4.2.1 dev: false + /@itwin/measure-tools-react/0.23.2_vuwuhgtuamybjudj7a3k6i7fzy: + resolution: {integrity: sha512-CqkJW8hY2YHlcJCoH2dabUNp0t0jxjzaJZmsvYKqGr+wmjp5j4lhOSwtHDfVBTE6a9/pWQS+/yVou/9rTt4TLg==} + peerDependencies: + '@itwin/appui-abstract': ^4.7.0 + '@itwin/appui-layout-react': ^4.4.0 + '@itwin/appui-react': ^4.4.0 + '@itwin/components-react': ^4.4.0 + '@itwin/core-bentley': ^4.7.0 + '@itwin/core-common': ^4.7.0 + '@itwin/core-frontend': ^4.7.0 + '@itwin/core-geometry': ^4.7.0 + '@itwin/core-react': ^4.4.0 + react: ^17.0.0 + react-dom: ^17.0.0 + redux: ^4.2.1 + dependencies: + '@bentley/icons-generic-webfont': 1.0.34 + '@itwin/appui-abstract': 4.7.4_@itwin+core-bentley@4.7.4 + '@itwin/appui-react': 5.0.0_bb3u4xzbep6lfapdosie4rdavm + '@itwin/components-react': 5.0.0_vdvcaslqtdzlaqofn3df2kfe3y + '@itwin/core-bentley': 4.7.4 + '@itwin/core-common': 4.7.4_7i4fuy3zzvrtjsnyekcav72ie4 + '@itwin/core-frontend': 4.7.4_phc4rse3pm3zzqfro3xbf2awbu + '@itwin/core-geometry': 4.7.4 + '@itwin/core-react': 5.0.0_bat3aeftvdggsll265mlscthr4 + '@itwin/core-telemetry': 4.7.4_@itwin+core-geometry@4.7.4 + '@itwin/itwinui-icons-react': 2.8.0_nnrd3gsncyragczmpvfhocinkq + '@itwin/itwinui-react': 2.12.26_nnrd3gsncyragczmpvfhocinkq + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + redux: 4.2.1 + dev: false + /@itwin/object-storage-azure/2.2.4_gteov7on4oycvgy3jqh4tz3uta: resolution: {integrity: sha512-mJjX090FBR//tqQfCjV01qYQsiU0wv2x+XTDx8sA+b8mQqYUHdCgeD55ZLecCQRihU0Aebd1qw3PadrLuv0GeQ==} peerDependencies: @@ -3733,7 +3992,7 @@ packages: '@itwin/core-quantity': 4.7.4_@itwin+core-bentley@4.7.4 '@itwin/ecschema-metadata': 4.7.4_jokiwfzdpldlrb2ppvojwoxovq - /@itwin/presentation-components/5.4.1_coeiqitrdc3kbyoxwt3ak4fycm: + /@itwin/presentation-components/5.4.1_c6sfquaec4rzsgis43ur6hv4ui: resolution: {integrity: sha512-o1ysqcbyVAWHyYTGVisFNfbix7GJdXp69c3QAeX/Xv2K0AS1ce2qYDEQCGwxwL1qIseIBbq9pZXADYjf9GH2bQ==} peerDependencies: '@itwin/appui-abstract': ^4.4.0 @@ -3752,17 +4011,62 @@ packages: react-dom: ^17.0.0 || ^18.0.0 dependencies: '@itwin/appui-abstract': 4.7.4_@itwin+core-bentley@4.7.4 - '@itwin/components-react': 4.15.1_jscgs7su4cyo55wt5klvj3iepa + '@itwin/components-react': 5.0.0_vdvcaslqtdzlaqofn3df2kfe3y '@itwin/core-bentley': 4.7.4 '@itwin/core-common': 4.7.4_7i4fuy3zzvrtjsnyekcav72ie4 '@itwin/core-frontend': 4.7.4_phc4rse3pm3zzqfro3xbf2awbu '@itwin/core-quantity': 4.7.4_@itwin+core-bentley@4.7.4 - '@itwin/core-react': 4.15.1_bpptdsfauwdziiwg4uklizbr74 + '@itwin/core-react': 5.0.0_bat3aeftvdggsll265mlscthr4 '@itwin/ecschema-metadata': 4.7.4_jokiwfzdpldlrb2ppvojwoxovq - '@itwin/imodel-components-react': 4.15.1_avm2jbcgpodgccdhk4zetypeem + '@itwin/imodel-components-react': 5.0.0_fsn2txmqjvoy7xalov6bf4jq34 + '@itwin/itwinui-icons-react': 2.8.0_nnrd3gsncyragczmpvfhocinkq + '@itwin/itwinui-illustrations-react': 2.1.0_nnrd3gsncyragczmpvfhocinkq + '@itwin/itwinui-react': 3.16.3_psuonouaqi5wuc37nxyknoubym + '@itwin/presentation-common': 4.7.4_jrcxtioaccikuahb3i3h6f5rhe + '@itwin/presentation-frontend': 4.7.4_lbci6e5ivpkspr33wpe53pcp5i + classnames: 2.5.1 + fast-deep-equal: 3.1.3 + fast-sort: 3.4.0 + micro-memoize: 4.1.2 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + react-error-boundary: 4.0.13_react@18.3.1 + react-select: 5.7.0_psuonouaqi5wuc37nxyknoubym + react-select-async-paginate: 0.7.2_kipqsbdvtmv5eumhayztwa7ftm + rxjs: 7.8.1 + transitivePeerDependencies: + - '@types/react' + - supports-color + + /@itwin/presentation-components/5.4.1_g2rvzsgzcfmjwruzqwltjgx5mq: + resolution: {integrity: sha512-o1ysqcbyVAWHyYTGVisFNfbix7GJdXp69c3QAeX/Xv2K0AS1ce2qYDEQCGwxwL1qIseIBbq9pZXADYjf9GH2bQ==} + peerDependencies: + '@itwin/appui-abstract': ^4.4.0 + '@itwin/components-react': ^4.9.0 + '@itwin/core-bentley': ^4.4.0 + '@itwin/core-common': ^4.4.0 + '@itwin/core-frontend': ^4.4.0 + '@itwin/core-quantity': ^4.4.0 + '@itwin/core-react': ^4.9.0 + '@itwin/ecschema-metadata': ^4.4.0 + '@itwin/imodel-components-react': ^4.9.0 + '@itwin/itwinui-react': ^3.0.0 + '@itwin/presentation-common': ^4.4.0 + '@itwin/presentation-frontend': ^4.4.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + dependencies: + '@itwin/appui-abstract': 4.7.4_@itwin+core-bentley@4.7.4 + '@itwin/components-react': 5.0.0_ek5rphe37jjarmnycbpdu4q62a + '@itwin/core-bentley': 4.7.4 + '@itwin/core-common': 4.7.4_7i4fuy3zzvrtjsnyekcav72ie4 + '@itwin/core-frontend': 4.7.4_phc4rse3pm3zzqfro3xbf2awbu + '@itwin/core-quantity': 4.7.4_@itwin+core-bentley@4.7.4 + '@itwin/core-react': 5.0.0_pziseddj4fywh45qpm2erfqgyy + '@itwin/ecschema-metadata': 4.7.4_jokiwfzdpldlrb2ppvojwoxovq + '@itwin/imodel-components-react': 5.0.0_bonqqwr76xuyqrlfhkxxm53o4y '@itwin/itwinui-icons-react': 2.8.0_nnrd3gsncyragczmpvfhocinkq '@itwin/itwinui-illustrations-react': 2.1.0_nnrd3gsncyragczmpvfhocinkq - '@itwin/itwinui-react': 2.12.26_nnrd3gsncyragczmpvfhocinkq '@itwin/presentation-common': 4.7.4_jrcxtioaccikuahb3i3h6f5rhe '@itwin/presentation-frontend': 4.7.4_lbci6e5ivpkspr33wpe53pcp5i classnames: 2.5.1 @@ -3778,8 +4082,9 @@ packages: transitivePeerDependencies: - '@types/react' - supports-color + dev: true - /@itwin/presentation-components/5.4.1_tr757zhbqqbt4rcaxvlnctg2de: + /@itwin/presentation-components/5.4.1_vsgychkrhhcqnl34xxqvqnicea: resolution: {integrity: sha512-o1ysqcbyVAWHyYTGVisFNfbix7GJdXp69c3QAeX/Xv2K0AS1ce2qYDEQCGwxwL1qIseIBbq9pZXADYjf9GH2bQ==} peerDependencies: '@itwin/appui-abstract': ^4.4.0 @@ -3808,6 +4113,7 @@ packages: '@itwin/imodel-components-react': 4.15.1_avm2jbcgpodgccdhk4zetypeem '@itwin/itwinui-icons-react': 2.8.0_nnrd3gsncyragczmpvfhocinkq '@itwin/itwinui-illustrations-react': 2.1.0_nnrd3gsncyragczmpvfhocinkq + '@itwin/itwinui-react': 3.16.3_psuonouaqi5wuc37nxyknoubym '@itwin/presentation-common': 4.7.4_jrcxtioaccikuahb3i3h6f5rhe '@itwin/presentation-frontend': 4.7.4_lbci6e5ivpkspr33wpe53pcp5i classnames: 2.5.1 @@ -3823,7 +4129,7 @@ packages: transitivePeerDependencies: - '@types/react' - supports-color - dev: true + dev: false /@itwin/presentation-core-interop/1.1.1_rll2n26bhzrezeyt23jhdcbtsy: resolution: {integrity: sha512-Ts3U1/0pJ+igKT2cRlUiO+QKldz/92ma2hKWxTgJWfBAybPR3DI34NAy1Jl7q/r7QcZ+5DAsIcO9Et/SP+Lt9A==} @@ -3863,7 +4169,7 @@ packages: rxjs: 7.8.1 rxjs-for-await: 1.0.0_rxjs@7.8.1 - /@itwin/presentation-hierarchies-react/1.1.1_qnkn5lfpltqtw66hig7mudvuci: + /@itwin/presentation-hierarchies-react/1.1.1_wrx22x3z54gp6n6sl5xreeqzfy: resolution: {integrity: sha512-lVOYZOJxwk/EgmMHpgOl3l6GLBvTHzeXw0312dnwnV2gT/KIaBJ7KyLzNur8CGKPprtOkgu0KZ0wVRGk8j6TAw==} peerDependencies: '@itwin/itwinui-react': ^3.0.0 @@ -3876,7 +4182,7 @@ packages: '@itwin/core-bentley': 4.9.5 '@itwin/itwinui-icons-react': 2.8.0_nnrd3gsncyragczmpvfhocinkq '@itwin/itwinui-illustrations-react': 2.1.0_nnrd3gsncyragczmpvfhocinkq - '@itwin/itwinui-react': 2.12.26_nnrd3gsncyragczmpvfhocinkq + '@itwin/itwinui-react': 3.16.3_psuonouaqi5wuc37nxyknoubym '@itwin/presentation-hierarchies': 1.2.1 '@itwin/presentation-shared': 1.1.0 '@itwin/unified-selection': 1.1.1 @@ -3927,8 +4233,41 @@ packages: '@itwin/core-react': 4.15.1_bpptdsfauwdziiwg4uklizbr74 '@itwin/itwinui-icons-react': 2.8.0_nnrd3gsncyragczmpvfhocinkq '@itwin/itwinui-illustrations-react': 2.1.0_nnrd3gsncyragczmpvfhocinkq - '@itwin/itwinui-react': 3.12.2_psuonouaqi5wuc37nxyknoubym - '@itwin/presentation-components': 5.4.1_coeiqitrdc3kbyoxwt3ak4fycm + '@itwin/itwinui-react': 3.16.3_psuonouaqi5wuc37nxyknoubym + '@itwin/presentation-components': 5.4.1_vsgychkrhhcqnl34xxqvqnicea + '@itwin/presentation-frontend': 4.7.4_lbci6e5ivpkspr33wpe53pcp5i + classnames: 2.5.1 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + react-error-boundary: 4.0.13_react@18.3.1 + transitivePeerDependencies: + - '@types/react' + dev: false + + /@itwin/property-grid-react/1.10.0_zgwkemo3kfhesxpfdnsxiis6ka: + resolution: {integrity: sha512-n5o+NnH8tGvLTkEHls6uZ7SmHBFby5LkZCVAcrY6cFsVD+tceIOZzgiIJbsEp/+OANGY3AnkAdg76yOrVQAxOg==} + peerDependencies: + '@itwin/appui-abstract': ^4.0.0 + '@itwin/appui-react': ^4.3.0 + '@itwin/components-react': ^4.3.0 + '@itwin/core-bentley': ^4.0.0 + '@itwin/core-frontend': ^4.0.0 + '@itwin/core-react': ^4.3.0 + '@itwin/presentation-components': ^4.0.0 || ^5.0.0 + '@itwin/presentation-frontend': ^4.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + dependencies: + '@itwin/appui-abstract': 4.7.4_@itwin+core-bentley@4.7.4 + '@itwin/appui-react': 5.0.0_bb3u4xzbep6lfapdosie4rdavm + '@itwin/components-react': 5.0.0_vdvcaslqtdzlaqofn3df2kfe3y + '@itwin/core-bentley': 4.7.4 + '@itwin/core-frontend': 4.7.4_phc4rse3pm3zzqfro3xbf2awbu + '@itwin/core-react': 5.0.0_bat3aeftvdggsll265mlscthr4 + '@itwin/itwinui-icons-react': 2.8.0_nnrd3gsncyragczmpvfhocinkq + '@itwin/itwinui-illustrations-react': 2.1.0_nnrd3gsncyragczmpvfhocinkq + '@itwin/itwinui-react': 3.16.3_psuonouaqi5wuc37nxyknoubym + '@itwin/presentation-components': 5.4.1_c6sfquaec4rzsgis43ur6hv4ui '@itwin/presentation-frontend': 4.7.4_lbci6e5ivpkspr33wpe53pcp5i classnames: 2.5.1 react: 18.3.1 @@ -3950,7 +4289,7 @@ packages: - debug dev: false - /@itwin/tree-widget-react/3.0.1_i672swagn374al3m4ors5guk4q: + /@itwin/tree-widget-react/3.0.1_qmonqnyb76mcc5lxvubqnbx5ki: resolution: {integrity: sha512-FbfrHXfk9e+YqZqRbzTiALufGZaMThcPVz59bvMXIpnvBLPwo+PVtGe1cL9Hq8lY1XaKqPc3sDiXux1kPww5ug==} peerDependencies: '@itwin/appui-abstract': ^4.0.0 @@ -3972,11 +4311,52 @@ packages: '@itwin/ecschema-metadata': 4.7.4_jokiwfzdpldlrb2ppvojwoxovq '@itwin/itwinui-icons-react': 2.8.0_nnrd3gsncyragczmpvfhocinkq '@itwin/itwinui-illustrations-react': 2.1.0_nnrd3gsncyragczmpvfhocinkq - '@itwin/itwinui-react': 2.12.26_nnrd3gsncyragczmpvfhocinkq - '@itwin/presentation-components': 5.4.1_coeiqitrdc3kbyoxwt3ak4fycm + '@itwin/itwinui-react': 3.16.3_psuonouaqi5wuc37nxyknoubym + '@itwin/presentation-components': 5.4.1_vsgychkrhhcqnl34xxqvqnicea + '@itwin/presentation-core-interop': 1.1.1_rll2n26bhzrezeyt23jhdcbtsy + '@itwin/presentation-hierarchies': 1.2.1 + '@itwin/presentation-hierarchies-react': 1.1.1_wrx22x3z54gp6n6sl5xreeqzfy + '@itwin/presentation-shared': 1.1.0 + '@itwin/unified-selection': 1.1.1 + classnames: 2.5.1 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + react-error-boundary: 4.0.13_react@18.3.1 + rxjs: 7.8.1 + transitivePeerDependencies: + - '@itwin/core-bentley' + - '@itwin/core-common' + - '@itwin/core-geometry' + - '@itwin/core-quantity' + dev: false + + /@itwin/tree-widget-react/3.0.1_zup47iojulowp72m2r6fz4nihq: + resolution: {integrity: sha512-FbfrHXfk9e+YqZqRbzTiALufGZaMThcPVz59bvMXIpnvBLPwo+PVtGe1cL9Hq8lY1XaKqPc3sDiXux1kPww5ug==} + peerDependencies: + '@itwin/appui-abstract': ^4.0.0 + '@itwin/appui-react': ^4.10.0 + '@itwin/components-react': ^4.10.0 + '@itwin/core-frontend': ^4.0.0 + '@itwin/core-react': ^4.10.0 + '@itwin/ecschema-metadata': ^4.0.0 + '@itwin/itwinui-react': ^3.11.0 + '@itwin/presentation-components': ^5.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + dependencies: + '@itwin/appui-abstract': 4.7.4_@itwin+core-bentley@4.7.4 + '@itwin/appui-react': 5.0.0_bb3u4xzbep6lfapdosie4rdavm + '@itwin/components-react': 5.0.0_vdvcaslqtdzlaqofn3df2kfe3y + '@itwin/core-frontend': 4.7.4_phc4rse3pm3zzqfro3xbf2awbu + '@itwin/core-react': 5.0.0_bat3aeftvdggsll265mlscthr4 + '@itwin/ecschema-metadata': 4.7.4_jokiwfzdpldlrb2ppvojwoxovq + '@itwin/itwinui-icons-react': 2.8.0_nnrd3gsncyragczmpvfhocinkq + '@itwin/itwinui-illustrations-react': 2.1.0_nnrd3gsncyragczmpvfhocinkq + '@itwin/itwinui-react': 3.16.3_psuonouaqi5wuc37nxyknoubym + '@itwin/presentation-components': 5.4.1_c6sfquaec4rzsgis43ur6hv4ui '@itwin/presentation-core-interop': 1.1.1_rll2n26bhzrezeyt23jhdcbtsy '@itwin/presentation-hierarchies': 1.2.1 - '@itwin/presentation-hierarchies-react': 1.1.1_qnkn5lfpltqtw66hig7mudvuci + '@itwin/presentation-hierarchies-react': 1.1.1_wrx22x3z54gp6n6sl5xreeqzfy '@itwin/presentation-shared': 1.1.0 '@itwin/unified-selection': 1.1.1 classnames: 2.5.1 @@ -4712,6 +5092,7 @@ packages: /@popperjs/core/2.11.8: resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + dev: false /@probe.gl/env/3.6.0: resolution: {integrity: sha512-4tTZYUg/8BICC3Yyb9rOeoKeijKbZHRXBEKObrfPmX4sQmYB15ZOUpoVBhAyJkOYVAM8EkPci6Uw5dLCwx2BEQ==} @@ -5125,6 +5506,19 @@ packages: dependencies: defer-to-connect: 2.0.1 + /@tanstack/react-virtual/3.11.2_nnrd3gsncyragczmpvfhocinkq: + resolution: {integrity: sha512-OuFzMXPF4+xZgx8UzJha0AieuMihhhaWG0tCqpp6tDzlFwOmNBPYMuLOtMJ1Tr4pXLHmgjcWhG6RlknY2oNTdQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + dependencies: + '@tanstack/virtual-core': 3.11.2 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + + /@tanstack/virtual-core/3.11.2: + resolution: {integrity: sha512-vTtpNt7mKCiZ1pwU9hfKPhpdVO2sVzFQsxoVBGtOSHxlrRRzYr8iQ2TlwbAcRYCcEiZ9ECAM8kBzH0v2+VzfKw==} + /@testing-library/dom/9.3.4: resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} engines: {node: '>=14'} @@ -5183,6 +5577,7 @@ packages: react: 18.3.1 react-dom: 18.3.1_react@18.3.1 tippy.js: 6.3.7 + dev: false /@tootallnate/once/1.1.2: resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} @@ -5480,6 +5875,7 @@ packages: resolution: {integrity: sha512-ahMp4pmjVlnExxNwxyaDrFgmKxSbPwU23sGQw2gJK4EhCvnvmib2s/O/+y1dfV57dXOwpr2plfyBol+vEHbi2w==} dependencies: '@types/react': 18.3.3 + dev: false /@types/react-transition-group/4.4.10: resolution: {integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==} @@ -7087,6 +7483,7 @@ packages: /classnames/2.3.1: resolution: {integrity: sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==} + dev: false /classnames/2.5.1: resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} @@ -10222,6 +10619,7 @@ packages: /highlight-words-core/1.2.2: resolution: {integrity: sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg==} + dev: false /history/5.3.0: resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==} @@ -10546,7 +10944,6 @@ packages: /immer/10.1.1: resolution: {integrity: sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==} - dev: false /immer/9.0.21: resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} @@ -10554,6 +10951,7 @@ packages: /immer/9.0.6: resolution: {integrity: sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ==} + dev: false /immutable/4.3.6: resolution: {integrity: sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==} @@ -12717,6 +13115,7 @@ packages: /memoize-one/4.0.3: resolution: {integrity: sha512-QmpUu4KqDmX0plH4u+tf0riMc1KHE1+lw95cMrLlXQAFOx/xnBtwhZ52XJxd9X2O6kwKBqX32kmhbhlobD0cuw==} + dev: false /memoize-one/5.2.1: resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} @@ -14742,6 +15141,7 @@ packages: memoize-one: 4.0.3 prop-types: 15.8.1 react: 18.3.1 + dev: false /react-intersection-observer/8.34.0_react@18.3.1: resolution: {integrity: sha512-TYKh52Zc0Uptp5/b4N91XydfSGKubEhgZRtcg1rhTKABXijc4Sdr1uTp5lJ8TN27jwUsdXxjHXtHa0kPj704sw==} @@ -15142,6 +15542,7 @@ packages: /resize-observer-polyfill/1.5.1: resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + dev: false /resolve-alpn/1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} @@ -16572,6 +16973,7 @@ packages: resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==} dependencies: '@popperjs/core': 2.11.8 + dev: false /tmpl/1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} @@ -17129,6 +17531,7 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: react: 18.3.1 + dev: false /username/5.1.0: resolution: {integrity: sha512-PCKbdWw85JsYMvmCv5GH3kXmM66rCd9m1hBEDutPNv94b/pqCMT4NtcKyeWYvLFiE8b+ha1Jdl8XAaUdPn5QTg==} @@ -17989,6 +18392,27 @@ packages: immer: 9.0.6 react: 18.3.1 use-sync-external-store: 1.2.0_react@18.3.1 + dev: false + + /zustand/4.5.4_pkovrptl7wv2iqloyky3y37yx4: + resolution: {integrity: sha512-/BPMyLKJPtFEvVL0E9E9BTUM63MNyhPGlvxk1XjrfWTUlV+BR8jufjsovHzrtR6YNcBEcL7cMHovL1n9xHawEg==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0.6' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + dependencies: + '@types/react': 18.3.3 + immer: 10.1.1 + react: 18.3.1 + use-sync-external-store: 1.2.0_react@18.3.1 /zwitch/1.0.5: resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} diff --git a/packages/apps/desktop-viewer-test/.env b/packages/apps/desktop-viewer-test/.env index 97aa7319..c819fdff 100644 --- a/packages/apps/desktop-viewer-test/.env +++ b/packages/apps/desktop-viewer-test/.env @@ -13,7 +13,7 @@ GENERATE_SOURCEMAP=false DISABLE_NEW_JSX_TRANSFORM=true # Advanced iModel.js CRA Config: https://github.com/imodeljs/create-react-app/blob/imodeljs/packages/react-scripts/README-imodeljs.md -USE_FAST_SASS=true +USE_FAST_SASS=false USE_FULL_SOURCEMAP=true TRANSPILE_DEPS=false DISABLE_TERSER=true diff --git a/packages/apps/desktop-viewer-test/package.json b/packages/apps/desktop-viewer-test/package.json index b17581e8..58fbc903 100644 --- a/packages/apps/desktop-viewer-test/package.json +++ b/packages/apps/desktop-viewer-test/package.json @@ -33,7 +33,6 @@ "dependencies": { "@bentley/icons-generic-webfont": "^1.0.34", "@itwin/appui-abstract": "^4.7.3", - "@itwin/appui-layout-react": "^4.3.0", "@itwin/appui-react": "^4.3.0", "@itwin/unified-selection": "^1.1.1", "@itwin/components-react": "^4.3.0", @@ -64,7 +63,7 @@ "@itwin/itwinui-illustrations-react": "^2.0.1", "@itwin/itwinui-layouts-css": "^0.2.0", "@itwin/itwinui-layouts-react": "^0.2.0", - "@itwin/itwinui-react": "^2.12.0", + "@itwin/itwinui-react": "^3.16.0", "@itwin/itwinui-variables": "^2.0.0", "@itwin/measure-tools-react": "^0.23.2", "@itwin/presentation-backend": "^4.7.3", diff --git a/packages/apps/web-viewer-test/.env b/packages/apps/web-viewer-test/.env index b1d52891..7ea5009f 100644 --- a/packages/apps/web-viewer-test/.env +++ b/packages/apps/web-viewer-test/.env @@ -27,7 +27,7 @@ IMJS_AUTH_CLIENT_SCOPES ="imodelaccess:read imodels:read realitydata:read" IMJS_ITWIN_STACK_ITWIN_ID="678a34a5-3ed1-412c-a9ba-086dee14d6c2" IMJS_ITWIN_STACK_IMODEL_ID="4dcff98f-8570-497e-b7ce-8df981b5b8c7" -USE_FAST_SASS=true +USE_FAST_SASS=false USE_FULL_SOURCEMAPS=true TRANSPILE_DEPS=false DISABLE_TERSER=true diff --git a/packages/apps/web-viewer-test/package.json b/packages/apps/web-viewer-test/package.json index 386a1aef..c2754888 100644 --- a/packages/apps/web-viewer-test/package.json +++ b/packages/apps/web-viewer-test/package.json @@ -5,11 +5,10 @@ "dependencies": { "@bentley/icons-generic": "^1.0.34", "@itwin/appui-abstract": "^4.7.3", - "@itwin/appui-layout-react": "^4.3.0", - "@itwin/appui-react": "^4.3.0", + "@itwin/appui-react": "^5.0.0", "@itwin/unified-selection": "^1.1.1", "@itwin/browser-authorization": "^1.0.1", - "@itwin/components-react": "^4.3.0", + "@itwin/components-react": "^5.0.0", "@itwin/core-bentley": "^4.7.3", "@itwin/core-common": "^4.7.3", "@itwin/core-frontend": "^4.7.3", @@ -18,14 +17,14 @@ "@itwin/core-markup": "^4.7.3", "@itwin/core-orbitgt": "^4.7.3", "@itwin/core-quantity": "^4.7.3", - "@itwin/core-react": "^4.3.0", + "@itwin/core-react": "^5.0.0", "@itwin/core-telemetry": "^4.7.3", "@itwin/ecschema-metadata": "^4.7.3", "@itwin/ecschema-rpcinterface-common": "^4.7.3", "@itwin/frontend-devtools": "^4.7.3", - "@itwin/imodel-components-react": "^4.3.0", + "@itwin/imodel-components-react": "^5.0.0", "@itwin/imodels-access-frontend": "^5.2.1", - "@itwin/itwinui-react": "^2.12.0", + "@itwin/itwinui-react": "^3.16.0", "@itwin/measure-tools-react": "^0.23.2", "@itwin/presentation-common": "^4.7.3", "@itwin/presentation-components": "^5.0.0", diff --git a/packages/apps/web-viewer-test/src/components/home/ViewerHome.tsx b/packages/apps/web-viewer-test/src/components/home/ViewerHome.tsx index c9d6e043..e771a2ef 100644 --- a/packages/apps/web-viewer-test/src/components/home/ViewerHome.tsx +++ b/packages/apps/web-viewer-test/src/components/home/ViewerHome.tsx @@ -26,7 +26,7 @@ import { } from "@itwin/tree-widget-react"; import type { ViewerBackstageItem } from "@itwin/web-viewer-react"; import { - BackstageItemsProvider, + // BackstageItemsProvider, Viewer, ViewerContentToolsProvider, ViewerNavigationToolsProvider, @@ -126,16 +126,6 @@ const ViewerHome: React.FC = () => { }, ]; - const backstageItems2: ViewerBackstageItem[] = [ - { - id: "BS4", - execute: () => console.log("BS1"), - groupPriority: 20, - itemPriority: 100, - label: "BackstageItems 1", - }, - ]; - return (
{ enablePerformanceMonitors={true} onIModelAppInit={onIModelAppInit} uiProviders={[ - new BackstageItemsProvider(backstageItems, "BackstageItemsProvider1"), + // new BackstageItemsProvider(backstageItems, "BackstageItemsProvider1"), new ViewerNavigationToolsProvider(), new ViewerContentToolsProvider({ vertical: { @@ -241,7 +231,6 @@ const ViewerHome: React.FC = () => { // manifestUrl: "http://localhost:3001/package.json", // }), // ]} - backstageItems={backstageItems2} defaultUiConfig={{ cornerButton: }} // renderSys={{doIdleWork: true}} selectionStorage={unifiedSelectionStorage} diff --git a/packages/apps/web-viewer-test/src/index.tsx b/packages/apps/web-viewer-test/src/index.tsx index 9b31babf..1fe70e29 100644 --- a/packages/apps/web-viewer-test/src/index.tsx +++ b/packages/apps/web-viewer-test/src/index.tsx @@ -4,8 +4,9 @@ *--------------------------------------------------------------------------------------------*/ import "./index.scss"; +import "@itwin/itwinui-react/styles.css"; -import { UiFramework } from "@itwin/appui-react"; +import { ThemeProvider } from "@itwin/itwinui-react"; import React from "react"; import { createRoot } from "react-dom/client"; @@ -16,11 +17,11 @@ globalThis.IMJS_URL_PREFIX = process.env.IMJS_URL_PREFIX || ""; const container = document.getElementById("root"); const root = createRoot(container!); // createRoot(container!) if you use TypeScript -UiFramework.childWindows.useCreateRoot(createRoot); - root.render( - + + + ); diff --git a/packages/modules/desktop-viewer-react/package.json b/packages/modules/desktop-viewer-react/package.json index ca6118ea..5ced50e4 100644 --- a/packages/modules/desktop-viewer-react/package.json +++ b/packages/modules/desktop-viewer-react/package.json @@ -20,7 +20,9 @@ "test": "", "test-watch": "jest --watch", "clean": "rimraf lib", - "rebuild": "npm run clean && npm run build" + "rebuild": "npm run clean && npm run build", + "lint": "eslint --config package.json --resolve-plugins-relative-to ../../../common/scripts/ --no-eslintrc \"./src/**/*.{ts,tsx}\" 1>&2", + "lint:fix": "npm run -s lint -- --fix" }, "dependencies": { "@itwin/imodels-client-management": "^5.2.1", @@ -28,10 +30,9 @@ }, "devDependencies": { "@itwin/appui-abstract": "^4.7.3", - "@itwin/appui-layout-react": "^4.0.0", - "@itwin/appui-react": "^4.0.0", + "@itwin/appui-react": "^5.0.0", "@itwin/build-tools": "^4.7.3", - "@itwin/components-react": "^4.0.0", + "@itwin/components-react": "^5.0.0", "@itwin/core-backend": "^4.7.3", "@itwin/core-bentley": "^4.7.3", "@itwin/core-common": "^4.7.3", @@ -41,11 +42,11 @@ "@itwin/core-markup": "^4.7.3", "@itwin/core-orbitgt": "^4.7.3", "@itwin/core-quantity": "^4.7.3", - "@itwin/core-react": "^4.0.0", + "@itwin/core-react": "^5.0.0", "@itwin/core-telemetry": "^4.7.3", "@itwin/ecschema-metadata": "^4.7.3", "@itwin/electron-authorization": "^0.15.0", - "@itwin/imodel-components-react": "^4.0.0", + "@itwin/imodel-components-react": "^5.0.0", "@itwin/presentation-common": "^4.7.3", "@itwin/presentation-components": "^5.0.0", "@itwin/presentation-frontend": "^4.7.3", @@ -59,6 +60,7 @@ "@types/react-dom": "^18.2.4", "@types/react-redux": "^7.1.9", "concurrently": "^5.2.0", + "eslint": "^7.11.0", "copyfiles": "^2.1.0", "electron": "^24.8.3", "identity-obj-proxy": "^3.0.0", @@ -79,8 +81,8 @@ "@itwin/ecschema-metadata": "^4.0.0", "@itwin/electron-authorization": "^0.13.0 || ^0.14.0 || ^0.15.0", "electron": "^24.0.0", - "react": "^17.0.2 || ^18.0.0", - "react-dom": "^17.0.2 || ^18.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0", "react-redux": "^7.2.0", "redux": "^4.0.5" }, @@ -114,5 +116,15 @@ "iModel", "iModelJs", "iTwin" - ] + ], + "eslintConfig": { + "extends": [ + "../../../common/scripts/.eslintrc.ts.json" + ], + "parserOptions": { + "project": [ + "./tsconfig.json" + ] + } + } } diff --git a/packages/modules/desktop-viewer-react/src/types.ts b/packages/modules/desktop-viewer-react/src/types.ts index 90378160..8e3ebe3d 100644 --- a/packages/modules/desktop-viewer-react/src/types.ts +++ b/packages/modules/desktop-viewer-react/src/types.ts @@ -17,23 +17,28 @@ export type DesktopInitializerParams = ViewerCommonProps & { clientId?: string; }; -type ClientIdProps = { - clientId: string; - iTwinId: string; -} | { - clientId?: string; - iTwinId?: never; -}; +type ClientIdProps = + | { + clientId: string; + iTwinId: string; + } + | { + clientId?: string; + iTwinId?: never; + }; -type ConnectedViewerDesktopProps = ConnectedViewerProps & Required> +type ConnectedViewerDesktopProps = ConnectedViewerProps & + Required>; type BlankViewerDesktopProps = BlankViewerProps & ClientIdProps; -type FileViewerDesktopProps = FileViewerProps & Pick; +type FileViewerDesktopProps = FileViewerProps & + Pick; /** Desktop Viewer can open local (snapshot/briefcase), connected or blank connection models */ -export type DesktopViewerProps = DesktopInitializerParams & XOR< - XOR, - ConnectedViewerDesktopProps ->; +export type DesktopViewerProps = DesktopInitializerParams & + XOR< + XOR, + ConnectedViewerDesktopProps + >; // todo: rm enum in favor of as const export enum ModelStatus { diff --git a/packages/modules/viewer-react/package.json b/packages/modules/viewer-react/package.json index 151a9b67..681ed5e7 100644 --- a/packages/modules/viewer-react/package.json +++ b/packages/modules/viewer-react/package.json @@ -26,24 +26,25 @@ "test": "jest", "test-watch": "jest --watch", "clean": "rimraf lib", - "rebuild": "npm run clean && npm run build" + "rebuild": "npm run clean && npm run build", + "lint": "eslint --config package.json --resolve-plugins-relative-to ../../../common/scripts/ --no-eslintrc \"./src/**/*.{ts,tsx}\" 1>&2", + "lint:fix": "npm run -s lint -- --fix" }, "dependencies": { "@bentley/icons-generic-webfont": "^1.0.15", "@itwin/presentation-core-interop": "^1.0.0", "@itwin/presentation-shared": "^1.0.0", "@itwin/itwinui-illustrations-react": "^2.0.1", - "@itwin/itwinui-react": "^2.6.0", + "@itwin/itwinui-react": "^3.16.0", "@itwin/reality-data-client": "^1.0.0", "@itwin/unified-selection": "^1.0.0", "lodash.isequal": "^4.5.0" }, "devDependencies": { "@itwin/appui-abstract": "^4.7.3", - "@itwin/appui-layout-react": "^4.0.0", - "@itwin/appui-react": "^4.0.0", + "@itwin/appui-react": "^5.0.0", "@itwin/build-tools": "^4.7.3", - "@itwin/components-react": "^4.0.0", + "@itwin/components-react": "^5.0.0", "@itwin/core-bentley": "^4.7.3", "@itwin/core-common": "^4.7.3", "@itwin/core-frontend": "^4.7.3", @@ -52,12 +53,12 @@ "@itwin/core-markup": "^4.7.3", "@itwin/core-orbitgt": "^4.7.3", "@itwin/core-quantity": "^4.7.3", - "@itwin/core-react": "^4.0.0", + "@itwin/core-react": "^5.0.0", "@itwin/core-telemetry": "^4.7.3", "@itwin/ecschema-metadata": "^4.7.3", "@itwin/imodels-access-frontend": "^5.2.1", "@itwin/imodels-client-management": "^5.2.1", - "@itwin/imodel-components-react": "^4.0.0", + "@itwin/imodel-components-react": "^5.0.0", "@itwin/presentation-common": "^4.7.3", "@itwin/presentation-components": "^5.0.0", "@itwin/presentation-frontend": "^4.7.3", @@ -73,6 +74,7 @@ "@types/react-redux": "^7.1.9", "concurrently": "^5.2.0", "copyfiles": "^2.1.0", + "eslint": "^7.11.0", "identity-obj-proxy": "^3.0.0", "jest": "^29.1.0", "jest-environment-jsdom": "^29.1.0", @@ -86,21 +88,20 @@ }, "peerDependencies": { "@itwin/appui-abstract": "^4.0.0", - "@itwin/appui-layout-react": "^4.0.0", - "@itwin/appui-react": "^4.0.0", - "@itwin/components-react": "^4.0.0", + "@itwin/appui-react": "^5.0.0", + "@itwin/components-react": "^5.0.0", "@itwin/core-bentley": "^4.0.0", "@itwin/core-common": "^4.0.0", "@itwin/core-frontend": "^4.0.0", "@itwin/core-geometry": "^4.0.0", - "@itwin/core-react": "^4.0.0", + "@itwin/core-react": "^5.0.0", "@itwin/imodels-access-frontend": "^4.0.0 || ^5.0.0", "@itwin/imodels-client-management": "^4.0.0 || ^5.0.0", "@itwin/presentation-common": "^4.0.0", "@itwin/presentation-components": "^4.0.0 || ^5.0.0", "@itwin/presentation-frontend": "^4.0.0", - "react": "^17.0.2 || ^18.0.0", - "react-dom": "^17.0.2 || ^18.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0", "react-redux": "^7.2.0", "redux": "^4.0.5" }, @@ -135,5 +136,18 @@ "iModel", "iModelJs", "iTwin" - ] + ], + "eslintConfig": { + "extends": [ + "../../../common/scripts/.eslintrc.ts.json" + ], + "parserOptions": { + "project": [ + "./tsconfig.json" + ] + }, + "ignorePatterns": [ + "tests/" + ] + } } diff --git a/packages/modules/viewer-react/src/components/BaseViewer.tsx b/packages/modules/viewer-react/src/components/BaseViewer.tsx index e126b041..42a04b82 100644 --- a/packages/modules/viewer-react/src/components/BaseViewer.tsx +++ b/packages/modules/viewer-react/src/components/BaseViewer.tsx @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { IModelApp } from "@itwin/core-frontend"; -import { FillCentered } from "@itwin/core-react"; +import { Flex } from "@itwin/itwinui-react"; import React from "react"; import { useAccessToken } from "../hooks/useAccessToken"; @@ -39,18 +39,18 @@ export const BaseViewer = ({ viewerInitialized ? ( ) : ( - + {IModelApp.localization.getLocalizedString( "iTwinViewer:baseViewerInitializer.baseViewerInitializing" )} - + ) ) : ( - + {IModelApp.localization.getLocalizedString( "iTwinViewer:baseViewerInitializer.validTokenNeeded" )} - + )} ); diff --git a/packages/modules/viewer-react/src/components/app-ui/providers/BackstageItemsProvider.ts b/packages/modules/viewer-react/src/components/app-ui/providers/BackstageItemsProvider.ts deleted file mode 100644 index f5c9e668..00000000 --- a/packages/modules/viewer-react/src/components/app-ui/providers/BackstageItemsProvider.ts +++ /dev/null @@ -1,69 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Bentley Systems, Incorporated. All rights reserved. - * See LICENSE.md in the project root for license terms and full copyright notice. - *--------------------------------------------------------------------------------------------*/ - -import type { - BackstageActionItem, - BackstageStageLauncher, - UiItemsProvider, -} from "@itwin/appui-react"; -import { BackstageItemUtilities, UiFramework } from "@itwin/appui-react"; -import { IModelApp } from "@itwin/core-frontend"; - -import type { ViewerBackstageItem } from "../../../types"; - -export class BackstageItemsProvider implements UiItemsProvider { - constructor(private _backstageItems: ViewerBackstageItem[], public readonly id = "iTwinViewer.BackstageItemsProvider") { } - - public provideBackstageItems() { - const allBackstageItems: ViewerBackstageItem[] = []; - this._backstageItems.forEach((backstageItem) => { - // check for label i18n key and translate if needed - if (backstageItem.labeli18nKey) { - let newItem; - if ((backstageItem as BackstageStageLauncher).stageId) { - newItem = BackstageItemUtilities.createStageLauncher( - (backstageItem as BackstageStageLauncher).stageId, - backstageItem.groupPriority, - backstageItem.itemPriority, - IModelApp.localization.getLocalizedString( - backstageItem.labeli18nKey - ), - backstageItem.subtitle?.toString(), - backstageItem.icon?.toString() - ); - } else { - newItem = BackstageItemUtilities.createActionItem( - backstageItem.id, - backstageItem.groupPriority, - backstageItem.itemPriority, - (backstageItem as BackstageActionItem).execute, - IModelApp.localization.getLocalizedString( - backstageItem.labeli18nKey - ), - backstageItem.subtitle?.toString(), - backstageItem.icon?.toString() - ); - } - allBackstageItems.push(newItem); - } else { - allBackstageItems.push(backstageItem); - } - }); - - // add a launcher item for the built-in frontstage if there is an active connection and other backstage items - if (allBackstageItems?.length > 0 && UiFramework.getIModelConnection()) { - allBackstageItems.unshift({ - stageId: "iTwinViewer.DefaultFrontstage", - id: "iTwinViewer.DefaultFrontstage", - groupPriority: 100, - itemPriority: 10, - label: IModelApp.localization.getLocalizedString( - "iTwinViewer:backstage.mainFrontstage" - ), - }); - } - return allBackstageItems; - } -} diff --git a/packages/modules/viewer-react/src/components/app-ui/providers/DefaultContentGroupProvider.ts b/packages/modules/viewer-react/src/components/app-ui/providers/DefaultContentGroupProvider.tsx similarity index 63% rename from packages/modules/viewer-react/src/components/app-ui/providers/DefaultContentGroupProvider.ts rename to packages/modules/viewer-react/src/components/app-ui/providers/DefaultContentGroupProvider.tsx index 1a38f808..729cc33f 100644 --- a/packages/modules/viewer-react/src/components/app-ui/providers/DefaultContentGroupProvider.ts +++ b/packages/modules/viewer-react/src/components/app-ui/providers/DefaultContentGroupProvider.tsx @@ -4,13 +4,14 @@ *--------------------------------------------------------------------------------------------*/ import { StandardContentLayouts } from "@itwin/appui-abstract"; -import type { FrontstageConfig } from "@itwin/appui-react"; import { ContentGroup, ContentGroupProvider, - IModelViewportControl, UiFramework, } from "@itwin/appui-react"; +import { ViewportComponent } from "@itwin/imodel-components-react"; +import { viewWithUnifiedSelection } from "@itwin/presentation-components"; +import React from "react"; import { getAndSetViewState } from "../../../services/iModel"; import type { @@ -18,7 +19,8 @@ import type { ViewerViewCreator3dOptions, ViewerViewportControlOptions, } from "../../../types"; -import { UnifiedSelectionViewportControl } from "./UnifiedSelectionViewportControl"; + +const UnifiedSelectionViewport = viewWithUnifiedSelection(ViewportComponent); /** * Provide a default content group to the default frontstage @@ -27,44 +29,45 @@ export class DefaultContentGroupProvider extends ContentGroupProvider { private _viewportOptions: ViewerViewportControlOptions | undefined; private _blankConnectionViewState: BlankConnectionViewState | undefined; private _viewCreatorOptions: ViewerViewCreator3dOptions | undefined; - private _syncWithUnifiedSelectionStorage: boolean | undefined; constructor( viewportOptions?: ViewerViewportControlOptions, viewCreatorOptions?: ViewerViewCreator3dOptions, - blankConnectionViewStateOptions?: BlankConnectionViewState, - syncWithUnifiedSelectionStorage?: boolean, + blankConnectionViewStateOptions?: BlankConnectionViewState ) { super(); this._viewportOptions = viewportOptions; this._blankConnectionViewState = blankConnectionViewStateOptions; this._viewCreatorOptions = viewCreatorOptions; - this._syncWithUnifiedSelectionStorage = syncWithUnifiedSelectionStorage; } - public async contentGroup(_config: FrontstageConfig): Promise { + public async contentGroup(): Promise { const iModelConnection = UiFramework.getIModelConnection(); - let viewState; - if (iModelConnection) { - viewState = await getAndSetViewState( - iModelConnection, - this._viewportOptions, - this._viewCreatorOptions, - this._blankConnectionViewState - ); + if (!iModelConnection) { + throw "Never expected to get here without an iModelConnection"; } + + const viewState = await getAndSetViewState( + iModelConnection, + this._viewportOptions, + this._viewCreatorOptions, + this._blankConnectionViewState + ); + return new ContentGroup({ id: "iTwinViewer.default-content-group", layout: StandardContentLayouts.singleView, contents: [ { id: "iTwinViewer.UnifiedSelectionViewport", - classId: this._syncWithUnifiedSelectionStorage ? IModelViewportControl : UnifiedSelectionViewportControl, - applicationData: { - ...this._viewportOptions, - viewState, - iModelConnection, - }, + classId: "", + content: ( + + ), }, ], }); diff --git a/packages/modules/viewer-react/src/components/app-ui/providers/UnifiedSelectionViewportControl.tsx b/packages/modules/viewer-react/src/components/app-ui/providers/UnifiedSelectionViewportControl.tsx deleted file mode 100644 index 9645e7ac..00000000 --- a/packages/modules/viewer-react/src/components/app-ui/providers/UnifiedSelectionViewportControl.tsx +++ /dev/null @@ -1,73 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Bentley Systems, Incorporated. All rights reserved. - * See LICENSE.md in the project root for license terms and full copyright notice. - *--------------------------------------------------------------------------------------------*/ - -import { - IModelConnectedViewport, - IModelViewportControl, - UiFramework, -} from "@itwin/appui-react"; -import type { IModelConnection, ScreenViewport } from "@itwin/core-frontend"; -import type { ViewStateProp } from "@itwin/imodel-components-react"; -import { ViewportComponent } from "@itwin/imodel-components-react"; -import { viewWithUnifiedSelection } from "@itwin/presentation-components"; -import * as React from "react"; - -const UnifiedSelectionViewport = viewWithUnifiedSelection(ViewportComponent); - -/** @internal fork of IModelViewportControl from AppUI, to provide Unified Selection - * https://github.com/iTwin/appui/blob/master/ui/appui-react/src/appui-react/content/IModelViewport.tsx - */ -export class UnifiedSelectionViewportControl extends IModelViewportControl { - public static override get id() { - return "iTwinViewer.UnifiedSelectionViewportControl"; - } - - /** Get the React component that will contain the Viewport */ - protected override getImodelConnectedViewportReactElement(): React.ReactNode { - return ( - { - this.viewport = v; - // for convenience, if window defined bind viewport to window - if (undefined !== window) { - (window as any).viewport = v; - } - if (!UiFramework.frontstages.isLoading) { - UiFramework.frontstages.activeFrontstageDef?.setActiveViewFromViewport( - v - ); - } - }} - getViewOverlay={this._getViewOverlay} - /> - ); - } - - protected override getImodelViewportReactElement( - iModelConnection: IModelConnection, - viewState: ViewStateProp - ): React.ReactNode { - return ( - { - this.viewport = v; - // for convenience, if window defined bind viewport to window - if (undefined !== window) { - (window as any).viewport = v; - } - if (!UiFramework.frontstages.isLoading) { - UiFramework.frontstages.activeFrontstageDef?.setActiveViewFromViewport( - v - ); - } - }} - getViewOverlay={this._getViewOverlay} - /> - ); - } -} diff --git a/packages/modules/viewer-react/src/components/app-ui/providers/ViewerContentToolsProvider.tsx b/packages/modules/viewer-react/src/components/app-ui/providers/ViewerContentToolsProvider.tsx index 806a54fb..93d7d62a 100644 --- a/packages/modules/viewer-react/src/components/app-ui/providers/ViewerContentToolsProvider.tsx +++ b/packages/modules/viewer-react/src/components/app-ui/providers/ViewerContentToolsProvider.tsx @@ -6,15 +6,15 @@ import type { DefaultContentTools, StatusBarItem } from "@itwin/appui-react"; import { SectionsStatusField, - StandardContentToolsProvider, + StandardContentToolsUiItemsProvider, StatusBarItemUtilities, StatusBarSection, } from "@itwin/appui-react"; import * as React from "react"; -export class ViewerContentToolsProvider extends StandardContentToolsProvider { +export class ViewerContentToolsProvider extends StandardContentToolsUiItemsProvider { constructor(private _defaultItems?: DefaultContentTools) { - super("ViewerDefaultContentTools", { + super({ horizontal: { clearSelection: true, clearDisplayOverrides: true, @@ -32,6 +32,10 @@ export class ViewerContentToolsProvider extends StandardContentToolsProvider { }); } + public override get id(): string { + return "ViewerContentToolsProvider"; + } + // need to override this method to move sectioning "clear" tool to its proper position on the left public override provideStatusBarItems(): StatusBarItem[] { const statusBarItems: StatusBarItem[] = []; @@ -42,12 +46,12 @@ export class ViewerContentToolsProvider extends StandardContentToolsProvider { this._defaultItems.vertical.sectionGroup ) { statusBarItems.push( - StatusBarItemUtilities.createCustomItem( - "Sections", - StatusBarSection.Left, - 30, - - ) + StatusBarItemUtilities.createCustomItem({ + id: "Sections", + section: StatusBarSection.Left, + itemPriority: 30, + content: , + }) ); } diff --git a/packages/modules/viewer-react/src/components/app-ui/providers/ViewerNavigationToolsProvider.tsx b/packages/modules/viewer-react/src/components/app-ui/providers/ViewerNavigationToolsProvider.tsx index da4836e5..fcd41f91 100644 --- a/packages/modules/viewer-react/src/components/app-ui/providers/ViewerNavigationToolsProvider.tsx +++ b/packages/modules/viewer-react/src/components/app-ui/providers/ViewerNavigationToolsProvider.tsx @@ -7,12 +7,12 @@ import type { DefaultNavigationTools, ToolbarItem } from "@itwin/appui-react"; import { ToolbarOrientation, ToolbarUsage } from "@itwin/appui-react"; import { CoreTools } from "@itwin/appui-react"; import { ToolbarHelper, ToolItemDef } from "@itwin/appui-react"; -import { StandardNavigationToolsProvider } from "@itwin/appui-react"; +import { StandardNavigationToolsUiItemsProvider } from "@itwin/appui-react"; import { IModelApp } from "@itwin/core-frontend"; -export class ViewerNavigationToolsProvider extends StandardNavigationToolsProvider { +export class ViewerNavigationToolsProvider extends StandardNavigationToolsUiItemsProvider { constructor(private defaultItems?: DefaultNavigationTools) { - super("ViewerDefaultNavigationTools", { + super({ horizontal: { fitView: true, panView: true, @@ -29,122 +29,12 @@ export class ViewerNavigationToolsProvider extends StandardNavigationToolsProvid }); } - public override provideToolbarItemsInternal( - _stageId: string, - _stageUsage: string, - toolbarUsage: ToolbarUsage, - toolbarOrientation: ToolbarOrientation - ): ToolbarItem[] { - const items: ToolbarItem[] = []; + override get id(): string { + return "ViewerDefaultNavigationTools"; + } - if ( - toolbarUsage === ToolbarUsage.ViewNavigation && - toolbarOrientation === ToolbarOrientation.Horizontal - ) { - if ( - !this.defaultItems || - !this.defaultItems.horizontal || - this.defaultItems.horizontal.rotateView - ) { - items.push( - ToolbarHelper.createToolbarItemFromItemDef( - 10, - CoreTools.rotateViewCommand - ) - ); - } - if ( - !this.defaultItems || - !this.defaultItems.horizontal || - this.defaultItems.horizontal.panView - ) { - items.push( - ToolbarHelper.createToolbarItemFromItemDef( - 20, - CoreTools.panViewCommand - ) - ); - } - if ( - !this.defaultItems || - !this.defaultItems.horizontal || - this.defaultItems.horizontal.fitView - ) { - items.push( - ToolbarHelper.createToolbarItemFromItemDef( - 30, - CoreTools.fitViewCommand - ) - ); - } - if ( - !this.defaultItems || - !this.defaultItems.horizontal || - this.defaultItems.horizontal.windowArea - ) { - items.push( - ToolbarHelper.createToolbarItemFromItemDef( - 40, - CoreTools.windowAreaCommand - ) - ); - } - if ( - !this.defaultItems || - !this.defaultItems.horizontal || - this.defaultItems.horizontal.viewUndoRedo - ) { - items.push( - ToolbarHelper.createToolbarItemFromItemDef( - 50, - CoreTools.viewUndoCommand - ) - ); - items.push( - ToolbarHelper.createToolbarItemFromItemDef( - 60, - CoreTools.viewRedoCommand - ) - ); - } - } else if ( - toolbarUsage === ToolbarUsage.ViewNavigation && - toolbarOrientation === ToolbarOrientation.Vertical - ) { - if ( - !this.defaultItems || - !this.defaultItems.vertical || - this.defaultItems.vertical.walk - ) { - items.push( - ToolbarHelper.createToolbarItemFromItemDef( - 10, - new ToolItemDef({ - toolId: "View.LookAndMove", - iconSpec: "icon-walk", - execute: () => - IModelApp.tools.run( - "View.LookAndMove", - IModelApp.viewManager.selectedView - ), - labelKey: "iTwinViewer:tools.walkTool", - }) - ) - ); - } - if ( - !this.defaultItems || - !this.defaultItems.vertical || - this.defaultItems.vertical.toggleCamera - ) { - items.push( - ToolbarHelper.createToolbarItemFromItemDef( - 20, - CoreTools.toggleCameraViewCommand - ) - ); - } - } - return items; + // todo replace walk view tool with look and move tool + override getToolbarItems(): readonly ToolbarItem[] { + return super.getToolbarItems(); } } diff --git a/packages/modules/viewer-react/src/components/app-ui/providers/ViewerStatusbarItemsProvider.tsx b/packages/modules/viewer-react/src/components/app-ui/providers/ViewerStatusbarItemsProvider.tsx index 08246d33..3561fbd0 100644 --- a/packages/modules/viewer-react/src/components/app-ui/providers/ViewerStatusbarItemsProvider.tsx +++ b/packages/modules/viewer-react/src/components/app-ui/providers/ViewerStatusbarItemsProvider.tsx @@ -32,62 +32,62 @@ export class ViewerStatusbarItemsProvider implements UiItemsProvider { if (!this._defaultItems || this._defaultItems.messageCenter) { items.push( - StatusBarItemUtilities.createCustomItem( - "MessageCenter", - StatusBarSection.Left, - 10, - - ) + StatusBarItemUtilities.createCustomItem({ + id: "MessageCenter", + section: StatusBarSection.Left, + itemPriority: 10, + content: , + }) ); } if (!this._defaultItems || this._defaultItems.toolAssistance) { items.push( - StatusBarItemUtilities.createCustomItem( - "ToolAssistance", - StatusBarSection.Left, - 20, - - ) + StatusBarItemUtilities.createCustomItem({ + id: "ToolAssistance", + section: StatusBarSection.Left, + itemPriority: 20, + content: , + }) ); } if (!this._defaultItems || this._defaultItems.tileLoadIndicator) { items.push( - StatusBarItemUtilities.createCustomItem( - "TileLoadIndicator", - StatusBarSection.Right, - 10, - - ) + StatusBarItemUtilities.createCustomItem({ + id: "TileLoadIndicator", + section: StatusBarSection.Right, + itemPriority: 10, + content: , + }) ); } if (!this._defaultItems || this._defaultItems.accuSnapModePicker) { items.push( - StatusBarItemUtilities.createCustomItem( - "SnapModeField", - StatusBarSection.Right, - 20, - - ) + StatusBarItemUtilities.createCustomItem({ + id: "SnapModeField", + section: StatusBarSection.Right, + itemPriority: 20, + content: , + }) ); } if (!this._defaultItems || this._defaultItems.selectionScope) { items.push( - StatusBarItemUtilities.createCustomItem( - "SelectionScope", - StatusBarSection.Right, - 30, - - ) + StatusBarItemUtilities.createCustomItem({ + id: "SelectionScope", + section: StatusBarSection.Right, + itemPriority: 30, + content: , + }) ); } if (!this._defaultItems || this._defaultItems.selectionInfo) { items.push( - StatusBarItemUtilities.createCustomItem( - "SelectionInfo", - StatusBarSection.Right, - 40, - - ) + StatusBarItemUtilities.createCustomItem({ + id: "SelectionInfo", + section: StatusBarSection.Right, + itemPriority: 40, + content: , // eslint-disable-line deprecation/deprecation + }) ); } diff --git a/packages/modules/viewer-react/src/components/app-ui/providers/index.ts b/packages/modules/viewer-react/src/components/app-ui/providers/index.ts index 39e1c3ba..f363d0e0 100644 --- a/packages/modules/viewer-react/src/components/app-ui/providers/index.ts +++ b/packages/modules/viewer-react/src/components/app-ui/providers/index.ts @@ -4,8 +4,6 @@ *--------------------------------------------------------------------------------------------*/ export * from "./DefaultContentGroupProvider"; -export * from "./BackstageItemsProvider"; export * from "./ViewerContentToolsProvider"; export * from "./ViewerNavigationToolsProvider"; export * from "./ViewerStatusbarItemsProvider"; -export * from "./UnifiedSelectionViewportControl"; diff --git a/packages/modules/viewer-react/src/components/error/ErrorBoundary.tsx b/packages/modules/viewer-react/src/components/error/ErrorBoundary.tsx index 7d3fa919..b211225c 100644 --- a/packages/modules/viewer-react/src/components/error/ErrorBoundary.tsx +++ b/packages/modules/viewer-react/src/components/error/ErrorBoundary.tsx @@ -29,7 +29,7 @@ export class ErrorBoundary extends Component< }; } - override render(): JSX.Element { + override render() { if (this.state.fallback) { return ( } heading={this.state.error.message} /> diff --git a/packages/modules/viewer-react/src/components/iModel/IModelLoader.tsx b/packages/modules/viewer-react/src/components/iModel/IModelLoader.tsx index 161740f3..a8b68664 100644 --- a/packages/modules/viewer-react/src/components/iModel/IModelLoader.tsx +++ b/packages/modules/viewer-react/src/components/iModel/IModelLoader.tsx @@ -19,7 +19,8 @@ import { Presentation } from "@itwin/presentation-frontend"; import React, { useEffect, useMemo, useState } from "react"; import { Provider } from "react-redux"; -import { useFrontstages, useTheme, useUiProviders } from "../../hooks"; +import { useFrontstages, useUiProviders } from "../../hooks"; +import { useUnifiedSelectionSync } from "../../hooks/useUnifiedSelectionSync"; import { gatherRequiredViewerProps, getAndSetViewState, @@ -27,9 +28,7 @@ import { } from "../../services/iModel"; import { ViewerPerformance } from "../../services/telemetry"; import type { ModelLoaderProps } from "../../types"; -import { BackstageItemsProvider } from "../app-ui/providers"; import { IModelViewer } from "./IModelViewer"; -import { useUnifiedSelectionSync } from "../../hooks/useUnifiedSelectionSync"; const IModelLoader = React.memo((viewerProps: ModelLoaderProps) => { const { @@ -40,23 +39,18 @@ const IModelLoader = React.memo((viewerProps: ModelLoaderProps) => { blankConnectionViewState, uiProviders, theme, - backstageItems, // eslint-disable-line deprecation/deprecation loadingComponent, selectionStorage, getSchemaContext, } = viewerProps; const { error, connection } = useConnection(viewerProps); - const providers = useMemo(() => { - const providers = [...(uiProviders || [])]; - if (backstageItems?.length) { - providers.push(new BackstageItemsProvider(backstageItems)); - } - return providers; - }, [uiProviders, backstageItems]); - - useUiProviders(providers); - useUnifiedSelectionSync({ iModelConnection: connection, selectionStorage, getSchemaContext }) + useUiProviders(uiProviders); + useUnifiedSelectionSync({ + iModelConnection: connection, + selectionStorage, + getSchemaContext, + }); const { finalFrontstages, noConnectionRequired, customDefaultFrontstage } = useFrontstages({ @@ -65,11 +59,8 @@ const IModelLoader = React.memo((viewerProps: ModelLoaderProps) => { viewportOptions, viewCreatorOptions, blankConnectionViewState, - syncWithUnifiedSelectionStorage: !!selectionStorage, }); - useTheme(theme); - useEffect(() => { if (customDefaultFrontstage && connection) { // there is a custom default frontstage so we need to generate a viewstate for backwards compatibility @@ -96,12 +87,10 @@ const IModelLoader = React.memo((viewerProps: ModelLoaderProps) => {
{finalFrontstages && (connection || noConnectionRequired) && - StateManager.store ? ( + StateManager.store ? ( //eslint-disable-line deprecation/deprecation + //eslint-disable-next-line deprecation/deprecation - + ) : (
@@ -219,7 +208,9 @@ async function syncSelectionScopeList(iModelConnection: IModelConnection) { try { const availableScopes = await Presentation.selection.scopes.getSelectionScopes(iModelConnection); + // eslint-disable-next-line deprecation/deprecation UiFramework.dispatchActionToStore( + // eslint-disable-next-line deprecation/deprecation SessionStateActionId.SetAvailableSelectionScopes, availableScopes ); diff --git a/packages/modules/viewer-react/src/components/iModel/IModelViewer.tsx b/packages/modules/viewer-react/src/components/iModel/IModelViewer.tsx index 7d6f5b04..d34f026d 100644 --- a/packages/modules/viewer-react/src/components/iModel/IModelViewer.tsx +++ b/packages/modules/viewer-react/src/components/iModel/IModelViewer.tsx @@ -7,6 +7,7 @@ import type { BackstageItem, FrontstageDef, FrontstageProvider, + ThemeId, } from "@itwin/appui-react"; import { UiFramework, UiItemsManager } from "@itwin/appui-react"; import { @@ -19,7 +20,7 @@ import React, { useEffect, useState } from "react"; import type { ViewerFrontstage } from "../../types"; interface ModelProps { frontstages: ViewerFrontstage[]; - backstageItems?: BackstageItem[]; // TODO next remove this and just use the UiItemsManager to get the items in the next major version + theme?: ThemeId; } /* @@ -30,6 +31,7 @@ the issue is no longer occuring. */ export const IModelViewer: React.FC = ({ frontstages, + theme, }: ModelProps) => { const [defaultFrontstageDef, setDefaultFrontstageDef] = useState(); @@ -41,10 +43,10 @@ export const IModelViewer: React.FC = ({ }, [defaultFrontstageDef]); useEffect(() => { - let defaultFrontstage: FrontstageProvider | undefined; + let defaultFrontstage: FrontstageProvider | undefined; // eslint-disable-line deprecation/deprecation frontstages.forEach((viewerFrontstage) => { // register the provider - UiFramework.frontstages.addFrontstageProvider(viewerFrontstage.provider); + UiFramework.frontstages.addFrontstageProvider(viewerFrontstage.provider); // eslint-disable-line deprecation/deprecation // override the default (last wins) if (viewerFrontstage.default) { defaultFrontstage = viewerFrontstage.provider; @@ -62,16 +64,14 @@ export const IModelViewer: React.FC = ({ } return () => { - UiFramework.frontstages.clearFrontstageProviders(); + UiFramework.frontstages.clearFrontstageProviders(); // eslint-disable-line deprecation/deprecation }; }, [frontstages]); // there will always be at least one (for the default frontstage). Wait for it to be loaded into the list before rendering the content return ( - - } - /> + + } /> ); }; diff --git a/packages/modules/viewer-react/src/hooks/index.ts b/packages/modules/viewer-react/src/hooks/index.ts index 5b7e2c0c..a04f24e8 100644 --- a/packages/modules/viewer-react/src/hooks/index.ts +++ b/packages/modules/viewer-react/src/hooks/index.ts @@ -3,7 +3,6 @@ * See LICENSE.md in the project root for license terms and full copyright notice. *--------------------------------------------------------------------------------------------*/ -export * from "./useTheme"; export * from "./useUiProviders"; export * from "./useIsMounted"; export * from "./useBaseViewerInitializer"; diff --git a/packages/modules/viewer-react/src/hooks/useBaseViewerInitializer.tsx b/packages/modules/viewer-react/src/hooks/useBaseViewerInitializer.tsx index 2d86139c..c183415a 100644 --- a/packages/modules/viewer-react/src/hooks/useBaseViewerInitializer.tsx +++ b/packages/modules/viewer-react/src/hooks/useBaseViewerInitializer.tsx @@ -4,12 +4,12 @@ *--------------------------------------------------------------------------------------------*/ import { useEffect, useMemo, useState } from "react"; + import { BaseInitializer } from "../services/BaseInitializer"; +import type { ViewerCommonProps, ViewerInitializerParams } from "../types"; import { getInitializationOptions, isEqual } from "../utilities"; import { useIsMounted } from "./useIsMounted"; -import type { ViewerCommonProps, ViewerInitializerParams } from "../types"; - export const useBaseViewerInitializer = ( options?: ViewerCommonProps, delay?: boolean @@ -48,7 +48,9 @@ export const useBaseViewerInitializer = ( return baseViewerInitialized; }; -function overridePresentationProps(inputProps: ViewerCommonProps | undefined): ViewerInitializerParams | undefined { +function overridePresentationProps( + inputProps: ViewerCommonProps | undefined +): ViewerInitializerParams | undefined { return inputProps ? { ...inputProps, diff --git a/packages/modules/viewer-react/src/hooks/useFrontstages.tsx b/packages/modules/viewer-react/src/hooks/useFrontstages.tsx index 9f9a7f7c..b32dc9e0 100644 --- a/packages/modules/viewer-react/src/hooks/useFrontstages.tsx +++ b/packages/modules/viewer-react/src/hooks/useFrontstages.tsx @@ -3,7 +3,12 @@ * See LICENSE.md in the project root for license terms and full copyright notice. *--------------------------------------------------------------------------------------------*/ -import { BackstageAppButton, StageUsage, StandardFrontstageProvider, UiItemsManager } from "@itwin/appui-react"; +import { + BackstageAppButton, + StageUsage, + StandardFrontstageProvider, + UiItemsManager, +} from "@itwin/appui-react"; import React, { useEffect, useState } from "react"; import { DefaultContentGroupProvider } from "../components/app-ui/providers"; @@ -21,7 +26,6 @@ export interface UseFrontstagesProps { viewportOptions?: ViewerViewportControlOptions; viewCreatorOptions?: ViewerViewCreator3dOptions; blankConnectionViewState?: BlankConnectionViewState; - syncWithUnifiedSelectionStorage?: boolean; } export const ViewerDefaultFrontstageProviderId = @@ -33,7 +37,6 @@ export const useFrontstages = ({ defaultUiConfig, viewCreatorOptions, viewportOptions, - syncWithUnifiedSelectionStorage, }: UseFrontstagesProps) => { const [finalFrontstages, setFinalFrontstages] = useState(); @@ -42,7 +45,6 @@ export const useFrontstages = ({ const [customDefaultFrontstage, setCustomDefaultFrontstage] = useState(false); - useEffect(() => { let allFrontstages: ViewerFrontstage[] = []; let defaultExists = false; @@ -72,15 +74,17 @@ export const useFrontstages = ({ const contentGroup = new DefaultContentGroupProvider( viewportOptions, viewCreatorOptions, - blankConnectionViewState, - syncWithUnifiedSelectionStorage, + blankConnectionViewState ); + //eslint-disable-next-line deprecation/deprecation const defaultFrontstageProvider = new StandardFrontstageProvider({ id: ViewerDefaultFrontstageProviderId, usage: StageUsage.General, contentGroupProps: contentGroup, - cornerButton: UiItemsManager.getBackstageItems().length ? : undefined, + cornerButton: UiItemsManager.getBackstageItems().length ? ( + + ) : undefined, ...defaultUiConfig, }); diff --git a/packages/modules/viewer-react/src/hooks/useTheme.tsx b/packages/modules/viewer-react/src/hooks/useTheme.tsx deleted file mode 100644 index 266fd7b3..00000000 --- a/packages/modules/viewer-react/src/hooks/useTheme.tsx +++ /dev/null @@ -1,17 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Bentley Systems, Incorporated. All rights reserved. - * See LICENSE.md in the project root for license terms and full copyright notice. - *--------------------------------------------------------------------------------------------*/ - -import type { ColorTheme } from "@itwin/appui-react"; -import { UiFramework } from "@itwin/appui-react"; -import { useEffect } from "react"; - -export function useTheme(theme?: ColorTheme | string): void { - useEffect(() => { - if (theme) { - // use the provided theme - UiFramework.setColorTheme(theme); - } - }, [theme]); -} diff --git a/packages/modules/viewer-react/src/services/BaseInitializer.ts b/packages/modules/viewer-react/src/services/BaseInitializer.ts index 91637e7b..129fa212 100644 --- a/packages/modules/viewer-react/src/services/BaseInitializer.ts +++ b/packages/modules/viewer-react/src/services/BaseInitializer.ts @@ -46,22 +46,25 @@ const syncSelectionCount = () => { const selection = provider.getSelection(args.imodel, args.level); const numSelected = getInstancesCount(selection); + //eslint-disable-next-line deprecation/deprecation UiFramework.dispatchActionToStore( - SessionStateActionId.SetNumItemsSelected, + SessionStateActionId.SetNumItemsSelected, //eslint-disable-line deprecation/deprecation numSelected ); // NOTE: add an event listener to the iModelConnection.selectionSet.onChanged to restore the numSelected to the value that we // extracted from the Presentation.selection.selectionChange event in order to override the numSelected AppUi sets from // the iModelConnection.selectionSet.onChanged that will treat assemblies as a collection of elements instead of a single one - removeListenerFunc = UiFramework.getIModelConnection()?.selectionSet.onChanged.addListener( - (_ev) => { - UiFramework.dispatchActionToStore( - SessionStateActionId.SetNumItemsSelected, - numSelected - ); - } - ); + removeListenerFunc = + UiFramework.getIModelConnection()?.selectionSet.onChanged.addListener( + (_ev) => { + //eslint-disable-next-line deprecation/deprecation + UiFramework.dispatchActionToStore( + SessionStateActionId.SetNumItemsSelected, //eslint-disable-line deprecation/deprecation + numSelected + ); + } + ); } ); }; @@ -71,14 +74,15 @@ const syncActiveSelectionScope = () => { // If the user doesn't set any active scope and uses the default scope, then the Presentation active scope would be undefined. // Thus, we have to sync it for the first time here. Presentation.selection.scopes.activeScope = - UiFramework.getActiveSelectionScope(); - + UiFramework.getActiveSelectionScope(); //eslint-disable-line deprecation/deprecation + //eslint-disable-next-line deprecation/deprecation SyncUiEventDispatcher.onSyncUiEvent.addListener((args: UiSyncEventArgs) => { + //eslint-disable-next-line deprecation/deprecation if (args.eventIds.has(SessionStateActionId.SetSelectionScope)) { // After 4.x the AppUI no longer has a presentation dep and therefore we have the responsibility of // syncing the Presentation.selection.scopes.activeScope with the AppUi's UiSyncEvent for SetSelectionScope Presentation.selection.scopes.activeScope = - UiFramework.getActiveSelectionScope(); + UiFramework.getActiveSelectionScope(); //eslint-disable-line deprecation/deprecation } }); }; @@ -144,6 +148,7 @@ export class BaseInitializer { "IModelApp must be initialized prior to rendering the Base Viewer" ); } + //eslint-disable-next-line deprecation/deprecation if (UiCore.initialized && !this._initializing) { return (this._initialized = Promise.resolve()); } else if (this._initializing) { @@ -157,9 +162,11 @@ export class BaseInitializer { const cancellable = makeCancellable(function* () { // Initialize state manager // This will setup a singleton store inside the StoreManager class. + //eslint-disable-next-line deprecation/deprecation if (!StateManager.isInitialized()) { + //eslint-disable-next-line deprecation/deprecation new StateManager({ - frameworkState: FrameworkReducer, + frameworkState: FrameworkReducer, //eslint-disable-line deprecation/deprecation }); } @@ -183,14 +190,15 @@ export class BaseInitializer { yield Promise.all(i18nPromises); // initialize UiCore + //eslint-disable-next-line deprecation/deprecation yield UiCore.initialize(IModelApp.localization); // initialize UiComponents yield UiComponents.initialize(IModelApp.localization); // initialize UiFramework - // Use undefined so that UiFramework uses StateManager - yield UiFramework.initialize(undefined); + //eslint-disable-next-line deprecation/deprecation + yield UiFramework.initialize(); // initialize Presentation yield Presentation.initialize(viewerOptions?.presentationProps); @@ -284,6 +292,7 @@ export const getIModelAppOptions = ( class ViewerAccuSnap extends AccuSnap { public override getActiveSnapModes(): SnapMode[] { // The SnapMode in the UiFramework is a bit mask. + //eslint-disable-next-line deprecation/deprecation const snapMode = UiFramework.getAccudrawSnapMode(); const snaps: SnapMode[] = []; if (0 < (snapMode & SnapMode.Bisector)) { diff --git a/packages/modules/viewer-react/src/services/iModel/IModelService.ts b/packages/modules/viewer-react/src/services/iModel/IModelService.ts index 66d35d01..d37b32ba 100644 --- a/packages/modules/viewer-react/src/services/iModel/IModelService.ts +++ b/packages/modules/viewer-react/src/services/iModel/IModelService.ts @@ -151,7 +151,7 @@ export const getViewState = async ( // attempt to construct a default viewState const viewCreator = new ViewCreator3d(connection); view = await viewCreator.createDefaultView(viewCreatorOptions); - UiFramework.setActiveSelectionScope("top-assembly"); + UiFramework.setActiveSelectionScope("top-assembly"); // eslint-disable-line deprecation/deprecation } } return view; diff --git a/packages/modules/viewer-react/src/tests/components/BaseViewer.test.tsx b/packages/modules/viewer-react/src/tests/components/BaseViewer.test.tsx index aecadff0..40f6c52b 100644 --- a/packages/modules/viewer-react/src/tests/components/BaseViewer.test.tsx +++ b/packages/modules/viewer-react/src/tests/components/BaseViewer.test.tsx @@ -1,7 +1,8 @@ /*--------------------------------------------------------------------------------------------- - * Copyright (c) Bentley Systems, Incorporated. All rights reserved. - * See LICENSE.md in the project root for license terms and full copyright notice. - *--------------------------------------------------------------------------------------------*/ +* Copyright (c) Bentley Systems, Incorporated. All rights reserved. +* See LICENSE.md in the project root for license terms and full copyright notice. +*--------------------------------------------------------------------------------------------*/ + import "@testing-library/jest-dom/extend-expect"; @@ -22,8 +23,8 @@ jest.mock("@itwin/appui-react", () => { }, UiItemsManager: { ...jest.createMockFromModule("@itwin/appui-react").UiItemsManager, - getBackstageItems: jest.fn().mockReturnValue([]) - } + getBackstageItems: jest.fn().mockReturnValue([]), + }, }; }); jest.mock("@itwin/presentation-frontend", () => { diff --git a/packages/modules/viewer-react/src/tests/components/app-ui/providers/BackstageItemsProvider.test.tsx b/packages/modules/viewer-react/src/tests/components/app-ui/providers/BackstageItemsProvider.test.tsx deleted file mode 100644 index b09fd33c..00000000 --- a/packages/modules/viewer-react/src/tests/components/app-ui/providers/BackstageItemsProvider.test.tsx +++ /dev/null @@ -1,124 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Bentley Systems, Incorporated. All rights reserved. - * See LICENSE.md in the project root for license terms and full copyright notice. - *--------------------------------------------------------------------------------------------*/ - -import { BackstageItemUtilities } from "@itwin/appui-react"; -import { IModelApp } from "@itwin/core-frontend"; - -import { BackstageItemsProvider } from "../../../../components/app-ui/providers"; -import type { ViewerBackstageItem } from "../../../../types"; - -jest.mock("@itwin/core-frontend", () => { - return { - IModelApp: { - startup: jest.fn(), - telemetry: { - addClient: jest.fn(), - }, - localization: { - getLocalizedString: jest.fn(), - registerNamespace: jest.fn().mockResolvedValue(true), - }, - uiAdmin: { - updateFeatureFlags: jest.fn(), - }, - notifications: { - openMessageBox: jest.fn(), - }, - viewManager: { - onViewOpen: { - addOnce: jest.fn(), - }, - }, - }, - SnapMode: {}, - ActivityMessageDetails: jest.fn(), - PrimitiveTool: jest.fn(), - NotificationManager: jest.fn(), - Tool: jest.fn(), - RemoteBriefcaseConnection: { - open: jest.fn(), - }, - SnapshotConnection: { - openFile: jest.fn(), - }, - MessageBoxType: { - Ok: 1, - }, - MessageBoxIconType: { - Critical: 1, - }, - BlankConnection: { - create: jest.fn().mockReturnValue({ - isBlankConnection: () => true, - isOpen: true, - } as any), - }, - ItemField: {}, - CompassMode: {}, - RotationMode: {}, - AccuDraw: class {}, - ToolAdmin: class {}, - WebViewerApp: { - startup: jest.fn().mockResolvedValue(true), - }, - ViewCreator3d: jest.fn().mockImplementation(() => { - return { - createDefaultView: jest.fn().mockResolvedValue({}), - }; - }), - SpatialViewState: { - className: "", - }, - DrawingViewState: { - className: "", - }, - SheetViewState: { - className: "", - }, - }; -}); -jest.mock("@itwin/appui-abstract"); - -describe("BackstageItemsProvider", () => { - it("adds backstage items and translates their labels", async () => { - const actionItem = { - id: "bs1", - execute: jest.fn(), - groupPriority: 100, - itemPriority: 1, - label: "", - labeli18nKey: "bs1Key", - }; - - const stageLauncher = { - id: "bs2", - stageId: "bs2", - groupPriority: 100, - itemPriority: 2, - label: "", - labeli18nKey: "bs2Key", - }; - - const spy1 = jest.spyOn(BackstageItemUtilities, "createStageLauncher"); - - const spy2 = jest.spyOn(BackstageItemUtilities, "createActionItem"); - - const backstageItems: ViewerBackstageItem[] = [actionItem, stageLauncher]; - - const provider = new BackstageItemsProvider(backstageItems); - - provider.provideBackstageItems(); - - // these calls will be doubled. items will be set first without a viewState and reset with one additional translation for the default frontstage once we have a viewState - expect(spy1).toHaveBeenCalledTimes(1); - expect(spy2).toHaveBeenCalledTimes(1); - expect(IModelApp.localization.getLocalizedString).toHaveBeenCalledWith( - actionItem.labeli18nKey - ); - expect(IModelApp.localization.getLocalizedString).toHaveBeenCalledWith( - stageLauncher.labeli18nKey - ); - }); -}); diff --git a/packages/modules/viewer-react/src/tests/components/iModel/IModelLoader.test.tsx b/packages/modules/viewer-react/src/tests/components/iModel/IModelLoader.test.tsx index 2060c004..3b08afc7 100644 --- a/packages/modules/viewer-react/src/tests/components/iModel/IModelLoader.test.tsx +++ b/packages/modules/viewer-react/src/tests/components/iModel/IModelLoader.test.tsx @@ -1,7 +1,8 @@ /*--------------------------------------------------------------------------------------------- - * Copyright (c) Bentley Systems, Incorporated. All rights reserved. - * See LICENSE.md in the project root for license terms and full copyright notice. - *--------------------------------------------------------------------------------------------*/ +* Copyright (c) Bentley Systems, Incorporated. All rights reserved. +* See LICENSE.md in the project root for license terms and full copyright notice. +*--------------------------------------------------------------------------------------------*/ + import "@testing-library/jest-dom/extend-expect"; @@ -293,7 +294,10 @@ describe("IModelLoader", () => { }); it("synchronizes with unified selection storage when storage provided", async () => { - const enableUnifiedSelectionSyncWithIModelSpy = jest.spyOn(unifiedSelection, 'enableUnifiedSelectionSyncWithIModel'); + const enableUnifiedSelectionSyncWithIModelSpy = jest.spyOn( + unifiedSelection, + "enableUnifiedSelectionSyncWithIModel" + ); enableUnifiedSelectionSyncWithIModelSpy.mockReturnValue(jest.fn()); const connection = { isBlankConnection: () => false, @@ -305,7 +309,12 @@ describe("IModelLoader", () => { .spyOn(IModelServices, "openRemoteIModel") .mockResolvedValue(connection as any); const result = render( - new SchemaContext()} /> + new SchemaContext()} + /> ); await waitFor(() => result.getByTestId("viewer")); @@ -334,7 +343,10 @@ describe("IModelLoader", () => { }); it("closes connection on unmount", async () => { - const enableUnifiedSelectionSyncWithIModelSpy = jest.spyOn(unifiedSelection, 'enableUnifiedSelectionSyncWithIModel'); + const enableUnifiedSelectionSyncWithIModelSpy = jest.spyOn( + unifiedSelection, + "enableUnifiedSelectionSyncWithIModel" + ); enableUnifiedSelectionSyncWithIModelSpy.mockReturnValue(jest.fn()); const connection = { isBlankConnection: () => false, @@ -349,7 +361,7 @@ describe("IModelLoader", () => { ); await waitFor(() => result.getByTestId("viewer")); - expect(enableUnifiedSelectionSyncWithIModelSpy).not.toHaveBeenCalled() + expect(enableUnifiedSelectionSyncWithIModelSpy).not.toHaveBeenCalled(); result.unmount(); await waitFor(() => { diff --git a/packages/modules/viewer-react/src/tests/services/BaseInitializer.test.ts b/packages/modules/viewer-react/src/tests/services/BaseInitializer.test.ts index 9cc461d6..a768613a 100644 --- a/packages/modules/viewer-react/src/tests/services/BaseInitializer.test.ts +++ b/packages/modules/viewer-react/src/tests/services/BaseInitializer.test.ts @@ -1,7 +1,8 @@ /*--------------------------------------------------------------------------------------------- - * Copyright (c) Bentley Systems, Incorporated. All rights reserved. - * See LICENSE.md in the project root for license terms and full copyright notice. - *--------------------------------------------------------------------------------------------*/ +* Copyright (c) Bentley Systems, Incorporated. All rights reserved. +* See LICENSE.md in the project root for license terms and full copyright notice. +*--------------------------------------------------------------------------------------------*/ + import { StateManager } from "@itwin/appui-react"; import { IModelApp } from "@itwin/core-frontend"; @@ -53,8 +54,8 @@ jest.mock("@itwin/presentation-frontend", () => { .Presentation, initialize: jest.fn().mockImplementation(() => Promise.resolve()), selection: { - selectionChange : { - addListener: jest.fn() + selectionChange: { + addListener: jest.fn(), }, scopes: {}, }, diff --git a/packages/modules/viewer-react/src/types.ts b/packages/modules/viewer-react/src/types.ts index 74eea526..66c879e7 100644 --- a/packages/modules/viewer-react/src/types.ts +++ b/packages/modules/viewer-react/src/types.ts @@ -61,7 +61,7 @@ export interface ViewerViewCreator3dOptions extends ViewCreator3dOptions { export interface ViewerFrontstage { /** frontstage provider to register */ - provider: FrontstageProvider; + provider: FrontstageProvider; //eslint-disable-line deprecation/deprecation /** should this be the default frontstage? If multiple are defined as default, the last will be used */ default?: boolean; /** the frontstage requires an iModel connection */ @@ -73,6 +73,7 @@ export type ViewerBackstageItem = BackstageItem & { }; export interface ViewerViewportControlOptions + //eslint-disable-next-line deprecation/deprecation extends Omit { /** ViewState or a function to return a ViewState */ viewState?: @@ -99,10 +100,6 @@ export interface LoaderProps { | ((iModel: IModelConnection) => Promise); /** additional frontstages to register */ frontstages?: ViewerFrontstage[]; - /** menu items for the backstage - * @deprecated in 4.x. Use [UiItemsProvider.provideBackstageItems](https://www.itwinjs.org/reference/appui-react/uiprovider/uiitemsprovider/). - */ - backstageItems?: ViewerBackstageItem[]; /** additional viewport options for the default frontstage's viewport control */ viewportOptions?: ViewerViewportControlOptions; /** [UI Providers](https://www.itwinjs.org/learning/ui/abstract/uiitemsprovider/) to register */ @@ -113,7 +110,9 @@ export interface LoaderProps { loadingComponent?: React.ReactNode; } -export type ViewerCommonProps = ViewerInitializerParams & LoaderProps & UnifiedSelectionProps; +export type ViewerCommonProps = ViewerInitializerParams & + LoaderProps & + UnifiedSelectionProps; // Note: When updating this, also update getIModelAppOptions export type ViewerIModelAppOptions = Pick< diff --git a/packages/modules/viewer-react/src/utilities/MakeCancellable.ts b/packages/modules/viewer-react/src/utilities/MakeCancellable.ts index bfe4e9d9..06cd02f7 100644 --- a/packages/modules/viewer-react/src/utilities/MakeCancellable.ts +++ b/packages/modules/viewer-react/src/utilities/MakeCancellable.ts @@ -28,7 +28,7 @@ export function makeCancellable( } catch (e) { return reject(e); } - next(result); + void next(result); return null; } } @@ -40,7 +40,7 @@ export function makeCancellable( } catch (e) { return reject(e); } - next(result); + void next(result); } function next({ diff --git a/packages/modules/viewer-react/tsconfig.json b/packages/modules/viewer-react/tsconfig.json index 3bae4657..e4a99461 100644 --- a/packages/modules/viewer-react/tsconfig.json +++ b/packages/modules/viewer-react/tsconfig.json @@ -4,5 +4,6 @@ "allowSyntheticDefaultImports": true, "esModuleInterop": true, }, - "include": ["./src/**/*.ts*"] + "include": ["./src/**/*.ts*"], + "exclude": ["./src/**/*.test.ts*"], } diff --git a/packages/modules/web-viewer-react/package.json b/packages/modules/web-viewer-react/package.json index 9b112c1f..3460587a 100644 --- a/packages/modules/web-viewer-react/package.json +++ b/packages/modules/web-viewer-react/package.json @@ -19,7 +19,9 @@ "test": "jest", "test-watch": "jest --watch", "clean": "rimraf lib", - "rebuild": "npm run clean && npm run build" + "rebuild": "npm run clean && npm run build", + "lint": "eslint --config package.json --resolve-plugins-relative-to ../../../common/scripts/ --no-eslintrc \"./src/**/*.{ts,tsx}\" 1>&2", + "lint:fix": "npm run -s lint -- --fix" }, "dependencies": { "@itwin/imodels-client-management": "^5.2.1", @@ -27,10 +29,9 @@ }, "devDependencies": { "@itwin/appui-abstract": "^4.7.3", - "@itwin/appui-layout-react": "^4.0.0", - "@itwin/appui-react": "^4.0.0", + "@itwin/appui-react": "^5.0.0", "@itwin/build-tools": "^4.7.3", - "@itwin/components-react": "^4.0.0", + "@itwin/components-react": "^5.0.0", "@itwin/core-bentley": "^4.7.3", "@itwin/core-common": "^4.7.3", "@itwin/core-frontend": "^4.7.3", @@ -38,10 +39,10 @@ "@itwin/core-markup": "^4.7.3", "@itwin/core-orbitgt": "^4.7.3", "@itwin/core-quantity": "^4.7.3", - "@itwin/core-react": "^4.0.0", + "@itwin/core-react": "^5.0.0", "@itwin/core-telemetry": "^4.7.3", "@itwin/ecschema-metadata": "^4.7.3", - "@itwin/imodel-components-react": "^4.0.0", + "@itwin/imodel-components-react": "^5.0.0", "@itwin/presentation-common": "^4.7.3", "@itwin/presentation-components": "^5.0.0", "@itwin/presentation-frontend": "^4.7.3", @@ -56,6 +57,7 @@ "@types/react-redux": "^7.1.9", "concurrently": "^5.2.0", "copyfiles": "^2.1.0", + "eslint": "^7.11.0", "identity-obj-proxy": "^3.0.0", "jest": "^29.1.0", "jest-environment-jsdom": "^29.1.0", @@ -71,10 +73,10 @@ "@itwin/core-bentley": "^4.0.0", "@itwin/core-common": "^4.0.0", "@itwin/core-frontend": "^4.0.0", - "@itwin/core-react": "^4.0.0", + "@itwin/core-react": "^5.0.0", "@itwin/presentation-common": "^4.0.0", - "react": "^17.0.2 || ^18.0.0", - "react-dom": "^17.0.2 || ^18.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0", "react-redux": "^7.2.0", "redux": "^4.0.5" }, @@ -109,5 +111,15 @@ "iModel", "iModelJs", "iTwin" - ] + ], + "eslintConfig": { + "extends": [ + "../../../common/scripts/.eslintrc.ts.json" + ], + "parserOptions": { + "project": [ + "./tsconfig.json" + ] + } + } } diff --git a/packages/modules/web-viewer-react/src/tests/services/Initializer.test.ts b/packages/modules/web-viewer-react/src/tests/services/Initializer.test.ts index b2832551..2042cfc5 100644 --- a/packages/modules/web-viewer-react/src/tests/services/Initializer.test.ts +++ b/packages/modules/web-viewer-react/src/tests/services/Initializer.test.ts @@ -109,8 +109,9 @@ const initClientSpy = jest.spyOn(BentleyCloudRpcManager, "initializeClient"); describe("Initializer", () => { beforeEach(() => { jest.clearAllMocks(); + // eslint-disable-next-line deprecation/deprecation if (UiCore.initialized) { - UiCore.terminate(); + UiCore.terminate(); // eslint-disable-line deprecation/deprecation } }); diff --git a/packages/modules/web-viewer-react/src/types.ts b/packages/modules/web-viewer-react/src/types.ts index 867abad3..92f81970 100644 --- a/packages/modules/web-viewer-react/src/types.ts +++ b/packages/modules/web-viewer-react/src/types.ts @@ -23,16 +23,18 @@ export type WebInitializerParams = ViewerCommonProps & { authClient?: ViewerAuthorizationClient; }; -type AuthClientProps = { - authClient: ViewerAuthorizationClient; - iTwinId: string; -} -| { - authClient?: ViewerAuthorizationClient; - iTwinId?: never; -} +type AuthClientProps = + | { + authClient: ViewerAuthorizationClient; + iTwinId: string; + } + | { + authClient?: ViewerAuthorizationClient; + iTwinId?: never; + }; -type ConnectedViewerWebProps = ConnectedViewerProps & Required>; +type ConnectedViewerWebProps = ConnectedViewerProps & + Required>; type BlankViewerWebProps = BlankViewerProps & AuthClientProps; export type WebViewerProps = XOR & diff --git a/packages/modules/web-viewer-react/tsconfig.json b/packages/modules/web-viewer-react/tsconfig.json index 2ee142ec..127d880b 100644 --- a/packages/modules/web-viewer-react/tsconfig.json +++ b/packages/modules/web-viewer-react/tsconfig.json @@ -4,5 +4,5 @@ "allowSyntheticDefaultImports": true, "esModuleInterop": true }, - "include": ["./src/**/*.ts*"] + "include": ["./src/**/*.ts*"], } \ No newline at end of file diff --git a/packages/templates/cra-template-desktop-viewer/template.json b/packages/templates/cra-template-desktop-viewer/template.json index da713fe9..8d3a06f9 100644 --- a/packages/templates/cra-template-desktop-viewer/template.json +++ b/packages/templates/cra-template-desktop-viewer/template.json @@ -4,7 +4,6 @@ "@bentley/icons-generic-webfont": "^1.0.15", "@bentley/react-scripts": "^5.0.3", "@itwin/appui-abstract": "^4.7.3", - "@itwin/appui-layout-react": "^4.3.0", "@itwin/appui-react": "^4.3.0", "@itwin/build-tools": "^4.7.3", "@itwin/components-react": "^4.3.0", @@ -35,7 +34,7 @@ "@itwin/itwinui-illustrations-react": "^2.0.1", "@itwin/itwinui-layouts-css": "^0.2.0", "@itwin/itwinui-layouts-react": "^0.2.0", - "@itwin/itwinui-react": "^2.11.4", + "@itwin/itwinui-react": "^3.16.0", "@itwin/itwinui-variables": "^2.0.0", "@itwin/measure-tools-react": "^0.23.2", "@itwin/presentation-backend": "^4.7.3", diff --git a/packages/templates/cra-template-desktop-viewer/template/.env b/packages/templates/cra-template-desktop-viewer/template/.env index 490db576..6abc6c9f 100644 --- a/packages/templates/cra-template-desktop-viewer/template/.env +++ b/packages/templates/cra-template-desktop-viewer/template/.env @@ -13,7 +13,7 @@ GENERATE_SOURCEMAP=false DISABLE_NEW_JSX_TRANSFORM=true # Advanced iModel.js CRA Config: https://github.com/imodeljs/create-react-app/blob/imodeljs/packages/react-scripts/README-imodeljs.md -USE_FAST_SASS=true +USE_FAST_SASS=false USE_FULL_SOURCEMAP=true TRANSPILE_DEPS=false # Remove the following env var if using a different package manager diff --git a/packages/templates/cra-template-web-viewer/template.json b/packages/templates/cra-template-web-viewer/template.json index cefb7f36..5e3d41e0 100644 --- a/packages/templates/cra-template-web-viewer/template.json +++ b/packages/templates/cra-template-web-viewer/template.json @@ -4,7 +4,6 @@ "@bentley/icons-generic": "^1.0.13", "@bentley/react-scripts": "^5.0.4", "@itwin/appui-abstract": "^4.7.3", - "@itwin/appui-layout-react": "^4.3.0", "@itwin/appui-react": "^4.3.0", "@itwin/browser-authorization": "^1.0.0", "@itwin/components-react": "^4.3.0", @@ -22,7 +21,7 @@ "@itwin/ecschema-rpcinterface-common": "^4.7.3", "@itwin/imodel-components-react": "^4.3.0", "@itwin/imodels-access-frontend": "^4.0.0", - "@itwin/itwinui-react": "^2.7.0", + "@itwin/itwinui-react": "^3.16.0", "@itwin/measure-tools-react": "^0.23.2", "@itwin/presentation-common": "^4.7.3", "@itwin/presentation-components": "^5.0.0", diff --git a/packages/templates/cra-template-web-viewer/template/.env b/packages/templates/cra-template-web-viewer/template/.env index 280a06f4..9289d9c4 100644 --- a/packages/templates/cra-template-web-viewer/template/.env +++ b/packages/templates/cra-template-web-viewer/template/.env @@ -13,7 +13,7 @@ IMJS_IMODEL_ID = "" SKIP_PREFLIGHT_CHECK=true # Advanced iTwin.js CRA Config: https://github.com/imodeljs/create-react-app/blob/imodeljs/packages/react-scripts/README-imodeljs.md -USE_FAST_SASS=true +USE_FAST_SASS=false USE_FULL_SOURCEMAP=true TRANSPILE_DEPS=false # Remove the following env var if using a different package manager From 6f74dae9bdc57dc72c58cc136f064b3f3b7bb6b0 Mon Sep 17 00:00:00 2001 From: Arun George Date: Wed, 8 Jan 2025 11:33:56 -0500 Subject: [PATCH 3/6] Bump versions [skip ci] --- common/config/rush/version-policies.json | 2 +- packages/modules/desktop-viewer-react/package.json | 2 +- packages/modules/viewer-react/package.json | 2 +- packages/modules/web-viewer-react/package.json | 2 +- packages/templates/cra-template-desktop-viewer/package.json | 2 +- packages/templates/cra-template-web-viewer/package.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/common/config/rush/version-policies.json b/common/config/rush/version-policies.json index 135be5a2..4928fe8c 100644 --- a/common/config/rush/version-policies.json +++ b/common/config/rush/version-policies.json @@ -6,7 +6,7 @@ { "policyName": "prerelease-monorepo-lockStep", "definitionName": "lockStepVersion", - "version": "5.0.0-dev", + "version": "5.0.0-dev.0", "nextBump": "prerelease" } ] diff --git a/packages/modules/desktop-viewer-react/package.json b/packages/modules/desktop-viewer-react/package.json index 5ced50e4..d1555e34 100644 --- a/packages/modules/desktop-viewer-react/package.json +++ b/packages/modules/desktop-viewer-react/package.json @@ -1,6 +1,6 @@ { "name": "@itwin/desktop-viewer-react", - "version": "4.3.3", + "version": "5.0.0-dev.0", "description": "Configurable iTwin.js viewer for desktop applications", "main": "lib/cjs/index.js", "module": "lib/esm/index.js", diff --git a/packages/modules/viewer-react/package.json b/packages/modules/viewer-react/package.json index 681ed5e7..c49694d9 100644 --- a/packages/modules/viewer-react/package.json +++ b/packages/modules/viewer-react/package.json @@ -1,6 +1,6 @@ { "name": "@itwin/viewer-react", - "version": "4.8.3", + "version": "5.0.0-dev.0", "description": "Configurable iTwin.js viewer", "main": "lib/cjs/index.js", "module": "lib/esm/index.js", diff --git a/packages/modules/web-viewer-react/package.json b/packages/modules/web-viewer-react/package.json index 3460587a..2e7941ef 100644 --- a/packages/modules/web-viewer-react/package.json +++ b/packages/modules/web-viewer-react/package.json @@ -1,6 +1,6 @@ { "name": "@itwin/web-viewer-react", - "version": "4.3.3", + "version": "5.0.0-dev.0", "description": "Configurable iTwin.js viewer for web applications", "main": "lib/cjs/index.js", "module": "lib/esm/index.js", diff --git a/packages/templates/cra-template-desktop-viewer/package.json b/packages/templates/cra-template-desktop-viewer/package.json index e6bfa2eb..dd35063d 100644 --- a/packages/templates/cra-template-desktop-viewer/package.json +++ b/packages/templates/cra-template-desktop-viewer/package.json @@ -1,6 +1,6 @@ { "name": "@itwin/cra-template-desktop-viewer", - "version": "4.5.2", + "version": "5.0.0-dev.0", "keywords": [ "react", "create-react-app", diff --git a/packages/templates/cra-template-web-viewer/package.json b/packages/templates/cra-template-web-viewer/package.json index 6489f713..f36df10b 100644 --- a/packages/templates/cra-template-web-viewer/package.json +++ b/packages/templates/cra-template-web-viewer/package.json @@ -1,6 +1,6 @@ { "name": "@itwin/cra-template-web-viewer", - "version": "4.4.2", + "version": "5.0.0-dev.0", "keywords": [ "react", "create-react-app", From 258f585b7282bbfb681e6e4a74b92c6a61f08002 Mon Sep 17 00:00:00 2001 From: imodeljs-admin Date: Wed, 8 Jan 2025 16:36:55 +0000 Subject: [PATCH 4/6] Bump versions [skip ci] --- common/config/rush/version-policies.json | 2 +- packages/modules/desktop-viewer-react/package.json | 2 +- packages/modules/viewer-react/package.json | 2 +- packages/modules/web-viewer-react/package.json | 2 +- packages/templates/cra-template-desktop-viewer/package.json | 2 +- packages/templates/cra-template-web-viewer/package.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/common/config/rush/version-policies.json b/common/config/rush/version-policies.json index 4928fe8c..fd3615e3 100644 --- a/common/config/rush/version-policies.json +++ b/common/config/rush/version-policies.json @@ -6,7 +6,7 @@ { "policyName": "prerelease-monorepo-lockStep", "definitionName": "lockStepVersion", - "version": "5.0.0-dev.0", + "version": "5.0.0-dev.1", "nextBump": "prerelease" } ] diff --git a/packages/modules/desktop-viewer-react/package.json b/packages/modules/desktop-viewer-react/package.json index d1555e34..3a257a89 100644 --- a/packages/modules/desktop-viewer-react/package.json +++ b/packages/modules/desktop-viewer-react/package.json @@ -1,6 +1,6 @@ { "name": "@itwin/desktop-viewer-react", - "version": "5.0.0-dev.0", + "version": "5.0.0-dev.1", "description": "Configurable iTwin.js viewer for desktop applications", "main": "lib/cjs/index.js", "module": "lib/esm/index.js", diff --git a/packages/modules/viewer-react/package.json b/packages/modules/viewer-react/package.json index c49694d9..2d9cfb95 100644 --- a/packages/modules/viewer-react/package.json +++ b/packages/modules/viewer-react/package.json @@ -1,6 +1,6 @@ { "name": "@itwin/viewer-react", - "version": "5.0.0-dev.0", + "version": "5.0.0-dev.1", "description": "Configurable iTwin.js viewer", "main": "lib/cjs/index.js", "module": "lib/esm/index.js", diff --git a/packages/modules/web-viewer-react/package.json b/packages/modules/web-viewer-react/package.json index 2e7941ef..ea7a3793 100644 --- a/packages/modules/web-viewer-react/package.json +++ b/packages/modules/web-viewer-react/package.json @@ -1,6 +1,6 @@ { "name": "@itwin/web-viewer-react", - "version": "5.0.0-dev.0", + "version": "5.0.0-dev.1", "description": "Configurable iTwin.js viewer for web applications", "main": "lib/cjs/index.js", "module": "lib/esm/index.js", diff --git a/packages/templates/cra-template-desktop-viewer/package.json b/packages/templates/cra-template-desktop-viewer/package.json index dd35063d..a3db398f 100644 --- a/packages/templates/cra-template-desktop-viewer/package.json +++ b/packages/templates/cra-template-desktop-viewer/package.json @@ -1,6 +1,6 @@ { "name": "@itwin/cra-template-desktop-viewer", - "version": "5.0.0-dev.0", + "version": "5.0.0-dev.1", "keywords": [ "react", "create-react-app", diff --git a/packages/templates/cra-template-web-viewer/package.json b/packages/templates/cra-template-web-viewer/package.json index f36df10b..9f31d744 100644 --- a/packages/templates/cra-template-web-viewer/package.json +++ b/packages/templates/cra-template-web-viewer/package.json @@ -1,6 +1,6 @@ { "name": "@itwin/cra-template-web-viewer", - "version": "5.0.0-dev.0", + "version": "5.0.0-dev.1", "keywords": [ "react", "create-react-app", From ebb53347ef273e9c5e821c305992973fc1d48c01 Mon Sep 17 00:00:00 2001 From: Arun George Date: Wed, 8 Jan 2025 12:04:32 -0500 Subject: [PATCH 5/6] dont use AppUI to provide theme, manually provide theme yourself by wrapping viewer comp w/ ThemeProvider from iTwinUi. this is temporary --- packages/modules/viewer-react/package.json | 6 +++--- .../src/components/iModel/IModelLoader.tsx | 7 +++++-- .../src/components/iModel/IModelViewer.tsx | 12 ++++++------ packages/modules/viewer-react/src/types.ts | 2 +- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/packages/modules/viewer-react/package.json b/packages/modules/viewer-react/package.json index 2d9cfb95..96f848b2 100644 --- a/packages/modules/viewer-react/package.json +++ b/packages/modules/viewer-react/package.json @@ -95,10 +95,10 @@ "@itwin/core-frontend": "^4.0.0", "@itwin/core-geometry": "^4.0.0", "@itwin/core-react": "^5.0.0", - "@itwin/imodels-access-frontend": "^4.0.0 || ^5.0.0", - "@itwin/imodels-client-management": "^4.0.0 || ^5.0.0", + "@itwin/imodels-access-frontend": "^5.0.0", + "@itwin/imodels-client-management": "^5.0.0", "@itwin/presentation-common": "^4.0.0", - "@itwin/presentation-components": "^4.0.0 || ^5.0.0", + "@itwin/presentation-components": "^5.0.0", "@itwin/presentation-frontend": "^4.0.0", "react": "^18.0.0", "react-dom": "^18.0.0", diff --git a/packages/modules/viewer-react/src/components/iModel/IModelLoader.tsx b/packages/modules/viewer-react/src/components/iModel/IModelLoader.tsx index a8b68664..0a61561a 100644 --- a/packages/modules/viewer-react/src/components/iModel/IModelLoader.tsx +++ b/packages/modules/viewer-react/src/components/iModel/IModelLoader.tsx @@ -38,7 +38,7 @@ const IModelLoader = React.memo((viewerProps: ModelLoaderProps) => { viewCreatorOptions, blankConnectionViewState, uiProviders, - theme, + // theme, loadingComponent, selectionStorage, getSchemaContext, @@ -90,7 +90,10 @@ const IModelLoader = React.memo((viewerProps: ModelLoaderProps) => { StateManager.store ? ( //eslint-disable-line deprecation/deprecation //eslint-disable-next-line deprecation/deprecation - + ) : (
diff --git a/packages/modules/viewer-react/src/components/iModel/IModelViewer.tsx b/packages/modules/viewer-react/src/components/iModel/IModelViewer.tsx index d34f026d..c94c8b82 100644 --- a/packages/modules/viewer-react/src/components/iModel/IModelViewer.tsx +++ b/packages/modules/viewer-react/src/components/iModel/IModelViewer.tsx @@ -20,7 +20,7 @@ import React, { useEffect, useState } from "react"; import type { ViewerFrontstage } from "../../types"; interface ModelProps { frontstages: ViewerFrontstage[]; - theme?: ThemeId; + // theme?: ThemeId; } /* @@ -31,8 +31,8 @@ the issue is no longer occuring. */ export const IModelViewer: React.FC = ({ frontstages, - theme, -}: ModelProps) => { +}: // theme, +ModelProps) => { const [defaultFrontstageDef, setDefaultFrontstageDef] = useState(); @@ -70,8 +70,8 @@ export const IModelViewer: React.FC = ({ // there will always be at least one (for the default frontstage). Wait for it to be loaded into the list before rendering the content return ( - - } /> - + // + } /> + // ); }; diff --git a/packages/modules/viewer-react/src/types.ts b/packages/modules/viewer-react/src/types.ts index 66c879e7..e717b3a1 100644 --- a/packages/modules/viewer-react/src/types.ts +++ b/packages/modules/viewer-react/src/types.ts @@ -91,7 +91,7 @@ export interface UnifiedSelectionProps { export interface LoaderProps { /** color theme */ - theme?: ColorTheme | string; + // theme?: ColorTheme | string; /** Default UI configuration */ defaultUiConfig?: ViewerDefaultFrontstageConfig; /** Optional callback function when iModel is connected */ From 0b4703c4bcc0f76b0c5fa7d2f0228903f0247e2e Mon Sep 17 00:00:00 2001 From: imodeljs-admin Date: Wed, 8 Jan 2025 17:07:12 +0000 Subject: [PATCH 6/6] Bump versions [skip ci] --- common/config/rush/version-policies.json | 2 +- packages/modules/desktop-viewer-react/package.json | 2 +- packages/modules/viewer-react/package.json | 2 +- packages/modules/web-viewer-react/package.json | 2 +- packages/templates/cra-template-desktop-viewer/package.json | 2 +- packages/templates/cra-template-web-viewer/package.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/common/config/rush/version-policies.json b/common/config/rush/version-policies.json index fd3615e3..977d5f26 100644 --- a/common/config/rush/version-policies.json +++ b/common/config/rush/version-policies.json @@ -6,7 +6,7 @@ { "policyName": "prerelease-monorepo-lockStep", "definitionName": "lockStepVersion", - "version": "5.0.0-dev.1", + "version": "5.0.0-dev.2", "nextBump": "prerelease" } ] diff --git a/packages/modules/desktop-viewer-react/package.json b/packages/modules/desktop-viewer-react/package.json index 3a257a89..358a76f5 100644 --- a/packages/modules/desktop-viewer-react/package.json +++ b/packages/modules/desktop-viewer-react/package.json @@ -1,6 +1,6 @@ { "name": "@itwin/desktop-viewer-react", - "version": "5.0.0-dev.1", + "version": "5.0.0-dev.2", "description": "Configurable iTwin.js viewer for desktop applications", "main": "lib/cjs/index.js", "module": "lib/esm/index.js", diff --git a/packages/modules/viewer-react/package.json b/packages/modules/viewer-react/package.json index 96f848b2..b74acf17 100644 --- a/packages/modules/viewer-react/package.json +++ b/packages/modules/viewer-react/package.json @@ -1,6 +1,6 @@ { "name": "@itwin/viewer-react", - "version": "5.0.0-dev.1", + "version": "5.0.0-dev.2", "description": "Configurable iTwin.js viewer", "main": "lib/cjs/index.js", "module": "lib/esm/index.js", diff --git a/packages/modules/web-viewer-react/package.json b/packages/modules/web-viewer-react/package.json index ea7a3793..82e47545 100644 --- a/packages/modules/web-viewer-react/package.json +++ b/packages/modules/web-viewer-react/package.json @@ -1,6 +1,6 @@ { "name": "@itwin/web-viewer-react", - "version": "5.0.0-dev.1", + "version": "5.0.0-dev.2", "description": "Configurable iTwin.js viewer for web applications", "main": "lib/cjs/index.js", "module": "lib/esm/index.js", diff --git a/packages/templates/cra-template-desktop-viewer/package.json b/packages/templates/cra-template-desktop-viewer/package.json index a3db398f..0970a6c9 100644 --- a/packages/templates/cra-template-desktop-viewer/package.json +++ b/packages/templates/cra-template-desktop-viewer/package.json @@ -1,6 +1,6 @@ { "name": "@itwin/cra-template-desktop-viewer", - "version": "5.0.0-dev.1", + "version": "5.0.0-dev.2", "keywords": [ "react", "create-react-app", diff --git a/packages/templates/cra-template-web-viewer/package.json b/packages/templates/cra-template-web-viewer/package.json index 9f31d744..1c36b522 100644 --- a/packages/templates/cra-template-web-viewer/package.json +++ b/packages/templates/cra-template-web-viewer/package.json @@ -1,6 +1,6 @@ { "name": "@itwin/cra-template-web-viewer", - "version": "5.0.0-dev.1", + "version": "5.0.0-dev.2", "keywords": [ "react", "create-react-app",