diff --git a/CHANGELOG.md b/CHANGELOG.md
index aac2abdf34..3651380e7f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -134,7 +134,7 @@ Notes: web developers are advised to use [`~` (tilde range)](https://github.com/
- [`react-dictate-button@4.0.0`](https://npmjs.com/package/react-dictate-button)
- Enabled icon customization in Fluent theme through CSS variables, in PR [#5413](https://github.com/microsoft/BotFramework-WebChat/pull/5413), by [@OEvgeny](https://github.com/OEvgeny)
- Reworked, enabled in Web Chat, in PR [#5502](https://github.com/microsoft/BotFramework-WebChat/pull/5502), by [@OEvgeny](https://github.com/OEvgeny)
-- Bumped all dependencies to the latest versions, by [@compulim](https://github.com/compulim) in PR [#5427](https://github.com/microsoft/BotFramework-WebChat/pull/5427) and PR [#5529](https://github.com/microsoft/BotFramework-WebChat/pull/5529)
+- Bumped all dependencies to the latest versions, by [@compulim](https://github.com/compulim) in PR [#5427](https://github.com/microsoft/BotFramework-WebChat/pull/5427), PR [#5529](https://github.com/microsoft/BotFramework-WebChat/pull/5529), and PR [#5532](https://github.com/microsoft/BotFramework-WebChat/pull/5532)
- Production dependencies
- [`@babel/runtime@7.28.2`](https://npmjs.com/package/@babel/runtime/v/7.28.2)
- [`botframework-directlinejs@0.15.6`](https://npmjs.com/package/botframework-directlinejs/v/0.15.6)
@@ -151,6 +151,7 @@ Notes: web developers are advised to use [`~` (tilde range)](https://github.com/
- [`microsoft-cognitiveservices-speech-sdk@1.45.0`](https://npmjs.com/package/microsoft-cognitiveservices-speech-sdk/v/1.45.0)
- [`mime@4.0.7`](https://npmjs.com/package/mime/v/4.0.7)
- [`react-chain-of-responsibility@0.3.0`](https://npmjs.com/package/react-chain-of-responsibility/v/0.3.0)
+ - [`react-film@4.0.0`](https://npmjs.com/package/react-film/v/4.0.0)
- [`react-say@2.2.0`](https://npmjs.com/package/react-say/v/2.2.0)
- [`react-scroll-to-bottom@4.2.0`](https://npmjs.com/package/react-scroll-to-bottom/v/4.2.0)
- [`react-wrap-with@0.1.0`](https://npmjs.com/package/react-wrap-with/v/0.1.0)
diff --git a/package-lock.json b/package-lock.json
index 6dc9341048..1b7a19a811 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3501,6 +3501,54 @@
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
+ "node_modules/@msinternal/botframework-webchat-base": {
+ "resolved": "packages/base",
+ "link": true
+ },
+ "node_modules/@msinternal/botframework-webchat-cldr-data": {
+ "resolved": "packages/support/cldr-data",
+ "link": true
+ },
+ "node_modules/@msinternal/botframework-webchat-cldr-data-downloader": {
+ "resolved": "packages/support/cldr-data-downloader",
+ "link": true
+ },
+ "node_modules/@msinternal/botframework-webchat-react-valibot": {
+ "resolved": "packages/react-valibot",
+ "link": true
+ },
+ "node_modules/@msinternal/botframework-webchat-redux-store": {
+ "resolved": "packages/redux-store",
+ "link": true
+ },
+ "node_modules/@msinternal/botframework-webchat-styles": {
+ "resolved": "packages/styles",
+ "link": true
+ },
+ "node_modules/@msinternal/dev-server": {
+ "resolved": "packages/test/dev-server",
+ "link": true
+ },
+ "node_modules/@msinternal/isomorphic-react": {
+ "resolved": "packages/isomorphic-react",
+ "link": true
+ },
+ "node_modules/@msinternal/isomorphic-react-dom": {
+ "resolved": "packages/isomorphic-react-dom",
+ "link": true
+ },
+ "node_modules/@msinternal/test-harness": {
+ "resolved": "packages/test/harness",
+ "link": true
+ },
+ "node_modules/@msinternal/test-page-object": {
+ "resolved": "packages/test/page-object",
+ "link": true
+ },
+ "node_modules/@msinternal/test-web-server": {
+ "resolved": "packages/test/web-server",
+ "link": true
+ },
"node_modules/@nicolo-ribaudo/chokidar-2": {
"version": "2.1.8-no-fsevents.3",
"resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz",
@@ -4913,10 +4961,6 @@
"@xtuc/long": "4.2.2"
}
},
- "node_modules/@msinternal/dev-server": {
- "resolved": "packages/test/dev-server",
- "link": true
- },
"node_modules/@webpack-cli/configtest": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz",
@@ -5975,18 +6019,6 @@
"resolved": "packages/api",
"link": true
},
- "node_modules/@msinternal/botframework-webchat-base": {
- "resolved": "packages/base",
- "link": true
- },
- "node_modules/@msinternal/botframework-webchat-cldr-data": {
- "resolved": "packages/support/cldr-data",
- "link": true
- },
- "node_modules/@msinternal/botframework-webchat-cldr-data-downloader": {
- "resolved": "packages/support/cldr-data-downloader",
- "link": true
- },
"node_modules/botframework-webchat-component": {
"resolved": "packages/component",
"link": true
@@ -5999,18 +6031,6 @@
"resolved": "packages/fluent-theme",
"link": true
},
- "node_modules/@msinternal/botframework-webchat-react-valibot": {
- "resolved": "packages/react-valibot",
- "link": true
- },
- "node_modules/@msinternal/botframework-webchat-redux-store": {
- "resolved": "packages/redux-store",
- "link": true
- },
- "node_modules/@msinternal/botframework-webchat-styles": {
- "resolved": "packages/styles",
- "link": true
- },
"node_modules/boxen": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz",
@@ -7686,10 +7706,9 @@
}
},
"node_modules/domutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
- "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
- "license": "BSD-2-Clause",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
+ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
"dependencies": {
"dom-serializer": "^2.0.0",
"domelementtype": "^2.3.0",
@@ -10204,6 +10223,44 @@
"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
"license": "ISC"
},
+ "node_modules/html-dom-parser": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/html-dom-parser/-/html-dom-parser-5.1.1.tgz",
+ "integrity": "sha512-+o4Y4Z0CLuyemeccvGN4bAO20aauB2N9tFEAep5x4OW34kV4PTarBHm6RL02afYt2BMKcr0D2Agep8S3nJPIBg==",
+ "dependencies": {
+ "domhandler": "5.0.3",
+ "htmlparser2": "10.0.0"
+ }
+ },
+ "node_modules/html-dom-parser/node_modules/entities": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/html-dom-parser/node_modules/htmlparser2": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz",
+ "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==",
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.2.1",
+ "entities": "^6.0.0"
+ }
+ },
"node_modules/html-escaper": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
@@ -10211,6 +10268,26 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/html-react-parser": {
+ "version": "5.2.6",
+ "resolved": "https://registry.npmjs.org/html-react-parser/-/html-react-parser-5.2.6.tgz",
+ "integrity": "sha512-qcpPWLaSvqXi+TndiHbCa+z8qt0tVzjMwFGFBAa41ggC+ZA5BHaMIeMJla9g3VSp4SmiZb9qyQbmbpHYpIfPOg==",
+ "dependencies": {
+ "domhandler": "5.0.3",
+ "html-dom-parser": "5.1.1",
+ "react-property": "2.0.2",
+ "style-to-js": "1.1.17"
+ },
+ "peerDependencies": {
+ "@types/react": "0.14 || 15 || 16 || 17 || 18 || 19",
+ "react": "0.14 || 15 || 16 || 17 || 18 || 19"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
"node_modules/html-void-elements": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz",
@@ -10572,6 +10649,11 @@
"inject-meta-tag": "^0.0.1"
}
},
+ "node_modules/inline-style-parser": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz",
+ "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q=="
+ },
"node_modules/internal-slot": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz",
@@ -11198,14 +11280,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/@msinternal/isomorphic-react": {
- "resolved": "packages/isomorphic-react",
- "link": true
- },
- "node_modules/@msinternal/isomorphic-react-dom": {
- "resolved": "packages/isomorphic-react-dom",
- "link": true
- },
"node_modules/istanbul-lib-coverage": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
@@ -15802,78 +15876,34 @@
}
},
"node_modules/react-film": {
- "version": "3.1.1-main.f623bf6",
- "resolved": "https://registry.npmjs.org/react-film/-/react-film-3.1.1-main.f623bf6.tgz",
- "integrity": "sha512-SyEq1folPpiwuWpQI++MQDIVvMidHbFX2QB3ZRtbmFPLAttcchNFpnWJRjdp5fllglBnUdXgiv9B1yU/S3hxIQ==",
- "dependencies": {
- "@babel/runtime-corejs3": "7.20.13",
- "@emotion/css": "11.10.6",
- "classnames": "2.3.2",
- "core-js": "3.28.0",
- "math-random": "2.0.1",
- "memoize-one": "6.0.0",
- "prop-types": "15.8.1"
- },
- "peerDependencies": {
- "react": ">= 16.8.6",
- "react-dom": ">= 16.8.6"
- }
- },
- "node_modules/react-film/node_modules/@babel/runtime-corejs3": {
- "version": "7.20.13",
- "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.13.tgz",
- "integrity": "sha512-p39/6rmY9uvlzRiLZBIB3G9/EBr66LBMcYm7fIDeSBNdRjF2AGD3rFZucUyAgGHC2N+7DdLvVi33uTjSE44FIw==",
- "license": "MIT",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/react-film/-/react-film-4.0.0.tgz",
+ "integrity": "sha512-KHhHA+155CBwSq1REa4f9c+68PZUQdISo25JCEnk/2/TuzO+c/feT95usxwO50MCcWyatWefa8chdu0jYIS3WQ==",
"dependencies": {
- "core-js-pure": "^3.25.1",
- "regenerator-runtime": "^0.13.11"
+ "@emotion/css": "^11.13.5",
+ "classnames": "^2.5.1",
+ "html-react-parser": "^5.2.6",
+ "math-random": "^2.0.1",
+ "memoize-one": "^6.0.0",
+ "prop-types": "^15.8.1",
+ "react-film": "^4.0.0"
},
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/react-film/node_modules/@emotion/css": {
- "version": "11.10.6",
- "resolved": "https://registry.npmjs.org/@emotion/css/-/css-11.10.6.tgz",
- "integrity": "sha512-88Sr+3heKAKpj9PCqq5A1hAmAkoSIvwEq1O2TwDij7fUtsJpdkV4jMTISSTouFeRvsGvXIpuSuDQ4C1YdfNGXw==",
- "license": "MIT",
- "dependencies": {
- "@emotion/babel-plugin": "^11.10.6",
- "@emotion/cache": "^11.10.5",
- "@emotion/serialize": "^1.1.1",
- "@emotion/sheet": "^1.2.1",
- "@emotion/utils": "^1.2.0"
- }
- },
- "node_modules/react-film/node_modules/classnames": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
- "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==",
- "license": "MIT"
- },
- "node_modules/react-film/node_modules/core-js": {
- "version": "3.28.0",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.28.0.tgz",
- "integrity": "sha512-GiZn9D4Z/rSYvTeg1ljAIsEqFm0LaN9gVtwDCrKL80zHtS31p9BAjmTxVqTQDMpwlMolJZOFntUG2uwyj7DAqw==",
- "hasInstallScript": true,
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/core-js"
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
}
},
- "node_modules/react-film/node_modules/regenerator-runtime": {
- "version": "0.13.11",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
- "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
- "license": "MIT"
- },
"node_modules/react-is": {
"version": "17.0.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
"license": "MIT"
},
+ "node_modules/react-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/react-property/-/react-property-2.0.2.tgz",
+ "integrity": "sha512-+PbtI3VuDV0l6CleQMsx2gtK0JZbZKbpdu5ynr+lbsuvtmgbNcS3VM0tuY2QjFNOcWxvXeHjDpy42RO+4U2rug=="
+ },
"node_modules/react-redux": {
"version": "7.2.9",
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz",
@@ -17917,6 +17947,22 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/style-to-js": {
+ "version": "1.1.17",
+ "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.17.tgz",
+ "integrity": "sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==",
+ "dependencies": {
+ "style-to-object": "1.0.9"
+ }
+ },
+ "node_modules/style-to-object": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.9.tgz",
+ "integrity": "sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==",
+ "dependencies": {
+ "inline-style-parser": "0.2.4"
+ }
+ },
"node_modules/stylis": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz",
@@ -18289,18 +18335,6 @@
"node": "*"
}
},
- "node_modules/@msinternal/test-harness": {
- "resolved": "packages/test/harness",
- "link": true
- },
- "node_modules/@msinternal/test-page-object": {
- "resolved": "packages/test/page-object",
- "link": true
- },
- "node_modules/@msinternal/test-web-server": {
- "resolved": "packages/test/web-server",
- "link": true
- },
"node_modules/text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
@@ -20566,7 +20600,7 @@
"punycode": "2.3.1",
"react-chain-of-responsibility": "0.3.0",
"react-dictate-button": "4.0.0",
- "react-film": "3.1.1-main.f623bf6",
+ "react-film": "4.0.0",
"react-redux": "7.2.9",
"react-say": "2.2.0",
"react-scroll-to-bottom": "4.2.1-main.53844f5",
@@ -20793,6 +20827,7 @@
}
},
"packages/isomorphic-react": {
+ "name": "@msinternal/isomorphic-react",
"version": "0.0.0-0",
"license": "MIT",
"devDependencies": {
@@ -20804,6 +20839,7 @@
}
},
"packages/isomorphic-react-dom": {
+ "name": "@msinternal/isomorphic-react-dom",
"version": "0.0.0-0",
"license": "MIT",
"devDependencies": {
diff --git a/packages/component/package.json b/packages/component/package.json
index 31ac04c528..010f28201a 100644
--- a/packages/component/package.json
+++ b/packages/component/package.json
@@ -88,10 +88,6 @@
"13",
"markdown-it@14.1.0 has module field and it is breaking Webpack 4 because cross loading CJS and ESM"
],
- "react-film": [
- "3.1.1-main.f623bf6",
- "TEMPORARY: Use a custom version to verify build"
- ],
"react-redux": [
"7"
],
@@ -141,7 +137,7 @@
"punycode": "2.3.1",
"react-chain-of-responsibility": "0.3.0",
"react-dictate-button": "4.0.0",
- "react-film": "3.1.1-main.f623bf6",
+ "react-film": "4.0.0",
"react-redux": "7.2.9",
"react-say": "2.2.0",
"react-scroll-to-bottom": "4.2.1-main.53844f5",
diff --git a/packages/component/src/SendBox/SuggestedActions.tsx b/packages/component/src/SendBox/SuggestedActions.tsx
index 1cdbef6b99..2af00d1007 100644
--- a/packages/component/src/SendBox/SuggestedActions.tsx
+++ b/packages/component/src/SendBox/SuggestedActions.tsx
@@ -4,13 +4,12 @@ import { hooks } from 'botframework-webchat-api';
import classNames from 'classnames';
import PropTypes from 'prop-types';
import React, { useCallback, useMemo, useRef } from 'react';
-// eslint-disable-next-line import/no-named-as-default
-import BasicFilm, { createBasicStyleSet as createBasicStyleSetForReactFilm } from 'react-film';
+import { createBasicStyleSet as createBasicStyleSetForReactFilm, ReactFilm } from 'react-film';
import computeSuggestedActionText from '../Utils/computeSuggestedActionText';
+import { useStyleToEmotionObject } from '../hooks/internal/styleToEmotionObject';
import useFocusWithin from '../hooks/internal/useFocusWithin';
import useNonce from '../hooks/internal/useNonce';
-import { useStyleToEmotionObject } from '../hooks/internal/styleToEmotionObject';
import useFocus from '../hooks/useFocus';
import useStyleSet from '../hooks/useStyleSet';
import RovingTabIndexComposer from '../providers/RovingTabIndex/RovingTabIndexComposer';
@@ -89,7 +88,7 @@ const SuggestedActionCarouselContainer = ({ children, className, label }) => {
role="toolbar"
>
{!!children && !!React.Children.count(children) && (
-