diff --git a/.github/workflows/release_extension.yml b/.github/workflows/release_extension.yml index 75a75b6d0..5c85b6278 100644 --- a/.github/workflows/release_extension.yml +++ b/.github/workflows/release_extension.yml @@ -28,7 +28,7 @@ jobs: node-version: 18 - name: Build and Pack - run: npm install && npm run build && npm run package + run: npm run install:all && npm run build:all && npm run package - name: Get Metadata id: metadata_step diff --git a/tools/vscode-azurewebpubsub/.vscodeignore b/tools/vscode-azurewebpubsub/.vscodeignore index c2ce5b418..ba6c60cf0 100644 --- a/tools/vscode-azurewebpubsub/.vscodeignore +++ b/tools/vscode-azurewebpubsub/.vscodeignore @@ -24,3 +24,5 @@ tsconfig.json tslint.json typings/** webpack.config* +webview-ui/** +!webview-ui/build \ No newline at end of file diff --git a/tools/vscode-azurewebpubsub/package-lock.json b/tools/vscode-azurewebpubsub/package-lock.json index 900ed4a8e..677fa57e9 100644 --- a/tools/vscode-azurewebpubsub/package-lock.json +++ b/tools/vscode-azurewebpubsub/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-azurewebpubsub", - "version": "0.0.1-beta.1", + "version": "0.1.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "vscode-azurewebpubsub", - "version": "0.0.1-beta.1", + "version": "0.1.1", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@azure/arm-monitor": "^7.0.0", @@ -14,6 +14,9 @@ "@azure/arm-webpubsub": "^2.0.0-beta.2", "@azure/core-rest-pipeline": "1.10.3", "@azure/storage-blob": "^12.4.1", + "@azure/web-pubsub": "^1.1.1", + "@fluentui/react": "^8.106.3", + "@fluentui/react-components": "^9.34.1", "@microsoft/vscode-azext-azureutils": "^2.0.0", "@microsoft/vscode-azext-utils": "^2.1.3", "@microsoft/vscode-azureresources-api": "^2.2.1", @@ -397,6 +400,34 @@ "node": ">=12.0.0" } }, + "node_modules/@azure/web-pubsub": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@azure/web-pubsub/-/web-pubsub-1.1.1.tgz", + "integrity": "sha512-YqPVPv3KX36LIsboNOlF2qjTj1HMWExcFOOH1QIFpbv9ptXI2McIrr5goScgLTtDWO0JIFJjz0sKSWucWPgb1w==", + "dependencies": { + "@azure/core-auth": "^1.3.0", + "@azure/core-client": "^1.0.0", + "@azure/core-rest-pipeline": "^1.1.0", + "@azure/core-tracing": "^1.0.0", + "@azure/logger": "^1.0.0", + "jsonwebtoken": "^9.0.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", + "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -428,6 +459,11 @@ "node": ">=10.0.0" } }, + "node_modules/@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -484,12 +520,1434 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@floating-ui/core": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.2.tgz", + "integrity": "sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==", + "dependencies": { + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/devtools": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/devtools/-/devtools-0.2.1.tgz", + "integrity": "sha512-8PHJLbD6VhBh+LJ1uty/Bz30qs02NXCE5u8WpOhSewlYXUWl03GNXknr9AS2yaAWJEQaY27x7eByJs44gODBcw==", + "peerDependencies": { + "@floating-ui/dom": ">=1.5.4" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.5.tgz", + "integrity": "sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==", + "dependencies": { + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.2.tgz", + "integrity": "sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==" + }, + "node_modules/@fluentui/date-time-utilities": { + "version": "8.6.8", + "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.6.8.tgz", + "integrity": "sha512-WoWO5eFI1c4TUgsQjTeOaCtnx6HQvuK36EdwF2Gyt/axhVvr3yjB7CWYqmVxIJ4BJsZ/lMfjGqR5sZ1w22G6pA==", + "dependencies": { + "@fluentui/set-version": "^8.2.22", + "tslib": "^2.1.0" + } + }, + "node_modules/@fluentui/dom-utilities": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.3.6.tgz", + "integrity": "sha512-/Qz/J2rdMAwh4Bk8Z+E/Fy40XUVw5IunezIsd/CJ7z1gOfNdBjRoD9XsrVkcUHbOaTTR6daUCLdWMcZtVgu0jA==", + "dependencies": { + "@fluentui/set-version": "^8.2.22", + "tslib": "^2.1.0" + } + }, + "node_modules/@fluentui/font-icons-mdl2": { + "version": "8.5.44", + "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.5.44.tgz", + "integrity": "sha512-PjhTL8I5Eia8wMFlPCWdzjYCcgAX8Wn/Fc2yfSFnwqGacY1Cox66mnoU9+QBMRWwQ1bxPbe0cV6Kcpm//MhVxw==", + "dependencies": { + "@fluentui/set-version": "^8.2.22", + "@fluentui/style-utilities": "^8.10.15", + "@fluentui/utilities": "^8.15.10", + "tslib": "^2.1.0" + } + }, + "node_modules/@fluentui/foundation-legacy": { + "version": "8.4.10", + "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.4.10.tgz", + "integrity": "sha512-NBKMsuhdEPEzRbycO73SIZ0nPzYLPufsgqwelEp4L8+KA6myMK0IdLVY1XjxBY+u1EYLVMOeLnU306MsWZE/Yw==", + "dependencies": { + "@fluentui/merge-styles": "^8.6.10", + "@fluentui/set-version": "^8.2.22", + "@fluentui/style-utilities": "^8.10.15", + "@fluentui/utilities": "^8.15.10", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <19.0.0", + "react": ">=16.8.0 <19.0.0" + } + }, + "node_modules/@fluentui/keyboard-key": { + "version": "0.4.22", + "resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.4.22.tgz", + "integrity": "sha512-ZPneS+paMjl6f1SzFt52zK2WNyDoqD7/dSb6GXZtxXXKwxOMAg+7MjJt9O5qXGMmJ7rZ6ZPe51tVN6qCrxdfTA==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@fluentui/keyboard-keys": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/@fluentui/keyboard-keys/-/keyboard-keys-9.0.7.tgz", + "integrity": "sha512-vaQ+lOveQTdoXJYqDQXWb30udSfTVcIuKk1rV0X0eGAgcHeSDeP1HxMy+OgHOQZH3OiBH4ZYeWxb+tmfiDiygQ==", + "dependencies": { + "@swc/helpers": "^0.5.1" + } + }, + "node_modules/@fluentui/merge-styles": { + "version": "8.6.10", + "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.6.10.tgz", + "integrity": "sha512-RHpziut4Ki36cv0dJQgi4v/+0gcw55wYHD89mKu2DZuF/rxb2+/yE36ohXg+TBU0RSOD208QKlufyId4ARn4TA==", + "dependencies": { + "@fluentui/set-version": "^8.2.22", + "tslib": "^2.1.0" + } + }, + "node_modules/@fluentui/priority-overflow": { + "version": "9.1.13", + "resolved": "https://registry.npmjs.org/@fluentui/priority-overflow/-/priority-overflow-9.1.13.tgz", + "integrity": "sha512-yDojVpkhBZTXOYExrCgW1GXbw3x9pYIS617xlNJIc2t06Cd3H32y2p51QXFt94sBmlVyAvPu7UKBHaq1Yw7u+w==", + "dependencies": { + "@swc/helpers": "^0.5.1" + } + }, + "node_modules/@fluentui/react": { + "version": "8.106.3", + "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.106.3.tgz", + "integrity": "sha512-Ag0XqcgnCmbDy60c6Lihsxud8qAwdcT+vq5IGAKKxqklFoFjpMDnFbE2qAJRsd9CTnQsMBlHccVa2j4M+6IjYA==", + "dependencies": { + "@fluentui/date-time-utilities": "^8.5.5", + "@fluentui/font-icons-mdl2": "^8.5.11", + "@fluentui/foundation-legacy": "^8.2.31", + "@fluentui/merge-styles": "^8.5.6", + "@fluentui/react-focus": "^8.8.17", + "@fluentui/react-hooks": "^8.6.18", + "@fluentui/react-portal-compat-context": "^9.0.4", + "@fluentui/react-window-provider": "^2.2.7", + "@fluentui/set-version": "^8.2.5", + "@fluentui/style-utilities": "^8.9.4", + "@fluentui/theme": "^2.6.24", + "@fluentui/utilities": "^8.13.8", + "@microsoft/load-themed-styles": "^1.10.26", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <19.0.0", + "@types/react-dom": ">=16.8.0 <19.0.0", + "react": ">=16.8.0 <19.0.0", + "react-dom": ">=16.8.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-accordion": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/@fluentui/react-accordion/-/react-accordion-9.4.1.tgz", + "integrity": "sha512-xvQWtpnHVn4c8MCcCVUyoq284AtmQCvH4Dyd0kJUT13j8JwLSh2NxW0XPR+gutfoOVSlShEtpRFXdV0RO1ApsQ==", + "dependencies": { + "@fluentui/react-aria": "^9.12.1", + "@fluentui/react-context-selector": "^9.1.62", + "@fluentui/react-icons": "^2.0.239", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-tabster": "^9.22.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-alert": { + "version": "9.0.0-beta.83", + "resolved": "https://registry.npmjs.org/@fluentui/react-alert/-/react-alert-9.0.0-beta.83.tgz", + "integrity": "sha512-uLyBa8V4z86IAX8MwDficjVDeZGHCmWrCszePnY+0T7JSC1ryZjj1DaMuzH87+LpN4rVsP/WOaZekgqY7KYfHA==", + "dependencies": { + "@fluentui/react-avatar": "^9.5.37", + "@fluentui/react-button": "^9.3.46", + "@fluentui/react-icons": "^2.0.217", + "@fluentui/react-jsx-runtime": "^9.0.14", + "@fluentui/react-tabster": "^9.13.4", + "@fluentui/react-theme": "^9.1.14", + "@fluentui/react-utilities": "^9.14.1", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.14.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-aria": { + "version": "9.12.1", + "resolved": "https://registry.npmjs.org/@fluentui/react-aria/-/react-aria-9.12.1.tgz", + "integrity": "sha512-YKI1e/rzOsC2x0OMjOEMY/YCPETA6P0/LV1N8UzeFSYU2NyRavacLpYfRY7LfQjCYqFfM5eHd3uWOQfuzjPPmw==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-tabster": "^9.22.0", + "@fluentui/react-utilities": "^9.18.10", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-avatar": { + "version": "9.6.30", + "resolved": "https://registry.npmjs.org/@fluentui/react-avatar/-/react-avatar-9.6.30.tgz", + "integrity": "sha512-oujqsEzLgTUBkvcvTYM4WIi5DNOac0oATtOfMYSk5ws+kh0nPA5umUSC505snG2KrWySrpxHZeX/SaG8MZgHvA==", + "dependencies": { + "@fluentui/react-badge": "^9.2.38", + "@fluentui/react-context-selector": "^9.1.62", + "@fluentui/react-icons": "^2.0.239", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-popover": "^9.9.12", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-tabster": "^9.22.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-tooltip": "^9.4.31", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-badge": { + "version": "9.2.38", + "resolved": "https://registry.npmjs.org/@fluentui/react-badge/-/react-badge-9.2.38.tgz", + "integrity": "sha512-Tc9zJQLWr/+O2x2IGPBTlnC18TXtvFqA7MTeQK+GRrGPmmDR24wdubuJHDRvkHT7olF+bcpVf6v96kry+9eIKA==", + "dependencies": { + "@fluentui/react-icons": "^2.0.239", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-button": { + "version": "9.3.84", + "resolved": "https://registry.npmjs.org/@fluentui/react-button/-/react-button-9.3.84.tgz", + "integrity": "sha512-tZX4mt2dUIguTOmBYGEL555sRnf8H9MIrqD8YsBU+2sADBWgaYOoajoZrN6TUXkmpQoG5AYggwscqJcFICzeQg==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-aria": "^9.12.1", + "@fluentui/react-icons": "^2.0.239", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-tabster": "^9.22.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-card": { + "version": "9.0.84", + "resolved": "https://registry.npmjs.org/@fluentui/react-card/-/react-card-9.0.84.tgz", + "integrity": "sha512-P3mOPT4ON62tNrMXI79RZSbj789nt+E6B5gRX2/cuTLbiMyrOepaF4zsYRE4+8tX7YFiKbv45xobRI/Oe31WRg==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-tabster": "^9.22.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-checkbox": { + "version": "9.2.29", + "resolved": "https://registry.npmjs.org/@fluentui/react-checkbox/-/react-checkbox-9.2.29.tgz", + "integrity": "sha512-3KIY50KQ+i3Iwqi165zRo/kZ7sjeLoFX5yYYB3BXpqNey+EGP6zhm1C7NAOy3d6dUlREbOHHxbM+9QUHtgUv1w==", + "dependencies": { + "@fluentui/react-field": "^9.1.68", + "@fluentui/react-icons": "^2.0.239", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-label": "^9.1.71", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-tabster": "^9.22.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-combobox": { + "version": "9.11.8", + "resolved": "https://registry.npmjs.org/@fluentui/react-combobox/-/react-combobox-9.11.8.tgz", + "integrity": "sha512-qOKRnotJ53cBWVtSfJ3ZM1cpJ05Fzidfsygz351Jw6Gk8CKgvO9Vi9EvpadP8rrWcnr1GcPhnW2KGP9qsEFnJQ==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-aria": "^9.12.1", + "@fluentui/react-context-selector": "^9.1.62", + "@fluentui/react-field": "^9.1.68", + "@fluentui/react-icons": "^2.0.239", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-portal": "^9.4.28", + "@fluentui/react-positioning": "^9.15.3", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-tabster": "^9.22.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-components": { + "version": "9.34.1", + "resolved": "https://registry.npmjs.org/@fluentui/react-components/-/react-components-9.34.1.tgz", + "integrity": "sha512-fiBAnKw2ayD+hpqYAjmWwHkN4f58XGOTYf2yPhtIbFHJiZIMx6Jwk4pyPhegOEGc4RAQFhKgT3dyblS50r3Ubg==", + "dependencies": { + "@fluentui/react-accordion": "^9.3.19", + "@fluentui/react-alert": "9.0.0-beta.83", + "@fluentui/react-avatar": "^9.5.37", + "@fluentui/react-badge": "^9.2.6", + "@fluentui/react-button": "^9.3.46", + "@fluentui/react-card": "^9.0.45", + "@fluentui/react-checkbox": "^9.1.47", + "@fluentui/react-combobox": "^9.5.21", + "@fluentui/react-dialog": "^9.7.6", + "@fluentui/react-divider": "^9.2.42", + "@fluentui/react-drawer": "9.0.0-beta.32", + "@fluentui/react-field": "^9.1.34", + "@fluentui/react-image": "^9.1.39", + "@fluentui/react-infobutton": "9.0.0-beta.67", + "@fluentui/react-input": "^9.4.44", + "@fluentui/react-label": "^9.1.42", + "@fluentui/react-link": "^9.1.25", + "@fluentui/react-menu": "^9.12.23", + "@fluentui/react-overflow": "^9.0.37", + "@fluentui/react-persona": "^9.2.47", + "@fluentui/react-popover": "^9.8.12", + "@fluentui/react-portal": "^9.3.21", + "@fluentui/react-positioning": "^9.9.18", + "@fluentui/react-progress": "^9.1.44", + "@fluentui/react-provider": "^9.10.4", + "@fluentui/react-radio": "^9.1.47", + "@fluentui/react-select": "^9.1.44", + "@fluentui/react-shared-contexts": "^9.9.2", + "@fluentui/react-skeleton": "^9.0.32", + "@fluentui/react-slider": "^9.1.47", + "@fluentui/react-spinbutton": "^9.2.44", + "@fluentui/react-spinner": "^9.3.22", + "@fluentui/react-switch": "^9.1.47", + "@fluentui/react-table": "^9.10.2", + "@fluentui/react-tabs": "^9.3.48", + "@fluentui/react-tabster": "^9.13.4", + "@fluentui/react-tags": "^9.0.1", + "@fluentui/react-text": "^9.3.39", + "@fluentui/react-textarea": "^9.3.44", + "@fluentui/react-theme": "^9.1.14", + "@fluentui/react-toast": "^9.3.8", + "@fluentui/react-toolbar": "^9.1.47", + "@fluentui/react-tooltip": "^9.3.13", + "@fluentui/react-tree": "^9.4.2", + "@fluentui/react-utilities": "^9.14.1", + "@fluentui/react-virtualizer": "9.0.0-alpha.48", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.14.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0", + "scheduler": "^0.19.0 || ^0.20.0" + } + }, + "node_modules/@fluentui/react-context-selector": { + "version": "9.1.62", + "resolved": "https://registry.npmjs.org/@fluentui/react-context-selector/-/react-context-selector-9.1.62.tgz", + "integrity": "sha512-XXSCkqzisRWGjckdkZLLx0uYnQyfwa0xedEB6HMMeCnJqYWj4aFj27IhQC25UQ2SMdrl1vnjdfqUYjn6G3NsAQ==", + "dependencies": { + "@fluentui/react-utilities": "^9.18.10", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0", + "scheduler": ">=0.19.0 <=0.23.0" + } + }, + "node_modules/@fluentui/react-dialog": { + "version": "9.11.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-dialog/-/react-dialog-9.11.2.tgz", + "integrity": "sha512-us1JbZ7iucDyJyd372sJQqdcJPCgQJLsxR3OFVoecQ+wOC66eLKTHHKhyHhdIRem/dfpm8X1mzEmrj+ipws1jQ==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-aria": "^9.12.1", + "@fluentui/react-context-selector": "^9.1.62", + "@fluentui/react-icons": "^2.0.239", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-motion": "^9.2.0", + "@fluentui/react-portal": "^9.4.28", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-tabster": "^9.22.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-divider": { + "version": "9.2.70", + "resolved": "https://registry.npmjs.org/@fluentui/react-divider/-/react-divider-9.2.70.tgz", + "integrity": "sha512-PtPAQp+j9icisZrmZR65LLug/uk/cWBdyQAMKse6jKmF/274xp9M9xuB833fgryJ3NIMp+dVHsJT8XJxhMVHcQ==", + "dependencies": { + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-drawer": { + "version": "9.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@fluentui/react-drawer/-/react-drawer-9.0.0-beta.32.tgz", + "integrity": "sha512-O0tyHngU+DblU9qiB6sg1KcjoK1jICxnK7Nl3mOzxBVCSLnfX+ShxqP8OBFbI14lupcBLkskrVnGm9YkEqbk3Q==", + "dependencies": { + "@fluentui/react-dialog": "^9.7.6", + "@fluentui/react-jsx-runtime": "^9.0.14", + "@fluentui/react-motion-preview": "^0.3.0", + "@fluentui/react-shared-contexts": "^9.9.2", + "@fluentui/react-theme": "^9.1.14", + "@fluentui/react-utilities": "^9.14.1", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.14.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-field": { + "version": "9.1.68", + "resolved": "https://registry.npmjs.org/@fluentui/react-field/-/react-field-9.1.68.tgz", + "integrity": "sha512-PiXti7L9rBwk98S+BcS9EKj13nmvl/lymwdrw2vguOMJvNQYIW4UhmvAzFDxs92kpfeHIjZgcEv+cskhJ7Uo7g==", + "dependencies": { + "@fluentui/react-context-selector": "^9.1.62", + "@fluentui/react-icons": "^2.0.239", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-label": "^9.1.71", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-focus": { + "version": "8.9.7", + "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.9.7.tgz", + "integrity": "sha512-W7ah8KsFCJz0bCa+w11/qUTdw+fdBYFVy42nSscSDdzdqriXQ87L1v2b8h+iOr/WBvzBG1AN6C97F5tNH/K95w==", + "dependencies": { + "@fluentui/keyboard-key": "^0.4.22", + "@fluentui/merge-styles": "^8.6.10", + "@fluentui/set-version": "^8.2.22", + "@fluentui/style-utilities": "^8.10.15", + "@fluentui/utilities": "^8.15.10", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <19.0.0", + "react": ">=16.8.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-hooks": { + "version": "8.8.7", + "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.8.7.tgz", + "integrity": "sha512-bMNouJF8Ij3tSue+uFyYfDm8llL4D0PDCPcXoFroUgk6QDneCMxnsK4uqeUAvr8rvmcVedzYiQ29r7IxWXxj2g==", + "dependencies": { + "@fluentui/react-window-provider": "^2.2.26", + "@fluentui/set-version": "^8.2.22", + "@fluentui/utilities": "^8.15.10", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <19.0.0", + "react": ">=16.8.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-icons": { + "version": "2.0.245", + "resolved": "https://registry.npmjs.org/@fluentui/react-icons/-/react-icons-2.0.245.tgz", + "integrity": "sha512-okaKAWR9BPTEu7g/Lz7M+SeABkveiDC0A5dA+AKbnGX/5V60/0jV/m/mnTCs9EfsbMdHZaoErsVqzCxP3mqYGQ==", + "dependencies": { + "@griffel/react": "^1.0.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "react": ">=16.8.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-image": { + "version": "9.1.68", + "resolved": "https://registry.npmjs.org/@fluentui/react-image/-/react-image-9.1.68.tgz", + "integrity": "sha512-cjUoL7nt9cyO5WrPw5wG2GFYRvAEpOA2/nbeUooeAAQQ11V+d7ekSxpfD9OyyiA5KABpn909puzu96kqNTwKFg==", + "dependencies": { + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-infobutton": { + "version": "9.0.0-beta.67", + "resolved": "https://registry.npmjs.org/@fluentui/react-infobutton/-/react-infobutton-9.0.0-beta.67.tgz", + "integrity": "sha512-SX8oVVQK6qXUtJCkzJlFQ5O5me/Y13nbboSduvJtyGzPFw30tQzZm11J/7ztJRauNmjNLJVHdJQI97zeyC6cHg==", + "deprecated": "@fluentui/react-infobutton has been deprecated, please use @fluentui/react-infolabel instead.", + "dependencies": { + "@fluentui/react-icons": "^2.0.217", + "@fluentui/react-jsx-runtime": "^9.0.14", + "@fluentui/react-label": "^9.1.42", + "@fluentui/react-popover": "^9.8.12", + "@fluentui/react-portal": "^9.3.21", + "@fluentui/react-tabster": "^9.13.4", + "@fluentui/react-theme": "^9.1.14", + "@fluentui/react-utilities": "^9.14.1", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.14.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-input": { + "version": "9.4.79", + "resolved": "https://registry.npmjs.org/@fluentui/react-input/-/react-input-9.4.79.tgz", + "integrity": "sha512-Nuf3n4Py77v5zOVE9MLaQeC6ywwjfL7jTdEaKVGL3k/geWTG5WFqjG79CzNJo0Ajo0DKnPqul6MtLdRF+tqeNQ==", + "dependencies": { + "@fluentui/react-field": "^9.1.68", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-jsx-runtime": { + "version": "9.0.39", + "resolved": "https://registry.npmjs.org/@fluentui/react-jsx-runtime/-/react-jsx-runtime-9.0.39.tgz", + "integrity": "sha512-mfK3L68Gfu9rMkfg1iVT06rOOPeOZasy+nKJID451YfKiAQYy1Zy9bhaTRDoNrOQcu2jDEOZAxAPURZw5oGLtw==", + "dependencies": { + "@fluentui/react-utilities": "^9.18.10", + "@swc/helpers": "^0.5.1", + "react-is": "^17.0.2" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "react": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-label": { + "version": "9.1.71", + "resolved": "https://registry.npmjs.org/@fluentui/react-label/-/react-label-9.1.71.tgz", + "integrity": "sha512-PkzRsl86+AkSn6p26C0Y2AV4IxYUhbBV+lFNSwN/hVgiXwMVdUjPOZx4Nm4Fnvv5ctt/BVuaE0dB/nSSDsrnQw==", + "dependencies": { + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-link": { + "version": "9.2.25", + "resolved": "https://registry.npmjs.org/@fluentui/react-link/-/react-link-9.2.25.tgz", + "integrity": "sha512-yhwgXjIFC39Nd5zveaOu3AgAra3H0Cv+gQ4rOLKW95ejlXHJqZEqcFPrf39d930YVCeIThiBH7IG1JCfo4z8/Q==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-tabster": "^9.22.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-menu": { + "version": "9.14.8", + "resolved": "https://registry.npmjs.org/@fluentui/react-menu/-/react-menu-9.14.8.tgz", + "integrity": "sha512-FFY44tCxzQJaFVKXqJuR00++FSJPUSkx/qg41e73j/8+ytelD0FtyzLoS0r/ditAfDVSJtFwuuL10+3Dagk2WQ==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-aria": "^9.12.1", + "@fluentui/react-context-selector": "^9.1.62", + "@fluentui/react-icons": "^2.0.239", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-portal": "^9.4.28", + "@fluentui/react-positioning": "^9.15.3", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-tabster": "^9.22.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-motion": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-motion/-/react-motion-9.2.0.tgz", + "integrity": "sha512-gM38DObOXXEcE1xUe/c2bDd4J4wWwEeHghuIMOlQ+yElr8F4906bEv+gIlEbfSdACGDJ3SWixhGkxlAoAjaBow==", + "dependencies": { + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-utilities": "^9.18.10", + "@swc/helpers": "^0.5.1", + "react-is": "^17.0.2" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <19.0.0", + "@types/react-dom": ">=16.8.0 <19.0.0", + "react": ">=16.8.0 <19.0.0", + "react-dom": ">=16.8.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-motion-preview": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@fluentui/react-motion-preview/-/react-motion-preview-0.3.4.tgz", + "integrity": "sha512-5Ru/uoLEMQVDEHJIqfs8TZPN38ABZlVgcnBHmfpYwF+zuL6RgP8VQehGSgDpD/eZ2YLHqa6Cl9uNWZYK4ouXNQ==", + "dependencies": { + "@fluentui/react-jsx-runtime": "^9.0.18", + "@fluentui/react-shared-contexts": "^9.10.0", + "@fluentui/react-theme": "^9.1.14", + "@fluentui/react-utilities": "^9.15.1", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.14.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-overflow": { + "version": "9.1.22", + "resolved": "https://registry.npmjs.org/@fluentui/react-overflow/-/react-overflow-9.1.22.tgz", + "integrity": "sha512-h+mFyOdozdlyd0F7gzqMHyKk6jFgyAZutBwtMKiocxSSzyU44G5ZUS3hVAY6+qnVk7Ft8DkjHOZybv85naXuGA==", + "dependencies": { + "@fluentui/priority-overflow": "^9.1.13", + "@fluentui/react-context-selector": "^9.1.62", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-persona": { + "version": "9.2.89", + "resolved": "https://registry.npmjs.org/@fluentui/react-persona/-/react-persona-9.2.89.tgz", + "integrity": "sha512-WzQ9amNhtkKNP00Uf/5xopyci+Zo1oOg8uEkWhT69PwBYLdeLHu7RF5QFPz4U/HmlW8waR8vbH25GSHD2oo9oA==", + "dependencies": { + "@fluentui/react-avatar": "^9.6.30", + "@fluentui/react-badge": "^9.2.38", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-popover": { + "version": "9.9.12", + "resolved": "https://registry.npmjs.org/@fluentui/react-popover/-/react-popover-9.9.12.tgz", + "integrity": "sha512-oyNiU/NIrRV7N/JUIyX0IZgQSBgrYZE4C4GEpxCkB/wd8IYuF4ws/hm18WMl8NomItiC04mMfOcaB/VH4/JS9A==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-aria": "^9.12.1", + "@fluentui/react-context-selector": "^9.1.62", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-portal": "^9.4.28", + "@fluentui/react-positioning": "^9.15.3", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-tabster": "^9.22.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-portal": { + "version": "9.4.28", + "resolved": "https://registry.npmjs.org/@fluentui/react-portal/-/react-portal-9.4.28.tgz", + "integrity": "sha512-QtG/rVQ0ekF7irZDlI5KKQqmeT7I9aVsawP5E2/XISejVwFc5AGboPlXELldhGqgWx0M3nNRNVk1QdKkc0PlEQ==", + "dependencies": { + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-tabster": "^9.22.0", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1", + "use-disposable": "^1.0.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-portal-compat-context": { + "version": "9.0.11", + "resolved": "https://registry.npmjs.org/@fluentui/react-portal-compat-context/-/react-portal-compat-context-9.0.11.tgz", + "integrity": "sha512-ubvW/ej0O+Pago9GH3mPaxzUgsNnBoqvghNamWjyKvZIViyaXUG6+sgcAl721R+qGAFac+A20akI5qDJz/xtdg==", + "dependencies": { + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "react": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-positioning": { + "version": "9.15.3", + "resolved": "https://registry.npmjs.org/@fluentui/react-positioning/-/react-positioning-9.15.3.tgz", + "integrity": "sha512-hW9CGHLlz5q+IlBdpTh1xtj2OZZ6abPcDQ4WjxWneWmG3jAf4sFkwS8ylvSZ7i7QcUk+ckVuCiuJsc/GjcRzKQ==", + "dependencies": { + "@floating-ui/devtools": "0.2.1", + "@floating-ui/dom": "^1.2.0", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-progress": { + "version": "9.1.79", + "resolved": "https://registry.npmjs.org/@fluentui/react-progress/-/react-progress-9.1.79.tgz", + "integrity": "sha512-NBHnpcOKQ9OOKnAIVd3HW4cn/yv7xjureJxn8EM2Om7ZBPS5HrKJqZHwJVrUE/QJ4WssTfiU8MipKwWwot+8Vg==", + "dependencies": { + "@fluentui/react-field": "^9.1.68", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-provider": { + "version": "9.16.3", + "resolved": "https://registry.npmjs.org/@fluentui/react-provider/-/react-provider-9.16.3.tgz", + "integrity": "sha512-rF3FFvqsXPshpgk+nq1sxwzysFKRPFM0fV872qP/kHiyUU7IpEyRU8HcSU5j8sFgpRSNVatAjiD0I+rvy6ekjg==", + "dependencies": { + "@fluentui/react-icons": "^2.0.239", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-tabster": "^9.22.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/core": "^1.16.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-radio": { + "version": "9.2.24", + "resolved": "https://registry.npmjs.org/@fluentui/react-radio/-/react-radio-9.2.24.tgz", + "integrity": "sha512-Wl19e4CQo4Fv2A+x0ta3rS2F1OMTL7mF4qVfdfhdTOTH2J/0WmmFPrz26E2ZhqENKivIv1+NXEV/KgpPFbWF0w==", + "dependencies": { + "@fluentui/react-field": "^9.1.68", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-label": "^9.1.71", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-tabster": "^9.22.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-select": { + "version": "9.1.79", + "resolved": "https://registry.npmjs.org/@fluentui/react-select/-/react-select-9.1.79.tgz", + "integrity": "sha512-E9EuUIUy2MzHRkQPmXyJp5txVo5EYH+lNoV3xgZKd9zijg7QQJWxfgbNJqddubmnRdr8MtBt/fM4qmHia5cgSQ==", + "dependencies": { + "@fluentui/react-field": "^9.1.68", + "@fluentui/react-icons": "^2.0.239", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-shared-contexts": { + "version": "9.19.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-shared-contexts/-/react-shared-contexts-9.19.0.tgz", + "integrity": "sha512-KWHRVuKSvQpFdGGxj802AwoHlq7VyFKaj89cgX2pBu2ZqZrdpxkbkfFQIvxLoaZ/Bzm7fWXVQrDYpj+8JHAfCA==", + "dependencies": { + "@fluentui/react-theme": "^9.1.19", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "react": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-skeleton": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/@fluentui/react-skeleton/-/react-skeleton-9.1.7.tgz", + "integrity": "sha512-2Ve7NZ1LyssPgztw+K55znY/uiZRx/g8Iif7L6ETvvcn3nE3WZFWISLfVdCF7SQBTa+oV+gDBjUKpEZcFA512Q==", + "dependencies": { + "@fluentui/react-field": "^9.1.68", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-slider": { + "version": "9.1.86", + "resolved": "https://registry.npmjs.org/@fluentui/react-slider/-/react-slider-9.1.86.tgz", + "integrity": "sha512-icgE/5iYx69DQLcOlPicATxQJcNBYg2uJGvVgzVhhLuXy87mkqv7Lh5YFfmcMpMSWbOhoEbDle73MMTDu8UC9g==", + "dependencies": { + "@fluentui/react-field": "^9.1.68", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-tabster": "^9.22.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-spinbutton": { + "version": "9.2.79", + "resolved": "https://registry.npmjs.org/@fluentui/react-spinbutton/-/react-spinbutton-9.2.79.tgz", + "integrity": "sha512-qqe7eQ4ra3Iu/RhZHXxjnYqhH9GNPr1FlTSqPRIHa7Kf0/0Hrig+gLQYw7N5BXzDSU4+cz29/9PyXowdg5mBLQ==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-field": "^9.1.68", + "@fluentui/react-icons": "^2.0.239", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-spinner": { + "version": "9.4.9", + "resolved": "https://registry.npmjs.org/@fluentui/react-spinner/-/react-spinner-9.4.9.tgz", + "integrity": "sha512-+X9OmvDIhdwdiKO7I0CKrgjiS5Y2DzSVgkONMmpuu6u+DywhgLWh1JLatCiEl8Qp2/cBlg32XNfBl0lAfQHHFw==", + "dependencies": { + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-label": "^9.1.71", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-switch": { + "version": "9.1.86", + "resolved": "https://registry.npmjs.org/@fluentui/react-switch/-/react-switch-9.1.86.tgz", + "integrity": "sha512-tcgkSv+VwT4QzP/wuMT472R5oZJtiUhbLnSgMWGlyuETBMDMF0Vp3SNkp8noalTyNHPnrJgylKgUuKtt3MyL1Q==", + "dependencies": { + "@fluentui/react-field": "^9.1.68", + "@fluentui/react-icons": "^2.0.239", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-label": "^9.1.71", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-tabster": "^9.22.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-table": { + "version": "9.15.8", + "resolved": "https://registry.npmjs.org/@fluentui/react-table/-/react-table-9.15.8.tgz", + "integrity": "sha512-awEJcDF+LX0xCpIArGBRwUh4/4vw0rJcwVnmlujn2DoYBwasUoyL9QYZF2W5U+XnHazYBgX7Bm+JMJ7awVdSVQ==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-aria": "^9.12.1", + "@fluentui/react-avatar": "^9.6.30", + "@fluentui/react-checkbox": "^9.2.29", + "@fluentui/react-context-selector": "^9.1.62", + "@fluentui/react-icons": "^2.0.239", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-radio": "^9.2.24", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-tabster": "^9.22.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-tabs": { + "version": "9.4.24", + "resolved": "https://registry.npmjs.org/@fluentui/react-tabs/-/react-tabs-9.4.24.tgz", + "integrity": "sha512-HBy+TNI0XoC1WqLjIAWokW5HeCD59h//Cy+nHELI4xSVc3gbWDb2KLRptDLYawcDT9hsUnwxtnSXmQgnGLhH2A==", + "dependencies": { + "@fluentui/react-context-selector": "^9.1.62", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-tabster": "^9.22.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-tabster": { + "version": "9.22.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-tabster/-/react-tabster-9.22.0.tgz", + "integrity": "sha512-R61y6/kRWjA8UP9F/wMvOBtOFM1frgiQA0zF49BfrQvwnJMFEYidaLsc1e6IkNS34IiwpsESaIIOlDMn5mUXzg==", + "dependencies": { + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1", + "keyborg": "^2.6.0", + "tabster": "^8.0.0" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-tags": { + "version": "9.3.9", + "resolved": "https://registry.npmjs.org/@fluentui/react-tags/-/react-tags-9.3.9.tgz", + "integrity": "sha512-hwriI1Uj4rI5qQ0A8FrAlCHJ9pZCo8mwWM0VTKpssN5vK4nqcSpiMq91mw810+GUlNiXnTW+gZCn0RlaryCQFw==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-aria": "^9.12.1", + "@fluentui/react-avatar": "^9.6.30", + "@fluentui/react-icons": "^2.0.239", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-tabster": "^9.22.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-text": { + "version": "9.4.20", + "resolved": "https://registry.npmjs.org/@fluentui/react-text/-/react-text-9.4.20.tgz", + "integrity": "sha512-9ulw77qtUfxmgFTIC3UwzCyw0mn9xWV16VZ3j8MzDeLOapvGUz4UnvOV8aLXIWmI7VbeEVRRcQ5eFMvL6dbhRQ==", + "dependencies": { + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-textarea": { + "version": "9.3.79", + "resolved": "https://registry.npmjs.org/@fluentui/react-textarea/-/react-textarea-9.3.79.tgz", + "integrity": "sha512-7nAMBINpKWgvftXvKdynppiLhv0+O97bMwoLyhUdHnBu0fJi/2yYXlsCh1RFAaBg07qc+wqdQX1TdI4ad2nluQ==", + "dependencies": { + "@fluentui/react-field": "^9.1.68", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-theme": { + "version": "9.1.19", + "resolved": "https://registry.npmjs.org/@fluentui/react-theme/-/react-theme-9.1.19.tgz", + "integrity": "sha512-mrVhKbr4o9UKERPxgghIRDU59S7gRizrgz3/wwyMt7elkr8Sw+OpwKIeEw9x6P0RTcFDC00nggaMJhBGs7Xo4A==", + "dependencies": { + "@fluentui/tokens": "1.0.0-alpha.16", + "@swc/helpers": "^0.5.1" + } + }, + "node_modules/@fluentui/react-toast": { + "version": "9.3.47", + "resolved": "https://registry.npmjs.org/@fluentui/react-toast/-/react-toast-9.3.47.tgz", + "integrity": "sha512-sFvdp8OOniYMasIIQB2kwZkezb8lx7mw14RtnPyUG/E8bo5j96uVEZWVH8nAbZGezxSi2X75WZbplla55vhJ6Q==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-aria": "^9.12.1", + "@fluentui/react-icons": "^2.0.239", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-motion": "^9.2.0", + "@fluentui/react-portal": "^9.4.28", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-tabster": "^9.22.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-toolbar": { + "version": "9.1.87", + "resolved": "https://registry.npmjs.org/@fluentui/react-toolbar/-/react-toolbar-9.1.87.tgz", + "integrity": "sha512-jxi5cSw4tj++goEjz85prAJdsfRSqZhY0IV4UAhYvcQLaNaR1mqdJzjynXWHwf5SyKj7u4lsgfJ8XYibBL9/JA==", + "dependencies": { + "@fluentui/react-button": "^9.3.84", + "@fluentui/react-context-selector": "^9.1.62", + "@fluentui/react-divider": "^9.2.70", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-radio": "^9.2.24", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-tabster": "^9.22.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-tooltip": { + "version": "9.4.31", + "resolved": "https://registry.npmjs.org/@fluentui/react-tooltip/-/react-tooltip-9.4.31.tgz", + "integrity": "sha512-e6DZgYWDwzt1i0guZjUIrBxuX8sQ1KZg/snJ4puM6IWpbUC2dLahBvOdJbAZopyFRwhsvP37Cey4nTrwhhDVSA==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-portal": "^9.4.28", + "@fluentui/react-positioning": "^9.15.3", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-tabster": "^9.22.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-tree": { + "version": "9.7.1", + "resolved": "https://registry.npmjs.org/@fluentui/react-tree/-/react-tree-9.7.1.tgz", + "integrity": "sha512-zyUW0NwuafZE1618ssOmBZidHg6Luccgmz67XO3zhv5VlVYvMnr1ci55tgyp4L1SY2P/6hVB216EVK0c7oJA6w==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-aria": "^9.12.1", + "@fluentui/react-avatar": "^9.6.30", + "@fluentui/react-button": "^9.3.84", + "@fluentui/react-checkbox": "^9.2.29", + "@fluentui/react-context-selector": "^9.1.62", + "@fluentui/react-icons": "^2.0.239", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-radio": "^9.2.24", + "@fluentui/react-shared-contexts": "^9.19.0", + "@fluentui/react-tabster": "^9.22.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-utilities": { + "version": "9.18.10", + "resolved": "https://registry.npmjs.org/@fluentui/react-utilities/-/react-utilities-9.18.10.tgz", + "integrity": "sha512-1yUFZrJyBO1qizHa20S35JATQwr0QoTZ5vBmov0K49BWxDpJxpiAClMpFaMlw0hj9cI7HMLFF8Y87OhUYvaheQ==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.7", + "@fluentui/react-shared-contexts": "^9.19.0", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "react": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-virtualizer": { + "version": "9.0.0-alpha.48", + "resolved": "https://registry.npmjs.org/@fluentui/react-virtualizer/-/react-virtualizer-9.0.0-alpha.48.tgz", + "integrity": "sha512-Ifw+6Ixqhxb9bDXY3dETIJH5H4s4wEv119PcLefFZknQ7M4Q3IMsrYMXppoptzhAyeEionTekpMRt1j2E4/4yw==", + "dependencies": { + "@fluentui/react-jsx-runtime": "^9.0.14", + "@fluentui/react-utilities": "^9.14.1", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.14.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-window-provider": { + "version": "2.2.26", + "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.26.tgz", + "integrity": "sha512-LMDfddXka9/YnSzjVU9smjI4dixhJ5jM5fjUtD2Bh9qgeUUzCmCW2GVh6S4LIqjsaoJVJfOOCuPrSaZTr+HdRQ==", + "dependencies": { + "@fluentui/set-version": "^8.2.22", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <19.0.0", + "react": ">=16.8.0 <19.0.0" + } + }, + "node_modules/@fluentui/set-version": { + "version": "8.2.22", + "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.22.tgz", + "integrity": "sha512-4m5AKK+s5LLBv/BOGHnaCl8W2qdDFOdfRHeRZBS7UNcFLUPHKCfmID1rdh1eCrl3qIgGXPlc46o3BBqt+SBTTw==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@fluentui/style-utilities": { + "version": "8.10.15", + "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.10.15.tgz", + "integrity": "sha512-+XyRMAGOQhlmBQU830S+pGPYY7LTNofwRGTkeqERWBNI2gXw8O94TcgprQNGEXZM9jf5oSE/t09baoECeWdBmA==", + "dependencies": { + "@fluentui/merge-styles": "^8.6.10", + "@fluentui/set-version": "^8.2.22", + "@fluentui/theme": "^2.6.53", + "@fluentui/utilities": "^8.15.10", + "@microsoft/load-themed-styles": "^1.10.26", + "tslib": "^2.1.0" + } + }, + "node_modules/@fluentui/theme": { + "version": "2.6.53", + "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.53.tgz", + "integrity": "sha512-8w/072fUC+ukWzRGpCFkOlwmKmFraVanwY8VMdbC9O8u3bkaDFcGKx4j1VopUKE682SFaudqDyLiwECm+i3YuA==", + "dependencies": { + "@fluentui/merge-styles": "^8.6.10", + "@fluentui/set-version": "^8.2.22", + "@fluentui/utilities": "^8.15.10", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <19.0.0", + "react": ">=16.8.0 <19.0.0" + } + }, + "node_modules/@fluentui/tokens": { + "version": "1.0.0-alpha.16", + "resolved": "https://registry.npmjs.org/@fluentui/tokens/-/tokens-1.0.0-alpha.16.tgz", + "integrity": "sha512-Gr9G8LIlUhZYX5j6CfDQrofQqsWAz/q54KabWn1tWV/1083WwyoTZXiG1k6b37NnK7Feye7D7Nz+4MNqoKpXGw==", + "dependencies": { + "@swc/helpers": "^0.5.1" + } + }, + "node_modules/@fluentui/utilities": { + "version": "8.15.10", + "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.15.10.tgz", + "integrity": "sha512-7WAzaVd7vPTh60SfN8/nGtlxm6Pv19NrLVeANt6ZP9h8SA2E5fV3QwDH/88BjnVj/yfTQwb7011aQcSb6DiKBA==", + "dependencies": { + "@fluentui/dom-utilities": "^2.3.6", + "@fluentui/merge-styles": "^8.6.10", + "@fluentui/react-window-provider": "^2.2.26", + "@fluentui/set-version": "^8.2.22", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <19.0.0", + "react": ">=16.8.0 <19.0.0" + } + }, "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "dev": true }, + "node_modules/@griffel/core": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@griffel/core/-/core-1.17.0.tgz", + "integrity": "sha512-OhLMYQ9zXVpKh3DULgK0Olsm1Xw5cvQuL7BV3UCWoJttAWGfrdIvSMxGCJ2FpWVyS/OBWoG4BTYh3oHTgxBWCQ==", + "dependencies": { + "@emotion/hash": "^0.9.0", + "@griffel/style-types": "^1.2.0", + "csstype": "^3.1.3", + "rtl-css-js": "^1.16.1", + "stylis": "^4.2.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@griffel/react": { + "version": "1.5.23", + "resolved": "https://registry.npmjs.org/@griffel/react/-/react-1.5.23.tgz", + "integrity": "sha512-pOOh+h+2JibSVlRfN6rzIigkPm6HONxMHEN3IWLB3gVU7OKEQHt/EOK+1ZePMzaMILZaaFDvuwCaKCkEq6QQ/Q==", + "dependencies": { + "@griffel/core": "^1.17.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "react": ">=16.8.0 <19.0.0" + } + }, + "node_modules/@griffel/style-types": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@griffel/style-types/-/style-types-1.2.0.tgz", + "integrity": "sha512-x166MNw0vWe5l5qhinfNT4eyWOaP48iFzPyFOfIB0/BVidKTWsEe5PmqRJDDtrJFS3VHhd/tE0oM6tkEMh2tsg==", + "dependencies": { + "csstype": "^3.1.3" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", @@ -696,6 +2154,11 @@ "eslint-plugin-import": ">=2" } }, + "node_modules/@microsoft/load-themed-styles": { + "version": "1.10.295", + "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.295.tgz", + "integrity": "sha512-W+IzEBw8a6LOOfRJM02dTT7BDZijxm+Z7lhtOAz1+y9vQm1Kdz9jlAO+qCEKsfxtUOmKilW8DIRqFw2aUgKeGg==" + }, "node_modules/@microsoft/vscode-azext-azureutils": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@microsoft/vscode-azext-azureutils/-/vscode-azext-azureutils-2.0.5.tgz", @@ -970,6 +2433,14 @@ "url": "https://github.com/fb55/domhandler?sponsor=1" } }, + "node_modules/@swc/helpers": { + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.11.tgz", + "integrity": "sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==", + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -1129,6 +2600,31 @@ "integrity": "sha512-Yll76ZHikRFCyz/pffKGjrCwe/le2CDwOP5F210KQo27kpRE46U2rDnzikNlVn6/ezH3Mhn46bJMTfeVTtcYMg==", "dev": true }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", + "peer": true + }, + "node_modules/@types/react": { + "version": "18.3.3", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", + "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", + "peer": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "peer": true, + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/semver": { "version": "7.5.6", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", @@ -3142,6 +4638,11 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, "node_modules/d": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", @@ -6579,6 +8080,12 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "peer": true + }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -6698,6 +8205,11 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/keyborg": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/keyborg/-/keyborg-2.6.0.tgz", + "integrity": "sha512-o5kvLbuTF+o326CMVYpjlaykxqYP9DphFQZ2ZpgrvBouyvOxyEB7oqe8nOLFpiV5VCtz0D3pt8gXQYWpLpBnmA==" + }, "node_modules/keytar": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", @@ -7055,6 +8567,18 @@ "node": ">=8" } }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "peer": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -8089,7 +9613,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -8954,6 +10477,45 @@ "node": ">=0.10.0" } }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-dom/node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + }, "node_modules/read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", @@ -9079,6 +10641,11 @@ "node": ">= 0.10" } }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, "node_modules/regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -9310,6 +10877,14 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rtl-css-js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.1.tgz", + "integrity": "sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==", + "dependencies": { + "@babel/runtime": "^7.1.2" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -9400,6 +10975,16 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" }, + "node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, "node_modules/schema-utils": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", @@ -10136,6 +11721,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/stylis": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz", + "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==" + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -10170,6 +11760,15 @@ "es6-symbol": "^3.1.1" } }, + "node_modules/tabster": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/tabster/-/tabster-8.0.0.tgz", + "integrity": "sha512-82pqhDwH3uq7hVcy1nOo7lyYgCJcVUPqb30hvoHtX8DQ5pxEtRz9+FqVcW5w7J6kTjNBBu7cwKvuMy9qoeQt1g==", + "dependencies": { + "keyborg": "2.6.0", + "tslib": "^2.3.1" + } + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -11105,6 +12704,17 @@ "node": ">=0.10.0" } }, + "node_modules/use-disposable": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/use-disposable/-/use-disposable-1.0.2.tgz", + "integrity": "sha512-UMaXVlV77dWOu4GqAFNjRzHzowYKUKbJBQfCexvahrYeIz4OkUYUjna4Tjjdf92NH8Nm8J7wEfFRgTIwYjO5jg==", + "peerDependencies": { + "@types/react": ">=16.8.0 <19.0.0", + "@types/react-dom": ">=16.8.0 <19.0.0", + "react": ">=16.8.0 <19.0.0", + "react-dom": ">=16.8.0 <19.0.0" + } + }, "node_modules/util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", diff --git a/tools/vscode-azurewebpubsub/package.json b/tools/vscode-azurewebpubsub/package.json index a55920706..f18bd4de0 100644 --- a/tools/vscode-azurewebpubsub/package.json +++ b/tools/vscode-azurewebpubsub/package.json @@ -31,7 +31,8 @@ "preview": true, "activationEvents": [ "onView:azureResourceGroups", - "onView:azureResourceGroupsV2" + "onView:azureResourceGroupsV2", + "onWebviewPanel:testClientView" ], "main": "./main.js", "contributes": { @@ -124,6 +125,11 @@ "title": "%azureWebPubSub.service.openLiveTraceTool%", "category": "Azure Web PubSub" }, + { + "command": "azureWebPubSub.service.testClient", + "title": "%azureWebPubSub.service.testClient%", + "category": "Azure Web PubSub" + }, { "command": "azureWebPubSub.service.scaleUp", "title": "%azureWebPubSub.service.scaleUp%", @@ -258,29 +264,34 @@ ], "azureWebPubSub.service.advancedMenu": [ { - "command": "azureWebPubSub.service.scaleUp", + "command": "azureWebPubSub.service.testClient", "when": "view =~ /(azureResourceGroups|azureFocusView)/ && viewItem =~ /webPubSubServiceItem/i", "group": "1@1" }, { - "command": "azureWebPubSub.service.scaleOut", + "command": "azureWebPubSub.service.scaleUp", "when": "view =~ /(azureResourceGroups|azureFocusView)/ && viewItem =~ /webPubSubServiceItem/i", "group": "1@2" }, { - "command": "azureWebPubSub.service.viewMetrics", + "command": "azureWebPubSub.service.scaleOut", "when": "view =~ /(azureResourceGroups|azureFocusView)/ && viewItem =~ /webPubSubServiceItem/i", "group": "1@3" }, { - "command": "azureWebPubSub.service.checkHealth", + "command": "azureWebPubSub.service.viewMetrics", "when": "view =~ /(azureResourceGroups|azureFocusView)/ && viewItem =~ /webPubSubServiceItem/i", "group": "1@4" }, { - "command": "azureWebPubSub.service.regenerateKey", + "command": "azureWebPubSub.service.checkHealth", "when": "view =~ /(azureResourceGroups|azureFocusView)/ && viewItem =~ /webPubSubServiceItem/i", "group": "1@5" + }, + { + "command": "azureWebPubSub.service.regenerateKey", + "when": "view =~ /(azureResourceGroups|azureFocusView)/ && viewItem =~ /webPubSubServiceItem/i", + "group": "1@6" } ] }, @@ -300,17 +311,23 @@ "scripts": { "vscode:prepublish": "npm run cleanReadme", "build": "tsc && gulp webpack-prod", + "build:all": "npm run build && npm run build:webview", "cleanReadme": "gulp cleanReadme", "compile": "tsc -watch", "package": "vsce package --no-dependencies", "package:pre-release": "vsce package --pre-release", - "lint": "eslint --ext .ts .", - "lint-fix": "eslint --ext .ts . --fix", + "lint": "eslint --ext .ts ./src", + "lint-fix": "eslint --ext .ts ./src --fix", + "lint:all": "npm run lint && cd webview-ui && npm run lint", + "lint-fix:all": "npm run lint-fix && cd webview-ui && npm run lint-fix", "pretest": "npm run lint && npm run webpack-prod && gulp preTest", "test": "node ./out/test/runTest.js", "webpack": "tsc && gulp webpack-dev", "webpack-prod": "tsc && gulp webpack-prod", - "webpack-profile": "webpack --profile --json --mode production > webpack-stats.json && echo Use http://webpack.github.io/analyse to analyze the stats" + "webpack-profile": "webpack --profile --json --mode production > webpack-stats.json && echo Use http://webpack.github.io/analyse to analyze the stats", + "install:all": "npm install && cd webview-ui && npm install --legacy-peer-deps", + "start:webview": "cd webview-ui && npm run start", + "build:webview": "cd webview-ui && npm run build" }, "devDependencies": { "@azure/ms-rest-azure-env": "^2.0.0", @@ -345,6 +362,9 @@ "@azure/arm-webpubsub": "^2.0.0-beta.2", "@azure/core-rest-pipeline": "1.10.3", "@azure/storage-blob": "^12.4.1", + "@azure/web-pubsub": "^1.1.1", + "@fluentui/react": "^8.106.3", + "@fluentui/react-components": "^9.34.1", "@microsoft/vscode-azext-azureutils": "^2.0.0", "@microsoft/vscode-azext-utils": "^2.1.3", "@microsoft/vscode-azureresources-api": "^2.2.1", diff --git a/tools/vscode-azurewebpubsub/package.nls.json b/tools/vscode-azurewebpubsub/package.nls.json index 500e2d1a5..c4e6ff71e 100644 --- a/tools/vscode-azurewebpubsub/package.nls.json +++ b/tools/vscode-azurewebpubsub/package.nls.json @@ -1,5 +1,6 @@ { "azureWebPubSub.description": "An Azure Web PubSub extension for Visual Studio Code.", + "azureWebPubSub.service.testClient": "Test Client", "azureWebPubSub.service.advancedMenu": "Advanced", "azureWebPubSub.service.createInPortal": "Create Web PubSub Service in Portal", "azureWebPubSub.service.createInPortal.detail": "A fully managed service that supports WebSockets for real-time application development.", diff --git a/tools/vscode-azurewebpubsub/src/commands.ts b/tools/vscode-azurewebpubsub/src/commands.ts index 9cea26c04..7f3d58049 100644 --- a/tools/vscode-azurewebpubsub/src/commands.ts +++ b/tools/vscode-azurewebpubsub/src/commands.ts @@ -25,6 +25,9 @@ import { viewMetrics } from "./workflows/service/viewMetric/viewMetrics"; import { checkServiceHealth } from "./workflows/service/checkHealth/checkHealth"; import { attachLocalTunnel } from "./workflows/hubSetting/localTunnel/attachLocalTunnel"; import { switchAnonymousPolicy } from "./workflows/hubSetting/switchAnonymousPolicy/switchAnonymousPolicy"; +import { testClient } from "./workflows/service/testClient/testClient"; +import { type ExtensionContext} from "vscode"; +import { type ServiceItem } from "./tree/service/ServiceItem"; function registerCommandWithTelemetryWrapper(commandId: string, callback: CommandCallback): void { // eslint-disable-next-line @typescript-eslint/no-unsafe-return @@ -43,8 +46,11 @@ function registerCommandWithTelemetryWrapper(commandId: string, callback: Comman registerCommandWithTreeNodeUnwrapping(commandId, callbackWithTroubleshooting); } -export function registerCommands(): void { +export function registerCommands(extensionContext: ExtensionContext): void { // Service + registerCommandWithTelemetryWrapper('azureWebPubSub.service.testClient', async (actionContext: IActionContext, node?: ServiceItem) => { + await testClient(extensionContext.extensionUri, actionContext, node); + }); registerCommandWithTelemetryWrapper('azureWebPubSub.service.createInPortal', createServiceInPortal); registerCommandWithTelemetryWrapper('azureWebPubSub.service.createClassical', createServiceForClassical); registerCommandWithTelemetryWrapper('azureWebPubSub.service.createSocketIO', createServiceForSocketIO); diff --git a/tools/vscode-azurewebpubsub/src/extension.ts b/tools/vscode-azurewebpubsub/src/extension.ts index 629a6cc5d..f9ee12cea 100644 --- a/tools/vscode-azurewebpubsub/src/extension.ts +++ b/tools/vscode-azurewebpubsub/src/extension.ts @@ -32,7 +32,7 @@ export async function activate(context: vscode.ExtensionContext, perfStats: { lo ext.branchDataProvider = new ServicesDataProvider(); ext.rgApiV2 = await getAzureResourcesExtensionApi(context, '2.0.0'); ext.rgApiV2.resources.registerAzureResourceBranchDataProvider(AzExtResourceType.WebPubSub, ext.branchDataProvider); - registerCommands(); + registerCommands(context); })(); } diff --git a/tools/vscode-azurewebpubsub/src/panels/BasePanel.ts b/tools/vscode-azurewebpubsub/src/panels/BasePanel.ts new file mode 100644 index 000000000..646cb5483 --- /dev/null +++ b/tools/vscode-azurewebpubsub/src/panels/BasePanel.ts @@ -0,0 +1,115 @@ +import { type Disposable, type Webview, type WebviewPanel} from "vscode"; +import { window, Uri, ViewColumn } from "vscode"; +import { ext } from "../extensionVariables"; +import { getNonce, getWebviewUri } from "../utils"; + +export class BasePanel { + protected readonly _panel: WebviewPanel; + protected _disposables: Disposable[] = []; + + /** + * The BasePanel class private constructor (called only from the render method). + * + * @param panel A reference to the webview panel + * @param extensionUri The URI of the directory containing the extension + */ + public constructor(panel: WebviewPanel, extensionUri: Uri) { + this._panel = panel; + + // Set an event listener to listen for when the panel is disposed (i.e. when the user closes + // the panel or when the panel is closed programmatically) + this._panel.onDidDispose(() => this.dispose(), null, this._disposables); + + // Set the HTML content for the webview panel + this._panel.webview.html = this.getWebviewContent(this._panel.webview, extensionUri); + + // Set an event listener to listen for messages passed from the webview context + this.setWebviewMessageListener(this._panel.webview); + } + + /** + * Renders a new webview panel + * will be created and displayed. + * + * @param extensionUri The URI of the directory containing the extension. + */ + protected static renderNew(extensionUri: Uri, viewType: string, title: string) { + return window.createWebviewPanel( + viewType, + title, + ViewColumn.One, + { + enableScripts: true, + retainContextWhenHidden: true, + localResourceRoots: [Uri.joinPath(extensionUri, "out"), Uri.joinPath(extensionUri, "webview-ui/build")], + } + ); + } + + /** + * Cleans up and disposes of webview resources when the webview panel is closed. + */ + public dispose() { + // Dispose of the current webview panel + this._panel.dispose(); + + // Dispose of all disposables (i.e. commands) for the current webview panel + while (this._disposables.length) { + const disposable = this._disposables.pop(); + if (disposable) { + disposable.dispose(); + } + } + } + + /** + * Defines and returns the HTML that should be rendered within the webview panel. + * + * @remarks This is also the place where references to the React webview build files + * are created and inserted into the webview HTML. + * + * @param webview A reference to the extension webview + * @param extensionUri The URI of the directory containing the extension + * @returns A template string literal containing the HTML that should be + * rendered within the webview panel + */ + protected getWebviewContent(webview: Webview, extensionUri: Uri) { + const assetsPath = ["webview-ui", "build", "assets"]; + const stylesUri = getWebviewUri(webview, extensionUri, [...assetsPath, "index.css"]); + const scriptUri = getWebviewUri(webview, extensionUri, [...assetsPath, "index.js"]); + + const nonce = getNonce(); + + // Tip: Install the es6-string-html VS Code extension to enable code highlighting below + return /*html*/ ` + + +
+ + + + +