{initialReviewAction.description}
+diff --git a/.eslintrc.react.yml b/.eslintrc.react.yml index 7c0a66f1d1..0f48d0a735 100644 --- a/.eslintrc.react.yml +++ b/.eslintrc.react.yml @@ -81,7 +81,7 @@ rules: react/no-will-update-set-state: error react/prefer-es6-class: error react/prefer-read-only-props: error - react/require-default-props: error + react/require-default-props: off # defaultProps is being deprecated react/self-closing-comp: error react/sort-default-props: error react/sort-prop-types: error diff --git a/CHANGELOG.md b/CHANGELOG.md index 996b513c21..53a2746639 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Resolves [#4841](https://github.com/microsoft/BotFramework-WebChat/issues/4841). Added link definitions UI in Markdown, by [@compulim](https://github.com/compulim), in PR [#4846](https://github.com/microsoft/BotFramework-WebChat/pull/4846) - Resolves [#4842](https://github.com/microsoft/BotFramework-WebChat/issues/4842). Added provenance in activity status, by [@compulim](https://github.com/compulim), in PR [#4846](https://github.com/microsoft/BotFramework-WebChat/pull/4846) - Resolves [#4856](https://github.com/microsoft/BotFramework-WebChat/issues/4856). Added types for `useStyleSet`, by [@compulim](https://github.com/compulim), in PR [#4857](https://github.com/microsoft/BotFramework-WebChat/pull/4857) +- Resolves [#2770](https://github.com/microsoft/BotFramework-WebChat/issues/2770). Added customer satisfactory (CSAT) card, by [@compulim](https://github.com/compulim), in PR [#4899](https://github.com/microsoft/BotFramework-WebChat/pull/4899) ## [4.15.9] - 2023-08-25 diff --git a/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-1-snap.png b/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-1-snap.png new file mode 100644 index 0000000000..eae6dec2ed Binary files /dev/null and b/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-2-snap.png b/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-2-snap.png new file mode 100644 index 0000000000..5d6836befe Binary files /dev/null and b/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-3-snap.png b/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-3-snap.png new file mode 100644 index 0000000000..87e39133a2 Binary files /dev/null and b/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-3-snap.png differ diff --git a/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-4-snap.png b/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-4-snap.png new file mode 100644 index 0000000000..5d6836befe Binary files /dev/null and b/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-4-snap.png differ diff --git a/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-5-snap.png b/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-5-snap.png new file mode 100644 index 0000000000..53f2dbb5d2 Binary files /dev/null and b/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-5-snap.png differ diff --git a/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-6-snap.png b/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-6-snap.png new file mode 100644 index 0000000000..96a8d19891 Binary files /dev/null and b/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-6-snap.png differ diff --git a/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-7-snap.png b/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-7-snap.png new file mode 100644 index 0000000000..6186710905 Binary files /dev/null and b/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-7-snap.png differ diff --git a/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-8-snap.png b/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-8-snap.png new file mode 100644 index 0000000000..e42577ce60 Binary files /dev/null and b/__tests__/__image_snapshots__/html/basic-js-customer-satisfactory-attachment-should-work-8-snap.png differ diff --git a/__tests__/__image_snapshots__/html/completed-js-customer-satisfactory-attachment-with-completed-action-should-work-1-snap.png b/__tests__/__image_snapshots__/html/completed-js-customer-satisfactory-attachment-with-completed-action-should-work-1-snap.png new file mode 100644 index 0000000000..db61345b13 Binary files /dev/null and b/__tests__/__image_snapshots__/html/completed-js-customer-satisfactory-attachment-with-completed-action-should-work-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/no-tooltip-js-customer-satisfactory-attachment-without-tooltips-should-work-1-snap.png b/__tests__/__image_snapshots__/html/no-tooltip-js-customer-satisfactory-attachment-without-tooltips-should-work-1-snap.png new file mode 100644 index 0000000000..06b0a84b15 Binary files /dev/null and b/__tests__/__image_snapshots__/html/no-tooltip-js-customer-satisfactory-attachment-without-tooltips-should-work-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/target-url-js-customer-satisfactory-attachment-with-target-of-non-templated-url-should-work-1-snap.png b/__tests__/__image_snapshots__/html/target-url-js-customer-satisfactory-attachment-with-target-of-non-templated-url-should-work-1-snap.png new file mode 100644 index 0000000000..eae6dec2ed Binary files /dev/null and b/__tests__/__image_snapshots__/html/target-url-js-customer-satisfactory-attachment-with-target-of-non-templated-url-should-work-1-snap.png differ diff --git a/__tests__/__image_snapshots__/html/target-url-js-customer-satisfactory-attachment-with-target-of-non-templated-url-should-work-2-snap.png b/__tests__/__image_snapshots__/html/target-url-js-customer-satisfactory-attachment-with-target-of-non-templated-url-should-work-2-snap.png new file mode 100644 index 0000000000..5d6836befe Binary files /dev/null and b/__tests__/__image_snapshots__/html/target-url-js-customer-satisfactory-attachment-with-target-of-non-templated-url-should-work-2-snap.png differ diff --git a/__tests__/__image_snapshots__/html/target-url-js-customer-satisfactory-attachment-with-target-of-non-templated-url-should-work-3-snap.png b/__tests__/__image_snapshots__/html/target-url-js-customer-satisfactory-attachment-with-target-of-non-templated-url-should-work-3-snap.png new file mode 100644 index 0000000000..758be403a4 Binary files /dev/null and b/__tests__/__image_snapshots__/html/target-url-js-customer-satisfactory-attachment-with-target-of-non-templated-url-should-work-3-snap.png differ diff --git a/__tests__/__image_snapshots__/html/target-url-js-customer-satisfactory-attachment-with-target-of-non-templated-url-should-work-4-snap.png b/__tests__/__image_snapshots__/html/target-url-js-customer-satisfactory-attachment-with-target-of-non-templated-url-should-work-4-snap.png new file mode 100644 index 0000000000..3a8d92f5dc Binary files /dev/null and b/__tests__/__image_snapshots__/html/target-url-js-customer-satisfactory-attachment-with-target-of-non-templated-url-should-work-4-snap.png differ diff --git a/__tests__/html/attachment/customerSatisfactory/basic.html b/__tests__/html/attachment/customerSatisfactory/basic.html new file mode 100644 index 0000000000..70ddb53be6 --- /dev/null +++ b/__tests__/html/attachment/customerSatisfactory/basic.html @@ -0,0 +1,147 @@ + + +
+ + + + + + + + + + diff --git a/__tests__/html/attachment/customerSatisfactory/basic.js b/__tests__/html/attachment/customerSatisfactory/basic.js new file mode 100644 index 0000000000..0eafbe1895 --- /dev/null +++ b/__tests__/html/attachment/customerSatisfactory/basic.js @@ -0,0 +1,5 @@ +/** @jest-environment ./packages/test/harness/src/host/jest/WebDriverEnvironment.js */ + +describe('customer satisfactory attachment', () => { + test('should work', () => runHTML('attachment/customerSatisfactory/basic')); +}); diff --git a/__tests__/html/attachment/customerSatisfactory/completed.html b/__tests__/html/attachment/customerSatisfactory/completed.html new file mode 100644 index 0000000000..de23320d05 --- /dev/null +++ b/__tests__/html/attachment/customerSatisfactory/completed.html @@ -0,0 +1,76 @@ + + + + + + + + + + + + + diff --git a/__tests__/html/attachment/customerSatisfactory/completed.js b/__tests__/html/attachment/customerSatisfactory/completed.js new file mode 100644 index 0000000000..b9fa7c3122 --- /dev/null +++ b/__tests__/html/attachment/customerSatisfactory/completed.js @@ -0,0 +1,5 @@ +/** @jest-environment ./packages/test/harness/src/host/jest/WebDriverEnvironment.js */ + +describe('customer satisfactory attachment with completed action', () => { + test('should work', () => runHTML('attachment/customerSatisfactory/completed')); +}); diff --git a/__tests__/html/attachment/customerSatisfactory/imBack.title.html b/__tests__/html/attachment/customerSatisfactory/imBack.title.html new file mode 100644 index 0000000000..8c37b6b546 --- /dev/null +++ b/__tests__/html/attachment/customerSatisfactory/imBack.title.html @@ -0,0 +1,76 @@ + + + + + + + + + + + + + diff --git a/__tests__/html/attachment/customerSatisfactory/imBack.title.js b/__tests__/html/attachment/customerSatisfactory/imBack.title.js new file mode 100644 index 0000000000..8cade20ee8 --- /dev/null +++ b/__tests__/html/attachment/customerSatisfactory/imBack.title.js @@ -0,0 +1,5 @@ +/** @jest-environment ./packages/test/harness/src/host/jest/WebDriverEnvironment.js */ + +describe('customer satisfactory attachment with imBack of title', () => { + test('should work', () => runHTML('attachment/customerSatisfactory/imBack.title')); +}); diff --git a/__tests__/html/attachment/customerSatisfactory/imBack.value.html b/__tests__/html/attachment/customerSatisfactory/imBack.value.html new file mode 100644 index 0000000000..ebfa641967 --- /dev/null +++ b/__tests__/html/attachment/customerSatisfactory/imBack.value.html @@ -0,0 +1,76 @@ + + + + + + + + + + + + + diff --git a/__tests__/html/attachment/customerSatisfactory/imBack.value.js b/__tests__/html/attachment/customerSatisfactory/imBack.value.js new file mode 100644 index 0000000000..e38cae2674 --- /dev/null +++ b/__tests__/html/attachment/customerSatisfactory/imBack.value.js @@ -0,0 +1,5 @@ +/** @jest-environment ./packages/test/harness/src/host/jest/WebDriverEnvironment.js */ + +describe('customer satisfactory attachment with imBack of value', () => { + test('should work', () => runHTML('attachment/customerSatisfactory/imBack.value')); +}); diff --git a/__tests__/html/attachment/customerSatisfactory/liveRegion.completed.html b/__tests__/html/attachment/customerSatisfactory/liveRegion.completed.html new file mode 100644 index 0000000000..3595956a80 --- /dev/null +++ b/__tests__/html/attachment/customerSatisfactory/liveRegion.completed.html @@ -0,0 +1,56 @@ + + + + + + + + + + + + + diff --git a/__tests__/html/attachment/customerSatisfactory/liveRegion.completed.js b/__tests__/html/attachment/customerSatisfactory/liveRegion.completed.js new file mode 100644 index 0000000000..97bdb26f5c --- /dev/null +++ b/__tests__/html/attachment/customerSatisfactory/liveRegion.completed.js @@ -0,0 +1,5 @@ +/** @jest-environment ./packages/test/harness/src/host/jest/WebDriverEnvironment.js */ + +describe('customer satisfactory attachment with completed action', () => { + test('live region should work', () => runHTML('attachment/customerSatisfactory/liveRegion.completed')); +}); diff --git a/__tests__/html/attachment/customerSatisfactory/liveRegion.html b/__tests__/html/attachment/customerSatisfactory/liveRegion.html new file mode 100644 index 0000000000..03dd5797bb --- /dev/null +++ b/__tests__/html/attachment/customerSatisfactory/liveRegion.html @@ -0,0 +1,68 @@ + + + + + + + + + + + + + diff --git a/__tests__/html/attachment/customerSatisfactory/liveRegion.js b/__tests__/html/attachment/customerSatisfactory/liveRegion.js new file mode 100644 index 0000000000..04cc26d2f4 --- /dev/null +++ b/__tests__/html/attachment/customerSatisfactory/liveRegion.js @@ -0,0 +1,5 @@ +/** @jest-environment ./packages/test/harness/src/host/jest/WebDriverEnvironment.js */ + +describe('customer satisfactory attachment', () => { + test('live region should work', () => runHTML('attachment/customerSatisfactory/liveRegion')); +}); diff --git a/__tests__/html/attachment/customerSatisfactory/messageBack.html b/__tests__/html/attachment/customerSatisfactory/messageBack.html new file mode 100644 index 0000000000..93bccd5c38 --- /dev/null +++ b/__tests__/html/attachment/customerSatisfactory/messageBack.html @@ -0,0 +1,79 @@ + + + + + + + + + + + + + diff --git a/__tests__/html/attachment/customerSatisfactory/messageBack.js b/__tests__/html/attachment/customerSatisfactory/messageBack.js new file mode 100644 index 0000000000..ceb5b5edb8 --- /dev/null +++ b/__tests__/html/attachment/customerSatisfactory/messageBack.js @@ -0,0 +1,5 @@ +/** @jest-environment ./packages/test/harness/src/host/jest/WebDriverEnvironment.js */ + +describe('customer satisfactory attachment with messageBack', () => { + test('should work', () => runHTML('attachment/customerSatisfactory/messageBack')); +}); diff --git a/__tests__/html/attachment/customerSatisfactory/noTooltip.html b/__tests__/html/attachment/customerSatisfactory/noTooltip.html new file mode 100644 index 0000000000..b115f11fad --- /dev/null +++ b/__tests__/html/attachment/customerSatisfactory/noTooltip.html @@ -0,0 +1,74 @@ + + + + + + + + + + + + + diff --git a/__tests__/html/attachment/customerSatisfactory/noTooltip.js b/__tests__/html/attachment/customerSatisfactory/noTooltip.js new file mode 100644 index 0000000000..c93034fb2b --- /dev/null +++ b/__tests__/html/attachment/customerSatisfactory/noTooltip.js @@ -0,0 +1,5 @@ +/** @jest-environment ./packages/test/harness/src/host/jest/WebDriverEnvironment.js */ + +describe('customer satisfactory attachment without tooltips', () => { + test('should work', () => runHTML('attachment/customerSatisfactory/noTooltip')); +}); diff --git a/__tests__/html/attachment/customerSatisfactory/postBack.string.html b/__tests__/html/attachment/customerSatisfactory/postBack.string.html new file mode 100644 index 0000000000..7e68895523 --- /dev/null +++ b/__tests__/html/attachment/customerSatisfactory/postBack.string.html @@ -0,0 +1,77 @@ + + + + + + + + + + + + + diff --git a/__tests__/html/attachment/customerSatisfactory/postBack.string.js b/__tests__/html/attachment/customerSatisfactory/postBack.string.js new file mode 100644 index 0000000000..4e4eb0b592 --- /dev/null +++ b/__tests__/html/attachment/customerSatisfactory/postBack.string.js @@ -0,0 +1,5 @@ +/** @jest-environment ./packages/test/harness/src/host/jest/WebDriverEnvironment.js */ + +describe('customer satisfactory attachment with postBack of string', () => { + test('should work', () => runHTML('attachment/customerSatisfactory/postBack.string')); +}); diff --git a/__tests__/html/attachment/customerSatisfactory/target.url.html b/__tests__/html/attachment/customerSatisfactory/target.url.html new file mode 100644 index 0000000000..0e2a9f4a93 --- /dev/null +++ b/__tests__/html/attachment/customerSatisfactory/target.url.html @@ -0,0 +1,85 @@ + + + + + + + + + + + + + diff --git a/__tests__/html/attachment/customerSatisfactory/target.url.js b/__tests__/html/attachment/customerSatisfactory/target.url.js new file mode 100644 index 0000000000..53b00b8915 --- /dev/null +++ b/__tests__/html/attachment/customerSatisfactory/target.url.js @@ -0,0 +1,5 @@ +/** @jest-environment ./packages/test/harness/src/host/jest/WebDriverEnvironment.js */ + +describe('customer satisfactory attachment', () => { + test('with target of non-templated URL should work', () => runHTML('attachment/customerSatisfactory/target.url')); +}); diff --git a/__tests__/html/suggestedActions.styleOptions.html b/__tests__/html/suggestedActions.styleOptions.html index dd238907ad..9b902ccb7a 100644 --- a/__tests__/html/suggestedActions.styleOptions.html +++ b/__tests__/html/suggestedActions.styleOptions.html @@ -1,4 +1,4 @@ - + @@ -9,224 +9,236 @@ diff --git a/docs/CUSTOMER_SATISFACTORY_CARD.md b/docs/CUSTOMER_SATISFACTORY_CARD.md new file mode 100644 index 0000000000..88778d9219 --- /dev/null +++ b/docs/CUSTOMER_SATISFACTORY_CARD.md @@ -0,0 +1,121 @@ +# Customer Satisfactory Card (CSAT card) + +> This is related to PR [#4899](https://github.com/microsoft/BotFramework-WebChat/pull/4899). + +## Description + +Power Virtual Agents and many customers implemented customer satisfactory (CSAT) cards using Adaptive Cards. However, as Adaptive Cards is designed for general purpose. Thus, the accessibility experience is not great for CSAT cards. + +We are adding new attachment renderer for CSAT cards by leveraging https://schema.org/ReviewAction. + + + + + +## Design + +We are using https://schema.org/ReviewAction for the representation of the CSAT card. The following is excerpt of the activity containing the CSAT card. + +```json +{ + "type": "message", + "attachments": [ + { + "content": { + "@context": "https://schema.org", + "@type": "ReviewAction", + "actionStatus": "PotentialActionStatus", + "description": "Great! Please rate your experience.", + "resultReview": { + "@type": "Review", + "reviewRating": { + "@type": "Rating", + "ratingValue-input": { + "@type": "PropertyValueSpecification", + "valueName": "rate" + } + } + }, + "target": { + "@type": "EntryPoint", + "actionPlatform": "https://directline.botframework.com", + "urlTemplate": "ms-directline-postback:?value={rate}" + } + }, + "contentType": "application/ld+json" + } + ] +} +``` + +### Explanation of fields + +| Property | Description | +| ------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- | +| `content['@context']` | Must be `"https://schema.org"`. | +| `content['@type']` | Must be [`"ReviewAction"`](https://schema.org/ReviewAction). | +| `content.actionStatus` | If value is [`"CompletedActionStatus"`](https://schema.org/ActionStatusType), the card is submitted. Otherwise, the card is ready to submit. | +| `content.description` | Text of prompting the user for rating. | +| `content.resultReview['@type']` | Must be [`"Review"`](https://schema.org/Review). | +| `content.resultReview.reviewRating['@type']` | Must be [`"Rating"`](https://schema.org/Rating). | +| `content.resultReview.reviewRating.ratingValue` | Initial value of rating, must be `1` to `5` or `undefined`, default to `undefined`. | +| `content.resultReview.reviewRating['ratingValue-input']` | How `ratingValue` should be used as "input" parameters (a.k.a. request body). See https://schema.org/docs/actions.html for details. | +| `content.resultReview.reviewRating['ratingValue-input']['@type']` | Must be [`"PropertyValueSpecification"`](https://schema.org/PropertyValueSpecification). | +| `content.resultReview.reviewRating['ratingValue-input'].valueName` | The name used in URL template. | +| `content.target` | Must be URL or thing of `"EntryPoint"`. | +| `content.target['@type']` | Must be [`"EntryPoint"`](https://schema.org/EntryPoint). | +| `content.target.actionPlatform` | Must be `"https://directline.botframework.com"`. | +| `content.target.urlTemplate` | [RFC 6570 URL template](https://datatracker.ietf.org/doc/html/rfc6570) to send the action, see below. | +| `contentType` | Must be `"application/ld+json"`. | + +Current designs and limitations: + +- Subclasses are not supported. `resultReview` must be thing of [`"Review"`](https://schema.org/Review). [`"UserReview"`](https://schema.org/UserReview) and other subclass of `"Review"` is not supported +- Rating must be 1 to 5 stars. [`resultReview.reviewRating.bestRating`](https://schema.org/bestRating) and [`resultReview.reviewRating.worstRating`](https://schema.org/worstRating) are ignored +- If `actionStatus` is [`CompletedActionStatus`](https://schema.org/ActionStatusType), it indicates the review is submitted, thus, `target` is optional. Otherwise, review should be submittable and `target` must be specified +- Despite `target` could be a non-templated URL, it is highly recommended `target` is a thing of [`EntryPoint`](https://schema.org/EntryPoint) + +### Target URL + +> Currently, only `ratingValue-input` is supported. In the future, all fields in the Thing will be supported. + +When the user change the rating, it will change the `resultReview.reviewRating.ratingValue`. In Schema.org actions, the `ratingValue-input` will be used to describe how the `ratingValue` is used in the request body of the action. + +In the example payload, `ratingValue-input.valueName` is `rate`. When filling the `target.urlTemplate`, it will replace the variable `rate` with the user rating. + +If the user rated 4, the URL template will be expanded as by replacing variable `rate` with `4`: + +```diff +- ms-directline-postback:?value={rate} ++ ms-directline-postback:?value=4 +``` + +Thus, the postback activity payload will become: + +```json +{ + "channelData": { + "postBack": true + }, + "text": "4", + "type": "message" +} +``` + +> Note: when using postback for a string value, it will send via `text` field. + +Followings are supported protocol and their query parameters: + +| Protocol | Parameters | Description | +| ---------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| `ms-directline-postback:` | `value` | If `valuetype` is `application/json`, will send as JSON via `activity.value`, otherwise, will send as string via `activity.text`. | +| `ms-directline-postback:` | `valuetype` | If `value` is a complex object, specify "application/json". This is not recommended because non-compliance with Direct Line protocol. | +| `ms-directline-imback:` | `title` | Send as string via `activity.text`. | +| `ms-directline-imback:` | `value` | If `title` parameter is not specified, will send this value as `activity.text`. | +| `ms-directline-messageback:` | `value` | Send as complex object via `activity.value`. | +| `ms-directline-messageback:` | `text` | Send as string via `activity.text`. | +| `ms-directline-messageback:` | `displaytext` | String to display as in the sent message. | + +> `http:`/`https:` are not supported at the moment. + +> For details of parameters, please refer to [Direct Line Activity spec](https://github.com/Microsoft/botframework-sdk/blob/main/specs/botframework-activity/botframework-activity.md). diff --git a/jest.config.js b/jest.config.js index f0bed07004..b79bd440ce 100644 --- a/jest.config.js +++ b/jest.config.js @@ -106,7 +106,7 @@ module.exports = { // jest-environment-jsdom import packages as browser. // Packages, such as "uuid", export itself for browser as ES5 + ESM. // Since jest@28 cannot consume ESM yet, we need to transpile these packages. - '/node_modules/(?!(character-entities|decode-named-character-reference|micromark|micromark-core-commonmark|micromark-factory-destination|micromark-factory-label|micromark-factory-space|micromark-factory-title|micromark-factory-whitespace|micromark-util-resolve-all|micromark-util-character|micromark-util-chunked|micromark-util-classify-character|micromark-util-combine-extensions|micromark-util-decode-numeric-character-reference|micromark-util-decode-string|micromark-util-encode|micromark-util-html-tag-name|micromark-util-normalize-identifier|micromark-util-sanitize-uri|micromark-util-subtokenize|mdast-util-from-markdown|mdast-util-to-string|unist-util-stringify-position|uuid)/)', + '/node_modules/(?!(character-entities|decode-named-character-reference|micromark|micromark-core-commonmark|micromark-factory-destination|micromark-factory-label|micromark-factory-space|micromark-factory-title|micromark-factory-whitespace|micromark-util-resolve-all|micromark-util-character|micromark-util-chunked|micromark-util-classify-character|micromark-util-combine-extensions|micromark-util-decode-numeric-character-reference|micromark-util-decode-string|micromark-util-encode|micromark-util-html-tag-name|micromark-util-normalize-identifier|micromark-util-sanitize-uri|micromark-util-subtokenize|mdast-util-from-markdown|mdast-util-to-string|url-template|unist-util-stringify-position|uuid)/)', ...defaults.transformIgnorePatterns.filter(pattern => pattern !== '/node_modules/') ] }; diff --git a/packages/api/src/localization/en-US.json b/packages/api/src/localization/en-US.json index 940557559b..bbc73c06e2 100644 --- a/packages/api/src/localization/en-US.json +++ b/packages/api/src/localization/en-US.json @@ -66,6 +66,18 @@ "CONNECTIVITY_STATUS_ALT_SLOW_CONNECTION": "Taking longer than usual to connect.", "CONNECTIVITY_STATUS_ALT": "Connectivity Status: $1", "_CONNECTIVITY_STATUS_ALT.comment": "This is for screen reader. $1 will be one of \"CONNECTIVITY_STATUS_ALT_\"*.", + "CSAT_RATING_FEW_ALT": "$1 stars", + "_CSAT_RATING_FEW_ALT.comment": "This is for customer satisfactory UI which shows 5 stars for rating. $1 is the number of stars. This is for plural rule of \"few\".", + "CSAT_RATING_MANY_ALT": "$1 stars", + "_CSAT_RATING_MANY_ALT.comment": "This is for customer satisfactory UI which shows 5 stars for rating. $1 is the number of stars. This is for plural rule of \"many\".", + "CSAT_RATING_ONE_ALT": "$1 star", + "_CSAT_RATING_ONE_ALT.comment": "This is for customer satisfactory UI which shows 5 stars for rating. $1 is the number of stars. This is for plural rule of \"one\".", + "CSAT_RATING_OTHER_ALT": "$1 stars", + "_CSAT_RATING_OTHER_ALT.comment": "This is for customer satisfactory UI which shows 5 stars for rating. $1 is the number of stars. This is for plural rule of \"other\".", + "CSAT_RATING_TWO_ALT": "$1 stars", + "_CSAT_RATING_TWO_ALT.comment": "This is for customer satisfactory UI which shows 5 stars for rating. $1 is the number of stars. This is for plural rule of \"two\".", + "CSAT_SUBMIT_BUTTON_TEXT": "Submit", + "CSAT_SUBMITTED_TEXT": "Submitted", "FILE_CONTENT_ALT": "'$1'", "FILE_CONTENT_DOWNLOADABLE_ALT": "Download file '$1'", "FILE_CONTENT_DOWNLOADABLE_WITH_SIZE_ALT": "Download file '$1' of size $2", diff --git a/packages/api/src/localization/yue.json b/packages/api/src/localization/yue.json index 5e163c2a75..432986a12a 100644 --- a/packages/api/src/localization/yue.json +++ b/packages/api/src/localization/yue.json @@ -42,6 +42,13 @@ "CONNECTIVITY_STATUS_ALT_RENDER_ERROR": "Render 出事,請睇下 console 或者同 bot 開發人員聯絡。", "CONNECTIVITY_STATUS_ALT_SLOW_CONNECTION": "接駁嘅時間比平時長。", "CONNECTIVITY_STATUS_ALT": "接駁情況:$1", + "CSAT_RATING_FEW_ALT": "$1 粒星", + "CSAT_RATING_MANY_ALT": "$1 粒星", + "CSAT_RATING_ONE_ALT": "一粒星", + "CSAT_RATING_OTHER_ALT": "$1 粒星", + "CSAT_RATING_TWO_ALT": "兩粒星", + "CSAT_SUBMIT_BUTTON_TEXT": "遞交", + "CSAT_SUBMITTED_TEXT": "遞交咗", "FILE_CONTENT_ALT": "'$1'", "FILE_CONTENT_DOWNLOADABLE_ALT": "下載檔案 '$1'", "FILE_CONTENT_DOWNLOADABLE_WITH_SIZE_ALT": "下載檔案 '$1' 檔案大小 $2", diff --git a/packages/component/package-lock.json b/packages/component/package-lock.json index cee3a158b0..88d4f976c3 100644 --- a/packages/component/package-lock.json +++ b/packages/component/package-lock.json @@ -28,7 +28,10 @@ "react-scroll-to-bottom": "4.2.0", "redux": "4.2.1", "simple-update-in": "2.2.0", - "use-ref-from": "0.0.2" + "url-template": "3.1.0", + "use-ref-from": "0.0.2", + "use-state-with-ref": "0.0.1", + "valibot": "0.19.0" }, "devDependencies": { "@babel/cli": "^7.18.10", @@ -54,7 +57,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", - "devOptional": true, + "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.0" }, @@ -106,7 +109,7 @@ "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.1.tgz", "integrity": "sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg==", - "devOptional": true, + "dev": true, "engines": { "node": ">=6.9.0" } @@ -115,7 +118,7 @@ "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.1.tgz", "integrity": "sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw==", - "devOptional": true, + "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", @@ -145,7 +148,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "devOptional": true, + "dev": true, "bin": { "semver": "bin/semver.js" } @@ -154,7 +157,7 @@ "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz", "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/types": "^7.19.0", "@jridgewell/gen-mapping": "^0.3.2", @@ -193,7 +196,7 @@ "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz", "integrity": "sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/compat-data": "^7.19.1", "@babel/helper-validator-option": "^7.18.6", @@ -211,7 +214,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "devOptional": true, + "dev": true, "bin": { "semver": "bin/semver.js" } @@ -283,7 +286,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "devOptional": true, + "dev": true, "engines": { "node": ">=6.9.0" } @@ -304,7 +307,7 @@ "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/template": "^7.18.10", "@babel/types": "^7.19.0" @@ -317,7 +320,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/types": "^7.18.6" }, @@ -352,7 +355,7 @@ "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", @@ -426,7 +429,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/types": "^7.18.6" }, @@ -450,7 +453,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/types": "^7.18.6" }, @@ -478,7 +481,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "devOptional": true, + "dev": true, "engines": { "node": ">=6.9.0" } @@ -502,7 +505,7 @@ "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz", "integrity": "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/template": "^7.18.10", "@babel/traverse": "^7.19.0", @@ -529,7 +532,7 @@ "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz", "integrity": "sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==", - "devOptional": true, + "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -1814,7 +1817,7 @@ "version": "7.18.10", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", "@babel/parser": "^7.18.10", @@ -1828,7 +1831,7 @@ "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.1.tgz", "integrity": "sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", "@babel/generator": "^7.19.0", @@ -2028,7 +2031,7 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "devOptional": true, + "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -2042,7 +2045,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "devOptional": true, + "dev": true, "engines": { "node": ">=6.0.0" } @@ -2051,7 +2054,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "devOptional": true, + "dev": true, "engines": { "node": ">=6.0.0" } @@ -2060,13 +2063,13 @@ "version": "1.4.14", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "devOptional": true + "dev": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.17", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "devOptional": true, + "dev": true, "dependencies": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" @@ -2354,7 +2357,7 @@ "version": "4.21.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "devOptional": true, + "dev": true, "funding": [ { "type": "opencollective", @@ -2412,7 +2415,7 @@ "version": "1.0.30001412", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001412.tgz", "integrity": "sha512-+TeEIee1gS5bYOiuf+PS/kp2mrXic37Hl66VY6EAfxasIk5fELTktK2oOezYed12H8w7jt3s512PpulQidPjwA==", - "devOptional": true, + "dev": true, "funding": [ { "type": "opencollective", @@ -2669,9 +2672,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.27.2", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.27.2.tgz", - "integrity": "sha512-Cf2jqAbXgWH3VVzjyaaFkY1EBazxugUepGymDoeteyYr9ByX51kD2jdHZlsEF/xnJMyN3Prua7mQuzwMg6Zc9A==", + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.0.tgz", + "integrity": "sha512-FKSIDtJnds/YFIEaZ4HszRX7hkxGpNKM7FC9aJ9WLJbSd3lD4vOltFuVIBLR8asSx9frkTSqL0dw90SKQxgKrg==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -2806,7 +2809,7 @@ "version": "1.4.262", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.262.tgz", "integrity": "sha512-Ckn5haqmGh/xS8IbcgK3dnwAVnhDyo/WQnklWn6yaMucYTq7NNxwlGE8ElzEOnonzRLzUCo2Ot3vUb2GYUF2Hw==", - "devOptional": true + "dev": true }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -2837,7 +2840,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "devOptional": true, + "dev": true, "engines": { "node": ">=6" } @@ -2950,7 +2953,7 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "devOptional": true, + "dev": true, "engines": { "node": ">=6.9.0" } @@ -3024,7 +3027,7 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "devOptional": true, + "dev": true, "engines": { "node": ">=4" } @@ -3273,7 +3276,7 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "devOptional": true, + "dev": true, "bin": { "jsesc": "bin/jsesc" }, @@ -3290,7 +3293,7 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "devOptional": true, + "dev": true, "bin": { "json5": "lib/cli.js" }, @@ -3972,7 +3975,7 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "devOptional": true + "dev": true }, "node_modules/normalize-path": { "version": "3.0.0", @@ -4103,7 +4106,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "devOptional": true + "dev": true }, "node_modules/picomatch": { "version": "2.3.0", @@ -4137,18 +4140,6 @@ "react-is": "^16.13.1" } }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/react-dictate-button": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/react-dictate-button/-/react-dictate-button-2.0.1.tgz", @@ -4172,19 +4163,6 @@ "react-is": "^16.8.1" } }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" - } - }, "node_modules/react-film": { "version": "3.1.1-main.df870ea", "resolved": "https://registry.npmjs.org/react-film/-/react-film-3.1.1-main.df870ea.tgz", @@ -4496,15 +4474,6 @@ "tslib": "^2.1.0" } }, - "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0" - } - }, "node_modules/semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", @@ -4740,7 +4709,7 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz", "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==", - "devOptional": true, + "dev": true, "funding": [ { "type": "opencollective", @@ -4762,6 +4731,14 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/url-template": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/url-template/-/url-template-3.1.0.tgz", + "integrity": "sha512-vB/eHWttzhN+NZzk9FcQB2h1cSEgb7zDYyvyxPhw02LYw7YqIzO+w1AqkcKvZ51gPH8o4+nyiWve/xuQqMdJZw==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, "node_modules/use-ref-from": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/use-ref-from/-/use-ref-from-0.0.2.tgz", @@ -4785,6 +4762,36 @@ "node": ">=6.9.0" } }, + "node_modules/use-state-with-ref": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/use-state-with-ref/-/use-state-with-ref-0.0.1.tgz", + "integrity": "sha512-UsG2p/gnl+wk6dObF0iUNgm3bEByW4ZRFd3ptklKARUzFkMGIQjyAkJrlw99+zyfXtwk1PfVGHKSDsGZ0xpj+A==", + "dependencies": { + "@babel/runtime-corejs3": "^7.22.15", + "use-ref-from": "^0.0.2", + "use-state-with-ref": "^0.0.1" + }, + "peerDependencies": { + "react": ">=16.9.0" + } + }, + "node_modules/use-state-with-ref/node_modules/@babel/runtime-corejs3": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.23.2.tgz", + "integrity": "sha512-54cIh74Z1rp4oIjsHjqN+WM4fMyCBYe+LpZ9jWm51CZ1fbH3SkAzQD/3XLoNkjbJ7YEmjobLXyvQrFypRHOrXw==", + "dependencies": { + "core-js-pure": "^3.30.2", + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/use-state-with-ref/node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, "node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -4794,6 +4801,11 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/valibot": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/valibot/-/valibot-0.19.0.tgz", + "integrity": "sha512-vzeuctzVirzoiDN9BTc4GludHaSgFYoy6AnbHOjfBUbX0DibqKuNCr2Ti4ox8eLdBdDSEZSZ3LwXZgjL6aE4RQ==" + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -4930,7 +4942,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", - "devOptional": true, + "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.0" } @@ -4964,13 +4976,13 @@ "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.1.tgz", "integrity": "sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg==", - "devOptional": true + "dev": true }, "@babel/core": { "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.1.tgz", "integrity": "sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw==", - "devOptional": true, + "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", @@ -4993,7 +5005,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "devOptional": true + "dev": true } } }, @@ -5001,7 +5013,7 @@ "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz", "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==", - "devOptional": true, + "dev": true, "requires": { "@babel/types": "^7.19.0", "@jridgewell/gen-mapping": "^0.3.2", @@ -5031,7 +5043,7 @@ "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz", "integrity": "sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg==", - "devOptional": true, + "dev": true, "requires": { "@babel/compat-data": "^7.19.1", "@babel/helper-validator-option": "^7.18.6", @@ -5043,7 +5055,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "devOptional": true + "dev": true } } }, @@ -5098,7 +5110,7 @@ "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "devOptional": true + "dev": true }, "@babel/helper-explode-assignable-expression": { "version": "7.18.6", @@ -5113,7 +5125,7 @@ "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "devOptional": true, + "dev": true, "requires": { "@babel/template": "^7.18.10", "@babel/types": "^7.19.0" @@ -5123,7 +5135,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "devOptional": true, + "dev": true, "requires": { "@babel/types": "^7.18.6" } @@ -5149,7 +5161,7 @@ "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", - "devOptional": true, + "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", @@ -5205,7 +5217,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", - "devOptional": true, + "dev": true, "requires": { "@babel/types": "^7.18.6" } @@ -5223,7 +5235,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "devOptional": true, + "dev": true, "requires": { "@babel/types": "^7.18.6" } @@ -5242,7 +5254,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "devOptional": true + "dev": true }, "@babel/helper-wrap-function": { "version": "7.18.11", @@ -5260,7 +5272,7 @@ "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz", "integrity": "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==", - "devOptional": true, + "dev": true, "requires": { "@babel/template": "^7.18.10", "@babel/traverse": "^7.19.0", @@ -5281,7 +5293,7 @@ "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz", "integrity": "sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==", - "devOptional": true + "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.18.6", @@ -6141,7 +6153,7 @@ "version": "7.18.10", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "devOptional": true, + "dev": true, "requires": { "@babel/code-frame": "^7.18.6", "@babel/parser": "^7.18.10", @@ -6152,7 +6164,7 @@ "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.1.tgz", "integrity": "sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==", - "devOptional": true, + "dev": true, "requires": { "@babel/code-frame": "^7.18.6", "@babel/generator": "^7.19.0", @@ -6326,7 +6338,7 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "devOptional": true, + "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -6337,25 +6349,25 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "devOptional": true + "dev": true }, "@jridgewell/set-array": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "devOptional": true + "dev": true }, "@jridgewell/sourcemap-codec": { "version": "1.4.14", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "devOptional": true + "dev": true }, "@jridgewell/trace-mapping": { "version": "0.3.17", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "devOptional": true, + "dev": true, "requires": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" @@ -6597,7 +6609,7 @@ "version": "4.21.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "devOptional": true, + "dev": true, "requires": { "caniuse-lite": "^1.0.30001400", "electron-to-chromium": "^1.4.251", @@ -6630,7 +6642,7 @@ "version": "1.0.30001412", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001412.tgz", "integrity": "sha512-+TeEIee1gS5bYOiuf+PS/kp2mrXic37Hl66VY6EAfxasIk5fELTktK2oOezYed12H8w7jt3s512PpulQidPjwA==", - "devOptional": true + "dev": true }, "chalk": { "version": "2.4.2", @@ -6819,9 +6831,9 @@ } }, "core-js-pure": { - "version": "3.27.2", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.27.2.tgz", - "integrity": "sha512-Cf2jqAbXgWH3VVzjyaaFkY1EBazxugUepGymDoeteyYr9ByX51kD2jdHZlsEF/xnJMyN3Prua7mQuzwMg6Zc9A==" + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.0.tgz", + "integrity": "sha512-FKSIDtJnds/YFIEaZ4HszRX7hkxGpNKM7FC9aJ9WLJbSd3lD4vOltFuVIBLR8asSx9frkTSqL0dw90SKQxgKrg==" }, "cosmiconfig": { "version": "7.0.1", @@ -6913,7 +6925,7 @@ "version": "1.4.262", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.262.tgz", "integrity": "sha512-Ckn5haqmGh/xS8IbcgK3dnwAVnhDyo/WQnklWn6yaMucYTq7NNxwlGE8ElzEOnonzRLzUCo2Ot3vUb2GYUF2Hw==", - "devOptional": true + "dev": true }, "emoji-regex": { "version": "8.0.0", @@ -6938,7 +6950,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "devOptional": true + "dev": true }, "escape-string-regexp": { "version": "1.0.5", @@ -7019,7 +7031,7 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "devOptional": true + "dev": true }, "get-caller-file": { "version": "2.0.5", @@ -7072,7 +7084,7 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "devOptional": true + "dev": true }, "growly": { "version": "1.3.0", @@ -7259,7 +7271,7 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "devOptional": true + "dev": true }, "json-parse-even-better-errors": { "version": "2.3.1", @@ -7270,7 +7282,7 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "devOptional": true + "dev": true }, "lines-and-columns": { "version": "1.2.4", @@ -7694,7 +7706,7 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "devOptional": true + "dev": true }, "normalize-path": { "version": "3.0.0", @@ -7789,7 +7801,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "devOptional": true + "dev": true }, "picomatch": { "version": "2.3.0", @@ -7814,15 +7826,6 @@ "react-is": "^16.13.1" } }, - "react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0" - } - }, "react-dictate-button": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/react-dictate-button/-/react-dictate-button-2.0.1.tgz", @@ -7845,16 +7848,6 @@ } } }, - "react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - } - }, "react-film": { "version": "3.1.1-main.df870ea", "resolved": "https://registry.npmjs.org/react-film/-/react-film-3.1.1-main.df870ea.tgz", @@ -8107,15 +8100,6 @@ "tslib": "^2.1.0" } }, - "scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0" - } - }, "semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", @@ -8289,12 +8273,17 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz", "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==", - "devOptional": true, + "dev": true, "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" } }, + "url-template": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/url-template/-/url-template-3.1.0.tgz", + "integrity": "sha512-vB/eHWttzhN+NZzk9FcQB2h1cSEgb7zDYyvyxPhw02LYw7YqIzO+w1AqkcKvZ51gPH8o4+nyiWve/xuQqMdJZw==" + }, "use-ref-from": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/use-ref-from/-/use-ref-from-0.0.2.tgz", @@ -8314,12 +8303,43 @@ } } }, + "use-state-with-ref": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/use-state-with-ref/-/use-state-with-ref-0.0.1.tgz", + "integrity": "sha512-UsG2p/gnl+wk6dObF0iUNgm3bEByW4ZRFd3ptklKARUzFkMGIQjyAkJrlw99+zyfXtwk1PfVGHKSDsGZ0xpj+A==", + "requires": { + "@babel/runtime-corejs3": "^7.22.15", + "use-ref-from": "^0.0.2", + "use-state-with-ref": "^0.0.1" + }, + "dependencies": { + "@babel/runtime-corejs3": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.23.2.tgz", + "integrity": "sha512-54cIh74Z1rp4oIjsHjqN+WM4fMyCBYe+LpZ9jWm51CZ1fbH3SkAzQD/3XLoNkjbJ7YEmjobLXyvQrFypRHOrXw==", + "requires": { + "core-js-pure": "^3.30.2", + "regenerator-runtime": "^0.14.0" + } + }, + "regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + } + } + }, "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true }, + "valibot": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/valibot/-/valibot-0.19.0.tgz", + "integrity": "sha512-vzeuctzVirzoiDN9BTc4GludHaSgFYoy6AnbHOjfBUbX0DibqKuNCr2Ti4ox8eLdBdDSEZSZ3LwXZgjL6aE4RQ==" + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/packages/component/package.json b/packages/component/package.json index ba5ca903e7..4045c9b0d4 100644 --- a/packages/component/package.json +++ b/packages/component/package.json @@ -113,7 +113,10 @@ "react-scroll-to-bottom": "4.2.0", "redux": "4.2.1", "simple-update-in": "2.2.0", - "use-ref-from": "0.0.2" + "url-template": "3.1.0", + "use-ref-from": "0.0.2", + "use-state-with-ref": "0.0.1", + "valibot": "0.19.0" }, "peerDependencies": { "react": ">= 16.8.6", diff --git a/packages/component/src/ActivityStatus/OthersActivityStatus.tsx b/packages/component/src/ActivityStatus/OthersActivityStatus.tsx index ac76fb25ff..5b95f5079f 100644 --- a/packages/component/src/ActivityStatus/OthersActivityStatus.tsx +++ b/packages/component/src/ActivityStatus/OthersActivityStatus.tsx @@ -3,7 +3,7 @@ import classNames from 'classnames'; import React, { memo, type ReactNode, useMemo } from 'react'; import { isReplyAction, type ReplyAction } from '../types/external/OrgSchema/ReplyAction'; -import { isThing, type Thing } from '../types/external/OrgSchema/Thing'; +import { isThingAsEntity, type Thing } from '../types/external/OrgSchema/Thing'; import { isVoteAction, type VoteAction } from '../types/external/OrgSchema/VoteAction'; import { type TypeOfArray } from '../types/internal/TypeOfArray'; import Feedback from './private/Feedback/Feedback'; @@ -32,7 +32,7 @@ const OthersActivityStatus = memo(({ activity }: Props) => { const entities = activity.entities as Array{initialReviewAction.description}
+