From 558a7d6f22fad0373da8ab66a1a10f90e553ad8d Mon Sep 17 00:00:00 2001 From: Eugene Date: Fri, 25 Oct 2024 18:08:08 -0700 Subject: [PATCH] feat: add view code dialog (#5335) * feat: add view code dialog * Changelog and snaps * Fix failing * Fix wording * Update packages/component/src/Attachment/Text/private/CodeContent.tsx Co-authored-by: William Wong * Apply suggestions * Sort * Sort * Sort * Sort --------- Co-authored-by: William Wong --- CHANGELOG.md | 1 + __tests__/html/copyButton.hideAndShow.html | 6 + __tests__/html2/activity/viewCodeButton.html | 140 ++++++++ .../activity/viewCodeButton.html.snap-1.png | Bin 0 -> 43614 bytes .../activity/viewCodeButton.html.snap-2.png | Bin 0 -> 54031 bytes .../activity/viewCodeButton.html.snap-3.png | Bin 0 -> 43650 bytes package-lock.json | 338 +++++++++++++++++- packages/api/src/localization/en-US.json | 4 + packages/component/package.json | 1 + .../Text/private/ActivityViewCodeButton.tsx | 60 ++++ .../Attachment/Text/private/CodeContent.tsx | 65 ++++ .../Text/private/MarkdownTextContent.tsx | 28 +- .../private/isBasedOnSoftwareSourceCode.ts | 18 + .../src/Attachment/Text/private/shiki.ts | 25 ++ .../src/Styles/StyleSet/TextContent.ts | 10 +- .../src/Styles/StyleSet/ViewCodeDialog.ts | 56 +++ .../component/src/Styles/createStyleSet.ts | 4 +- packages/component/src/testIds.ts | 3 +- .../types/external/OrgSchema/CreativeWork.ts | 6 + 19 files changed, 753 insertions(+), 12 deletions(-) create mode 100644 __tests__/html2/activity/viewCodeButton.html create mode 100644 __tests__/html2/activity/viewCodeButton.html.snap-1.png create mode 100644 __tests__/html2/activity/viewCodeButton.html.snap-2.png create mode 100644 __tests__/html2/activity/viewCodeButton.html.snap-3.png create mode 100644 packages/component/src/Attachment/Text/private/ActivityViewCodeButton.tsx create mode 100644 packages/component/src/Attachment/Text/private/CodeContent.tsx create mode 100644 packages/component/src/Attachment/Text/private/isBasedOnSoftwareSourceCode.ts create mode 100644 packages/component/src/Attachment/Text/private/shiki.ts create mode 100644 packages/component/src/Styles/StyleSet/ViewCodeDialog.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 24c1bb22ff..fa95cf84d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -61,6 +61,7 @@ Notes: web developers are advised to use [`~` (tilde range)](https://github.com/ - Added `styleOptions.bubbleAttachmentMaxWidth`/`bubbleAttachmentMinWidth` and `styleOptions.bubbleMessageMaxWidth`/`bubbleMessageMinWidth`, in PR [#5321](https://github.com/microsoft/BotFramework-WebChat/pull/5321), by [@compulim](https://github.com/compulim) - (Experimental) Added more CSS variables support, in PR [#5321](https://github.com/microsoft/BotFramework-WebChat/pull/5321), by [@compulim](https://github.com/compulim) - Added MathML/TeX block support in Markdown via [`micromark-extension-math`](https://npmjs.com/package/micromark-extension-math) and [`katex`](https://katex.org/), in PR [#5332](https://github.com/microsoft/BotFramework-WebChat/pull/5332), by [@compulim](https://github.com/compulim) +- Added code viewer dialog with syntax highlighting, in PR [#5335](https://github.com/microsoft/BotFramework-WebChat/pull/5335), by [@OEvgeny](https://github.com/OEvgeny) ### Changed diff --git a/__tests__/html/copyButton.hideAndShow.html b/__tests__/html/copyButton.hideAndShow.html index c39052b75a..f66d3623f5 100644 --- a/__tests__/html/copyButton.hideAndShow.html +++ b/__tests__/html/copyButton.hideAndShow.html @@ -53,6 +53,12 @@ await pageConditions.numActivitiesShown(1); + await pageConditions.became( + 'copy button is available', + () => !!document.querySelector(`[data-testid="${WebChat.testIds.copyButton}"]`), + 1000 + ); + // WHEN: Focus on the "Copy" button via keyboard. await host.click(document.querySelector(`[data-testid="${WebChat.testIds.copyButton}"]`)); diff --git a/__tests__/html2/activity/viewCodeButton.html b/__tests__/html2/activity/viewCodeButton.html new file mode 100644 index 0000000000..a680798c5e --- /dev/null +++ b/__tests__/html2/activity/viewCodeButton.html @@ -0,0 +1,140 @@ + + + + + + + + + + + + +
+ + + diff --git a/__tests__/html2/activity/viewCodeButton.html.snap-1.png b/__tests__/html2/activity/viewCodeButton.html.snap-1.png new file mode 100644 index 0000000000000000000000000000000000000000..8550f94e7947b0282b3929dc5b9e9e1324bd66b4 GIT binary patch literal 43614 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 !4# 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 z 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 a>aIl#bJ0b&MjH|ENA!)PaE{=YZ~qJ9vBAs$ literal 0 HcmV?d00001 diff --git a/__tests__/html2/activity/viewCodeButton.html.snap-3.png b/__tests__/html2/activity/viewCodeButton.html.snap-3.png new file mode 100644 index 0000000000000000000000000000000000000000..f1d71eae6ec0bd66fd463e89e6ed2e2f9763d053 GIT binary patch literal 43650 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 !4# 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 0.8" } }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/commander": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", @@ -11503,6 +11602,42 @@ "node": ">= 0.4" } }, + "node_modules/hast-util-to-html": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.3.tgz", + "integrity": "sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/heimdalljs": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/heimdalljs/-/heimdalljs-0.2.6.tgz", @@ -11571,6 +11706,16 @@ "dev": true, "license": "MIT" }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/htmlparser2": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", @@ -15988,6 +16133,27 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdast-util-to-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", @@ -17662,6 +17828,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/oniguruma-to-js": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/oniguruma-to-js/-/oniguruma-to-js-0.4.3.tgz", + "integrity": "sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==", + "license": "MIT", + "dependencies": { + "regex": "^4.3.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -18303,6 +18481,16 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "license": "MIT" }, + "node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -19168,6 +19356,12 @@ "@babel/runtime": "^7.8.4" } }, + "node_modules/regex": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/regex/-/regex-4.3.3.tgz", + "integrity": "sha512-r/AadFO7owAq1QJVeZ/nq9jNS1vyZt+6t1p/E59B56Rn2GCya+gr1KSyOzNL/er+r+B7phv5jG2xU2Nz1YkmJg==", + "license": "MIT" + }, "node_modules/regexp-tree": { "version": "0.1.27", "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", @@ -20260,6 +20454,20 @@ "dev": true, "license": "MIT" }, + "node_modules/shiki": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.22.1.tgz", + "integrity": "sha512-PbJ6XxrWLMwB2rm3qdjIHNm3zq4SfFnOx0B3rEoi4AN8AUngsdyZ1tRe5slMPtn6jQkbUURLNZPpLR7Do3k78g==", + "license": "MIT", + "dependencies": { + "@shikijs/core": "1.22.1", + "@shikijs/engine-javascript": "1.22.1", + "@shikijs/engine-oniguruma": "1.22.1", + "@shikijs/types": "1.22.1", + "@shikijs/vscode-textmate": "^9.3.0", + "@types/hast": "^3.0.4" + } + }, "node_modules/side-channel": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", @@ -20433,6 +20641,16 @@ "source-map": "^0.6.0" } }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/spawn-command": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", @@ -20780,6 +20998,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -21502,6 +21734,16 @@ "tree-kill": "cli.js" } }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/trim-newlines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", @@ -22753,6 +22995,32 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/unist-util-stringify-position": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", @@ -22766,6 +23034,35 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/universalify": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", @@ -23003,6 +23300,34 @@ "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", "license": "MIT" }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -23907,6 +24232,16 @@ "license": "MIT", "peer": true }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "packages/api": { "name": "botframework-webchat-api", "version": "0.0.0-0", @@ -24189,6 +24524,7 @@ "react-say": "2.1.0", "react-scroll-to-bottom": "4.2.1-main.53844f5", "redux": "5.0.1", + "shiki": "^1.22.1", "simple-update-in": "2.2.0", "use-propagate": "^0.2.0-main.fb24772", "use-ref-from": "0.1.0", diff --git a/packages/api/src/localization/en-US.json b/packages/api/src/localization/en-US.json index a88c141f9e..8b5fd1ffd5 100644 --- a/packages/api/src/localization/en-US.json +++ b/packages/api/src/localization/en-US.json @@ -10,7 +10,10 @@ "_ACTIVITY_YOU_SAID_ALT.comment": "This is for screen reader only.", "ACTIVITY_BOT_ATTACHED_ALT": "Bot attached:", "_ACTIVITY_BOT_ATTACHED_ALT.comment": "This is for screen reader and is narrated before each attachments sent by the bot.", + "ACTIVITY_CODE_ALT": "Code sample: $1", + "_ACTIVITY_CODE_ALT.comment": "This is for screen reader code sample dialog label, $1 is the dialog title.", "ACTIVITY_CONTENT_CAUTION": "AI-generated content may be incorrect", + "ACTIVITY_CODE_CAUTION": "AI-generated code. Review and use carefully", "ACTIVITY_ERROR_BOX_TITLE": "Error message", "ACTIVITY_INTERACTIVE_FOOTNOTE_ALT": "Click to interact.", "_ACTIVITY_INTERACTIVE_FOOTNOTE_ALT.comment": "This is for screen reader. When the user is navigating to this message which is either contains interactive elements, contains links, or failed to send (with a retry button), it will give this hint.", @@ -168,6 +171,7 @@ "TYPING_INDICATOR_SINGLE_TEXT": "$1 is typing.", "_TYPING_INDICATOR_MULTIPLE_TEXT.comment": "This shows when two or more users are typing simultaneously.", "TYPING_INDICATOR_MULTIPLE_TEXT": "$1 and others are typing.", + "VIEW_CODE_BUTTON_TEXT": "Code", "VOTE_DISLIKE_ALT": "Dislike", "_VOTE_DISLIKE_ALT.comment": "This is for screen reader. The label of a button with a thumb up icon and is placed next to the timestamp. The button is for giving feedback that the end-user don't think the response is useful.", "VOTE_LIKE_ALT": "Like", diff --git a/packages/component/package.json b/packages/component/package.json index a7282db9a5..3d000c8c5e 100644 --- a/packages/component/package.json +++ b/packages/component/package.json @@ -158,6 +158,7 @@ "react-say": "2.1.0", "react-scroll-to-bottom": "4.2.1-main.53844f5", "redux": "5.0.1", + "shiki": "^1.22.1", "simple-update-in": "2.2.0", "use-propagate": "^0.2.0-main.fb24772", "use-ref-from": "0.1.0", diff --git a/packages/component/src/Attachment/Text/private/ActivityViewCodeButton.tsx b/packages/component/src/Attachment/Text/private/ActivityViewCodeButton.tsx new file mode 100644 index 0000000000..6d6efd09c7 --- /dev/null +++ b/packages/component/src/Attachment/Text/private/ActivityViewCodeButton.tsx @@ -0,0 +1,60 @@ +import { hooks } from 'botframework-webchat-api'; +import classNames from 'classnames'; +import React, { memo, useCallback } from 'react'; + +import useStyleSet from '../../../hooks/useStyleSet'; +import useShowModal from '../../../providers/ModalDialog/useShowModal'; +import LocalizedString from '../../../Utils/LocalizedString'; +import ActivityButton from './ActivityButton'; +import CodeContent from './CodeContent'; + +const CODE_ICON_URL = `data:image/svg+xml;utf8,${encodeURIComponent('')}`; + +const { useLocalizer } = hooks; + +type Props = Readonly<{ + className?: string | undefined; + code: string; + language?: string | undefined; + isAIGenerated: boolean; + title: string; +}>; + +const ViewCodeButton = ({ className, code, language, title = '', isAIGenerated = false }: Props) => { + const [{ activityButton, viewCodeDialog }] = useStyleSet(); + const showModal = useShowModal(); + const localize = useLocalizer(); + + const showCodeModal = useCallback(() => { + showModal( + () => ( + + {isAIGenerated && ( +
+ +
+ )} +
+ ), + { + className: classNames('webchat__view-code-dialog', viewCodeDialog), + 'aria-label': localize('ACTIVITY_CODE_ALT', title ?? '') + } + ); + }, [code, isAIGenerated, language, localize, showModal, title, viewCodeDialog]); + + return ( + + ); +}; + +export default memo(ViewCodeButton); diff --git a/packages/component/src/Attachment/Text/private/CodeContent.tsx b/packages/component/src/Attachment/Text/private/CodeContent.tsx new file mode 100644 index 0000000000..7eaeccb64c --- /dev/null +++ b/packages/component/src/Attachment/Text/private/CodeContent.tsx @@ -0,0 +1,65 @@ +import React, { Fragment, memo, ReactNode, useEffect, useState } from 'react'; +import classNames from 'classnames'; +import createHighlighter from './shiki'; + +type Props = Readonly<{ + children?: ReactNode | undefined; + className?: string | undefined; + code: string; + language?: string | undefined; + title: string; +}>; + +const highlighterPromise = createHighlighter(); + +const CodeContent = memo(({ children, className, code, language, title }: Props) => { + const [highlightedCode, setHighlightedCode] = useState(''); + + useEffect(() => { + let mounted = true; + (async function highlight() { + const highlighter = await highlighterPromise; + if (!mounted) { + return; + } + try { + const html = highlighter.codeToHtml(code, { + lang: language, + theme: 'github-light-default' + }); + + setHighlightedCode(html); + } catch (error) { + console.error('botframework-webchat: Failed to highlight code:', error); + + const pre = document.createElement('pre'); + pre.textContent = code; + + setHighlightedCode(pre.outerHTML); + } + })(); + + return () => { + mounted = false; + }; + }, [code, language]); + + return ( + +
+

{title}

+ {/* */} +
+
+ {children} + + ); +}); + +CodeContent.displayName = 'CodeContent'; + +export default memo(CodeContent); diff --git a/packages/component/src/Attachment/Text/private/MarkdownTextContent.tsx b/packages/component/src/Attachment/Text/private/MarkdownTextContent.tsx index c3b702cd44..e08c98b16f 100644 --- a/packages/component/src/Attachment/Text/private/MarkdownTextContent.tsx +++ b/packages/component/src/Attachment/Text/private/MarkdownTextContent.tsx @@ -19,8 +19,11 @@ import useStyleSet from '../../../hooks/useStyleSet'; import useShowModal from '../../../providers/ModalDialog/useShowModal'; import { type PropsOf } from '../../../types/PropsOf'; import ActivityCopyButton from './ActivityCopyButton'; +import ActivityViewCodeButton from './ActivityViewCodeButton'; import CitationModalContext from './CitationModalContent'; import MessageSensitivityLabel, { type MessageSensitivityLabelProps } from './MessageSensitivityLabel'; +import isAIGeneratedActivity from './isAIGeneratedActivity'; +import isBasedOnSoftwareSourceCode from './isBasedOnSoftwareSourceCode'; import isHTMLButtonElement from './isHTMLButtonElement'; const { useLocalizer } = hooks; @@ -232,13 +235,24 @@ const MarkdownTextContent = memo(({ activity, children, markdown }: Props) => { ))} )} - {activity.type === 'message' && activity.text && messageThing?.keywords?.includes('AllowCopy') ? ( - - ) : null} +
+ {activity.type === 'message' && isBasedOnSoftwareSourceCode(messageThing) ? ( + + ) : null} + {activity.type === 'message' && activity.text && messageThing?.keywords?.includes('AllowCopy') ? ( + + ) : null} +
); }); diff --git a/packages/component/src/Attachment/Text/private/isBasedOnSoftwareSourceCode.ts b/packages/component/src/Attachment/Text/private/isBasedOnSoftwareSourceCode.ts new file mode 100644 index 0000000000..37f192caa8 --- /dev/null +++ b/packages/component/src/Attachment/Text/private/isBasedOnSoftwareSourceCode.ts @@ -0,0 +1,18 @@ +import { type OrgSchemaCreativeWork } from 'botframework-webchat-core'; + +/** + * Type guard to check if the isBasedOn field is of type SoftwareSourceCode + * @param messageEntity The message entity to check + * @returns True if isBasedOn is of type SoftwareSourceCode, false otherwise + */ +export default function isBasedOnSoftwareSourceCode( + messageEntity?: OrgSchemaCreativeWork +): messageEntity is OrgSchemaCreativeWork & { isBasedOn: SoftwareSourceCode } { + return messageEntity?.isBasedOn?.['@type'] === 'SoftwareSourceCode'; +} + +interface SoftwareSourceCode { + '@type': 'SoftwareSourceCode'; + programmingLanguage: string; + text: string; +} diff --git a/packages/component/src/Attachment/Text/private/shiki.ts b/packages/component/src/Attachment/Text/private/shiki.ts new file mode 100644 index 0000000000..5a083989a5 --- /dev/null +++ b/packages/component/src/Attachment/Text/private/shiki.ts @@ -0,0 +1,25 @@ +// `shiki/core` entry does not include any themes or languages or the wasm binary. +import { createHighlighterCore } from 'shiki/core'; +import { createJavaScriptRegexEngine } from 'shiki/engine-javascript.mjs'; + +// directly import the theme and language modules, only the ones you imported will be bundled. +import themeGitHubDark from 'shiki/themes/github-dark-default.mjs'; +import themeGitHubLight from 'shiki/themes/github-light-default.mjs'; + +import languageJavaScript from 'shiki/langs/js.mjs'; +import languagePython from 'shiki/langs/py.mjs'; +import languageTypeScript from 'shiki/langs/ts.mjs'; + +function createHighlighter() { + return createHighlighterCore({ + themes: [ + // instead of strings, you need to pass the imported module + themeGitHubDark, + themeGitHubLight + ], + langs: [languageJavaScript, languagePython, languageTypeScript], + engine: createJavaScriptRegexEngine() + }); +} + +export default createHighlighter; diff --git a/packages/component/src/Styles/StyleSet/TextContent.ts b/packages/component/src/Styles/StyleSet/TextContent.ts index 6985804c85..3322ecb340 100644 --- a/packages/component/src/Styles/StyleSet/TextContent.ts +++ b/packages/component/src/Styles/StyleSet/TextContent.ts @@ -28,8 +28,14 @@ export default function createTextContentStyle() { height: '.75em' }, - '& .webchat__text-content__activity-copy-button': { - alignSelf: 'flex-start' + '& .webchat__text-content__activity-actions': { + alignSelf: 'flex-start', + display: 'flex', + gap: `calc(${CSSTokens.PaddingRegular} / 2)` + }, + + '& .webchat__text-content__activity-actions:empty': { + display: 'none' } } }; diff --git a/packages/component/src/Styles/StyleSet/ViewCodeDialog.ts b/packages/component/src/Styles/StyleSet/ViewCodeDialog.ts new file mode 100644 index 0000000000..4846c3ca28 --- /dev/null +++ b/packages/component/src/Styles/StyleSet/ViewCodeDialog.ts @@ -0,0 +1,56 @@ +import CSSTokens from '../CSSTokens'; + +export default function createViewCodeDialogStyle() { + return { + '&.webchat__view-code-dialog': { + boxSizing: 'border-box', + display: 'grid', + height: '100%', + margin: 0, + maxHeight: '100vh', + overflow: 'hidden', + padding: '1rem', + placeItems: 'center', + + '& .webchat__modal-dialog__box': { + display: 'flex', + flexDirection: 'column', + maxHeight: '100%', + maxWidth: '100%', + position: 'relative' + }, + + '& .webchat__modal-dialog__close-button-layout': { + position: 'absolute', + right: 0 + }, + + '& .webchat__modal-dialog__body': { + display: 'flex', + flexDirection: 'column', + overflow: 'hidden', + gap: CSSTokens.PaddingRegular + }, + + '& .webchat__view-code-dialog__header': { + display: 'flex', + paddingInlineEnd: '30px' + }, + + '& .webchat__view-code-dialog__title': { + margin: '0 auto 0 0', + textTransform: 'capitalize' + }, + + '& .webchat__view-code-dialog__body': { + lineHeight: '20px', + overflow: 'auto' + }, + + '& .webchat__view-code-dialog__footer': { + color: CSSTokens.ColorSubtle, + lineHeight: '20px' + } + } + }; +} diff --git a/packages/component/src/Styles/createStyleSet.ts b/packages/component/src/Styles/createStyleSet.ts index b6d812c888..09bd7dab8a 100644 --- a/packages/component/src/Styles/createStyleSet.ts +++ b/packages/component/src/Styles/createStyleSet.ts @@ -45,6 +45,7 @@ import createTypingIndicatorStyle from './StyleSet/TypingIndicator'; import createUploadButtonStyle from './StyleSet/UploadButton'; import createVideoAttachmentStyle from './StyleSet/VideoAttachment'; import createVideoContentStyle from './StyleSet/VideoContent'; +import createViewCodeDialogStyle from './StyleSet/ViewCodeDialog'; import createVimeoContentStyle from './StyleSet/VimeoContent'; import createWarningNotificationStyle from './StyleSet/WarningNotification'; import createYouTubeContentStyle from './StyleSet/YouTubeContent'; @@ -108,6 +109,7 @@ export default function createStyleSet(styleOptions: StyleOptions) { sendStatus: createSendStatusStyle(), slottedActivityStatus: createSlottedActivityStatusStyle(), textContent: createTextContentStyle(), - thumbButton: createThumbButtonStyle() + thumbButton: createThumbButtonStyle(), + viewCodeDialog: createViewCodeDialogStyle() } as const); } diff --git a/packages/component/src/testIds.ts b/packages/component/src/testIds.ts index 243a383523..86d87fb503 100644 --- a/packages/component/src/testIds.ts +++ b/packages/component/src/testIds.ts @@ -1,6 +1,7 @@ const testIds = { copyButton: 'copy button', - sendBoxTextBox: 'send box text area' + sendBoxTextBox: 'send box text area', + viewCodeButton: 'view code button' }; export default testIds; diff --git a/packages/core/src/types/external/OrgSchema/CreativeWork.ts b/packages/core/src/types/external/OrgSchema/CreativeWork.ts index 13e957016f..f5f1cc0d74 100644 --- a/packages/core/src/types/external/OrgSchema/CreativeWork.ts +++ b/packages/core/src/types/external/OrgSchema/CreativeWork.ts @@ -35,6 +35,11 @@ export type CreativeWork = Thing & { */ citation?: readonly CreativeWork[] | undefined; + /** + * The schema.org [isBasedOn](https://schema.org/isBasedOn) property provides a resource from which this work is derived or from which it is a modification or adaptation. + */ + isBasedOn?: CreativeWork | undefined; + /** * Keywords or tags used to describe some item. Multiple textual entries in a keywords list are typically delimited by commas, or by repeating the property. * @@ -88,6 +93,7 @@ export const creativeWork = (entries?: TEntries abstract: orgSchemaProperty(string()), author: orgSchemaProperty(union([person(), string()])), citation: orgSchemaProperties(lazy(() => creativeWork())), + isBasedOn: orgSchemaProperty(lazy(() => creativeWork())), keywords: orgSchemaProperties(union([lazy(() => definedTerm()), string()])), pattern: orgSchemaProperty(lazy(() => definedTerm())), text: orgSchemaProperty(string()),