diff --git a/.github/workflows/pr-storybook.yml b/.github/workflows/pr-storybook.yml index a7f18c3603..7a8f06b6ad 100644 --- a/.github/workflows/pr-storybook.yml +++ b/.github/workflows/pr-storybook.yml @@ -15,7 +15,7 @@ jobs: strategy: matrix: - node-version: [16.x] + node-version: [16.20.0] steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/push-release.yml b/.github/workflows/push-release.yml index 080cf6cae9..0f3898853b 100644 --- a/.github/workflows/push-release.yml +++ b/.github/workflows/push-release.yml @@ -88,7 +88,7 @@ jobs: strategy: matrix: - node-version: [16.x] + node-version: [16.20.0] steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/storybook.yml b/.github/workflows/storybook.yml index a67de4c016..e21d1920e6 100644 --- a/.github/workflows/storybook.yml +++ b/.github/workflows/storybook.yml @@ -17,7 +17,7 @@ jobs: strategy: matrix: - node-version: [16.x] + node-version: [16.20.0] steps: - uses: actions/checkout@v2 diff --git a/.storybook/main.js b/.storybook/main.js index 2b93a27833..ab04b78e83 100644 --- a/.storybook/main.js +++ b/.storybook/main.js @@ -8,6 +8,9 @@ const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin'); module.exports = { + core: { + builder: 'webpack5', + }, presets: [ // { // name: '@storybook/addon-docs/preset', diff --git a/package.json b/package.json index bd618204ce..07a75111e9 100644 --- a/package.json +++ b/package.json @@ -69,14 +69,16 @@ "@microsoft/eslint-config-msgraph": "^1.0.0", "@octokit/rest": "^18.5.3", "@open-wc/testing-helpers": "^2.3.0", - "@storybook/addon-a11y": "^6.4.4", - "@storybook/addon-actions": "^6.4.4", - "@storybook/addon-docs": "^6.4.4", - "@storybook/addon-knobs": "^6.3.0", - "@storybook/addon-links": "^6.4.4", - "@storybook/addon-storysource": "^6.4.4", - "@storybook/cli": "^6.4.4", - "@storybook/web-components": "^6.4.4", + "@storybook/addon-a11y": "^6.5.16", + "@storybook/addon-actions": "^6.5.16", + "@storybook/addon-docs": "^6.5.16", + "@storybook/addon-knobs": "^6.4.0", + "@storybook/addon-links": "^6.5.16", + "@storybook/addon-storysource": "^6.5.16", + "@storybook/builder-webpack5": "^6.5.16", + "@storybook/cli": "^6.5.16", + "@storybook/manager-webpack5": "^6.5.16", + "@storybook/web-components": "^6.5.16", "@testing-library/dom": "^8.20.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/user-event": "^14.4.3", @@ -141,6 +143,7 @@ "ts-jest": "^29.1.0", "typescript": "^5.1.5", "web-component-analyzer": "^1.1.6", + "webpack": "^5.76.0", "whatwg-fetch": "^3.6.2" }, "husky": { diff --git a/packages/mgt-components/README.md b/packages/mgt-components/README.md index 29737cf2a0..d6351695a9 100644 --- a/packages/mgt-components/README.md +++ b/packages/mgt-components/README.md @@ -13,16 +13,23 @@ You can explore components and samples with the [playground](https://mgt.dev) po The Toolkit currently includes the following components: +* [mgt-agenda](https://learn.microsoft.com/graph/toolkit/components/agenda) +* [mgt-file](https://learn.microsoft.com/graph/toolkit/components/file) +* [mgt-file-list](https://learn.microsoft.com/graph/toolkit/components/file-list) +* [mgt-get](https://learn.microsoft.com/graph/toolkit/components/get) * [mgt-login](https://learn.microsoft.com/graph/toolkit/components/login) -* [mgt-person](https://learn.microsoft.com/graph/toolkit/components/person) -* [mgt-person-card](https://learn.microsoft.com/graph/toolkit/components/person-card) * [mgt-people](https://learn.microsoft.com/graph/toolkit/components/people) * [mgt-people-picker](https://learn.microsoft.com/graph/toolkit/components/people-picker) -* [mgt-agenda](https://learn.microsoft.com/graph/toolkit/components/agenda) +* [mgt-person](https://learn.microsoft.com/graph/toolkit/components/person) +* [mgt-person-card](https://learn.microsoft.com/graph/toolkit/components/person-card) +* [mgt-picker](https://learn.microsoft.com/en-us/graph/toolkit/components/picker) +* [mgt-search-box](https://learn.microsoft.com/graph/toolkit/components/person-box) +* [mgt-search-results](https://learn.microsoft.com/graph/toolkit/components/search-results) * [mgt-tasks](https://learn.microsoft.com/graph/toolkit/components/tasks) -* [mgt-todo](https://learn.microsoft.com/graph/toolkit/components/todo) -* [mgt-get](https://learn.microsoft.com/graph/toolkit/components/get) +* [mgt-taxonomy-picker](https://learn.microsoft.com/graph/toolkit/components/taxonomy-picker) * [mgt-teams-channel-picker](https://learn.microsoft.com/graph/toolkit/components/teams-channel-picker) +* [mgt-theme-toggle](https://learn.microsoft.com/graph/toolkit/components/theme-toggle) +* [mgt-todo](https://learn.microsoft.com/graph/toolkit/components/todo) The components work best when used with a [provider](https://learn.microsoft.com/graph/toolkit/providers). The provider handles authentication and the requests to the Microsoft Graph APIs used by the components. diff --git a/packages/mgt-components/src/components/mgt-agenda/mgt-agenda.ts b/packages/mgt-components/src/components/mgt-agenda/mgt-agenda.ts index 7d16491de1..c7ce45f629 100644 --- a/packages/mgt-components/src/components/mgt-agenda/mgt-agenda.ts +++ b/packages/mgt-components/src/components/mgt-agenda/mgt-agenda.ts @@ -16,7 +16,7 @@ import { getEventsPageIterator, getEventsQueryPageIterator } from './mgt-agenda. import { SvgIcon, getSvg } from '../../utils/SvgHelper'; import { MgtPeople, registerMgtPeopleComponent } from '../mgt-people/mgt-people'; import { registerFluentComponents } from '../../utils/FluentComponents'; -import { fluentCard, fluentTooltip } from '@fluentui/web-components'; +import { fluentCard } from '@fluentui/web-components'; import { classMap } from 'lit/directives/class-map.js'; import { registerComponent } from '../registerComponent'; @@ -47,7 +47,7 @@ import { registerComponent } from '../registerComponent'; */ export const registerMgtAgendaComponent = () => { - registerFluentComponents(fluentCard, fluentTooltip); + registerFluentComponents(fluentCard); // register dependent components registerMgtPeopleComponent(); // register self @@ -407,38 +407,16 @@ export class MgtAgenda extends MgtTemplatedComponent { * @memberof MgtAgenda */ protected renderTitle(event: MicrosoftGraph.Event): TemplateResult { - let eventDescription = event?.bodyPreview ? event.bodyPreview.slice(0, 100) : ''; - const hasDescription = eventDescription !== ''; - - const eventSubjectClasses = { - 'event-subject': true, - narrow: this._isNarrow - }; - - eventDescription = eventDescription.split(' ').slice(0, -1).join(' ') + '...'; - - const hasDescriptionDiv = html` -
- ${event.subject} -
- - ${eventDescription} - - `; - - const noDescriptionDiv = html` + return html`
- ${event.subject} + class="${classMap({ + 'event-subject': true, + narrow: this._isNarrow + })}" + > + ${event.subject}
`; - return hasDescription ? hasDescriptionDiv : noDescriptionDiv; } /** diff --git a/packages/mgt-components/src/components/mgt-file-list/mgt-file-upload/mgt-file-upload.ts b/packages/mgt-components/src/components/mgt-file-list/mgt-file-upload/mgt-file-upload.ts index 1feb9e2e7a..35ca543664 100644 --- a/packages/mgt-components/src/components/mgt-file-list/mgt-file-upload/mgt-file-upload.ts +++ b/packages/mgt-components/src/components/mgt-file-list/mgt-file-upload/mgt-file-upload.ts @@ -66,6 +66,13 @@ interface FutureDataTransferItem extends DataTransferItem { getAsEntry: typeof DataTransferItem.prototype.webkitGetAsEntry; } +const isFutureDataTransferItem = (item: DataTransferItem): item is FutureDataTransferItem => + 'getAsEntry' in item && typeof item.getAsEntry === 'function'; + +const isDataTransferItem = (item: DataTransferItem | File): item is DataTransferItem => + ('getAsFile' in item && typeof item.getAsFile === 'function') || + ('webkitGetAsEntry' in item && typeof item.webkitGetAsEntry === 'function'); + /** * Upload conflict behavior status */ @@ -1165,13 +1172,10 @@ export class MgtFileUpload extends MgtBaseComponent { let entry: FileSystemEntry; const collectFilesItems: File[] = []; - for (const uploadFileItem of filesItems as DataTransferItemList) { - if (uploadFileItem.kind === 'file') { - // Defensive code to validate if function exists in Browser - // Collect all Folders into Array - const futureUpload = uploadFileItem as FutureDataTransferItem; - if (futureUpload.getAsEntry) { - entry = futureUpload.getAsEntry(); + for (const uploadFileItem of filesItems) { + if (isDataTransferItem(uploadFileItem)) { + if (isFutureDataTransferItem(uploadFileItem)) { + entry = uploadFileItem.getAsEntry(); if (isFileSystemDirectoryEntry(entry)) { folders.push(entry); } else { @@ -1192,22 +1196,19 @@ export class MgtFileUpload extends MgtBaseComponent { collectFilesItems.push(file); } } - } else if ('function' == typeof uploadFileItem.getAsFile) { + } else { const file = uploadFileItem.getAsFile(); if (file) { this.writeFilePath(file, ''); collectFilesItems.push(file); } } - continue; } else { - const fileItem = uploadFileItem.getAsFile(); - if (fileItem) { - this.writeFilePath(fileItem, ''); - collectFilesItems.push(fileItem); - } + this.writeFilePath(uploadFileItem, ''); + collectFilesItems.push(uploadFileItem); } } + // Collect Files from folder if (folders.length > 0) { const folderFiles = await this.getFolderFiles(folders); diff --git a/packages/mgt-components/src/components/mgt-person/mgt-person.ts b/packages/mgt-components/src/components/mgt-person/mgt-person.ts index b6511a6048..bbb6f64420 100644 --- a/packages/mgt-components/src/components/mgt-person/mgt-person.ts +++ b/packages/mgt-components/src/components/mgt-person/mgt-person.ts @@ -707,8 +707,15 @@ export class MgtPerson extends MgtTemplatedComponent { */ protected renderImage(personDetailsInternal: IDynamicPerson, imageSrc: string) { const altText = `${this.strings.photoFor} ${personDetailsInternal.displayName}`; - const hasImage = imageSrc && !this._isInvalidImageSrc && this._avatarType === 'photo'; - const imageTemplate = html`${altText} (this._isInvalidImageSrc = true)} />`; + const hasImage = imageSrc && !this._isInvalidImageSrc && this._avatarType === avatarType.photo; + const imageOnly = this.avatarType === avatarType.photo && this.view === ViewType.image; + const titleText = + (personDetailsInternal?.displayName || getEmailFromGraphEntity(personDetailsInternal)) ?? undefined; + const imageTemplate = html`${altText} (this._isInvalidImageSrc = true)} />`; const initials = personDetailsInternal ? this.getInitials(personDetailsInternal) : ''; const hasInitials = initials?.length; @@ -721,6 +728,7 @@ export class MgtPerson extends MgtTemplatedComponent { // this reduces the redundant announcement of the user's name. const textTemplate = html` diff --git a/packages/mgt-components/src/graph/graph.people.ts b/packages/mgt-components/src/graph/graph.people.ts index 5fa9844460..cf0041d78b 100644 --- a/packages/mgt-components/src/graph/graph.people.ts +++ b/packages/mgt-components/src/graph/graph.people.ts @@ -224,9 +224,9 @@ export const getPeople = async ( }; /** - * returns a promise that resolves after specified time + * Attempts to extract the email from the IDynamicPerson properties. * - * @param time in milliseconds + * @param {IDynamicperson} entity */ export const getEmailFromGraphEntity = (entity: IDynamicPerson): string => { const person = entity as Person; diff --git a/packages/mgt-element/src/IGraph.ts b/packages/mgt-element/src/IGraph.ts index 30024dfaf3..ddb60065c4 100644 --- a/packages/mgt-element/src/IGraph.ts +++ b/packages/mgt-element/src/IGraph.ts @@ -75,12 +75,8 @@ export type GraphEndpoint = | 'https://graph.microsoft.us' | 'https://dod-graph.microsoft.us' | 'https://graph.microsoft.de' - | 'https://microsoftgraph.chinacloudapi.cn'; - -/** - * MICROSOFT_GRAPH_ENDPOINTS is a set of all the valid Graph URL endpoints. - */ -export const MICROSOFT_GRAPH_ENDPOINTS: Set = new Set(); + | 'https://microsoftgraph.chinacloudapi.cn' + | 'https://canary.graph.microsoft.com'; /** * MICROSOFT_GRAPH_DEFAULT_ENDPOINT is the default Graph endpoint that is silently set on @@ -88,13 +84,14 @@ export const MICROSOFT_GRAPH_ENDPOINTS: Set = new Set { - const endpoints: GraphEndpoint[] = [ - MICROSOFT_GRAPH_DEFAULT_ENDPOINT, - 'https://graph.microsoft.us', - 'https://dod-graph.microsoft.us', - 'https://graph.microsoft.de', - 'https://microsoftgraph.chinacloudapi.cn' - ]; - endpoints.forEach(endpoint => MICROSOFT_GRAPH_ENDPOINTS.add(endpoint)); -})(); +/** + * MICROSOFT_GRAPH_ENDPOINTS is a set of all the valid Graph URL endpoints. + */ +export const MICROSOFT_GRAPH_ENDPOINTS: Set = new Set([ + MICROSOFT_GRAPH_DEFAULT_ENDPOINT, + 'https://graph.microsoft.us', + 'https://dod-graph.microsoft.us', + 'https://graph.microsoft.de', + 'https://microsoftgraph.chinacloudapi.cn', + 'https://canary.graph.microsoft.com' +]); diff --git a/packages/mgt/README.md b/packages/mgt/README.md index cb6d8264d5..2830533e5f 100644 --- a/packages/mgt/README.md +++ b/packages/mgt/README.md @@ -15,27 +15,34 @@ The Microsoft Graph Toolkit includes a collection of web components for the most The components are also available as [React components](https://learn.microsoft.com/graph/toolkit/get-started/mgt-react). +* [mgt-agenda](https://learn.microsoft.com/graph/toolkit/components/agenda) +* [mgt-file](https://learn.microsoft.com/graph/toolkit/components/file) +* [mgt-file-list](https://learn.microsoft.com/graph/toolkit/components/file-list) +* [mgt-get](https://learn.microsoft.com/graph/toolkit/components/get) * [mgt-login](https://learn.microsoft.com/graph/toolkit/components/login) -* [mgt-person](https://learn.microsoft.com/graph/toolkit/components/person) -* [mgt-person-card](https://learn.microsoft.com/graph/toolkit/components/person-card) * [mgt-people](https://learn.microsoft.com/graph/toolkit/components/people) * [mgt-people-picker](https://learn.microsoft.com/graph/toolkit/components/people-picker) -* [mgt-agenda](https://learn.microsoft.com/graph/toolkit/components/agenda) +* [mgt-person](https://learn.microsoft.com/graph/toolkit/components/person) +* [mgt-person-card](https://learn.microsoft.com/graph/toolkit/components/person-card) +* [mgt-picker](https://learn.microsoft.com/en-us/graph/toolkit/components/picker) +* [mgt-search-box](https://learn.microsoft.com/graph/toolkit/components/person-box) +* [mgt-search-results](https://learn.microsoft.com/graph/toolkit/components/search-results) * [mgt-tasks](https://learn.microsoft.com/graph/toolkit/components/tasks) -* [mgt-todo](https://learn.microsoft.com/graph/toolkit/components/todo) -* [mgt-get](https://learn.microsoft.com/graph/toolkit/components/get) +* [mgt-taxonomy-picker](https://learn.microsoft.com/graph/toolkit/components/taxonomy-picker) * [mgt-teams-channel-picker](https://learn.microsoft.com/graph/toolkit/components/teams-channel-picker) +* [mgt-theme-toggle](https://learn.microsoft.com/graph/toolkit/components/theme-toggle) +* [mgt-todo](https://learn.microsoft.com/graph/toolkit/components/todo) ## Providers [Providers](https://learn.microsoft.com/graph/toolkit/providers) enable authentication and provide the implementation for acquiring access tokens on various platforms and expose a Microsoft Graph Client for calling the Microsoft Graph APIs. The components work best when used with a provider, but the providers can be used on their own. -* [Msal Provider](https://learn.microsoft.com/graph/toolkit/providers/msal) -* [Msal2 Provider](https://learn.microsoft.com/graph/toolkit/providers/msal2) -* [SharePoint Provider](https://learn.microsoft.com/graph/toolkit/providers/sharepoint) -* [Teams Provider](https://learn.microsoft.com/graph/toolkit/providers/teams) -* [Teams Msal2 Provider](https://learn.microsoft.com/graph/toolkit/providers/teams-msal2) -* [Proxy Provider](https://learn.microsoft.com/graph/toolkit/providers/proxy) -* [Simple Provider](https://learn.microsoft.com/graph/toolkit/providers/custom) +* [Msal2Provider](https://learn.microsoft.com/graph/toolkit/providers/msal2) +* [SharePointProvider](https://learn.microsoft.com/graph/toolkit/providers/sharepoint) +* [TeamsFxProvider](https://learn.microsoft.com/graph/toolkit/providers/teamsfx) +* [ProxyProvider](https://learn.microsoft.com/graph/toolkit/providers/proxy) +* [SimpleProvider](https://learn.microsoft.com/graph/toolkit/providers/custom) +* [ElectronProvider](https://learn.microsoft.com/graph/toolkit/providers/electron) + ## Getting Started @@ -46,15 +53,15 @@ You can use the components by referencing the loader directly (via unpkg), or in ### Use via mgt-loader: ```html - + ``` -> NOTE: This link will load the highest available version of @microsoft/mgt in the range `>= 2.0.0 < 3.0.0`, omitting the `@2` fragment from the url results in loading the latest version. This could result in loading a new major version and breaking the application. +> NOTE: This link will load the highest available version of @microsoft/mgt in the range `>= 3.0.0 < 4.0.0`, omitting the `@3` fragment from the url results in loading the latest version. This could result in loading a new major version and breaking the application. You can then start using the components in your html page. Here is a full working example with the Msal2 provider: ```html - + diff --git a/readme.md b/readme.md index 6fe01298ef..2fe2885151 100644 --- a/readme.md +++ b/readme.md @@ -62,6 +62,7 @@ The Toolkit currently includes the following components: * [mgt-people-picker](https://learn.microsoft.com/graph/toolkit/components/people-picker) * [mgt-person](https://learn.microsoft.com/graph/toolkit/components/person) * [mgt-person-card](https://learn.microsoft.com/graph/toolkit/components/person-card) +* [mgt-picker](https://learn.microsoft.com/en-us/graph/toolkit/components/picker) * [mgt-search-box](https://learn.microsoft.com/graph/toolkit/components/person-box) * [mgt-search-results](https://learn.microsoft.com/graph/toolkit/components/search-results) * [mgt-tasks](https://learn.microsoft.com/graph/toolkit/components/tasks) diff --git a/yarn.lock b/yarn.lock index dfeca1c2c3..0c71450ab8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5480,7 +5480,7 @@ resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== -"@storybook/addon-a11y@^6.4.4": +"@storybook/addon-a11y@^6.5.16": version "6.5.16" resolved "https://registry.yarnpkg.com/@storybook/addon-a11y/-/addon-a11y-6.5.16.tgz#9288a6c1d111fa4ec501d213100ffff91757d3fc" integrity sha512-/e9s34o+TmEhy+Q3/YzbRJ5AJ/Sy0gjZXlvsCrcRpiQLdt5JRbN8s+Lbn/FWxy8U1Tb1wlLYlqjJ+fYi5RrS3A== @@ -5502,7 +5502,7 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/addon-actions@^6.4.4": +"@storybook/addon-actions@^6.5.16": version "6.5.16" resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-6.5.16.tgz#2d7679f64899bef165a338582cb928102a09e364" integrity sha512-aADjilFmuD6TNGz2CRPSupnyiA/IGkPJHDBTqMpsDXTUr8xnuD122xkIhg6UxmCM2y1c+ncwYXy3WPK2xXK57g== @@ -5527,7 +5527,7 @@ util-deprecate "^1.0.2" uuid-browser "^3.1.0" -"@storybook/addon-docs@^6.4.4": +"@storybook/addon-docs@^6.5.16": version "6.5.16" resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-6.5.16.tgz#3de912f51fb8e48b9a53b11a5b1cede067acbe70" integrity sha512-QM9WDZG9P02UvbzLu947a8ZngOrQeAKAT8jCibQFM/+RJ39xBlfm8rm+cQy3dm94wgtjmVkA3mKGOV/yrrsddg== @@ -5561,7 +5561,7 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/addon-knobs@^6.3.0": +"@storybook/addon-knobs@^6.4.0": version "6.4.0" resolved "https://registry.yarnpkg.com/@storybook/addon-knobs/-/addon-knobs-6.4.0.tgz#fa5943ef21826cdc2e20ded74edfdf5a6dc71dcf" integrity sha512-DiH1/5e2AFHoHrncl1qLu18ZHPHzRMMPvOLFz8AWvvmc+VCqTdIaE+tdxKr3e8rYylKllibgvDOzrLjfTNjF+Q== @@ -5578,7 +5578,7 @@ react-lifecycles-compat "^3.0.4" react-select "^3.2.0" -"@storybook/addon-links@^6.4.4": +"@storybook/addon-links@^6.5.16": version "6.5.16" resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-6.5.16.tgz#cacb20cd0656f0681a874709d428d3f3577828c3" integrity sha512-P/mmqK57NGXnR0i3d/T5B0rIt0Lg8Yq+qionRr3LK3AwG/4yGnYt4GNomLEknn/eEwABYq1Q/Z1aOpgIhNdq5A== @@ -5596,7 +5596,7 @@ regenerator-runtime "^0.13.7" ts-dedent "^2.0.0" -"@storybook/addon-storysource@^6.4.4": +"@storybook/addon-storysource@^6.5.16": version "6.5.16" resolved "https://registry.yarnpkg.com/@storybook/addon-storysource/-/addon-storysource-6.5.16.tgz#b663622d2420d6ad3746ae477dd272ce00ed8525" integrity sha512-cwYZ5ggucw3oLr1OiDCEbuUf9JRYhPOoZbDyiXKYG8KyD1QfsY85lRVHa/b1CFjGVOTaoC//CLe5B//9hwGWiw== @@ -5708,6 +5708,50 @@ webpack-hot-middleware "^2.25.1" webpack-virtual-modules "^0.2.2" +"@storybook/builder-webpack5@^6.5.16": + version "6.5.16" + resolved "https://registry.yarnpkg.com/@storybook/builder-webpack5/-/builder-webpack5-6.5.16.tgz#2f260e29fbc87f6f3bb3212459048ce37f3fb54e" + integrity sha512-kh8Sofm1sbijaHDWtm0sXabqACHVFjikU/fIkkW786kpjoPIPIec1a+hrLgDsZxMU3I7XapSOaCFzWt6FjVXjg== + dependencies: + "@babel/core" "^7.12.10" + "@storybook/addons" "6.5.16" + "@storybook/api" "6.5.16" + "@storybook/channel-postmessage" "6.5.16" + "@storybook/channels" "6.5.16" + "@storybook/client-api" "6.5.16" + "@storybook/client-logger" "6.5.16" + "@storybook/components" "6.5.16" + "@storybook/core-common" "6.5.16" + "@storybook/core-events" "6.5.16" + "@storybook/node-logger" "6.5.16" + "@storybook/preview-web" "6.5.16" + "@storybook/router" "6.5.16" + "@storybook/semver" "^7.3.2" + "@storybook/store" "6.5.16" + "@storybook/theming" "6.5.16" + "@types/node" "^14.0.10 || ^16.0.0" + babel-loader "^8.0.0" + babel-plugin-named-exports-order "^0.0.2" + browser-assert "^1.2.1" + case-sensitive-paths-webpack-plugin "^2.3.0" + core-js "^3.8.2" + css-loader "^5.0.1" + fork-ts-checker-webpack-plugin "^6.0.4" + glob "^7.1.6" + glob-promise "^3.4.0" + html-webpack-plugin "^5.0.0" + path-browserify "^1.0.1" + process "^0.11.10" + stable "^0.1.8" + style-loader "^2.0.0" + terser-webpack-plugin "^5.0.3" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + webpack "^5.9.0" + webpack-dev-middleware "^4.1.0" + webpack-hot-middleware "^2.25.1" + webpack-virtual-modules "^0.4.1" + "@storybook/channel-postmessage@6.5.16": version "6.5.16" resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-6.5.16.tgz#06167c0a66c06b2b5f8ff01d1dd436fff8119a15" @@ -5741,7 +5785,7 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/cli@^6.4.4": +"@storybook/cli@^6.5.16": version "6.5.16" resolved "https://registry.yarnpkg.com/@storybook/cli/-/cli-6.5.16.tgz#a7ec54bf0df032fbbd9ee0b32260c3d21dd0c611" integrity sha512-6hcIUvoQxmK9OZ/dmt2eXMbdeCJseRjLwIk4y2SdWd3chpjMDUVhIMJHU4qc2+6rbK+iwL7JAsOUEu/ywkgEow== @@ -6072,6 +6116,44 @@ webpack-dev-middleware "^3.7.3" webpack-virtual-modules "^0.2.2" +"@storybook/manager-webpack5@^6.5.16": + version "6.5.16" + resolved "https://registry.yarnpkg.com/@storybook/manager-webpack5/-/manager-webpack5-6.5.16.tgz#48b223557d9633614ff8c6e3227c01a57ab4eb55" + integrity sha512-OtxXv8JCe0r/0rE5HxaFicsNsXA+fqZxzokxquFFgrYf/1Jg4d7QX6/pG5wINF+5qInJfVkRG6xhPzv1s5bk9Q== + dependencies: + "@babel/core" "^7.12.10" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/preset-react" "^7.12.10" + "@storybook/addons" "6.5.16" + "@storybook/core-client" "6.5.16" + "@storybook/core-common" "6.5.16" + "@storybook/node-logger" "6.5.16" + "@storybook/theming" "6.5.16" + "@storybook/ui" "6.5.16" + "@types/node" "^14.0.10 || ^16.0.0" + babel-loader "^8.0.0" + case-sensitive-paths-webpack-plugin "^2.3.0" + chalk "^4.1.0" + core-js "^3.8.2" + css-loader "^5.0.1" + express "^4.17.1" + find-up "^5.0.0" + fs-extra "^9.0.1" + html-webpack-plugin "^5.0.0" + node-fetch "^2.6.7" + process "^0.11.10" + read-pkg-up "^7.0.1" + regenerator-runtime "^0.13.7" + resolve-from "^5.0.0" + style-loader "^2.0.0" + telejson "^6.0.8" + terser-webpack-plugin "^5.0.3" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + webpack "^5.9.0" + webpack-dev-middleware "^4.1.0" + webpack-virtual-modules "^0.4.1" + "@storybook/mdx1-csf@^0.0.1": version "0.0.1" resolved "https://registry.yarnpkg.com/@storybook/mdx1-csf/-/mdx1-csf-0.0.1.tgz#d4184e3f6486fade9f7a6bfaf934d9bc07718d5b" @@ -6233,7 +6315,7 @@ regenerator-runtime "^0.13.7" resolve-from "^5.0.0" -"@storybook/web-components@^6.4.4": +"@storybook/web-components@^6.5.16": version "6.5.16" resolved "https://registry.yarnpkg.com/@storybook/web-components/-/web-components-6.5.16.tgz#80b2070262446774bd938307d9c7f1d107d55291" integrity sha512-Ae3tKGhKk9vXfVrOX5DGgPTg1UBG7F01ZcDUkfk/HVi4o7zU/dU6QB+icL3VULdsZxVMKZ0Rrq/33qepshoi3A== @@ -9713,6 +9795,11 @@ babel-plugin-named-asset-import@^0.3.8: resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz#6b7fa43c59229685368683c28bc9734f24524cc2" integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== +babel-plugin-named-exports-order@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/babel-plugin-named-exports-order/-/babel-plugin-named-exports-order-0.0.2.tgz#ae14909521cf9606094a2048239d69847540cb09" + integrity sha512-OgOYHOLoRK+/mvXU9imKHlG6GkPLYrUCvFXG/CM93R/aNNO8pOOF4aS+S8CCHMDQoNSeiOYEZb/G6RwL95Jktw== + babel-plugin-polyfill-corejs2@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.4.tgz#9f9a0e1cd9d645cc246a5e094db5c3aa913ccd2b" @@ -10256,6 +10343,11 @@ brotli-size@^4.0.0: dependencies: duplexer "0.1.1" +browser-assert@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/browser-assert/-/browser-assert-1.2.1.tgz#9aaa5a2a8c74685c2ae05bfe46efd606f068c200" + integrity sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ== + browser-process-hrtime@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" @@ -11311,6 +11403,11 @@ colord@^2.9.1, colord@^2.9.3: resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== +colorette@^1.2.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== + colorette@^2.0.10, colorette@^2.0.14: version "2.0.20" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" @@ -12134,6 +12231,22 @@ css-loader@^3.6.0: schema-utils "^2.7.0" semver "^6.3.0" +css-loader@^5.0.1: + version "5.2.7" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.7.tgz#9b9f111edf6fb2be5dc62525644cbc9c232064ae" + integrity sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg== + dependencies: + icss-utils "^5.1.0" + loader-utils "^2.0.0" + postcss "^8.2.15" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.1.0" + schema-utils "^3.0.0" + semver "^7.3.5" + css-loader@^6.5.1, css-loader@^6.7.1: version "6.8.1" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.8.1.tgz#0f8f52699f60f5e679eab4ec0fcd68b8e8a50a88" @@ -16487,7 +16600,7 @@ html-webpack-plugin@^4.0.0: tapable "^1.1.3" util.promisify "1.0.0" -html-webpack-plugin@^5.5.0: +html-webpack-plugin@^5.0.0, html-webpack-plugin@^5.5.0: version "5.5.3" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz#72270f4a78e222b5825b296e5e3e1328ad525a3e" integrity sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg== @@ -20767,7 +20880,7 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== -mem@^8.0.0: +mem@^8.0.0, mem@^8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/mem/-/mem-8.1.1.tgz#cf118b357c65ab7b7e0817bdf00c8062297c0122" integrity sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA== @@ -20775,7 +20888,7 @@ mem@^8.0.0: map-age-cleaner "^0.1.3" mimic-fn "^3.1.0" -memfs@^3.1.2, memfs@^3.4.3: +memfs@^3.1.2, memfs@^3.2.2, memfs@^3.4.3: version "3.6.0" resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== @@ -20980,7 +21093,7 @@ mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@^2.1.18, mime-types@^2.1.25, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@^2.1.18, mime-types@^2.1.25, mime-types@^2.1.27, mime-types@^2.1.30, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -22660,6 +22773,11 @@ path-browserify@0.0.1: resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -23422,7 +23540,7 @@ postcss-modules-local-by-default@^3.0.2: postcss-selector-parser "^6.0.2" postcss-value-parser "^4.1.0" -postcss-modules-local-by-default@^4.0.3, postcss-modules-local-by-default@~4.0.0: +postcss-modules-local-by-default@^4.0.0, postcss-modules-local-by-default@^4.0.3, postcss-modules-local-by-default@~4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz#b08eb4f083050708998ba2c6061b50c2870ca524" integrity sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA== @@ -23935,7 +24053,7 @@ postcss@^8.1.10, postcss@^8.3.5, postcss@^8.4.19, postcss@^8.4.21, postcss@^8.4. picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^8.4.14: +postcss@^8.2.15, postcss@^8.4.14: version "8.4.27" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.27.tgz#234d7e4b72e34ba5a92c29636734349e0d9c3057" integrity sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ== @@ -27320,6 +27438,14 @@ style-loader@^1.3.0: loader-utils "^2.0.0" schema-utils "^2.7.0" +style-loader@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-2.0.0.tgz#9669602fd4690740eaaec137799a03addbbc393c" + integrity sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + style-loader@^3.3.1: version "3.3.3" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.3.tgz#bba8daac19930169c0c9c96706749a597ae3acff" @@ -27835,7 +27961,7 @@ terser-webpack-plugin@^4.2.3: terser "^5.3.4" webpack-sources "^1.4.3" -terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.3, terser-webpack-plugin@^5.3.7: +terser-webpack-plugin@^5.0.3, terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.3, terser-webpack-plugin@^5.3.7: version "5.3.9" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1" integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA== @@ -29409,6 +29535,18 @@ webpack-dev-middleware@^3.7.3: range-parser "^1.2.1" webpack-log "^2.0.0" +webpack-dev-middleware@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-4.3.0.tgz#179cc40795882cae510b1aa7f3710cbe93c9333e" + integrity sha512-PjwyVY95/bhBh6VUqt6z4THplYcsvQ8YNNBTBM873xLVmw8FLeALn0qurHbs9EmcfhzQis/eoqypSnZeuUz26w== + dependencies: + colorette "^1.2.2" + mem "^8.1.1" + memfs "^3.2.2" + mime-types "^2.1.30" + range-parser "^1.2.1" + schema-utils "^3.0.0" + webpack-dev-middleware@^5.3.1: version "5.3.3" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" @@ -29557,6 +29695,11 @@ webpack-virtual-modules@^0.2.2: dependencies: debug "^3.0.0" +webpack-virtual-modules@^0.4.1: + version "0.4.6" + resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz#3e4008230731f1db078d9cb6f68baf8571182b45" + integrity sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA== + webpack@4: version "4.46.0" resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" @@ -29616,7 +29759,7 @@ webpack@^5.64.4: watchpack "^2.4.0" webpack-sources "^3.2.3" -webpack@^5.73.0: +webpack@^5.73.0, webpack@^5.76.0, webpack@^5.9.0: version "5.88.2" resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.88.2.tgz#f62b4b842f1c6ff580f3fcb2ed4f0b579f4c210e" integrity sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ== @@ -30081,6 +30224,7 @@ worker-rpc@^0.1.0: microevent.ts "~0.1.1" "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: + name wrap-ansi-cjs version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==