|
73 | 73 | let timestampStart = new Date(2020, 7, 9).getTime();
|
74 | 74 | const timestamp = () => new Date(timestampStart += 100).toISOString();
|
75 | 75 |
|
76 |
| - const [leftTranscriptIndex = 0, rightTranscriptIndex = 1] = new URLSearchParams(location.search).getAll('transcript'); |
77 |
| - const [leftVariant = 'fluent', rightVariant = 'copilot'] = new URLSearchParams(location.search).getAll('variant'); |
| 76 | + const searchParams = new URLSearchParams(location.search); |
78 | 77 |
|
79 |
| - const sendBoxIndexes = new URLSearchParams(location.search).getAll('focus'); |
| 78 | + const [leftTranscriptIndex = 0, rightTranscriptIndex = 1] = searchParams.getAll('transcript'); |
| 79 | + const [leftVariant = 'fluent', rightVariant = 'copilot'] = searchParams.getAll('variant'); |
| 80 | + |
| 81 | + const sendBoxIndexes = searchParams.getAll('focus'); |
| 82 | + const activeFocusPresets = searchParams.getAll('focus-preset'); |
| 83 | + |
| 84 | + const adjustStyleOptions = Object.fromEntries(['codeBlockTheme'] |
| 85 | + .map(key => [key, searchParams.get(key)]) |
| 86 | + .filter(([key, value]) => value)); |
80 | 87 |
|
81 | 88 | const botIcon = 'data:image/png;base64,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';
|
82 | 89 |
|
|
94 | 101 | }
|
95 | 102 | };
|
96 | 103 |
|
| 104 | + const waveSvg = `data:image/svg+xml;utf8,${encodeURIComponent(` |
| 105 | +<svg width="400" height="200" viewBox="0 0 400 200" xmlns="http://www.w3.org/2000/svg"> |
| 106 | + <!-- Primary Wave --> |
| 107 | + <path d="M0,100 C50,50 100,150 150,100 C200,50 250,150 300,100 C350,50 400,150 400,100" |
| 108 | + stroke="#3B82F6" fill="none" stroke-width="2" opacity="0.5"/> |
| 109 | + |
| 110 | + <!-- Second Harmonic --> |
| 111 | + <path d="M0,100 C25,75 50,125 75,100 C100,75 125,125 150,100 C175,75 200,125 225,100 C250,75 275,125 300,100 C325,75 350,125 375,100 C400,75 400,125 400,100" |
| 112 | + stroke="#10B981" fill="none" stroke-width="2" opacity="0.5"/> |
| 113 | + |
| 114 | + <!-- Combined Wave --> |
| 115 | + <path d="M0,100 C40,30 80,170 120,100 C160,30 200,170 240,100 C280,30 320,170 360,100 C380,65 400,135 400,100" |
| 116 | + stroke="#EF4444" fill="none" stroke-width="3"/> |
| 117 | + |
| 118 | + <!-- Grid Lines --> |
| 119 | + <line x1="0" y1="100" x2="400" y2="100" stroke="#CBD5E1" stroke-width="0.5" stroke-dasharray="4"/> |
| 120 | + <line x1="100" y1="0" x2="100" y2="200" stroke="#CBD5E1" stroke-width="0.5" stroke-dasharray="4"/> |
| 121 | + <line x1="200" y1="0" x2="200" y2="200" stroke="#CBD5E1" stroke-width="0.5" stroke-dasharray="4"/> |
| 122 | + <line x1="300" y1="0" x2="300" y2="200" stroke="#CBD5E1" stroke-width="0.5" stroke-dasharray="4"/> |
| 123 | +</svg>`)}`; |
| 124 | + |
97 | 125 | const transcripts = [[
|
98 | 126 | {
|
99 | 127 | timestamp: timestamp(),
|
|
511 | 539 | streamSequence: 99
|
512 | 540 | }
|
513 | 541 | }
|
| 542 | + ], [ |
| 543 | + { |
| 544 | + timestamp: timestamp(), |
| 545 | + from: { role: 'bot' }, |
| 546 | + entities: [{ |
| 547 | + ...aiMessageEntity, |
| 548 | + isBasedOn: { |
| 549 | + '@type': 'SoftwareSourceCode', |
| 550 | + 'programmingLanguage': 'python', |
| 551 | + "text": `import numpy as np |
| 552 | +import matplotlib.pyplot as plt |
| 553 | +
|
| 554 | +def plot_sine_waves(): |
| 555 | + """Create a beautiful visualization of sine waves with different frequencies.""" |
| 556 | + # Generate time points |
| 557 | + t = np.linspace(0, 10, 1000) |
| 558 | + |
| 559 | + # Create waves with different frequencies and phases |
| 560 | + wave1 = np.sin(t) |
| 561 | + wave2 = 0.5 * np.sin(2 * t + np.pi/4) |
| 562 | + wave3 = 0.3 * np.sin(3 * t + np.pi/3) |
| 563 | + |
| 564 | + # Combine waves |
| 565 | + combined = wave1 + wave2 + wave3 |
| 566 | + |
| 567 | + # Create a stylish plot |
| 568 | + plt.style.use('seaborn-darkgrid') |
| 569 | + plt.figure(figsize=(12, 8)) |
| 570 | + |
| 571 | + # Plot individual waves |
| 572 | + plt.plot(t, wave1, label='Primary Wave', alpha=0.5) |
| 573 | + plt.plot(t, wave2, label='Second Harmonic', alpha=0.5) |
| 574 | + plt.plot(t, wave3, label='Third Harmonic', alpha=0.5) |
| 575 | + |
| 576 | + # Plot combined wave with a thicker line |
| 577 | + plt.plot(t, combined, 'r-', |
| 578 | + label='Combined Wave', |
| 579 | + linewidth=2) |
| 580 | + |
| 581 | + plt.title('Harmonic Wave Composition', fontsize=14) |
| 582 | + plt.xlabel('Time', fontsize=12) |
| 583 | + plt.ylabel('Amplitude', fontsize=12) |
| 584 | + plt.legend() |
| 585 | + plt.grid(True, alpha=0.3) |
| 586 | + |
| 587 | + # Show the plot |
| 588 | + plt.tight_layout() |
| 589 | + plt.show() |
| 590 | +
|
| 591 | +# Generate the visualization |
| 592 | +plot_sine_waves()` |
| 593 | + } |
| 594 | + }], |
| 595 | + id: "a4c0c01d-c06e-4dde-9278-265c607b545b-82", |
| 596 | + type: "message", |
| 597 | + text: `This example demonstrates creating a beautiful visualization of harmonic waves using Python's Matplotlib library. The code generates three sine waves with different frequencies and phases, then combines them to show wave interference patterns.\n<img alt="wave plot" src="${waveSvg}">`, |
| 598 | + } |
514 | 599 | ]];
|
515 | 600 |
|
516 | 601 | const leftStore = testHelpers.createStore();
|
|
557 | 642 | TEXT_INPUT_PLACEHOLDER: 'Describe how your copilot should behave'
|
558 | 643 | }}
|
559 | 644 | styleOptions={{
|
560 |
| - maxMessageLength: null |
| 645 | + maxMessageLength: null, |
| 646 | + ...adjustStyleOptions |
561 | 647 | }}
|
562 | 648 | />
|
563 | 649 | </FluentThemeProvider>
|
|
568 | 654 | directLine={rightDirectLine}
|
569 | 655 | store={rightStore}
|
570 | 656 | overrideLocalizedStrings={{
|
571 |
| - TEXT_INPUT_PLACEHOLDER: 'Ask a work question or use / to reference people, files and more' |
| 657 | + TEXT_INPUT_PLACEHOLDER: 'Ask a work question or use / to reference people, files and more', |
| 658 | + ACTIVITY_CODE_CAUTION: 'AI-generated code. Review and use carefully. [More info on FAQ](https://aka.ms/AIandCopilotFAQs).' |
572 | 659 | }}
|
573 | 660 | styleOptions={{
|
574 | 661 | groupTimestamp: 1,
|
575 | 662 | timestampFormat: 'absolute',
|
576 |
| - botAvatarBackgroundColor: '#304E7A' |
| 663 | + botAvatarBackgroundColor: '#304E7A', |
| 664 | + ...adjustStyleOptions |
577 | 665 | }}
|
578 | 666 | />
|
579 | 667 | </FluentThemeProvider>
|
|
586 | 674 |
|
587 | 675 | await host.snapshot();
|
588 | 676 |
|
589 |
| - const sendboxes = Array.from(document.querySelectorAll(`[data-testid="${WebChat.testIds.sendBoxTextBox}"]`)).filter((_, index) => sendBoxIndexes.includes(String(index))); |
590 |
| - |
591 |
| - for (const sendbox of sendboxes) { |
592 |
| - sendbox.focus(); |
593 |
| - await host.sendKeys('Next message'); |
594 |
| - await host.snapshot(); |
595 |
| - await host.sendKeys('ENTER'); |
596 |
| - // hide timestamp to not fail snapshot if is not relative |
597 |
| - sendbox.parentElement.parentElement.parentElement.parentElement.querySelector('.webchat__basic-transcript__activity:last-child .webchat__stacked-layout__status').style.opacity = 0 |
598 |
| - await host.snapshot(); |
599 |
| - await host.sendShiftTab(); |
600 |
| - await host.snapshot(); |
601 |
| - await host.sendKeys('HOME'); |
602 |
| - await host.snapshot(); |
603 |
| - await host.sendKeys('END'); |
604 |
| - await host.snapshot(); |
605 |
| - await host.sendKeys('ARROW_UP'); |
606 |
| - await host.snapshot(); |
607 |
| - await host.sendKeys('ENTER'); |
608 |
| - await host.sendShiftTab(); |
609 |
| - await host.snapshot(); |
610 |
| - await host.sendKeys('ENTER'); |
611 |
| - await host.snapshot(); |
612 |
| - await host.sendKeys('ESCAPE'); |
| 677 | + const focusPresetsMap = new Map(Object.entries({ |
| 678 | + navigation: async sendbox => { |
| 679 | + sendbox.focus(); |
| 680 | + await host.sendKeys('Next message'); |
| 681 | + await host.snapshot(); |
| 682 | + await host.sendKeys('ENTER'); |
| 683 | + // hide timestamp to not fail snapshot if is not relative |
| 684 | + sendbox.parentElement.parentElement.parentElement.parentElement.querySelector('.webchat__basic-transcript__activity:last-child .webchat__stacked-layout__status').style.opacity = 0 |
| 685 | + await host.snapshot(); |
| 686 | + await host.sendShiftTab(); |
| 687 | + await host.snapshot(); |
| 688 | + await host.sendKeys('HOME'); |
| 689 | + await host.snapshot(); |
| 690 | + await host.sendKeys('END'); |
| 691 | + await host.snapshot(); |
| 692 | + await host.sendKeys('ARROW_UP'); |
| 693 | + await host.snapshot(); |
| 694 | + await host.sendKeys('ENTER'); |
| 695 | + await host.sendShiftTab(); |
| 696 | + await host.snapshot(); |
| 697 | + await host.sendKeys('ENTER'); |
| 698 | + await host.snapshot(); |
| 699 | + await host.sendKeys('ESCAPE'); |
| 700 | + }, |
| 701 | + viewCode: async sendbox => { |
| 702 | + sendbox.focus(); |
| 703 | + await host.sendShiftTab(); |
| 704 | + await host.sendKeys('ARROW_UP'); |
| 705 | + await host.sendKeys('ENTER'); |
| 706 | + await host.snapshot(); |
| 707 | + await host.sendKeys('ENTER'); |
| 708 | + await host.snapshot(); |
| 709 | + await host.sendKeys('ENTER'); |
| 710 | + await host.snapshot(); |
| 711 | + } |
| 712 | + })); |
| 713 | + |
| 714 | + const sendboxes = Array.from(document.querySelectorAll(`[data-testid="${WebChat.testIds.sendBoxTextBox}"]`)) |
| 715 | + .filter((_, index) => sendBoxIndexes.includes(String(index))); |
| 716 | + |
| 717 | + const focusPresets = activeFocusPresets |
| 718 | + .map(presetName => focusPresetsMap.get(presetName)) |
| 719 | + .filter(preset => preset) |
| 720 | + |
| 721 | + if (!focusPresets.length) focusPresets.push(focusPresetsMap.get('navigation')); |
| 722 | + |
| 723 | + for (const preset of focusPresets) { |
| 724 | + for (const sendbox of sendboxes) { |
| 725 | + await preset(sendbox) |
| 726 | + } |
613 | 727 | }
|
614 | 728 | });
|
615 | 729 | // TODO: unskip and try ShadowDOM when we get support
|
|
0 commit comments