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