From d9e142d7a6bc4d38a6b4c70389393e186c6ff370 Mon Sep 17 00:00:00 2001 From: Laurent Nguyen Date: Thu, 28 Sep 2023 15:26:50 +0000 Subject: [PATCH] Initial implementation of two-way communication with Fabric host (#1622) * Listen to iframe messages. Test posting message. * Plug new container message to show New Container dialog * Rename message action to type * Fix format * Fix format * Remove console.log() statement * Rework fabric init flow. Implement open Collection Tab from fabric. * Rename method to better match its purpose * Update src/hooks/useKnockoutExplorer.ts Use connectionString from message Co-authored-by: Vsevolod Kukol * Fix format * For openTab action open first collection if not specified. Clean up FabricContract. * Reformat FabricContracts * Highlight current node selection using them token * Reformat * Automatically expand nodes in resource tree if underlying database or collection is expanded. Fix AllowedOrigins. Cleanup code. * Fix format * Fix lint issue * Don't show the home screen for Fabric (#1636) * Fix formatting * Database name to open can be overridden by value in session storage --------- Co-authored-by: Vsevolod Kukol --- package-lock.json | 1182 +++++++++-------- package.json | 4 +- src/ConfigContext.ts | 3 + src/Contracts/FabricContract.ts | 25 + .../TreeComponent2/TreeNode2Component.tsx | 51 +- src/Explorer/Tree2/ResourceTree.tsx | 45 +- src/Explorer/Tree2/containerTreeNodeUtil.ts | 9 +- src/Explorer/Tree2/useDatabaseTreeNodes.ts | 9 +- src/hooks/useKnockoutExplorer.ts | 120 +- src/hooks/useTabs.ts | 20 +- 10 files changed, 817 insertions(+), 651 deletions(-) create mode 100644 src/Contracts/FabricContract.ts diff --git a/package-lock.json b/package-lock.json index 6f990a28b..fa4ec9758 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2137,8 +2137,8 @@ }, "@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==" + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha1-T/sAVffvZ268OlqR+2ITkylOL0M=" }, "@emotion/is-prop-valid": { "version": "0.8.8", @@ -2200,26 +2200,26 @@ } }, "@floating-ui/core": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.4.1.tgz", - "integrity": "sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==", + "version": "1.5.0", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@floating-ui/core/-/core-1.5.0.tgz", + "integrity": "sha1-XAXGDVri0FEBwwIcGio1DdwCf4w=", "requires": { - "@floating-ui/utils": "^0.1.1" + "@floating-ui/utils": "^0.1.3" } }, "@floating-ui/dom": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.1.tgz", - "integrity": "sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw==", + "version": "1.5.3", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha1-VOUO/LQywGwjzTPeK1dRAgBUNvo=", "requires": { - "@floating-ui/core": "^1.4.1", - "@floating-ui/utils": "^0.1.1" + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" } }, "@floating-ui/utils": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.1.tgz", - "integrity": "sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw==" + "version": "0.1.4", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@floating-ui/utils/-/utils-0.1.4.tgz", + "integrity": "sha1-GWVNECbMQQl11GRFGA5wpQibPn0=" }, "@fluentui/dom-utilities": { "version": "2.1.0", @@ -2274,11 +2274,11 @@ } }, "@fluentui/keyboard-keys": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@fluentui/keyboard-keys/-/keyboard-keys-9.0.3.tgz", - "integrity": "sha512-40KBVJ9HzsvmPL3rwYaAvxCacNS0xnTmOt6TLxxrAVgVrZ1X7DLgd8OGFZcWROs0dhHdCk2D51bl4nK8Q1r3mQ==", + "version": "9.0.4", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/keyboard-keys/-/keyboard-keys-9.0.4.tgz", + "integrity": "sha1-SG2UrjkI9E/RHrtJbKPksxFj8y4=", "requires": { - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/merge-styles": { @@ -2298,11 +2298,11 @@ } }, "@fluentui/priority-overflow": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@fluentui/priority-overflow/-/priority-overflow-9.1.4.tgz", - "integrity": "sha512-e/LLsYaWST6r6CMlF7TZn1A7UA+SNVqy+xYGSUEVKZwI44kaR/dgliiI6e6NuI4/BHMzcG/BuMP2QX+uTJaXRQ==", + "version": "9.1.5", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/priority-overflow/-/priority-overflow-9.1.5.tgz", + "integrity": "sha1-HKscybqsEEjWe3AmSfm2YqG5lo4=", "requires": { - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react": { @@ -2351,270 +2351,271 @@ } }, "@fluentui/react-accordion": { - "version": "9.3.7", - "resolved": "https://registry.npmjs.org/@fluentui/react-accordion/-/react-accordion-9.3.7.tgz", - "integrity": "sha512-P7DglmdDKeFgOgl0mUNhJdBniW8MPFvgT0tpenOpL+xGfVqgQqmVxOJuNJii0BLVxQFPXec+r7ovKkBwBsZ6sg==", + "version": "9.3.14", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-accordion/-/react-accordion-9.3.14.tgz", + "integrity": "sha1-Dg0p1FRb+7J/v1623qYOpvFsBjU=", "requires": { - "@fluentui/react-aria": "^9.3.33", - "@fluentui/react-context-selector": "^9.1.31", + "@fluentui/react-aria": "^9.3.36", + "@fluentui/react-context-selector": "^9.1.34", "@fluentui/react-icons": "^2.0.207", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-tabster": "^9.12.5", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-tabster": "^9.12.11", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-alert": { - "version": "9.0.0-beta.71", - "resolved": "https://registry.npmjs.org/@fluentui/react-alert/-/react-alert-9.0.0-beta.71.tgz", - "integrity": "sha512-j3mnw93yfw+yO5TvfOLEL8PXXaD0h/gKHttCZVfH70HACPVXGXvEtOefZInp5FddQTnCThFoikrw2Ydj9NuGPw==", + "version": "9.0.0-beta.78", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-alert/-/react-alert-9.0.0-beta.78.tgz", + "integrity": "sha1-9OXYoSeUdbi8DgCb80K06w9hUHg=", "requires": { - "@fluentui/react-avatar": "^9.5.25", - "@fluentui/react-button": "^9.3.34", + "@fluentui/react-avatar": "^9.5.32", + "@fluentui/react-button": "^9.3.41", "@fluentui/react-icons": "^2.0.207", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-tabster": "^9.12.5", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-tabster": "^9.12.11", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-aria": { - "version": "9.3.33", - "resolved": "https://registry.npmjs.org/@fluentui/react-aria/-/react-aria-9.3.33.tgz", - "integrity": "sha512-a5Dt8eFZChj5yW3kKfcxi7LMcfP2dM7+w2U3ClXKqEfpLw6kUZgs2QaSfgGaMDGvtT542u0nSMfzZywaoliNnw==", + "version": "9.3.36", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-aria/-/react-aria-9.3.36.tgz", + "integrity": "sha1-hpjeb5lNikiC4iVV3d+JJEwzvN8=", "requires": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-utilities": "^9.13.0", - "@swc/helpers": "^0.4.14" + "@fluentui/keyboard-keys": "^9.0.4", + "@fluentui/react-utilities": "^9.13.3", + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-avatar": { - "version": "9.5.25", - "resolved": "https://registry.npmjs.org/@fluentui/react-avatar/-/react-avatar-9.5.25.tgz", - "integrity": "sha512-GQo7EA91qoPrtWdODMy2can2kZjNLwP4s8CVnxfwHHo522oTazYovEGK30Qcz6wU2CJcGGlWlOhhZUlCZ4/f5A==", + "version": "9.5.32", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-avatar/-/react-avatar-9.5.32.tgz", + "integrity": "sha1-l87sbHyBQlJa+Awl/Os8qGePD14=", "requires": { - "@fluentui/react-badge": "^9.1.31", - "@fluentui/react-context-selector": "^9.1.31", + "@fluentui/react-badge": "^9.2.1", + "@fluentui/react-context-selector": "^9.1.34", "@fluentui/react-icons": "^2.0.207", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-popover": "^9.8.0", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-tabster": "^9.12.5", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-tooltip": "^9.3.1", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-popover": "^9.8.7", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-tabster": "^9.12.11", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-tooltip": "^9.3.8", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-badge": { - "version": "9.1.31", - "resolved": "https://registry.npmjs.org/@fluentui/react-badge/-/react-badge-9.1.31.tgz", - "integrity": "sha512-4sZmSqoI+PHmjZZF44AvyZckJNQOgm0jbnqcA9Xl+LcUv1XDF3LUdcfyBvCU1ENFaomWBm3CSQIgCIGO1NLvcg==", + "version": "9.2.1", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-badge/-/react-badge-9.2.1.tgz", + "integrity": "sha1-Xa+NxOvMHr2JumJOsY1JuaUM1OY=", "requires": { "@fluentui/react-icons": "^2.0.207", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-button": { - "version": "9.3.34", - "resolved": "https://registry.npmjs.org/@fluentui/react-button/-/react-button-9.3.34.tgz", - "integrity": "sha512-DaJHneYik+enBo3eQEEr5kVI7ru5bKgCdRwcBloHfkuIzXHIGc4rtul7Y/JB5TAG5v9Zo0FtPuJ2K00TK39rPg==", + "version": "9.3.41", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-button/-/react-button-9.3.41.tgz", + "integrity": "sha1-Sl2ON8/7ulxj/U++qftoGAlFk+I=", "requires": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-aria": "^9.3.33", + "@fluentui/keyboard-keys": "^9.0.4", + "@fluentui/react-aria": "^9.3.36", "@fluentui/react-icons": "^2.0.207", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-tabster": "^9.12.5", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-tabster": "^9.12.11", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-card": { - "version": "9.0.33", - "resolved": "https://registry.npmjs.org/@fluentui/react-card/-/react-card-9.0.33.tgz", - "integrity": "sha512-YyeRoA7/uCY5RtUgGJB5sMe7He0ev6JbR3I2JXG7MVPMoDMXFUZVdFrnieweFKujD6FR9Qh6hChkg9I3k5CiWA==", + "version": "9.0.40", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-card/-/react-card-9.0.40.tgz", + "integrity": "sha1-ST38CJ1yK/r6+vL9jqrN1U4bhLw=", "requires": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-tabster": "^9.12.5", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/keyboard-keys": "^9.0.4", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-tabster": "^9.12.11", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-checkbox": { - "version": "9.1.35", - "resolved": "https://registry.npmjs.org/@fluentui/react-checkbox/-/react-checkbox-9.1.35.tgz", - "integrity": "sha512-i3jxoW1P1tUvwnxK8O9VzQOatLWj626yMO1DRb44dHI4FJpXaDjqAWvjtR8AlvWuS6HyOaxkQOWOG3JrYkzNQA==", + "version": "9.1.42", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-checkbox/-/react-checkbox-9.1.42.tgz", + "integrity": "sha1-qA8ZLMv8tpxaJnbtc0EY5LTIf1I=", "requires": { - "@fluentui/react-field": "^9.1.22", + "@fluentui/react-field": "^9.1.29", "@fluentui/react-icons": "^2.0.207", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-label": "^9.1.30", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-tabster": "^9.12.5", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-label": "^9.1.37", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-tabster": "^9.12.11", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-combobox": { - "version": "9.5.9", - "resolved": "https://registry.npmjs.org/@fluentui/react-combobox/-/react-combobox-9.5.9.tgz", - "integrity": "sha512-qQhTvrjgk6+1FWVIziRSxNHcn+6deTPkQsHhntaVD5RfIMI0XR7mdEMAbepghf3z4wL5/ng3g6MyPs+AdSio1A==", + "version": "9.5.16", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-combobox/-/react-combobox-9.5.16.tgz", + "integrity": "sha1-wWtX19GwOsj5y7nCSi5gqWw/erY=", "requires": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-context-selector": "^9.1.31", - "@fluentui/react-field": "^9.1.22", + "@fluentui/keyboard-keys": "^9.0.4", + "@fluentui/react-context-selector": "^9.1.34", + "@fluentui/react-field": "^9.1.29", "@fluentui/react-icons": "^2.0.207", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-portal": "^9.3.10", - "@fluentui/react-positioning": "^9.9.8", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-portal": "^9.3.16", + "@fluentui/react-positioning": "^9.9.13", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-components": { - "version": "9.30.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-components/-/react-components-9.30.1.tgz", - "integrity": "sha512-GUH2nL0KK8b7ZYJ1qJqNmjeaiHp1ya7sgcuI2JlGYoRgk5/+OZlkfMX6K5sbmMltDYdnZ838E8ltFV/sqntpHw==", + "version": "9.32.1", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-components/-/react-components-9.32.1.tgz", + "integrity": "sha1-8xuBsxSjD+3EYBCRfQiQS0woz6s=", "requires": { - "@fluentui/react-accordion": "^9.3.7", - "@fluentui/react-alert": "9.0.0-beta.71", - "@fluentui/react-avatar": "^9.5.25", - "@fluentui/react-badge": "^9.1.31", - "@fluentui/react-button": "^9.3.34", - "@fluentui/react-card": "^9.0.33", - "@fluentui/react-checkbox": "^9.1.35", - "@fluentui/react-combobox": "^9.5.9", - "@fluentui/react-dialog": "^9.6.0", - "@fluentui/react-divider": "^9.2.30", - "@fluentui/react-drawer": "9.0.0-beta.20", - "@fluentui/react-field": "^9.1.22", - "@fluentui/react-image": "^9.1.27", - "@fluentui/react-infobutton": "9.0.0-beta.55", - "@fluentui/react-input": "^9.4.32", - "@fluentui/react-label": "^9.1.30", - "@fluentui/react-link": "^9.1.13", - "@fluentui/react-menu": "^9.12.11", - "@fluentui/react-overflow": "^9.0.30", - "@fluentui/react-persona": "^9.2.35", - "@fluentui/react-popover": "^9.8.0", - "@fluentui/react-portal": "^9.3.10", - "@fluentui/react-positioning": "^9.9.8", - "@fluentui/react-progress": "^9.1.32", - "@fluentui/react-provider": "^9.8.0", - "@fluentui/react-radio": "^9.1.35", - "@fluentui/react-select": "^9.1.32", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-skeleton": "^9.0.20", - "@fluentui/react-slider": "^9.1.35", - "@fluentui/react-spinbutton": "^9.2.32", - "@fluentui/react-spinner": "^9.3.10", - "@fluentui/react-switch": "^9.1.35", - "@fluentui/react-table": "^9.8.1", - "@fluentui/react-tabs": "^9.3.36", - "@fluentui/react-tabster": "^9.12.5", - "@fluentui/react-text": "^9.3.27", - "@fluentui/react-textarea": "^9.3.32", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-toast": "^9.2.0", - "@fluentui/react-toolbar": "^9.1.35", - "@fluentui/react-tooltip": "^9.3.1", - "@fluentui/react-tree": "^9.0.5", - "@fluentui/react-utilities": "^9.13.0", - "@fluentui/react-virtualizer": "9.0.0-alpha.37", + "@fluentui/react-accordion": "^9.3.14", + "@fluentui/react-alert": "9.0.0-beta.78", + "@fluentui/react-avatar": "^9.5.32", + "@fluentui/react-badge": "^9.2.1", + "@fluentui/react-button": "^9.3.41", + "@fluentui/react-card": "^9.0.40", + "@fluentui/react-checkbox": "^9.1.42", + "@fluentui/react-combobox": "^9.5.16", + "@fluentui/react-dialog": "^9.7.1", + "@fluentui/react-divider": "^9.2.37", + "@fluentui/react-drawer": "9.0.0-beta.27", + "@fluentui/react-field": "^9.1.29", + "@fluentui/react-image": "^9.1.34", + "@fluentui/react-infobutton": "9.0.0-beta.62", + "@fluentui/react-input": "^9.4.39", + "@fluentui/react-label": "^9.1.37", + "@fluentui/react-link": "^9.1.20", + "@fluentui/react-menu": "^9.12.18", + "@fluentui/react-overflow": "^9.0.33", + "@fluentui/react-persona": "^9.2.42", + "@fluentui/react-popover": "^9.8.7", + "@fluentui/react-portal": "^9.3.16", + "@fluentui/react-positioning": "^9.9.13", + "@fluentui/react-progress": "^9.1.39", + "@fluentui/react-provider": "^9.9.1", + "@fluentui/react-radio": "^9.1.42", + "@fluentui/react-select": "^9.1.39", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-skeleton": "^9.0.27", + "@fluentui/react-slider": "^9.1.42", + "@fluentui/react-spinbutton": "^9.2.39", + "@fluentui/react-spinner": "^9.3.17", + "@fluentui/react-switch": "^9.1.42", + "@fluentui/react-table": "^9.8.8", + "@fluentui/react-tabs": "^9.3.43", + "@fluentui/react-tabster": "^9.12.11", + "@fluentui/react-text": "^9.3.34", + "@fluentui/react-textarea": "^9.3.39", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-toast": "^9.3.3", + "@fluentui/react-toolbar": "^9.1.42", + "@fluentui/react-tooltip": "^9.3.8", + "@fluentui/react-tree": "^9.2.1", + "@fluentui/react-utilities": "^9.13.3", + "@fluentui/react-virtualizer": "9.0.0-alpha.44", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-context-selector": { - "version": "9.1.31", - "resolved": "https://registry.npmjs.org/@fluentui/react-context-selector/-/react-context-selector-9.1.31.tgz", - "integrity": "sha512-JM7uaY2gJvz0WHWE/HxcNgsoAqniGmdI08DYwUPrhUjtZGWpnJMH3cBVG5EeZcub+gEaWk8wnerBLyYAda9fOA==", + "version": "9.1.34", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-context-selector/-/react-context-selector-9.1.34.tgz", + "integrity": "sha1-haJxG+F89WzC7jJ2TExdULPgLn4=", "requires": { - "@fluentui/react-utilities": "^9.13.0", - "@swc/helpers": "^0.4.14" + "@fluentui/react-utilities": "^9.13.3", + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-dialog": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/@fluentui/react-dialog/-/react-dialog-9.6.0.tgz", - "integrity": "sha512-6wPj/xMJmQuA47tl8El7hIEMbXicsYXIEgqXslhRew1Ymy2SD8snsPVqGxF7dPfi5OKmSEmo2WD5lxQTasZ5CQ==", + "version": "9.7.1", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-dialog/-/react-dialog-9.7.1.tgz", + "integrity": "sha1-bRmeuktbYRm5RO9dUdM4wBNilgQ=", "requires": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-aria": "^9.3.33", - "@fluentui/react-context-selector": "^9.1.31", + "@fluentui/keyboard-keys": "^9.0.4", + "@fluentui/react-aria": "^9.3.36", + "@fluentui/react-context-selector": "^9.1.34", "@fluentui/react-icons": "^2.0.207", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-portal": "^9.3.10", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-tabster": "^9.12.5", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-portal": "^9.3.16", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-tabster": "^9.12.11", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-divider": { - "version": "9.2.30", - "resolved": "https://registry.npmjs.org/@fluentui/react-divider/-/react-divider-9.2.30.tgz", - "integrity": "sha512-LJ94VB2eXmyrvw24uIPZws6r2d6XZKQJgHpR9w83xjzpYAvDJDJ345tlY4AvK7JMPCKGK3+1uAuvpRmTYny4vg==", + "version": "9.2.37", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-divider/-/react-divider-9.2.37.tgz", + "integrity": "sha1-zauaBDQxi7/sRepHeljmUWadki4=", "requires": { - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-drawer": { - "version": "9.0.0-beta.20", - "resolved": "https://registry.npmjs.org/@fluentui/react-drawer/-/react-drawer-9.0.0-beta.20.tgz", - "integrity": "sha512-pibLyoS1lXqR+D53yQvyg2U++liGugxvo8WaPBBBiL8PofZvgYFsT3UATCotG8lH8e+++dGRHoEF+99XCs03Gg==", + "version": "9.0.0-beta.27", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-drawer/-/react-drawer-9.0.0-beta.27.tgz", + "integrity": "sha1-9pqE5FePqbo3Sbrh3oLTYPUCTug=", "requires": { - "@fluentui/react-dialog": "^9.6.0", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-dialog": "^9.7.1", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-motion-preview": "^0.2.6", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-field": { - "version": "9.1.22", - "resolved": "https://registry.npmjs.org/@fluentui/react-field/-/react-field-9.1.22.tgz", - "integrity": "sha512-q/UjQ0EjfqM7brucjhlAd17UG8JfAuULvTOVV/zI33KDupfFEYYoXBwDKYWb7gn9je5yEAqb0j4hQq0UPJ9wiw==", + "version": "9.1.29", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-field/-/react-field-9.1.29.tgz", + "integrity": "sha1-TFM1uriczGm57HJP+lsU0oEHpuQ=", "requires": { - "@fluentui/react-context-selector": "^9.1.31", + "@fluentui/react-context-selector": "^9.1.34", "@fluentui/react-icons": "^2.0.207", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-label": "^9.1.30", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-label": "^9.1.37", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-focus": { @@ -2673,9 +2674,9 @@ } }, "@fluentui/react-icons": { - "version": "2.0.212", - "resolved": "https://registry.npmjs.org/@fluentui/react-icons/-/react-icons-2.0.212.tgz", - "integrity": "sha512-VajKgJuTvQXvcjaExOGAT81zxeOWydBnpciAIAVPEeYskbDg8sTXHcW2yEecbrj6+iEnXZ27hzEWGXBFC4UddA==", + "version": "2.0.218", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-icons/-/react-icons-2.0.218.tgz", + "integrity": "sha1-T1YtNsNr8Lzq04NHO6DJztPi2dg=", "requires": { "@griffel/react": "^1.0.0", "tslib": "^2.1.0" @@ -2683,445 +2684,459 @@ "dependencies": { "tslib": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha1-cDrClCXns3zW/UVukkBNRtHz5K4=" } } }, "@fluentui/react-image": { - "version": "9.1.27", - "resolved": "https://registry.npmjs.org/@fluentui/react-image/-/react-image-9.1.27.tgz", - "integrity": "sha512-G/bjTHZmU+J/LIYRTR7ddiRCK6nf3H7ckL3hRZaHoOQ8MGxL8WQRVaoVGPKpa2+qG3W2qmEepF7shCnvNjanFA==", + "version": "9.1.34", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-image/-/react-image-9.1.34.tgz", + "integrity": "sha1-Y3dIVLYO14sIe7seq5x6PvWUpiU=", "requires": { - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-infobutton": { - "version": "9.0.0-beta.55", - "resolved": "https://registry.npmjs.org/@fluentui/react-infobutton/-/react-infobutton-9.0.0-beta.55.tgz", - "integrity": "sha512-A3EKOunzN/hvp9761TpQH+BHNOJryIVdcbqZAp3BVp04AdK7BdHsI8Y6wXO4r05Btu1+E0nCTOCB8M+Z2faoqg==", + "version": "9.0.0-beta.62", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-infobutton/-/react-infobutton-9.0.0-beta.62.tgz", + "integrity": "sha1-bTtyfF7+VgFCTe+mIWEArjyhCXk=", "requires": { "@fluentui/react-icons": "^2.0.207", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-label": "^9.1.30", - "@fluentui/react-popover": "^9.8.0", - "@fluentui/react-tabster": "^9.12.5", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-label": "^9.1.37", + "@fluentui/react-popover": "^9.8.7", + "@fluentui/react-portal": "^9.3.16", + "@fluentui/react-tabster": "^9.12.11", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-input": { - "version": "9.4.32", - "resolved": "https://registry.npmjs.org/@fluentui/react-input/-/react-input-9.4.32.tgz", - "integrity": "sha512-VJ4Z4I8/I2xi72nzAhIsySoHfAQKqFDapBWRJVVzVx/xQUYnEadxbTGFQ3dbJWKI39Gh3OySlWBJzQ7n6NUa9w==", + "version": "9.4.39", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-input/-/react-input-9.4.39.tgz", + "integrity": "sha1-TQwEPs5rJzcy0RGyRlRlqhp1/DQ=", "requires": { - "@fluentui/react-field": "^9.1.22", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-field": "^9.1.29", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-jsx-runtime": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-jsx-runtime/-/react-jsx-runtime-9.0.3.tgz", - "integrity": "sha512-Oi/CseEywpDdok9ujo9ramhl0X0Q6AqFdmKs4+JsWBWHyX5ut9LPOxE6DA868d7xz4wAwRECqlpRiKRRSKsMYQ==", + "version": "9.0.10", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-jsx-runtime/-/react-jsx-runtime-9.0.10.tgz", + "integrity": "sha1-FNdXrqDPkthyHU4UCkzNRkacAPs=", "requires": { - "@fluentui/react-utilities": "^9.13.0", - "@swc/helpers": "^0.4.14" + "@fluentui/react-utilities": "^9.13.3", + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-label": { - "version": "9.1.30", - "resolved": "https://registry.npmjs.org/@fluentui/react-label/-/react-label-9.1.30.tgz", - "integrity": "sha512-YvUesW0zzf00HsoupG2JoXBHIhCnNsN5qN8filhn8sZsN3itm+dfz9Yx+hLb/Xz8SI2zmoIw0qJtSxaMhlSi1w==", + "version": "9.1.37", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-label/-/react-label-9.1.37.tgz", + "integrity": "sha1-6wt0imK39bX7T0FsCpcZ4xg3doM=", "requires": { - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-link": { - "version": "9.1.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-link/-/react-link-9.1.13.tgz", - "integrity": "sha512-TKGZuI8DrxXzxA2HWQLHAwQimlKA0/uJEu7ked77eBgopTKJKQyg0+7BlMchLDif18TG+DAT4bR1PCGkR8JThA==", + "version": "9.1.20", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-link/-/react-link-9.1.20.tgz", + "integrity": "sha1-j7/1yv0tYf1oW9DVGo8YzwvntrE=", "requires": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-tabster": "^9.12.5", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/keyboard-keys": "^9.0.4", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-tabster": "^9.12.11", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-menu": { - "version": "9.12.11", - "resolved": "https://registry.npmjs.org/@fluentui/react-menu/-/react-menu-9.12.11.tgz", - "integrity": "sha512-NUzAmmhjsznkbRiJX4ieOqtcuPTxEh7YAgFehBzCZ3y5YKgg7uuOAaeBbcL2u2Ls595MmQzG4ZDiuqLyHwlJUA==", + "version": "9.12.18", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-menu/-/react-menu-9.12.18.tgz", + "integrity": "sha1-HiCmfDkmjTiDasYb4hbmfTwS8lk=", "requires": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-aria": "^9.3.33", - "@fluentui/react-context-selector": "^9.1.31", + "@fluentui/keyboard-keys": "^9.0.4", + "@fluentui/react-aria": "^9.3.36", + "@fluentui/react-context-selector": "^9.1.34", "@fluentui/react-icons": "^2.0.207", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-portal": "^9.3.10", - "@fluentui/react-positioning": "^9.9.8", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-tabster": "^9.12.5", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-portal": "^9.3.16", + "@fluentui/react-positioning": "^9.9.13", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-tabster": "^9.12.11", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" + } + }, + "@fluentui/react-motion-preview": { + "version": "0.2.6", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-motion-preview/-/react-motion-preview-0.2.6.tgz", + "integrity": "sha1-qRaqGbNPQYM0LppIlmbqm0W+vcQ=", + "requires": { + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-overflow": { - "version": "9.0.30", - "resolved": "https://registry.npmjs.org/@fluentui/react-overflow/-/react-overflow-9.0.30.tgz", - "integrity": "sha512-sl9+0d7OwjP28b1qKnOgz9P4AeeI0ygQXBAfKoXOHwWOB85E/NFI+J9fRaI49ukcXPZSUxitrpEZpAtBhhNkPQ==", + "version": "9.0.33", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-overflow/-/react-overflow-9.0.33.tgz", + "integrity": "sha1-nCguHBUCCK0R4PCMbGTlYpQBKjI=", "requires": { - "@fluentui/priority-overflow": "^9.1.4", - "@fluentui/react-context-selector": "^9.1.31", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/priority-overflow": "^9.1.5", + "@fluentui/react-context-selector": "^9.1.34", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-persona": { - "version": "9.2.35", - "resolved": "https://registry.npmjs.org/@fluentui/react-persona/-/react-persona-9.2.35.tgz", - "integrity": "sha512-BkQlqfMRdcOtDtaYi4Q1sAHWZRnehkg95AgTcYoB3pcljDWMAcEQUJxdSdAPGSIjsBEp9Z2fEFWzjl+2yitaaA==", + "version": "9.2.42", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-persona/-/react-persona-9.2.42.tgz", + "integrity": "sha1-FJobqdZM7Uf+5OoeimzCul5MdI4=", "requires": { - "@fluentui/react-avatar": "^9.5.25", - "@fluentui/react-badge": "^9.1.31", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-avatar": "^9.5.32", + "@fluentui/react-badge": "^9.2.1", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-popover": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/@fluentui/react-popover/-/react-popover-9.8.0.tgz", - "integrity": "sha512-KkcZ2d5SYwHQksDIFCmAcXhi/LulyWav59UGrVo2fXQ9Hh2Pk7Rgte8zVlw4+CIANVpmHoTpeAFVB60HfUyXrQ==", + "version": "9.8.7", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-popover/-/react-popover-9.8.7.tgz", + "integrity": "sha1-ew8JxDDgfqSZLjnqH57EoZYC2wE=", "requires": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-aria": "^9.3.33", - "@fluentui/react-context-selector": "^9.1.31", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-portal": "^9.3.10", - "@fluentui/react-positioning": "^9.9.8", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-tabster": "^9.12.5", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/keyboard-keys": "^9.0.4", + "@fluentui/react-aria": "^9.3.36", + "@fluentui/react-context-selector": "^9.1.34", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-portal": "^9.3.16", + "@fluentui/react-positioning": "^9.9.13", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-tabster": "^9.12.11", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-portal": { - "version": "9.3.10", - "resolved": "https://registry.npmjs.org/@fluentui/react-portal/-/react-portal-9.3.10.tgz", - "integrity": "sha512-fs7TzHyEWi4tadqTOlX44DvuM9vzcqlO8JKQ5NHHVClYZlaA2XdgUGEWGJDmpMuXGtLmegq5kqx9RQJrkd5irw==", + "version": "9.3.16", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-portal/-/react-portal-9.3.16.tgz", + "integrity": "sha1-bmauhasHJ07DT8pYU5c+a/o3pOg=", "requires": { - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-tabster": "^9.12.5", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-tabster": "^9.12.11", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14", + "@swc/helpers": "^0.5.1", "use-disposable": "^1.0.1" } }, "@fluentui/react-positioning": { - "version": "9.9.8", - "resolved": "https://registry.npmjs.org/@fluentui/react-positioning/-/react-positioning-9.9.8.tgz", - "integrity": "sha512-F8nCEMPcn9YT0gD6m8eOz0QGPxmsEdcnk80CDE3NP75F/oi6s7lxvTMP/Gh7n6kLEIXKwNTuetK1i/ycRqMKIg==", + "version": "9.9.13", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-positioning/-/react-positioning-9.9.13.tgz", + "integrity": "sha1-d5tFzVixoAjiF20yIaOqYGYbF8I=", "requires": { "@floating-ui/dom": "^1.2.0", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-progress": { - "version": "9.1.32", - "resolved": "https://registry.npmjs.org/@fluentui/react-progress/-/react-progress-9.1.32.tgz", - "integrity": "sha512-WyAk9u1X/caJRwvLej0dYszHbZUWc1t67dzXNuPsro327ennh2TbprB5GGrUY4TWlOeXCKIavBpcvWeN3oCxJA==", + "version": "9.1.39", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-progress/-/react-progress-9.1.39.tgz", + "integrity": "sha1-eSUBpJd9DwV5vuqlV19qENk+Sfc=", "requires": { - "@fluentui/react-field": "^9.1.22", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-field": "^9.1.29", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-provider": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/@fluentui/react-provider/-/react-provider-9.8.0.tgz", - "integrity": "sha512-ml3Ie7SWElhejLlQQfoOFi9JpTm8xWKvG0NR5Z44ueofASk6OluHxmd3djo2fYcnobcIhD+hnQm+9rjCJl7g/w==", + "version": "9.9.1", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-provider/-/react-provider-9.9.1.tgz", + "integrity": "sha1-HSunnvcNrD0J1ClGRK8ajUOFiF8=", "requires": { "@fluentui/react-icons": "^2.0.207", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-tabster": "^9.12.5", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-tabster": "^9.12.11", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/core": "^1.14.1", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-radio": { - "version": "9.1.35", - "resolved": "https://registry.npmjs.org/@fluentui/react-radio/-/react-radio-9.1.35.tgz", - "integrity": "sha512-d8L9ds2bAIGDs6LRa3sH5I4DRyJMG9IkTB3YtQVnp8eUVwwwPHwXqM1FRqdVddj6WboHmILdzlbfAbGPUjcmDQ==", + "version": "9.1.42", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-radio/-/react-radio-9.1.42.tgz", + "integrity": "sha1-9yhoGxVd9dQQqPjhW/1cy9taNrk=", "requires": { - "@fluentui/react-field": "^9.1.22", + "@fluentui/react-field": "^9.1.29", "@fluentui/react-icons": "^2.0.207", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-label": "^9.1.30", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-tabster": "^9.12.5", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-label": "^9.1.37", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-tabster": "^9.12.11", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-select": { - "version": "9.1.32", - "resolved": "https://registry.npmjs.org/@fluentui/react-select/-/react-select-9.1.32.tgz", - "integrity": "sha512-UVHr3fk3bTXeOcCP0o7mAnrSP1zVyoPaN0MqDcWKRBB1e45vA+m6MDPxbDw/PlweNWTP/9+Xf3bkSjJqVX0iig==", + "version": "9.1.39", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-select/-/react-select-9.1.39.tgz", + "integrity": "sha1-HOFcQknIisLwicD1aSf1oy+aHzM=", "requires": { - "@fluentui/react-field": "^9.1.22", + "@fluentui/react-field": "^9.1.29", "@fluentui/react-icons": "^2.0.207", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-shared-contexts": { - "version": "9.7.2", - "resolved": "https://registry.npmjs.org/@fluentui/react-shared-contexts/-/react-shared-contexts-9.7.2.tgz", - "integrity": "sha512-EkKbDjZmZlw7TkfcyB9hxxBhVK1BM5bzNsL7PYuNC/2j4VU134Lj/RpJ1/MWHQUON6SPjPPtTJpGPbMHGfuVcQ==", + "version": "9.8.1", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-shared-contexts/-/react-shared-contexts-9.8.1.tgz", + "integrity": "sha1-BhfLHyC8s3tsUgfUC9Rc6M5ck8w=", "requires": { - "@fluentui/react-theme": "^9.1.11", - "@swc/helpers": "^0.4.14" + "@fluentui/react-theme": "^9.1.12", + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-skeleton": { - "version": "9.0.20", - "resolved": "https://registry.npmjs.org/@fluentui/react-skeleton/-/react-skeleton-9.0.20.tgz", - "integrity": "sha512-i/waplZXj/24AT/QQQmVaLDFj1bIwCC3PxQ2QsSwBrlEM0auk88ibmO9KclcLbdfSdPBCDsCimbY+7ZeWUP9VQ==", + "version": "9.0.27", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-skeleton/-/react-skeleton-9.0.27.tgz", + "integrity": "sha1-amC72s1v43ZmqmzNW74iRra6b4w=", "requires": { - "@fluentui/react-field": "^9.1.22", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-field": "^9.1.29", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-slider": { - "version": "9.1.35", - "resolved": "https://registry.npmjs.org/@fluentui/react-slider/-/react-slider-9.1.35.tgz", - "integrity": "sha512-FyloMBBcPWQCzR3wSNcFE6Ai6z8XhiPHn2GgqJMuzs1uxTlOXV0EgZa139o/KvMglI5tbdTny4252BeqNLRr9Q==", + "version": "9.1.42", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-slider/-/react-slider-9.1.42.tgz", + "integrity": "sha1-C+posLb2g+lwoIrGsSvbx2T9EIs=", "requires": { - "@fluentui/react-field": "^9.1.22", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-tabster": "^9.12.5", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-field": "^9.1.29", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-tabster": "^9.12.11", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-spinbutton": { - "version": "9.2.32", - "resolved": "https://registry.npmjs.org/@fluentui/react-spinbutton/-/react-spinbutton-9.2.32.tgz", - "integrity": "sha512-EaEh/m+5XpqmSmjZKKCfXGP9B4NsvhbVBs2mBDyUAG+VwUV3Yrq1fF8lMhvN8pJy8QO7DqQcwOWfMLV7fcWySA==", + "version": "9.2.39", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-spinbutton/-/react-spinbutton-9.2.39.tgz", + "integrity": "sha1-6YW5EU9kj7JftIgCJFsYUiMhRpc=", "requires": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-field": "^9.1.22", + "@fluentui/keyboard-keys": "^9.0.4", + "@fluentui/react-field": "^9.1.29", "@fluentui/react-icons": "^2.0.207", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-spinner": { - "version": "9.3.10", - "resolved": "https://registry.npmjs.org/@fluentui/react-spinner/-/react-spinner-9.3.10.tgz", - "integrity": "sha512-aHn+SfB6wPbzoFrLT434zIOnN3Yr43nlTSjVQS8xddRZr0FeW/unutmEe3FvPmVmKyOOUzTVmxAFYyx2irGsZg==", + "version": "9.3.17", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-spinner/-/react-spinner-9.3.17.tgz", + "integrity": "sha1-klhM1Ouqw8KxhQb5AxPU7yG04v4=", "requires": { - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-label": "^9.1.30", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-label": "^9.1.37", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-switch": { - "version": "9.1.35", - "resolved": "https://registry.npmjs.org/@fluentui/react-switch/-/react-switch-9.1.35.tgz", - "integrity": "sha512-gdG4my3KwH3l9kkJYEqt+In5L1Ukd+2vQrlqJmkGgMt21olNiSRHW+Righ6NMI00+SugISSKKRERBY2LtJEh6Q==", + "version": "9.1.42", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-switch/-/react-switch-9.1.42.tgz", + "integrity": "sha1-tIhOoScfrHNZ4VXtXkg3WbW077s=", "requires": { - "@fluentui/react-field": "^9.1.22", + "@fluentui/react-field": "^9.1.29", "@fluentui/react-icons": "^2.0.207", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-label": "^9.1.30", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-tabster": "^9.12.5", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-label": "^9.1.37", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-tabster": "^9.12.11", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-table": { - "version": "9.8.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-table/-/react-table-9.8.1.tgz", - "integrity": "sha512-34ZwkqKzHUH8GwIbCfcgRXFtcFTaH0nnSVekAkdamN9lHRc6Z4O2h4yz9NvU5R6SuhrVSSP2wGfbhHJ29OLz9w==", + "version": "9.8.8", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-table/-/react-table-9.8.8.tgz", + "integrity": "sha1-OqFuMEEn77h4tYihDcnsd4OOSWg=", "requires": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-aria": "^9.3.33", - "@fluentui/react-avatar": "^9.5.25", - "@fluentui/react-checkbox": "^9.1.35", - "@fluentui/react-context-selector": "^9.1.31", + "@fluentui/keyboard-keys": "^9.0.4", + "@fluentui/react-aria": "^9.3.36", + "@fluentui/react-avatar": "^9.5.32", + "@fluentui/react-checkbox": "^9.1.42", + "@fluentui/react-context-selector": "^9.1.34", "@fluentui/react-icons": "^2.0.207", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-radio": "^9.1.35", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-tabster": "^9.12.5", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-radio": "^9.1.42", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-tabster": "^9.12.11", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-tabs": { - "version": "9.3.36", - "resolved": "https://registry.npmjs.org/@fluentui/react-tabs/-/react-tabs-9.3.36.tgz", - "integrity": "sha512-EF+mo/9qgWpQ/ikBeSt6JdQkj+k+tHyV7LPWY0Xe3zOSUf5+UiDEHmssqvT3OLjtPz139Pq+R2xfDQSJAZnyhQ==", + "version": "9.3.43", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-tabs/-/react-tabs-9.3.43.tgz", + "integrity": "sha1-aSjU4tF+OkQFWUrjf6bFqTehqRE=", "requires": { - "@fluentui/react-context-selector": "^9.1.31", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-tabster": "^9.12.5", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-context-selector": "^9.1.34", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-tabster": "^9.12.11", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-tabster": { - "version": "9.12.5", - "resolved": "https://registry.npmjs.org/@fluentui/react-tabster/-/react-tabster-9.12.5.tgz", - "integrity": "sha512-BooACGeJbHOOSaXyb6eA5ioW5dG8vJP5PiQJJT2BuMaWUArZiiQBUNtoblKsZlxb55SNlXQuqlQ/fBrk4IRu5A==", + "version": "9.12.11", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-tabster/-/react-tabster-9.12.11.tgz", + "integrity": "sha1-FPnaN1mQLlqSNlqk8R/Xmbt3DSw=", "requires": { - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14", + "@swc/helpers": "^0.5.1", "keyborg": "^2.0.0", "tabster": "^4.7.0" } }, "@fluentui/react-text": { - "version": "9.3.27", - "resolved": "https://registry.npmjs.org/@fluentui/react-text/-/react-text-9.3.27.tgz", - "integrity": "sha512-TUyxOg/8wnhC+32HCvHHLL+Faw9WMzbwrGGxKETpQ6f4T2ocFiCGVqFuuF5wCIFC+e3HlNQdrkavtKYUrSSaMg==", + "version": "9.3.34", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-text/-/react-text-9.3.34.tgz", + "integrity": "sha1-Umq3oZuKjp4VfNFiAQqC3lRcWoU=", "requires": { - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-textarea": { - "version": "9.3.32", - "resolved": "https://registry.npmjs.org/@fluentui/react-textarea/-/react-textarea-9.3.32.tgz", - "integrity": "sha512-KmeFE7P/EPtKXodTDGQ++UCrFmTnbaUHIfavj/Wep9I699zte1jPXG7bPIxee3L1mIQE2MsZcyMuCMrHOo8zIA==", + "version": "9.3.39", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-textarea/-/react-textarea-9.3.39.tgz", + "integrity": "sha1-z47wIwhwE0XMI6q+c6mnAz4/GKQ=", "requires": { - "@fluentui/react-field": "^9.1.22", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-field": "^9.1.29", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-theme": { - "version": "9.1.11", - "resolved": "https://registry.npmjs.org/@fluentui/react-theme/-/react-theme-9.1.11.tgz", - "integrity": "sha512-4rjYtMONBB1KZ4AdhuT7QVc4OZ2tMlhuk8BtqNrlX9C4C7NzsEWvKfuIX05e9yCBKnOeVuscsIUfGr7zJvhwdA==", + "version": "9.1.12", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-theme/-/react-theme-9.1.12.tgz", + "integrity": "sha1-842gegTrgK33n/hWee/6ubzYjcQ=", "requires": { - "@fluentui/tokens": "1.0.0-alpha.8", - "@swc/helpers": "^0.4.14" + "@fluentui/tokens": "1.0.0-alpha.9", + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-toast": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@fluentui/react-toast/-/react-toast-9.2.0.tgz", - "integrity": "sha512-rfpOQaUTdHBoXnXB/umbWsDhUCBCNaRbEoy0Jpha0h6Z2o4YG+3tOrbt+vu7eZQ4cBSTJvXHhwLB5gXE2nv63g==", + "version": "9.3.3", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-toast/-/react-toast-9.3.3.tgz", + "integrity": "sha1-qvhAanYmxNQWY9KlISld4nmEA/Y=", "requires": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-aria": "^9.3.33", + "@fluentui/keyboard-keys": "^9.0.4", + "@fluentui/react-aria": "^9.3.36", "@fluentui/react-icons": "^2.0.207", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-portal": "^9.3.10", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-tabster": "^9.12.5", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-portal": "^9.3.16", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-tabster": "^9.12.11", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14", + "@swc/helpers": "^0.5.1", "react-transition-group": "^4.4.1" }, "dependencies": { "csstype": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha1-HUv51XLxHBQDHwQ24cELwfVx9Qs=" }, "dom-helpers": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha1-2UAFNrK/giWtmP4FLgKUUaxA6QI=", "requires": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" @@ -3129,8 +3144,8 @@ }, "react-transition-group": { "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha1-5T1OPzNE2oUhSJ+++PJYHUK+zdE=", "requires": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", @@ -3141,80 +3156,80 @@ } }, "@fluentui/react-toolbar": { - "version": "9.1.35", - "resolved": "https://registry.npmjs.org/@fluentui/react-toolbar/-/react-toolbar-9.1.35.tgz", - "integrity": "sha512-IXtfNizL2KDy0QliJtVACaJErcqynnjszpFnLX6JIHTFLhD0Qa9lChRlbOiTSO44IFZgwlklpe7B5MDzk58ZkQ==", + "version": "9.1.42", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-toolbar/-/react-toolbar-9.1.42.tgz", + "integrity": "sha1-r2u1p8quw8aqXuTaozBfkvznf9Y=", "requires": { - "@fluentui/react-button": "^9.3.34", - "@fluentui/react-context-selector": "^9.1.31", - "@fluentui/react-divider": "^9.2.30", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-radio": "^9.1.35", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-tabster": "^9.12.5", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-button": "^9.3.41", + "@fluentui/react-context-selector": "^9.1.34", + "@fluentui/react-divider": "^9.2.37", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-radio": "^9.1.42", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-tabster": "^9.12.11", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-tooltip": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-tooltip/-/react-tooltip-9.3.1.tgz", - "integrity": "sha512-298p0affsEjkP8rB1gCzHxXemAbn3UeHEYYb9tCfRZIW+ePnNg7pv/M7ADKM6aoTi7PT1Oaq0xJq24yYS6wZsw==", + "version": "9.3.8", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-tooltip/-/react-tooltip-9.3.8.tgz", + "integrity": "sha1-6Ek0GoCly+8e0POACTEMTU/H1G0=", "requires": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-portal": "^9.3.10", - "@fluentui/react-positioning": "^9.9.8", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/keyboard-keys": "^9.0.4", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-portal": "^9.3.16", + "@fluentui/react-positioning": "^9.9.13", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-tree": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@fluentui/react-tree/-/react-tree-9.0.5.tgz", - "integrity": "sha512-MKvecojCrKnV5x3EafbXrveKll8VcHQBpeJGDsbmOf0qjeh009f+Plwx+HkeAk2TBMDvfrcQ5Net1LpWS4Y92w==", + "version": "9.2.1", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-tree/-/react-tree-9.2.1.tgz", + "integrity": "sha1-PDwuwLttmxGgw3Hrt5vPCCj38L4=", "requires": { - "@fluentui/keyboard-keys": "^9.0.3", - "@fluentui/react-aria": "^9.3.33", - "@fluentui/react-avatar": "^9.5.25", - "@fluentui/react-button": "^9.3.34", - "@fluentui/react-checkbox": "^9.1.35", - "@fluentui/react-context-selector": "^9.1.31", + "@fluentui/keyboard-keys": "^9.0.4", + "@fluentui/react-aria": "^9.3.36", + "@fluentui/react-avatar": "^9.5.32", + "@fluentui/react-button": "^9.3.41", + "@fluentui/react-checkbox": "^9.1.42", + "@fluentui/react-context-selector": "^9.1.34", "@fluentui/react-icons": "^2.0.207", - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-portal": "^9.3.10", - "@fluentui/react-radio": "^9.1.35", - "@fluentui/react-shared-contexts": "^9.7.2", - "@fluentui/react-tabster": "^9.12.5", - "@fluentui/react-theme": "^9.1.11", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-portal": "^9.3.16", + "@fluentui/react-radio": "^9.1.42", + "@fluentui/react-shared-contexts": "^9.8.1", + "@fluentui/react-tabster": "^9.12.11", + "@fluentui/react-theme": "^9.1.12", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-utilities": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@fluentui/react-utilities/-/react-utilities-9.13.0.tgz", - "integrity": "sha512-ySlFrDTR2SbOehXP89doYmafoySrWSwBhWEUWi8iDqkzl/NaPWONTfgED0KgJTsBz4132yJwc9m03KwubPRoIA==", + "version": "9.13.3", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-utilities/-/react-utilities-9.13.3.tgz", + "integrity": "sha1-PHxQN6DlDkx/a92F5dj4U/sn0Ic=", "requires": { - "@fluentui/keyboard-keys": "^9.0.3", - "@swc/helpers": "^0.4.14" + "@fluentui/keyboard-keys": "^9.0.4", + "@swc/helpers": "^0.5.1" } }, "@fluentui/react-virtualizer": { - "version": "9.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/@fluentui/react-virtualizer/-/react-virtualizer-9.0.0-alpha.37.tgz", - "integrity": "sha512-ho8+mqeWjie0gcFykY5N6FO8ZO4r7PBqq+gkzawBj5+RDZ2+TnSi+lRgYZEGwog34V81m/G/LIiq1tX1QOFMkg==", + "version": "9.0.0-alpha.44", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/react-virtualizer/-/react-virtualizer-9.0.0-alpha.44.tgz", + "integrity": "sha1-xnjxTiEm+xW2vONiVqnZuX8MTK0=", "requires": { - "@fluentui/react-jsx-runtime": "^9.0.3", - "@fluentui/react-utilities": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.0.10", + "@fluentui/react-utilities": "^9.13.3", "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/set-version": { @@ -3271,11 +3286,11 @@ } }, "@fluentui/tokens": { - "version": "1.0.0-alpha.8", - "resolved": "https://registry.npmjs.org/@fluentui/tokens/-/tokens-1.0.0-alpha.8.tgz", - "integrity": "sha512-4n3/DRdD0MzojsOLJterivLdnzsrIuVy+z5LMPuG2gxzbx06E19XJgZU9tqlqCFESJ/xUFREL6dQKEluw1c0Kw==", + "version": "1.0.0-alpha.9", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@fluentui/tokens/-/tokens-1.0.0-alpha.9.tgz", + "integrity": "sha1-z5zyZ1635XtphjMdjv9ytncSijA=", "requires": { - "@swc/helpers": "^0.4.14" + "@swc/helpers": "^0.5.1" } }, "@fluentui/utilities": { @@ -3297,12 +3312,12 @@ } }, "@griffel/core": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@griffel/core/-/core-1.14.1.tgz", - "integrity": "sha512-KQ6yueap1zff9TJrn7MdfSAHDMDVP6Ec97gnpCi4NOeKiyCyT13MwPCmkkK0o/poaV1f9MdHhUTQZCpK0QtxzQ==", + "version": "1.14.2", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@griffel/core/-/core-1.14.2.tgz", + "integrity": "sha1-UKSjkt/FKaRvM+GNeNTI1n9YaTM=", "requires": { "@emotion/hash": "^0.9.0", - "@griffel/style-types": "^1.0.1", + "@griffel/style-types": "^1.0.2", "csstype": "^3.1.2", "rtl-css-js": "^1.16.1", "stylis": "^4.2.0", @@ -3311,49 +3326,49 @@ "dependencies": { "csstype": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha1-HUv51XLxHBQDHwQ24cELwfVx9Qs=" }, "stylis": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.0.tgz", - "integrity": "sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==" + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/stylis/-/stylis-4.3.0.tgz", + "integrity": "sha1-q+MFpmn8PYd34Q7vz8c62GHFWIw=" }, "tslib": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha1-cDrClCXns3zW/UVukkBNRtHz5K4=" } } }, "@griffel/react": { - "version": "1.5.14", - "resolved": "https://registry.npmjs.org/@griffel/react/-/react-1.5.14.tgz", - "integrity": "sha512-/x6cy6xMtpow1r+Zrw/hMKHwo+imFAgKaZ3A/+M8GyT3L9AFxK1Kyg4JvARPjLBAn9Q2q5dkCr78jOguuVSScg==", + "version": "1.5.15", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@griffel/react/-/react-1.5.15.tgz", + "integrity": "sha1-6AEtVSZ2gqos52d0jmr8ro3gaQg=", "requires": { - "@griffel/core": "^1.14.1", + "@griffel/core": "^1.14.2", "tslib": "^2.1.0" }, "dependencies": { "tslib": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha1-cDrClCXns3zW/UVukkBNRtHz5K4=" } } }, "@griffel/style-types": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@griffel/style-types/-/style-types-1.0.1.tgz", - "integrity": "sha512-nhVryiNHhoBt5L93tfDYGoE4KtWvhBvY7y1yR1n6WKpRjasgw3GI2pBwiMiVt68bycnyvXIvcJjJTr0QM22VLQ==", + "version": "1.0.2", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@griffel/style-types/-/style-types-1.0.2.tgz", + "integrity": "sha1-mUSyl+OfNTCNEJ7kGzdXzgtcmiY=", "requires": { "csstype": "^3.1.2" }, "dependencies": { "csstype": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha1-HUv51XLxHBQDHwQ24cELwfVx9Qs=" } } }, @@ -5834,26 +5849,17 @@ "dev": true }, "@swc/helpers": { - "version": "0.4.36", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.36.tgz", - "integrity": "sha512-5lxnyLEYFskErRPenYItLRSge5DjrJngYKdVjRSrWfza9G6KkgHEXi0vUZiyUeMU5JfXH1YnvXZzSp8ul88o2Q==", + "version": "0.5.2", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/@swc/helpers/-/helpers-0.5.2.tgz", + "integrity": "sha1-heoMdkULYa19EKNwUCie3teDwn0=", "requires": { - "legacy-swc-helpers": "npm:@swc/helpers@=0.4.14", "tslib": "^2.4.0" }, "dependencies": { - "legacy-swc-helpers": { - "version": "npm:@swc/helpers@0.4.14", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", - "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", - "requires": { - "tslib": "^2.4.0" - } - }, "tslib": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha1-cDrClCXns3zW/UVukkBNRtHz5K4=" } } }, @@ -19046,8 +19052,8 @@ }, "keyborg": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/keyborg/-/keyborg-2.0.0.tgz", - "integrity": "sha512-RWY8nWrzRkwTQLaKyDtbTu5SOb5L4B20UzAsBHlQDFZqVY/+Mid0bQ7MVTC8vbOTrWY2xkkzj8gZF9Ua7re4xA==" + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/keyborg/-/keyborg-2.0.0.tgz", + "integrity": "sha1-k34DRrtOQ4wM8mymmJxWggtHVPY=" }, "keytar": { "version": "5.6.0", @@ -22791,8 +22797,8 @@ }, "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==", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/rtl-css-js/-/rtl-css-js-1.16.1.tgz", + "integrity": "sha1-S0i0NUsP+RejBIjZUQD79yGaPoA=", "requires": { "@babel/runtime": "^7.1.2" } @@ -24129,9 +24135,9 @@ } }, "tabster": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/tabster/-/tabster-4.7.2.tgz", - "integrity": "sha512-wRFOnje3CxqUVgdDiY7spipDWXee4PatHE5e3XoVXN51fOxu0/QlI/7EVURIyg2jGDFPL4ZffLMpX3pvTVbVVQ==", + "version": "4.7.3", + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/tabster/-/tabster-4.7.3.tgz", + "integrity": "sha1-0ZpEchaprTCMpQgALDzcrjQpmRU=", "requires": { "keyborg": "^2.0.0", "tslib": "^2.3.1" @@ -24139,8 +24145,8 @@ "dependencies": { "tslib": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha1-cDrClCXns3zW/UVukkBNRtHz5K4=" } } }, @@ -25111,8 +25117,8 @@ }, "use-disposable": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/use-disposable/-/use-disposable-1.0.2.tgz", - "integrity": "sha512-UMaXVlV77dWOu4GqAFNjRzHzowYKUKbJBQfCexvahrYeIz4OkUYUjna4Tjjdf92NH8Nm8J7wEfFRgTIwYjO5jg==" + "resolved": "https://powerbi.pkgs.visualstudio.com/_packaging/PowerBIClients/npm/registry/use-disposable/-/use-disposable-1.0.2.tgz", + "integrity": "sha1-R2Ez2D3CjfP0fEGhZkgDpASBOlA=" }, "util": { "version": "0.10.4", diff --git a/package.json b/package.json index b5c9089af..cb2b2cea2 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "@babel/plugin-proposal-class-properties": "7.12.1", "@babel/plugin-proposal-decorators": "7.12.12", "@fluentui/react": "8.14.3", - "@fluentui/react-components": "9.30.1", + "@fluentui/react-components": "9.32.1", "@jupyterlab/services": "6.0.2", "@jupyterlab/terminal": "3.0.3", "@microsoft/applicationinsights-web": "2.6.1", @@ -236,4 +236,4 @@ "printWidth": 120, "endOfLine": "auto" } -} \ No newline at end of file +} diff --git a/src/ConfigContext.ts b/src/ConfigContext.ts index 6a753a280..b53409bba 100644 --- a/src/ConfigContext.ts +++ b/src/ConfigContext.ts @@ -61,6 +61,9 @@ let configContext: Readonly = { `^https:\\/\\/[\\.\\w]*ext\\.azure\\.(com|cn|us)$`, `^https:\\/\\/[\\.\\w]*\\.ext\\.microsoftazure\\.de$`, `^https:\\/\\/cosmos-db-dataexplorer-germanycentral\\.azurewebsites\\.de$`, + `^https:\\/\\/.*\\.fabric\\.microsoft\\.com$`, + `^https:\\/\\/.*\\.powerbi\\.com$`, + `^https:\\/\\/.*\\.analysis-df\\.net$`, ], // Webpack injects this at build time gitSha: process.env.GIT_SHA, hostedExplorerURL: "https://cosmos.azure.com/", diff --git a/src/Contracts/FabricContract.ts b/src/Contracts/FabricContract.ts new file mode 100644 index 000000000..61f5c0bdb --- /dev/null +++ b/src/Contracts/FabricContract.ts @@ -0,0 +1,25 @@ +export type FabricMessage = + | { + type: "newContainer"; + databaseName: string; + } + | { + type: "initialize"; + connectionString: string | undefined; + } + | { + type: "openTab"; + databaseName: string; + collectionName: string | undefined; + }; + +export type DataExploreMessage = + | "ready" + | { + type: number; + data: { + action: "LoadDatabases"; + actionModifier: "success" | "start"; + defaultExperience: "SQL"; + }; + }; diff --git a/src/Explorer/Controls/TreeComponent2/TreeNode2Component.tsx b/src/Explorer/Controls/TreeComponent2/TreeNode2Component.tsx index cfa26357f..14c66db12 100644 --- a/src/Explorer/Controls/TreeComponent2/TreeNode2Component.tsx +++ b/src/Explorer/Controls/TreeComponent2/TreeNode2Component.tsx @@ -9,8 +9,11 @@ import { Tree, TreeItem, TreeItemLayout, + TreeOpenChangeData, + TreeOpenChangeEvent, } from "@fluentui/react-components"; import { MoreHorizontal20Regular } from "@fluentui/react-icons"; +import { tokens } from "@fluentui/react-theme"; import * as React from "react"; export interface TreeNode2MenuItem { @@ -27,7 +30,7 @@ export interface TreeNode2 { children?: TreeNode2[]; contextMenu?: TreeNode2MenuItem[]; iconSrc?: string; - // isExpanded?: boolean; + isExpanded?: boolean; className?: string; isAlphaSorted?: boolean; // data?: any; // Piece of data corresponding to this node @@ -37,7 +40,7 @@ export interface TreeNode2 { isScrollable?: boolean; isSelected?: () => boolean; onClick?: () => void; // Only if a leaf, other click will expand/collapse - onExpanded?: () => void; + onExpanded?: () => Promise; onCollapsed?: () => void; onContextMenuOpen?: () => void; } @@ -46,7 +49,6 @@ export interface TreeNode2ComponentProps { node: TreeNode2; className?: string; treeNodeId: string; - globalOpenIds: string[]; } const getTreeIcon = (iconSrc: string): JSX.Element => ; @@ -54,20 +56,8 @@ const getTreeIcon = (iconSrc: string): JSX.Element => = ({ node, treeNodeId, - globalOpenIds, }: TreeNode2ComponentProps): JSX.Element => { - // const defaultOpenItems = node.isExpanded ? children?.map((child: TreeNode2) => child.label) : undefined; - const [isExpanded, setIsExpanded] = React.useState(false); - - // Compute whether node is expanded - React.useEffect(() => { - const isNowExpanded = globalOpenIds && globalOpenIds.includes(treeNodeId); - if (!isExpanded && isNowExpanded) { - // Catch the transition non-expanded to expanded - node.onExpanded?.(); - } - setIsExpanded(isNowExpanded); - }, [globalOpenIds, treeNodeId, node, isExpanded]); + const [isLoading, setIsLoading] = React.useState(false); const getSortedChildren = (treeNode: TreeNode2): TreeNode2[] => { if (!treeNode || !treeNode.children) { @@ -95,8 +85,24 @@ export const TreeNode2Component: React.FC = ({ return unsortedChildren; }; + const onOpenChange = (_: TreeOpenChangeEvent, data: TreeOpenChangeData) => { + if (!node.isExpanded && data.open && node.onExpanded) { + // Catch the transition non-expanded to expanded + setIsLoading(true); + node.onExpanded?.().then(() => setIsLoading(false)); + } else if (node.isExpanded && !data.open && node.onCollapsed) { + // Catch the transition expanded to non-expanded + node.onCollapsed?.(); + } + }; + return ( - + = ({ ) } - expandIcon={node.isLoading ? : undefined} + expandIcon={isLoading ? : undefined} iconBefore={node.iconSrc && getTreeIcon(node.iconSrc)} + style={{ + backgroundColor: node.isSelected && node.isSelected() ? tokens.colorNeutralBackground1Selected : undefined, + }} > node.onClick?.()}>{node.label} {!node.isLoading && node.children?.length > 0 && ( - + {getSortedChildren(node).map((childNode: TreeNode2) => ( ))} diff --git a/src/Explorer/Tree2/ResourceTree.tsx b/src/Explorer/Tree2/ResourceTree.tsx index 7ef6c56c3..179c858af 100644 --- a/src/Explorer/Tree2/ResourceTree.tsx +++ b/src/Explorer/Tree2/ResourceTree.tsx @@ -8,7 +8,7 @@ import { TreeOpenChangeEvent, createLightTheme, } from "@fluentui/react-components"; -import { TreeNode2Component } from "Explorer/Controls/TreeComponent2/TreeNode2Component"; +import { TreeNode2, TreeNode2Component } from "Explorer/Controls/TreeComponent2/TreeNode2Component"; import { useDatabaseTreeNodes } from "Explorer/Tree2/useDatabaseTreeNodes"; import * as React from "react"; import shallow from "zustand/shallow"; @@ -69,16 +69,45 @@ export const ResourceTree2: React.FC = ({ container }: Resour ); // const { activeTab } = useTabs(); const databaseTreeNodes = useDatabaseTreeNodes(container, isNotebookEnabled); - const dataNodeTree = { + const [openItems, setOpenItems] = React.useState>([DATA_TREE_LABEL]); + + const dataNodeTree: TreeNode2 = { id: "data", label: DATA_TREE_LABEL, - isExpanded: true, className: "accordionItemHeader", children: databaseTreeNodes, isScrollable: true, }; - const [openItems, setOpenItems] = React.useState>([DATA_TREE_LABEL]); + React.useEffect(() => { + // Compute open items based on node.isExpanded + const updateOpenItems = (node: TreeNode2, parentNodeId: string): void => { + // This will look for ANY expanded node, event if its parent node isn't expanded + // and add it to the openItems list + const globalId = parentNodeId === undefined ? node.label : `${parentNodeId}/${node.label}`; + + if (node.isExpanded) { + let found = false; + for (const id of openItems) { + if (id === globalId) { + found = true; + break; + } + } + if (!found) { + setOpenItems((prevOpenItems) => [...prevOpenItems, globalId]); + } + } + + if (node.children) { + for (const child of node.children) { + updateOpenItems(child, globalId); + } + } + }; + + updateOpenItems(dataNodeTree, undefined); + }, [databaseTreeNodes]); const handleOpenChange = (event: TreeOpenChangeEvent, data: TreeOpenChangeData) => setOpenItems(data.openItems); @@ -93,13 +122,7 @@ export const ResourceTree2: React.FC = ({ container }: Resour style={{ height: "100%", width: "290px" }} > {[dataNodeTree].map((node) => ( - item.toString())} - /> + ))} diff --git a/src/Explorer/Tree2/containerTreeNodeUtil.ts b/src/Explorer/Tree2/containerTreeNodeUtil.ts index ce9d73f80..46cf84ee5 100644 --- a/src/Explorer/Tree2/containerTreeNodeUtil.ts +++ b/src/Explorer/Tree2/containerTreeNodeUtil.ts @@ -45,7 +45,7 @@ export const buildCollectionNode = ( // push to most recent mostRecentActivity.collectionWasOpened(userContext.databaseAccount?.id, collection); }, - onExpanded: () => { + onExpanded: async () => { // Rewritten version of expandCollapseCollection useSelectedNode.getState().setSelectedNode(collection); useCommandBar.getState().setContextButtons([]); @@ -53,9 +53,16 @@ export const buildCollectionNode = ( (tab: TabsBase) => tab.collection?.id() === collection.id() && tab.collection.databaseId === collection.databaseId ); + useDatabases.getState().updateDatabase(database); }, isSelected: () => useSelectedNode.getState().isDataNodeSelected(collection.databaseId, collection.id()), onContextMenuOpen: () => useSelectedNode.getState().setSelectedNode(collection), + onCollapsed: () => { + collection.collapseCollection(); + // useCommandBar.getState().setContextButtons([]); + useDatabases.getState().updateDatabase(database); + }, + isExpanded: collection.isCollectionExpanded(), }; }; diff --git a/src/Explorer/Tree2/useDatabaseTreeNodes.ts b/src/Explorer/Tree2/useDatabaseTreeNodes.ts index 412ebbeff..d092318bf 100644 --- a/src/Explorer/Tree2/useDatabaseTreeNodes.ts +++ b/src/Explorer/Tree2/useDatabaseTreeNodes.ts @@ -25,15 +25,22 @@ export const useDatabaseTreeNodes = (container: Explorer, isNotebookEnabled: boo contextMenu: ResourceTreeContextMenuButtonFactory.createDatabaseContextMenu(container, database.id()), onExpanded: async () => { useSelectedNode.getState().setSelectedNode(database); - if (databaseNode.children?.length === 0) { + if (!databaseNode.children || databaseNode.children?.length === 0) { databaseNode.isLoading = true; } await database.expandDatabase(); databaseNode.isLoading = false; useCommandBar.getState().setContextButtons([]); refreshActiveTab((tab: TabsBase) => tab.collection?.databaseId === database.id()); + useDatabases.getState().updateDatabase(database); }, onContextMenuOpen: () => useSelectedNode.getState().setSelectedNode(database), + isExpanded: database.isDatabaseExpanded(), + onCollapsed: () => { + database.collapseDatabase(); + // useCommandBar.getState().setContextButtons([]); + useDatabases.getState().updateDatabase(database); + }, }; if (database.isDatabaseShared() && configContext.platform !== Platform.Fabric) { diff --git a/src/hooks/useKnockoutExplorer.ts b/src/hooks/useKnockoutExplorer.ts index 119e419cf..bf176e56e 100644 --- a/src/hooks/useKnockoutExplorer.ts +++ b/src/hooks/useKnockoutExplorer.ts @@ -1,5 +1,7 @@ import { createUri } from "Common/UrlUtility"; +import { FabricMessage } from "Contracts/FabricContract"; import Explorer from "Explorer/Explorer"; +import { useSelectedNode } from "Explorer/useSelectedNode"; import { fetchEncryptedToken } from "Platform/Hosted/Components/ConnectExplorer"; import { getNetworkSettingsWarningMessage } from "Utils/NetworkUtility"; import { fetchAccessData } from "hooks/usePortalAccessToken"; @@ -10,7 +12,7 @@ import { AccountKind, Flights } from "../Common/Constants"; import { normalizeArmEndpoint } from "../Common/EnvironmentUtility"; import { sendMessage, sendReadyMessage } from "../Common/MessageHandler"; import { Platform, configContext, updateConfigContext } from "../ConfigContext"; -import { ActionType, DataExplorerAction } from "../Contracts/ActionContracts"; +import { ActionType, DataExplorerAction, TabKind } from "../Contracts/ActionContracts"; import { MessageTypes } from "../Contracts/ExplorerContracts"; import { DataExplorerInputsFrame } from "../Contracts/ViewModels"; import { handleOpenAction } from "../Explorer/OpenActions/OpenActions"; @@ -63,24 +65,7 @@ export function useKnockoutExplorer(platform: Platform): Explorer { const explorer = await configurePortal(); setExplorer(explorer); } else if (platform === Platform.Fabric) { - // TODO For now, retrieve info from session storage. Replace with info injected into Data Explorer - const connectionString = sessionStorage.getItem("connectionString"); - if (!connectionString) { - console.error("No connection string found in session storage"); - return; - } - const encryptedToken = await fetchEncryptedToken(connectionString); - // TODO Duplicated from useTokenMetadata - const encryptedTokenMetadata = await fetchAccessData(encryptedToken); - - const win = (window as unknown) as HostedExplorerChildFrame; - win.hostedConfig = { - authType: AuthType.EncryptedToken, - encryptedToken, - encryptedTokenMetadata, - }; - - const explorer = await configureHosted(); + const explorer = await configureFabric(); setExplorer(explorer); } } @@ -100,11 +85,104 @@ export function useKnockoutExplorer(platform: Platform): Explorer { return explorer; } +async function configureFabric(): Promise { + let explorer: Explorer; + return new Promise((resolve) => { + window.addEventListener( + "message", + async (event) => { + if (isInvalidParentFrameOrigin(event)) { + return; + } + + if (!shouldProcessMessage(event)) { + return; + } + + const data: FabricMessage = event.data?.data; + + if (!data) { + return; + } + + switch (data.type) { + case "initialize": { + // TODO For now, retrieve info from session storage. Replace with info injected into Data Explorer + const connectionString = data.connectionString ?? sessionStorage.getItem("connectionString"); + if (!connectionString) { + console.error("No connection string found in session storage"); + return undefined; + } + const encryptedToken = await fetchEncryptedToken(connectionString); + // TODO Duplicated from useTokenMetadata + const encryptedTokenMetadata = await fetchAccessData(encryptedToken); + + const hostedConfig: EncryptedToken = { + authType: AuthType.EncryptedToken, + encryptedToken, + encryptedTokenMetadata, + }; + + explorer = await configureWithEncryptedToken(hostedConfig); + resolve(explorer); + break; + } + case "newContainer": + explorer.onNewCollectionClicked(); + break; + case "openTab": { + // Expand database first + const databaseName = sessionStorage.getItem("openDatabaseName") ?? data.databaseName; + const database = useDatabases.getState().databases.find((db) => db.id() === databaseName); + if (database) { + await database.expandDatabase(); + useDatabases.getState().updateDatabase(database); + useSelectedNode.getState().setSelectedNode(database); + + let collectionResourceId = data.collectionName; + if (collectionResourceId === undefined) { + // Pick first collection if collectionName not specified in message + collectionResourceId = database.collections()[0]?.id(); + } + + if (collectionResourceId !== undefined) { + // Expand collection + const collection = database.collections().find((coll) => coll.id() === collectionResourceId); + collection.expandCollection(); + useSelectedNode.getState().setSelectedNode(collection); + + handleOpenAction( + { + actionType: ActionType.OpenCollectionTab, + databaseResourceId: databaseName, + collectionResourceId: data.collectionName, + tabKind: TabKind.SQLDocuments, + } as DataExplorerAction, + useDatabases.getState().databases, + explorer + ); + } + } + + break; + } + default: + console.error(`Unknown Fabric message type: ${JSON.stringify(data)}`); + break; + } + }, + false + ); + + sendReadyMessage(); + }); +} + async function configureHosted(): Promise { const win = (window as unknown) as HostedExplorerChildFrame; let explorer: Explorer; if (win.hostedConfig.authType === AuthType.EncryptedToken) { - explorer = configureHostedWithEncryptedToken(win.hostedConfig); + explorer = configureWithEncryptedToken(win.hostedConfig); } else if (win.hostedConfig.authType === AuthType.ResourceToken) { explorer = configureHostedWithResourceToken(win.hostedConfig); } else if (win.hostedConfig.authType === AuthType.ConnectionString) { @@ -237,7 +315,7 @@ function configureHostedWithResourceToken(config: ResourceToken): Explorer { return explorer; } -function configureHostedWithEncryptedToken(config: EncryptedToken): Explorer { +function configureWithEncryptedToken(config: EncryptedToken): Explorer { const apiExperience = DefaultExperienceUtility.getDefaultExperienceFromApiKind(config.encryptedTokenMetadata.apiKind); updateUserContext({ authType: AuthType.EncryptedToken, diff --git a/src/hooks/useTabs.ts b/src/hooks/useTabs.ts index 73c812b79..a1f3f4f2b 100644 --- a/src/hooks/useTabs.ts +++ b/src/hooks/useTabs.ts @@ -3,6 +3,7 @@ import * as ViewModels from "../Contracts/ViewModels"; import { CollectionTabKind } from "../Contracts/ViewModels"; import NotebookTabV2 from "../Explorer/Tabs/NotebookV2Tab"; import TabsBase from "../Explorer/Tabs/TabsBase"; +import { Platform, configContext } from "./../ConfigContext"; interface TabsState { openedTabs: TabsBase[]; @@ -37,11 +38,22 @@ export enum ReactTabKind { QueryCopilot, } +// HACK: using this const when the configuration context is not initialized yet. +// Since Fabric is always setting the url param, use that instead of the regular config. +const isPlatformFabric = (() => { + const params = new URLSearchParams(window.location.search); + if (params.has("platform")) { + const platform = params.get("platform"); + return platform === Platform.Fabric; + } + return false; +})(); + export const useTabs: UseStore = create((set, get) => ({ openedTabs: [], - openedReactTabs: [ReactTabKind.Home], + openedReactTabs: !isPlatformFabric ? [ReactTabKind.Home] : [], activeTab: undefined, - activeReactTab: ReactTabKind.Home, + activeReactTab: !isPlatformFabric ? ReactTabKind.Home : undefined, networkSettingsWarning: "", queryCopilotTabInitialInput: "", isTabExecuting: false, @@ -92,7 +104,7 @@ export const useTabs: UseStore = create((set, get) => ({ } return true; }); - if (updatedTabs.length === 0) { + if (updatedTabs.length === 0 && configContext.platform !== Platform.Fabric) { set({ activeTab: undefined, activeReactTab: ReactTabKind.Home }); } @@ -130,7 +142,7 @@ export const useTabs: UseStore = create((set, get) => ({ } }); - if (get().openedTabs.length === 0) { + if (get().openedTabs.length === 0 && configContext.platform !== Platform.Fabric) { set({ activeTab: undefined, activeReactTab: ReactTabKind.Home }); } }