@codecademy/codebytes 1.0.3-alpha.9ea661470.0 → 1.0.4-alpha.49041f645.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,3 +1,741 @@
1
- export * from './codeByteEditor';
2
- export * from './consts';
3
- export * from './types';
1
+ import _styled from '@emotion/styled/base';
2
+ import { FlexBox, IconButton, ToolTip, TextButton, FillButton, Spinner, Text, Select, Box } from '@codecademy/gamut';
3
+ import { ArrowChevronLeftIcon, ArrowChevronRightIcon, CopyIcon, FaviconIcon } from '@codecademy/gamut-icons';
4
+ import { editorColors, colors, ColorMode, system, Background } from '@codecademy/gamut-styles';
5
+ import React, { useState, useRef, useCallback, useEffect } from 'react';
6
+ import { createTracker } from '@codecademy/tracking';
7
+ import ReactMonacoEditor from '@monaco-editor/react';
8
+ import ResizeObserver from 'react-resize-observer';
9
+
10
+ function _extends() {
11
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
12
+ for (var i = 1; i < arguments.length; i++) {
13
+ var source = arguments[i];
14
+
15
+ for (var key in source) {
16
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
17
+ target[key] = source[key];
18
+ }
19
+ }
20
+ }
21
+
22
+ return target;
23
+ };
24
+ return _extends.apply(this, arguments);
25
+ }
26
+
27
+ function _objectWithoutPropertiesLoose(source, excluded) {
28
+ if (source == null) return {};
29
+ var target = {};
30
+ var sourceKeys = Object.keys(source);
31
+ var key, i;
32
+
33
+ for (i = 0; i < sourceKeys.length; i++) {
34
+ key = sourceKeys[i];
35
+ if (excluded.indexOf(key) >= 0) continue;
36
+ target[key] = source[key];
37
+ }
38
+
39
+ return target;
40
+ }
41
+
42
+ // key = language param to send to snippets service
43
+ // val = label in language selection drop down
44
+ const LanguageOptions = {
45
+ '': 'Select a language',
46
+ cpp: 'C++',
47
+ csharp: 'C#',
48
+ golang: 'Go',
49
+ javascript: 'JavaScript',
50
+ php: 'PHP',
51
+ python: 'Python 3',
52
+ ruby: 'Ruby',
53
+ scheme: 'Scheme'
54
+ };
55
+ const validLanguages = Object.keys(LanguageOptions).filter(option => !!option);
56
+ const cpp = `#include <iostream>
57
+ int main() {
58
+ std::cout << "Hello world!";
59
+ return 0;
60
+ }`;
61
+ const csharp = `namespace HelloWorld {
62
+ class Hello {
63
+ static void Main(string[] args) {
64
+ System.Console.WriteLine("Hello world!");
65
+ }
66
+ }
67
+ }`;
68
+ const golang = `package main
69
+ import "fmt"
70
+ func main() {
71
+ fmt.Println("Hello world!")
72
+ }`;
73
+ const javascript = "console.log('Hello world!');";
74
+ const php = `<?php
75
+ echo "Hello world!";
76
+ ?>`;
77
+ const python = "print('Hello world!')";
78
+ const ruby = 'puts "Hello world!"';
79
+ const scheme = `(begin
80
+ (display "Hello world!")
81
+ (newline))`;
82
+ const helloWorld = {
83
+ cpp,
84
+ csharp,
85
+ golang,
86
+ javascript,
87
+ php,
88
+ python,
89
+ ruby,
90
+ scheme
91
+ };
92
+
93
+ const postSnippet = async (data, snippetsBaseUrl) => {
94
+ const snippetsEndpoint = `https://${snippetsBaseUrl}/snippets`;
95
+ const response = await fetch(snippetsEndpoint, {
96
+ method: 'POST',
97
+ body: JSON.stringify(data),
98
+ headers: {
99
+ 'x-codecademy-user-id': 'codebytes-anon-user'
100
+ }
101
+ });
102
+ return response.json();
103
+ };
104
+
105
+ function _EMOTION_STRINGIFIED_CSS_ERROR__$1() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
106
+
107
+ const DrawerLabel = _styled("span", {
108
+ target: "e1keub6a2",
109
+ label: "DrawerLabel"
110
+ })(process.env.NODE_ENV === "production" ? {
111
+ name: "1u2ibt9",
112
+ styles: "padding:0.875rem 0.5rem"
113
+ } : {
114
+ name: "1u2ibt9",
115
+ styles: "padding:0.875rem 0.5rem",
116
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRyYXdlcnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlnQyIsImZpbGUiOiJkcmF3ZXJzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsZXhCb3gsIEljb25CdXR0b24gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dCc7XHJcbmltcG9ydCB7IEFycm93Q2hldnJvbkxlZnRJY29uLCBBcnJvd0NoZXZyb25SaWdodEljb24sIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcclxuY29uc3QgRHJhd2VyTGFiZWwgPSBzdHlsZWQuc3BhbiBgXG4gIHBhZGRpbmc6IDAuODc1cmVtIDAuNXJlbTtcbmA7XHJcbmNvbnN0IExlZnREcmF3ZXJJY29uID0gc3R5bGVkKEFycm93Q2hldnJvbkxlZnRJY29uKSBgXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2UtaW4tb3V0O1xuYDtcclxuY29uc3QgUmlnaHREcmF3ZXJJY29uID0gTGVmdERyYXdlckljb24ud2l0aENvbXBvbmVudChBcnJvd0NoZXZyb25SaWdodEljb24pO1xyXG5jb25zdCBEcmF3ZXIgPSBzdHlsZWQoRmxleEJveCkgYFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICR7KHsgb3BlbiwgaGlkZU9uQ2xvc2UgfSkgPT4gYFxuICAgIGZsZXgtYmFzaXM6ICR7b3BlbiA/ICcxMDAlJyA6ICcwJSd9O1xuICAgIHZpc2liaWxpdHk6ICR7IW9wZW4gJiYgaGlkZU9uQ2xvc2UgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJ307XG4gICAgdHJhbnNpdGlvbjogZmxleC1iYXNpcyAwLjJzICR7b3BlbiA/ICdlYXNlLW91dCcgOiAnZWFzZS1pbiwgdmlzaWJpbGl0eSAwcyAwLjJzJ307XG5cbiAgICAke0xlZnREcmF3ZXJJY29ufSwgJHtSaWdodERyYXdlckljb259IHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlWigke29wZW4gPyAnMCcgOiAnMTgwJ31kZWcpfTtcbiAgICB9XG4gIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgRHJhd2VycyA9ICh7IGxlZnRDaGlsZCwgcmlnaHRDaGlsZCB9KSA9PiB7XHJcbiAgICBjb25zdCBbb3Blbiwgc2V0T3Blbl0gPSB1c2VTdGF0ZSgnYm90aCcpO1xyXG4gICAgbGV0IGFyaWFMYWJlbENvZGVCdXR0b24gPSAnaGlkZSBjb2RlJztcclxuICAgIGxldCBhcmlhTGFiZWxPdXRwdXRCdXR0b24gPSAnaGlkZSBvdXRwdXQnO1xyXG4gICAgbGV0IGlzTGVmdE9wZW4gPSBmYWxzZTtcclxuICAgIGxldCBpc1JpZ2h0T3BlbiA9IGZhbHNlO1xyXG4gICAgaWYgKG9wZW4gPT09ICdsZWZ0Jykge1xyXG4gICAgICAgIGFyaWFMYWJlbENvZGVCdXR0b24gPSBhcmlhTGFiZWxPdXRwdXRCdXR0b24gPSAnc2hvdyBvdXRwdXQnO1xyXG4gICAgICAgIGlzTGVmdE9wZW4gPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAob3BlbiA9PT0gJ3JpZ2h0Jykge1xyXG4gICAgICAgIGFyaWFMYWJlbENvZGVCdXR0b24gPSBhcmlhTGFiZWxPdXRwdXRCdXR0b24gPSAnc2hvdyBjb2RlJztcclxuICAgICAgICBpc1JpZ2h0T3BlbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXHJcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGbGV4Qm94LCBudWxsLFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KERyYXdlciwgeyBvcGVuOiAhaXNSaWdodE9wZW4sIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsIGZsZXhXcmFwOiBcIm5vd3JhcFwiLCB0ZXh0QWxpZ246IFwibGVmdFwiLCBib3JkZXJSaWdodDogMSwgYm9yZGVyQ29sb3I6IFwiZ3JheS05MDBcIiwgcHg6IDggfSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbkJ1dHRvbiwgeyBpY29uOiBMZWZ0RHJhd2VySWNvbiwgdmFyaWFudDogXCJzZWNvbmRhcnlcIiwgc2l6ZTogXCJzbWFsbFwiLCBvbkNsaWNrOiAoKSA9PiBzZXRPcGVuKChzdGF0ZSkgPT4gKHN0YXRlID09PSAnYm90aCcgPyAncmlnaHQnIDogJ2JvdGgnKSksIFwiYXJpYS1sYWJlbFwiOiBhcmlhTGFiZWxDb2RlQnV0dG9uLCBcImFyaWEtY29udHJvbHNcIjogXCJjb2RlLWRyYXdlclwiLCBcImFyaWEtZXhwYW5kZWRcIjogIWlzUmlnaHRPcGVuIH0pLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChEcmF3ZXJMYWJlbCwgeyBpZDogXCJjb2RlLWRyYXdlci1sYWJlbFwiIH0sIFwiQ29kZVwiKSksXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRHJhd2VyLCB7IG9wZW46ICFpc0xlZnRPcGVuLCBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLCBmbGV4V3JhcDogXCJub3dyYXBcIiwganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1lbmRcIiwgcHg6IDggfSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRHJhd2VyTGFiZWwsIHsgaWQ6IFwib3V0cHV0LWRyYXdlci1sYWJlbFwiIH0sIFwiT3V0cHV0XCIpLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChJY29uQnV0dG9uLCB7IGljb246IFJpZ2h0RHJhd2VySWNvbiwgdmFyaWFudDogXCJzZWNvbmRhcnlcIiwgc2l6ZTogXCJzbWFsbFwiLCBvbkNsaWNrOiAoKSA9PiBzZXRPcGVuKChzdGF0ZSkgPT4gKHN0YXRlID09PSAnYm90aCcgPyAnbGVmdCcgOiAnYm90aCcpKSwgXCJhcmlhLWxhYmVsXCI6IGFyaWFMYWJlbE91dHB1dEJ1dHRvbiwgXCJhcmlhLWNvbnRyb2xzXCI6IFwib3V0cHV0LWRyYXdlclwiLCBcImFyaWEtZXhwYW5kZWRcIjogIWlzTGVmdE9wZW4gfSkpKSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZsZXhCb3gsIHsgZmxleEdyb3c6IDEsIGJvcmRlclk6IDEsIGJvcmRlckNvbG9yOiBcImdyYXktOTAwXCIsIGFsaWduSXRlbXM6IFwic3RyZXRjaFwiLCBvdmVyZmxvdzogXCJoaWRkZW5cIiB9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KERyYXdlciwgeyBoaWRlT25DbG9zZTogdHJ1ZSwgaWQ6IFwiY29kZS1kcmF3ZXJcIiwgXCJhcmlhLWxhYmVsbGVkYnlcIjogXCJjb2RlLWRyYXdlci1sYWJlbFwiLCBvcGVuOiAhaXNSaWdodE9wZW4sIGZsZXhHcm93OiAwLCBvdmVyZmxvdzogXCJoaWRkZW5cIiwgYm9yZGVyQ29sb3I6IFwiZ3JheS05MDBcIiwgYm9yZGVyU3R5bGVSaWdodDogXCJzb2xpZFwiLCBib3JkZXJXaWR0aFJpZ2h0OiBcInRoaW5cIiB9LCBsZWZ0Q2hpbGQpLFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KERyYXdlciwgeyBoaWRlT25DbG9zZTogdHJ1ZSwgaWQ6IFwib3V0cHV0LWRyYXdlclwiLCBcImFyaWEtbGFiZWxsZWRieVwiOiBcIm91dHB1dC1kcmF3ZXItbGFiZWxcIiwgcm9sZTogXCJyZWdpb25cIiwgb3BlbjogIWlzTGVmdE9wZW4sIG92ZXJmbG93OiBcImhpZGRlblwiIH0sIHJpZ2h0Q2hpbGQpKSkpO1xyXG59O1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kcmF3ZXJzLmpzLm1hcCJdfQ== */",
117
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
118
+ });
119
+
120
+ const LeftDrawerIcon = /*#__PURE__*/_styled(ArrowChevronLeftIcon, {
121
+ target: "e1keub6a1",
122
+ label: "LeftDrawerIcon"
123
+ })(process.env.NODE_ENV === "production" ? {
124
+ name: "jlwh11",
125
+ styles: "transition:transform 0.2s ease-in-out"
126
+ } : {
127
+ name: "jlwh11",
128
+ styles: "transition:transform 0.2s ease-in-out",
129
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRyYXdlcnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9vRCIsImZpbGUiOiJkcmF3ZXJzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsZXhCb3gsIEljb25CdXR0b24gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dCc7XHJcbmltcG9ydCB7IEFycm93Q2hldnJvbkxlZnRJY29uLCBBcnJvd0NoZXZyb25SaWdodEljb24sIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcclxuY29uc3QgRHJhd2VyTGFiZWwgPSBzdHlsZWQuc3BhbiBgXG4gIHBhZGRpbmc6IDAuODc1cmVtIDAuNXJlbTtcbmA7XHJcbmNvbnN0IExlZnREcmF3ZXJJY29uID0gc3R5bGVkKEFycm93Q2hldnJvbkxlZnRJY29uKSBgXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2UtaW4tb3V0O1xuYDtcclxuY29uc3QgUmlnaHREcmF3ZXJJY29uID0gTGVmdERyYXdlckljb24ud2l0aENvbXBvbmVudChBcnJvd0NoZXZyb25SaWdodEljb24pO1xyXG5jb25zdCBEcmF3ZXIgPSBzdHlsZWQoRmxleEJveCkgYFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICR7KHsgb3BlbiwgaGlkZU9uQ2xvc2UgfSkgPT4gYFxuICAgIGZsZXgtYmFzaXM6ICR7b3BlbiA/ICcxMDAlJyA6ICcwJSd9O1xuICAgIHZpc2liaWxpdHk6ICR7IW9wZW4gJiYgaGlkZU9uQ2xvc2UgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJ307XG4gICAgdHJhbnNpdGlvbjogZmxleC1iYXNpcyAwLjJzICR7b3BlbiA/ICdlYXNlLW91dCcgOiAnZWFzZS1pbiwgdmlzaWJpbGl0eSAwcyAwLjJzJ307XG5cbiAgICAke0xlZnREcmF3ZXJJY29ufSwgJHtSaWdodERyYXdlckljb259IHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlWigke29wZW4gPyAnMCcgOiAnMTgwJ31kZWcpfTtcbiAgICB9XG4gIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgRHJhd2VycyA9ICh7IGxlZnRDaGlsZCwgcmlnaHRDaGlsZCB9KSA9PiB7XHJcbiAgICBjb25zdCBbb3Blbiwgc2V0T3Blbl0gPSB1c2VTdGF0ZSgnYm90aCcpO1xyXG4gICAgbGV0IGFyaWFMYWJlbENvZGVCdXR0b24gPSAnaGlkZSBjb2RlJztcclxuICAgIGxldCBhcmlhTGFiZWxPdXRwdXRCdXR0b24gPSAnaGlkZSBvdXRwdXQnO1xyXG4gICAgbGV0IGlzTGVmdE9wZW4gPSBmYWxzZTtcclxuICAgIGxldCBpc1JpZ2h0T3BlbiA9IGZhbHNlO1xyXG4gICAgaWYgKG9wZW4gPT09ICdsZWZ0Jykge1xyXG4gICAgICAgIGFyaWFMYWJlbENvZGVCdXR0b24gPSBhcmlhTGFiZWxPdXRwdXRCdXR0b24gPSAnc2hvdyBvdXRwdXQnO1xyXG4gICAgICAgIGlzTGVmdE9wZW4gPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAob3BlbiA9PT0gJ3JpZ2h0Jykge1xyXG4gICAgICAgIGFyaWFMYWJlbENvZGVCdXR0b24gPSBhcmlhTGFiZWxPdXRwdXRCdXR0b24gPSAnc2hvdyBjb2RlJztcclxuICAgICAgICBpc1JpZ2h0T3BlbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXHJcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGbGV4Qm94LCBudWxsLFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KERyYXdlciwgeyBvcGVuOiAhaXNSaWdodE9wZW4sIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsIGZsZXhXcmFwOiBcIm5vd3JhcFwiLCB0ZXh0QWxpZ246IFwibGVmdFwiLCBib3JkZXJSaWdodDogMSwgYm9yZGVyQ29sb3I6IFwiZ3JheS05MDBcIiwgcHg6IDggfSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbkJ1dHRvbiwgeyBpY29uOiBMZWZ0RHJhd2VySWNvbiwgdmFyaWFudDogXCJzZWNvbmRhcnlcIiwgc2l6ZTogXCJzbWFsbFwiLCBvbkNsaWNrOiAoKSA9PiBzZXRPcGVuKChzdGF0ZSkgPT4gKHN0YXRlID09PSAnYm90aCcgPyAncmlnaHQnIDogJ2JvdGgnKSksIFwiYXJpYS1sYWJlbFwiOiBhcmlhTGFiZWxDb2RlQnV0dG9uLCBcImFyaWEtY29udHJvbHNcIjogXCJjb2RlLWRyYXdlclwiLCBcImFyaWEtZXhwYW5kZWRcIjogIWlzUmlnaHRPcGVuIH0pLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChEcmF3ZXJMYWJlbCwgeyBpZDogXCJjb2RlLWRyYXdlci1sYWJlbFwiIH0sIFwiQ29kZVwiKSksXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRHJhd2VyLCB7IG9wZW46ICFpc0xlZnRPcGVuLCBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLCBmbGV4V3JhcDogXCJub3dyYXBcIiwganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1lbmRcIiwgcHg6IDggfSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRHJhd2VyTGFiZWwsIHsgaWQ6IFwib3V0cHV0LWRyYXdlci1sYWJlbFwiIH0sIFwiT3V0cHV0XCIpLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChJY29uQnV0dG9uLCB7IGljb246IFJpZ2h0RHJhd2VySWNvbiwgdmFyaWFudDogXCJzZWNvbmRhcnlcIiwgc2l6ZTogXCJzbWFsbFwiLCBvbkNsaWNrOiAoKSA9PiBzZXRPcGVuKChzdGF0ZSkgPT4gKHN0YXRlID09PSAnYm90aCcgPyAnbGVmdCcgOiAnYm90aCcpKSwgXCJhcmlhLWxhYmVsXCI6IGFyaWFMYWJlbE91dHB1dEJ1dHRvbiwgXCJhcmlhLWNvbnRyb2xzXCI6IFwib3V0cHV0LWRyYXdlclwiLCBcImFyaWEtZXhwYW5kZWRcIjogIWlzTGVmdE9wZW4gfSkpKSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZsZXhCb3gsIHsgZmxleEdyb3c6IDEsIGJvcmRlclk6IDEsIGJvcmRlckNvbG9yOiBcImdyYXktOTAwXCIsIGFsaWduSXRlbXM6IFwic3RyZXRjaFwiLCBvdmVyZmxvdzogXCJoaWRkZW5cIiB9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KERyYXdlciwgeyBoaWRlT25DbG9zZTogdHJ1ZSwgaWQ6IFwiY29kZS1kcmF3ZXJcIiwgXCJhcmlhLWxhYmVsbGVkYnlcIjogXCJjb2RlLWRyYXdlci1sYWJlbFwiLCBvcGVuOiAhaXNSaWdodE9wZW4sIGZsZXhHcm93OiAwLCBvdmVyZmxvdzogXCJoaWRkZW5cIiwgYm9yZGVyQ29sb3I6IFwiZ3JheS05MDBcIiwgYm9yZGVyU3R5bGVSaWdodDogXCJzb2xpZFwiLCBib3JkZXJXaWR0aFJpZ2h0OiBcInRoaW5cIiB9LCBsZWZ0Q2hpbGQpLFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KERyYXdlciwgeyBoaWRlT25DbG9zZTogdHJ1ZSwgaWQ6IFwib3V0cHV0LWRyYXdlclwiLCBcImFyaWEtbGFiZWxsZWRieVwiOiBcIm91dHB1dC1kcmF3ZXItbGFiZWxcIiwgcm9sZTogXCJyZWdpb25cIiwgb3BlbjogIWlzTGVmdE9wZW4sIG92ZXJmbG93OiBcImhpZGRlblwiIH0sIHJpZ2h0Q2hpbGQpKSkpO1xyXG59O1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kcmF3ZXJzLmpzLm1hcCJdfQ== */",
130
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
131
+ });
132
+
133
+ const RightDrawerIcon = LeftDrawerIcon.withComponent(ArrowChevronRightIcon, {
134
+ target: "e1keub6a3",
135
+ label: "RightDrawerIcon"
136
+ });
137
+
138
+ const Drawer = /*#__PURE__*/_styled(FlexBox, {
139
+ target: "e1keub6a0",
140
+ label: "Drawer"
141
+ })("position:relative;", ({
142
+ open,
143
+ hideOnClose
144
+ }) => `
145
+ flex-basis: ${open ? '100%' : '0%'};
146
+ visibility: ${!open && hideOnClose ? 'hidden' : 'visible'};
147
+ transition: flex-basis 0.2s ${open ? 'ease-out' : 'ease-in, visibility 0s 0.2s'};
148
+
149
+ ${LeftDrawerIcon}, ${RightDrawerIcon} {
150
+ transform: rotateZ(${open ? '0' : '180'}deg)};
151
+ }
152
+ `, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRyYXdlcnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVcrQiIsImZpbGUiOiJkcmF3ZXJzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsZXhCb3gsIEljb25CdXR0b24gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dCc7XHJcbmltcG9ydCB7IEFycm93Q2hldnJvbkxlZnRJY29uLCBBcnJvd0NoZXZyb25SaWdodEljb24sIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcclxuY29uc3QgRHJhd2VyTGFiZWwgPSBzdHlsZWQuc3BhbiBgXG4gIHBhZGRpbmc6IDAuODc1cmVtIDAuNXJlbTtcbmA7XHJcbmNvbnN0IExlZnREcmF3ZXJJY29uID0gc3R5bGVkKEFycm93Q2hldnJvbkxlZnRJY29uKSBgXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2UtaW4tb3V0O1xuYDtcclxuY29uc3QgUmlnaHREcmF3ZXJJY29uID0gTGVmdERyYXdlckljb24ud2l0aENvbXBvbmVudChBcnJvd0NoZXZyb25SaWdodEljb24pO1xyXG5jb25zdCBEcmF3ZXIgPSBzdHlsZWQoRmxleEJveCkgYFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICR7KHsgb3BlbiwgaGlkZU9uQ2xvc2UgfSkgPT4gYFxuICAgIGZsZXgtYmFzaXM6ICR7b3BlbiA/ICcxMDAlJyA6ICcwJSd9O1xuICAgIHZpc2liaWxpdHk6ICR7IW9wZW4gJiYgaGlkZU9uQ2xvc2UgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJ307XG4gICAgdHJhbnNpdGlvbjogZmxleC1iYXNpcyAwLjJzICR7b3BlbiA/ICdlYXNlLW91dCcgOiAnZWFzZS1pbiwgdmlzaWJpbGl0eSAwcyAwLjJzJ307XG5cbiAgICAke0xlZnREcmF3ZXJJY29ufSwgJHtSaWdodERyYXdlckljb259IHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlWigke29wZW4gPyAnMCcgOiAnMTgwJ31kZWcpfTtcbiAgICB9XG4gIGB9XG5gO1xyXG5leHBvcnQgY29uc3QgRHJhd2VycyA9ICh7IGxlZnRDaGlsZCwgcmlnaHRDaGlsZCB9KSA9PiB7XHJcbiAgICBjb25zdCBbb3Blbiwgc2V0T3Blbl0gPSB1c2VTdGF0ZSgnYm90aCcpO1xyXG4gICAgbGV0IGFyaWFMYWJlbENvZGVCdXR0b24gPSAnaGlkZSBjb2RlJztcclxuICAgIGxldCBhcmlhTGFiZWxPdXRwdXRCdXR0b24gPSAnaGlkZSBvdXRwdXQnO1xyXG4gICAgbGV0IGlzTGVmdE9wZW4gPSBmYWxzZTtcclxuICAgIGxldCBpc1JpZ2h0T3BlbiA9IGZhbHNlO1xyXG4gICAgaWYgKG9wZW4gPT09ICdsZWZ0Jykge1xyXG4gICAgICAgIGFyaWFMYWJlbENvZGVCdXR0b24gPSBhcmlhTGFiZWxPdXRwdXRCdXR0b24gPSAnc2hvdyBvdXRwdXQnO1xyXG4gICAgICAgIGlzTGVmdE9wZW4gPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAob3BlbiA9PT0gJ3JpZ2h0Jykge1xyXG4gICAgICAgIGFyaWFMYWJlbENvZGVCdXR0b24gPSBhcmlhTGFiZWxPdXRwdXRCdXR0b24gPSAnc2hvdyBjb2RlJztcclxuICAgICAgICBpc1JpZ2h0T3BlbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXHJcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGbGV4Qm94LCBudWxsLFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KERyYXdlciwgeyBvcGVuOiAhaXNSaWdodE9wZW4sIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsIGZsZXhXcmFwOiBcIm5vd3JhcFwiLCB0ZXh0QWxpZ246IFwibGVmdFwiLCBib3JkZXJSaWdodDogMSwgYm9yZGVyQ29sb3I6IFwiZ3JheS05MDBcIiwgcHg6IDggfSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbkJ1dHRvbiwgeyBpY29uOiBMZWZ0RHJhd2VySWNvbiwgdmFyaWFudDogXCJzZWNvbmRhcnlcIiwgc2l6ZTogXCJzbWFsbFwiLCBvbkNsaWNrOiAoKSA9PiBzZXRPcGVuKChzdGF0ZSkgPT4gKHN0YXRlID09PSAnYm90aCcgPyAncmlnaHQnIDogJ2JvdGgnKSksIFwiYXJpYS1sYWJlbFwiOiBhcmlhTGFiZWxDb2RlQnV0dG9uLCBcImFyaWEtY29udHJvbHNcIjogXCJjb2RlLWRyYXdlclwiLCBcImFyaWEtZXhwYW5kZWRcIjogIWlzUmlnaHRPcGVuIH0pLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChEcmF3ZXJMYWJlbCwgeyBpZDogXCJjb2RlLWRyYXdlci1sYWJlbFwiIH0sIFwiQ29kZVwiKSksXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRHJhd2VyLCB7IG9wZW46ICFpc0xlZnRPcGVuLCBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLCBmbGV4V3JhcDogXCJub3dyYXBcIiwganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1lbmRcIiwgcHg6IDggfSxcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRHJhd2VyTGFiZWwsIHsgaWQ6IFwib3V0cHV0LWRyYXdlci1sYWJlbFwiIH0sIFwiT3V0cHV0XCIpLFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChJY29uQnV0dG9uLCB7IGljb246IFJpZ2h0RHJhd2VySWNvbiwgdmFyaWFudDogXCJzZWNvbmRhcnlcIiwgc2l6ZTogXCJzbWFsbFwiLCBvbkNsaWNrOiAoKSA9PiBzZXRPcGVuKChzdGF0ZSkgPT4gKHN0YXRlID09PSAnYm90aCcgPyAnbGVmdCcgOiAnYm90aCcpKSwgXCJhcmlhLWxhYmVsXCI6IGFyaWFMYWJlbE91dHB1dEJ1dHRvbiwgXCJhcmlhLWNvbnRyb2xzXCI6IFwib3V0cHV0LWRyYXdlclwiLCBcImFyaWEtZXhwYW5kZWRcIjogIWlzTGVmdE9wZW4gfSkpKSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZsZXhCb3gsIHsgZmxleEdyb3c6IDEsIGJvcmRlclk6IDEsIGJvcmRlckNvbG9yOiBcImdyYXktOTAwXCIsIGFsaWduSXRlbXM6IFwic3RyZXRjaFwiLCBvdmVyZmxvdzogXCJoaWRkZW5cIiB9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KERyYXdlciwgeyBoaWRlT25DbG9zZTogdHJ1ZSwgaWQ6IFwiY29kZS1kcmF3ZXJcIiwgXCJhcmlhLWxhYmVsbGVkYnlcIjogXCJjb2RlLWRyYXdlci1sYWJlbFwiLCBvcGVuOiAhaXNSaWdodE9wZW4sIGZsZXhHcm93OiAwLCBvdmVyZmxvdzogXCJoaWRkZW5cIiwgYm9yZGVyQ29sb3I6IFwiZ3JheS05MDBcIiwgYm9yZGVyU3R5bGVSaWdodDogXCJzb2xpZFwiLCBib3JkZXJXaWR0aFJpZ2h0OiBcInRoaW5cIiB9LCBsZWZ0Q2hpbGQpLFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KERyYXdlciwgeyBoaWRlT25DbG9zZTogdHJ1ZSwgaWQ6IFwib3V0cHV0LWRyYXdlclwiLCBcImFyaWEtbGFiZWxsZWRieVwiOiBcIm91dHB1dC1kcmF3ZXItbGFiZWxcIiwgcm9sZTogXCJyZWdpb25cIiwgb3BlbjogIWlzTGVmdE9wZW4sIG92ZXJmbG93OiBcImhpZGRlblwiIH0sIHJpZ2h0Q2hpbGQpKSkpO1xyXG59O1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kcmF3ZXJzLmpzLm1hcCJdfQ== */"));
153
+
154
+ const Drawers = ({
155
+ leftChild,
156
+ rightChild
157
+ }) => {
158
+ const [open, setOpen] = useState('both');
159
+ let ariaLabelCodeButton = 'hide code';
160
+ let ariaLabelOutputButton = 'hide output';
161
+ let isLeftOpen = false;
162
+ let isRightOpen = false;
163
+
164
+ if (open === 'left') {
165
+ ariaLabelCodeButton = ariaLabelOutputButton = 'show output';
166
+ isLeftOpen = true;
167
+ } else if (open === 'right') {
168
+ ariaLabelCodeButton = ariaLabelOutputButton = 'show code';
169
+ isRightOpen = true;
170
+ }
171
+
172
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FlexBox, null, /*#__PURE__*/React.createElement(Drawer, {
173
+ open: !isRightOpen,
174
+ alignItems: "center",
175
+ flexWrap: "nowrap",
176
+ textAlign: "left",
177
+ borderRight: 1,
178
+ borderColor: "gray-900",
179
+ px: 8
180
+ }, /*#__PURE__*/React.createElement(IconButton, {
181
+ icon: LeftDrawerIcon,
182
+ variant: "secondary",
183
+ size: "small",
184
+ onClick: () => setOpen(state => state === 'both' ? 'right' : 'both'),
185
+ "aria-label": ariaLabelCodeButton,
186
+ "aria-controls": "code-drawer",
187
+ "aria-expanded": !isRightOpen
188
+ }), /*#__PURE__*/React.createElement(DrawerLabel, {
189
+ id: "code-drawer-label"
190
+ }, "Code")), /*#__PURE__*/React.createElement(Drawer, {
191
+ open: !isLeftOpen,
192
+ alignItems: "center",
193
+ flexWrap: "nowrap",
194
+ justifyContent: "flex-end",
195
+ px: 8
196
+ }, /*#__PURE__*/React.createElement(DrawerLabel, {
197
+ id: "output-drawer-label"
198
+ }, "Output"), /*#__PURE__*/React.createElement(IconButton, {
199
+ icon: RightDrawerIcon,
200
+ variant: "secondary",
201
+ size: "small",
202
+ onClick: () => setOpen(state => state === 'both' ? 'left' : 'both'),
203
+ "aria-label": ariaLabelOutputButton,
204
+ "aria-controls": "output-drawer",
205
+ "aria-expanded": !isLeftOpen
206
+ }))), /*#__PURE__*/React.createElement(FlexBox, {
207
+ flexGrow: 1,
208
+ borderY: 1,
209
+ borderColor: "gray-900",
210
+ alignItems: "stretch",
211
+ overflow: "hidden"
212
+ }, /*#__PURE__*/React.createElement(Drawer, {
213
+ hideOnClose: true,
214
+ id: "code-drawer",
215
+ "aria-labelledby": "code-drawer-label",
216
+ open: !isRightOpen,
217
+ flexGrow: 0,
218
+ overflow: "hidden",
219
+ borderColor: "gray-900",
220
+ borderStyleRight: "solid",
221
+ borderWidthRight: "thin"
222
+ }, leftChild), /*#__PURE__*/React.createElement(Drawer, {
223
+ hideOnClose: true,
224
+ id: "output-drawer",
225
+ "aria-labelledby": "output-drawer-label",
226
+ role: "region",
227
+ open: !isLeftOpen,
228
+ overflow: "hidden"
229
+ }, rightChild)));
230
+ };
231
+
232
+ const IS_DEV = process.env.NODE_ENV === 'development'; // TODO: confirm tracking details and implementation DISC-447
233
+
234
+ const tracker = createTracker({
235
+ apiBaseUrl: typeof window === 'undefined' ? 'https://www.codecademy.com' : window.location.origin,
236
+ verbose: IS_DEV
237
+ });
238
+ const {
239
+ click: trackUserClick,
240
+ visit: trackUserVisit,
241
+ impression: trackUserImpression
242
+ } = tracker;
243
+
244
+ const trackClick = (target, trackingData) => trackUserClick(_extends({}, trackingData, {
245
+ target
246
+ }));
247
+
248
+ // DO NOT CHANGE ANYTHING HERE
249
+ const darkTheme = {
250
+ blue: editorColors.blue,
251
+ deepPurple: editorColors.deepPurple,
252
+ gray: editorColors.gray,
253
+ green: editorColors.green,
254
+ orange: editorColors.orange,
255
+ purple: editorColors.purple,
256
+ red: editorColors.red,
257
+ white: colors.white,
258
+ yellow: editorColors.yellow
259
+ };
260
+ const syntax = {
261
+ attribute: darkTheme.green,
262
+ annotation: darkTheme.red,
263
+ atom: darkTheme.deepPurple,
264
+ basic: darkTheme.white,
265
+ comment: darkTheme.gray,
266
+ constant: darkTheme.orange,
267
+ decoration: darkTheme.red,
268
+ invalid: darkTheme.red,
269
+ key: darkTheme.blue,
270
+ keyword: darkTheme.purple,
271
+ number: darkTheme.red,
272
+ operator: darkTheme.red,
273
+ predefined: darkTheme.white,
274
+ property: darkTheme.red,
275
+ regexp: darkTheme.green,
276
+ string: darkTheme.yellow,
277
+ tag: darkTheme.red,
278
+ text: darkTheme.orange,
279
+ value: darkTheme.yellow,
280
+ variable: darkTheme.green
281
+ };
282
+ const ui = {
283
+ background: '#211E2F',
284
+ text: darkTheme.white,
285
+ indent: {
286
+ active: '#393b41',
287
+ inactive: '#494b51'
288
+ }
289
+ };
290
+
291
+ var darkColors = /*#__PURE__*/Object.freeze({
292
+ __proto__: null,
293
+ syntax: syntax,
294
+ ui: ui
295
+ });
296
+
297
+ // DO NOT CHANGE ANYTHING HERE
298
+
299
+ const c = color => color.substr(1);
300
+
301
+ const theme = ({
302
+ ui,
303
+ syntax
304
+ }) => ({
305
+ base: 'vs-dark',
306
+ inherit: true,
307
+ rules: [// Base
308
+ {
309
+ token: '',
310
+ foreground: c(syntax.basic)
311
+ }, {
312
+ token: 'regexp',
313
+ foreground: c(syntax.regexp)
314
+ }, {
315
+ token: 'annotation',
316
+ foreground: c(syntax.annotation)
317
+ }, {
318
+ token: 'type',
319
+ foreground: c(syntax.annotation)
320
+ }, {
321
+ token: 'doctype',
322
+ foreground: c(syntax.comment)
323
+ }, {
324
+ token: 'delimiter',
325
+ foreground: c(syntax.decoration)
326
+ }, {
327
+ token: 'invalid',
328
+ foreground: c(syntax.invalid)
329
+ }, {
330
+ token: 'emphasis',
331
+ fontStyle: 'italic'
332
+ }, {
333
+ token: 'strong',
334
+ fontStyle: 'bold'
335
+ }, {
336
+ token: 'variable',
337
+ foreground: c(syntax.variable)
338
+ }, {
339
+ token: 'variable.predefined',
340
+ foreground: c(syntax.variable)
341
+ }, {
342
+ token: 'constant',
343
+ foreground: c(syntax.constant)
344
+ }, {
345
+ token: 'comment',
346
+ foreground: c(syntax.comment)
347
+ }, {
348
+ token: 'number',
349
+ foreground: c(syntax.number)
350
+ }, {
351
+ token: 'number.hex',
352
+ foreground: c(syntax.number)
353
+ }, {
354
+ token: 'keyword.directive',
355
+ foreground: c(syntax.comment)
356
+ }, {
357
+ token: 'include',
358
+ foreground: c(syntax.comment)
359
+ }, {
360
+ token: 'key',
361
+ foreground: c(syntax.property)
362
+ }, {
363
+ token: 'attribute.name',
364
+ foreground: c(syntax.attribute)
365
+ }, {
366
+ token: 'attribute.name-numeric',
367
+ foreground: c(syntax.string)
368
+ }, {
369
+ token: 'attribute.value',
370
+ foreground: c(syntax.property)
371
+ }, {
372
+ token: 'attribute.value.number',
373
+ foreground: c(syntax.number)
374
+ }, {
375
+ token: 'string',
376
+ foreground: c(syntax.string)
377
+ }, {
378
+ token: 'string.yaml',
379
+ foreground: c(syntax.string)
380
+ }, {
381
+ token: 'tag',
382
+ foreground: c(syntax.tag)
383
+ }, {
384
+ token: 'tag.id.jade',
385
+ foreground: c(syntax.tag)
386
+ }, {
387
+ token: 'tag.class.jade',
388
+ foreground: c(syntax.tag)
389
+ }, {
390
+ token: 'metatag',
391
+ foreground: c(syntax.comment)
392
+ }, {
393
+ token: 'attribute.value.unit',
394
+ foreground: c(syntax.string)
395
+ }, {
396
+ token: 'keyword',
397
+ foreground: c(syntax.keyword)
398
+ }, {
399
+ token: 'keyword.flow',
400
+ foreground: c(syntax.keyword)
401
+ }],
402
+ colors: {
403
+ 'editor.background': ui.background,
404
+ 'editor.foreground': ui.text,
405
+ 'editorIndentGuide.background': ui.indent.inactive,
406
+ 'editorIndentGuide.activeBackground': ui.indent.active,
407
+ 'editorWhitespace.foreground': syntax.comment,
408
+ 'editorLineNumber.foreground': '#9FA2AC'
409
+ }
410
+ });
411
+
412
+ const dark = theme(darkColors);
413
+
414
+ // DO NOT CHANGE ANYTHING HERE
415
+ const SimpleMonacoEditor = ({
416
+ value,
417
+ language,
418
+ onChange
419
+ }) => {
420
+ const editorRef = useRef(null);
421
+ const editorWillMount = useCallback((editor, monaco) => {
422
+ editorRef.current = editor;
423
+ monaco.editor.defineTheme('dark', dark);
424
+ monaco.editor.setTheme('dark');
425
+ }, []);
426
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ResizeObserver, {
427
+ onResize: ({
428
+ height,
429
+ width
430
+ }) => {
431
+ var _editorRef$current;
432
+
433
+ (_editorRef$current = editorRef.current) == null ? void 0 : _editorRef$current.layout({
434
+ height,
435
+ width
436
+ });
437
+ }
438
+ }), /*#__PURE__*/React.createElement(ReactMonacoEditor, {
439
+ onMount: editorWillMount,
440
+ onChange: onChange,
441
+ options: {
442
+ minimap: {
443
+ enabled: false
444
+ }
445
+ },
446
+ theme: "vs-dark",
447
+ value: value,
448
+ language: language
449
+ }));
450
+ };
451
+
452
+ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
453
+
454
+ const Output = _styled("pre", {
455
+ target: "e1lzxy8e1",
456
+ label: "Output"
457
+ })("width:100%;height:100%;margin:0;padding:0 1rem;font-family:Monaco;font-size:0.875rem;overflow:auto;", ({
458
+ hasError,
459
+ theme
460
+ }) => `
461
+ color: ${hasError ? theme.colors.orange : theme.colors.text};
462
+ background-color: ${theme.colors['navy-900']};
463
+ `, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVkaXRvci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUTBCIiwiZmlsZSI6ImVkaXRvci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWxsQnV0dG9uLCBGbGV4Qm94LCBTcGlubmVyLCBUZXh0QnV0dG9uLCBUb29sVGlwLCB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcclxuaW1wb3J0IHsgQ29weUljb24gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1pY29ucyc7XHJcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcclxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgeyBwb3N0U25pcHBldCB9IGZyb20gJy4vYXBpJztcclxuaW1wb3J0IHsgRHJhd2VycyB9IGZyb20gJy4vZHJhd2Vycyc7XHJcbmltcG9ydCB7IHRyYWNrQ2xpY2sgfSBmcm9tICcuL2hlbHBlcnMnO1xyXG5pbXBvcnQgeyBTaW1wbGVNb25hY29FZGl0b3IgfSBmcm9tICcuL01vbmFjb0VkaXRvcic7XHJcbmNvbnN0IE91dHB1dCA9IHN0eWxlZC5wcmUgYFxuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDAgMXJlbTtcbiAgZm9udC1mYW1pbHk6IE1vbmFjbztcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gICR7KHsgaGFzRXJyb3IsIHRoZW1lIH0pID0+IGBcbiAgY29sb3I6ICR7aGFzRXJyb3IgPyB0aGVtZS5jb2xvcnMub3JhbmdlIDogdGhlbWUuY29sb3JzLnRleHR9O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3RoZW1lLmNvbG9yc1snbmF2eS05MDAnXX07XG5gfVxuYDtcclxuY29uc3QgQ29weUljb25TdHlsZWQgPSBzdHlsZWQoQ29weUljb24pIGBcbiAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07XG5gO1xyXG5jb25zdCBET0NLRVJfU0lHVEVSTSA9IDE0MztcclxuZXhwb3J0IGNvbnN0IEVkaXRvciA9ICh7IGxhbmd1YWdlLCB0ZXh0LCBoaWRlQ29weUJ1dHRvbiwgb25DaGFuZ2UsIGNvcHlGb3JtYXR0ZXIsIHNuaXBwZXRzQmFzZVVybCwgdHJhY2tpbmdEYXRhLCB9KSA9PiB7XHJcbiAgICBjb25zdCBbb3V0cHV0LCBzZXRPdXRwdXRdID0gdXNlU3RhdGUoJycpO1xyXG4gICAgY29uc3QgW3N0YXR1cywgc2V0U3RhdHVzXSA9IHVzZVN0YXRlKCdyZWFkeScpO1xyXG4gICAgY29uc3QgW2lzQ29kZUJ5dGVDb3BpZWQsIHNldElzQ29kZUJ5dGVDb3BpZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3Qgb25Db3B5Q2xpY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgaWYgKCFpc0NvZGVCeXRlQ29waWVkKSB7XHJcbiAgICAgICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmRcclxuICAgICAgICAgICAgICAgIC53cml0ZVRleHQoY29weUZvcm1hdHRlciA/IGNvcHlGb3JtYXR0ZXIoeyB0ZXh0LCBsYW5ndWFnZSB9KSA6IHRleHQpXHJcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxyXG4gICAgICAgICAgICAgICAgLmNhdGNoKCgpID0+IGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBjb3B5JykpO1xyXG4gICAgICAgICAgICBzZXRJc0NvZGVCeXRlQ29waWVkKHRydWUpO1xyXG4gICAgICAgICAgICB0cmFja0NsaWNrKCdjb3B5JywgdHJhY2tpbmdEYXRhKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3Qgc2V0RXJyb3JTdGF0dXNBbmRPdXRwdXQgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgICAgIHNldE91dHB1dChtZXNzYWdlKTtcclxuICAgICAgICBzZXRTdGF0dXMoJ2Vycm9yJyk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaGFuZGxlU3VibWl0ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGlmICh0ZXh0LnRyaW0oKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICAgICAgICBsYW5ndWFnZSxcclxuICAgICAgICAgICAgY29kZTogdGV4dCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHNldFN0YXR1cygnd2FpdGluZycpO1xyXG4gICAgICAgIHNldE91dHB1dCgnJyk7XHJcbiAgICAgICAgdHJhY2tDbGljaygncnVuJywgdHJhY2tpbmdEYXRhKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHBvc3RTbmlwcGV0KGRhdGEsIHNuaXBwZXRzQmFzZVVybCk7XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGRlcnIubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgc2V0RXJyb3JTdGF0dXNBbmRPdXRwdXQocmVzcG9uc2Uuc3RkZXJyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChyZXNwb25zZS5leGl0X2NvZGUgPT09IERPQ0tFUl9TSUdURVJNKSB7XHJcbiAgICAgICAgICAgICAgICBzZXRFcnJvclN0YXR1c0FuZE91dHB1dCgnWW91ciBjb2RlIHRvb2sgdG9vIGxvbmcgdG8gcmV0dXJuIGEgcmVzdWx0LiBEb3VibGUgY2hlY2sgeW91ciBjb2RlIGZvciBhbnkgaXNzdWVzIGFuZCB0cnkgYWdhaW4hJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAocmVzcG9uc2UuZXhpdF9jb2RlICE9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBzZXRFcnJvclN0YXR1c0FuZE91dHB1dCgnQW4gdW5rbm93biBlcnJvciBvY2N1cmVkLicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgc2V0T3V0cHV0KHJlc3BvbnNlLnN0ZG91dCk7XHJcbiAgICAgICAgICAgICAgICBzZXRTdGF0dXMoJ3JlYWR5Jyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIHNldEVycm9yU3RhdHVzQW5kT3V0cHV0KCdFcnJvcjogJyArIGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxyXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRHJhd2VycywgeyBsZWZ0Q2hpbGQ6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2ltcGxlTW9uYWNvRWRpdG9yLCB7IHZhbHVlOiB0ZXh0LCBsYW5ndWFnZTogbGFuZ3VhZ2UsIG9uQ2hhbmdlOiBvbkNoYW5nZSB9KSwgcmlnaHRDaGlsZDogUmVhY3QuY3JlYXRlRWxlbWVudChPdXRwdXQsIHsgaGFzRXJyb3I6IHN0YXR1cyA9PT0gJ2Vycm9yJywgXCJhcmlhLWxpdmVcIjogXCJwb2xpdGVcIiB9LCBvdXRwdXQpIH0pLFxyXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmxleEJveCwgeyBqdXN0aWZ5Q29udGVudDogaGlkZUNvcHlCdXR0b24gPyAnZmxleC1lbmQnIDogJ3NwYWNlLWJldHdlZW4nLCBwbDogOCB9LFxyXG4gICAgICAgICAgICAhaGlkZUNvcHlCdXR0b24gPyAoUmVhY3QuY3JlYXRlRWxlbWVudChUb29sVGlwLCB7IGlkOiBcImNvZGVieXRlLWNvcGllZFwiLCBhbGlnbm1lbnQ6IFwidG9wLXJpZ2h0XCIsIHRhcmdldDogUmVhY3QuY3JlYXRlRWxlbWVudChUZXh0QnV0dG9uLCB7IHZhcmlhbnQ6IFwic2Vjb25kYXJ5XCIsIG9uQ2xpY2s6IG9uQ29weUNsaWNrLCBvbkJsdXI6ICgpID0+IHNldElzQ29kZUJ5dGVDb3BpZWQoZmFsc2UpLCBcImRhdGEtdGVzdGlkXCI6IFwiY29weS1jb2RlYnl0ZS1idG5cIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29weUljb25TdHlsZWQsIHsgXCJhcmlhLWhpZGRlblwiOiBcInRydWVcIiB9KSxcclxuICAgICAgICAgICAgICAgICAgICBcIiBDb3B5IENvZGVieXRlXCIpIH0sIGlzQ29kZUJ5dGVDb3BpZWQgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwiY29weS1jb25maXJtYXRpb24tdG9vbHRpcFwiLCByb2xlOiBcImFsZXJ0XCIgfSwgXCJDb3BpZWQhXCIpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IFwiZGF0YS10ZXN0aWRcIjogXCJjb3B5LXByb21wdC10b29sdGlwXCIgfSwgXCJDb3B5IHRvIHlvdXIgY2xpcGJvYXJkXCIpKSkpIDogbnVsbCxcclxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGaWxsQnV0dG9uLCB7IG9uQ2xpY2s6IGhhbmRsZVN1Ym1pdCB9LCBzdGF0dXMgPT09ICd3YWl0aW5nJyA/IFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3Bpbm5lciwgbnVsbCkgOiAnUnVuJykpKSk7XHJcbn07XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVkaXRvci5qcy5tYXAiXX0= */"));
464
+
465
+ const CopyIconStyled = /*#__PURE__*/_styled(CopyIcon, {
466
+ target: "e1lzxy8e0",
467
+ label: "CopyIconStyled"
468
+ })(process.env.NODE_ENV === "production" ? {
469
+ name: "u7ytkp",
470
+ styles: "margin-right:0.5rem"
471
+ } : {
472
+ name: "u7ytkp",
473
+ styles: "margin-right:0.5rem",
474
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVkaXRvci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUJ3QyIsImZpbGUiOiJlZGl0b3IudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsbEJ1dHRvbiwgRmxleEJveCwgU3Bpbm5lciwgVGV4dEJ1dHRvbiwgVG9vbFRpcCwgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dCc7XHJcbmltcG9ydCB7IENvcHlJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xyXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XHJcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgcG9zdFNuaXBwZXQgfSBmcm9tICcuL2FwaSc7XHJcbmltcG9ydCB7IERyYXdlcnMgfSBmcm9tICcuL2RyYXdlcnMnO1xyXG5pbXBvcnQgeyB0cmFja0NsaWNrIH0gZnJvbSAnLi9oZWxwZXJzJztcclxuaW1wb3J0IHsgU2ltcGxlTW9uYWNvRWRpdG9yIH0gZnJvbSAnLi9Nb25hY29FZGl0b3InO1xyXG5jb25zdCBPdXRwdXQgPSBzdHlsZWQucHJlIGBcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwIDFyZW07XG4gIGZvbnQtZmFtaWx5OiBNb25hY287XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIG92ZXJmbG93OiBhdXRvO1xuICAkeyh7IGhhc0Vycm9yLCB0aGVtZSB9KSA9PiBgXG4gIGNvbG9yOiAke2hhc0Vycm9yID8gdGhlbWUuY29sb3JzLm9yYW5nZSA6IHRoZW1lLmNvbG9ycy50ZXh0fTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHt0aGVtZS5jb2xvcnNbJ25hdnktOTAwJ119O1xuYH1cbmA7XHJcbmNvbnN0IENvcHlJY29uU3R5bGVkID0gc3R5bGVkKENvcHlJY29uKSBgXG4gIG1hcmdpbi1yaWdodDogMC41cmVtO1xuYDtcclxuY29uc3QgRE9DS0VSX1NJR1RFUk0gPSAxNDM7XHJcbmV4cG9ydCBjb25zdCBFZGl0b3IgPSAoeyBsYW5ndWFnZSwgdGV4dCwgaGlkZUNvcHlCdXR0b24sIG9uQ2hhbmdlLCBjb3B5Rm9ybWF0dGVyLCBzbmlwcGV0c0Jhc2VVcmwsIHRyYWNraW5nRGF0YSwgfSkgPT4ge1xyXG4gICAgY29uc3QgW291dHB1dCwgc2V0T3V0cHV0XSA9IHVzZVN0YXRlKCcnKTtcclxuICAgIGNvbnN0IFtzdGF0dXMsIHNldFN0YXR1c10gPSB1c2VTdGF0ZSgncmVhZHknKTtcclxuICAgIGNvbnN0IFtpc0NvZGVCeXRlQ29waWVkLCBzZXRJc0NvZGVCeXRlQ29waWVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuICAgIGNvbnN0IG9uQ29weUNsaWNrID0gKCkgPT4ge1xyXG4gICAgICAgIGlmICghaXNDb2RlQnl0ZUNvcGllZCkge1xyXG4gICAgICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkXHJcbiAgICAgICAgICAgICAgICAud3JpdGVUZXh0KGNvcHlGb3JtYXR0ZXIgPyBjb3B5Rm9ybWF0dGVyKHsgdGV4dCwgbGFuZ3VhZ2UgfSkgOiB0ZXh0KVxyXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcclxuICAgICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gY29weScpKTtcclxuICAgICAgICAgICAgc2V0SXNDb2RlQnl0ZUNvcGllZCh0cnVlKTtcclxuICAgICAgICAgICAgdHJhY2tDbGljaygnY29weScsIHRyYWNraW5nRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHNldEVycm9yU3RhdHVzQW5kT3V0cHV0ID0gKG1lc3NhZ2UpID0+IHtcclxuICAgICAgICBzZXRPdXRwdXQobWVzc2FnZSk7XHJcbiAgICAgICAgc2V0U3RhdHVzKCdlcnJvcicpO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IGFzeW5jICgpID0+IHtcclxuICAgICAgICBpZiAodGV4dC50cmltKCkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgICAgICAgbGFuZ3VhZ2UsXHJcbiAgICAgICAgICAgIGNvZGU6IHRleHQsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBzZXRTdGF0dXMoJ3dhaXRpbmcnKTtcclxuICAgICAgICBzZXRPdXRwdXQoJycpO1xyXG4gICAgICAgIHRyYWNrQ2xpY2soJ3J1bicsIHRyYWNraW5nRGF0YSk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBwb3N0U25pcHBldChkYXRhLCBzbmlwcGV0c0Jhc2VVcmwpO1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RkZXJyLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHNldEVycm9yU3RhdHVzQW5kT3V0cHV0KHJlc3BvbnNlLnN0ZGVycik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAocmVzcG9uc2UuZXhpdF9jb2RlID09PSBET0NLRVJfU0lHVEVSTSkge1xyXG4gICAgICAgICAgICAgICAgc2V0RXJyb3JTdGF0dXNBbmRPdXRwdXQoJ1lvdXIgY29kZSB0b29rIHRvbyBsb25nIHRvIHJldHVybiBhIHJlc3VsdC4gRG91YmxlIGNoZWNrIHlvdXIgY29kZSBmb3IgYW55IGlzc3VlcyBhbmQgdHJ5IGFnYWluIScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHJlc3BvbnNlLmV4aXRfY29kZSAhPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgc2V0RXJyb3JTdGF0dXNBbmRPdXRwdXQoJ0FuIHVua25vd24gZXJyb3Igb2NjdXJlZC4nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHNldE91dHB1dChyZXNwb25zZS5zdGRvdXQpO1xyXG4gICAgICAgICAgICAgICAgc2V0U3RhdHVzKCdyZWFkeScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICBzZXRFcnJvclN0YXR1c0FuZE91dHB1dCgnRXJyb3I6ICcgKyBlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KERyYXdlcnMsIHsgbGVmdENoaWxkOiBSZWFjdC5jcmVhdGVFbGVtZW50KFNpbXBsZU1vbmFjb0VkaXRvciwgeyB2YWx1ZTogdGV4dCwgbGFuZ3VhZ2U6IGxhbmd1YWdlLCBvbkNoYW5nZTogb25DaGFuZ2UgfSksIHJpZ2h0Q2hpbGQ6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoT3V0cHV0LCB7IGhhc0Vycm9yOiBzdGF0dXMgPT09ICdlcnJvcicsIFwiYXJpYS1saXZlXCI6IFwicG9saXRlXCIgfSwgb3V0cHV0KSB9KSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZsZXhCb3gsIHsganVzdGlmeUNvbnRlbnQ6IGhpZGVDb3B5QnV0dG9uID8gJ2ZsZXgtZW5kJyA6ICdzcGFjZS1iZXR3ZWVuJywgcGw6IDggfSxcclxuICAgICAgICAgICAgIWhpZGVDb3B5QnV0dG9uID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVG9vbFRpcCwgeyBpZDogXCJjb2RlYnl0ZS1jb3BpZWRcIiwgYWxpZ25tZW50OiBcInRvcC1yaWdodFwiLCB0YXJnZXQ6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGV4dEJ1dHRvbiwgeyB2YXJpYW50OiBcInNlY29uZGFyeVwiLCBvbkNsaWNrOiBvbkNvcHlDbGljaywgb25CbHVyOiAoKSA9PiBzZXRJc0NvZGVCeXRlQ29waWVkKGZhbHNlKSwgXCJkYXRhLXRlc3RpZFwiOiBcImNvcHktY29kZWJ5dGUtYnRuXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KENvcHlJY29uU3R5bGVkLCB7IFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgXCIgQ29weSBDb2RlYnl0ZVwiKSB9LCBpc0NvZGVCeXRlQ29waWVkID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHsgXCJkYXRhLXRlc3RpZFwiOiBcImNvcHktY29uZmlybWF0aW9uLXRvb2x0aXBcIiwgcm9sZTogXCJhbGVydFwiIH0sIFwiQ29waWVkIVwiKSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBcImRhdGEtdGVzdGlkXCI6IFwiY29weS1wcm9tcHQtdG9vbHRpcFwiIH0sIFwiQ29weSB0byB5b3VyIGNsaXBib2FyZFwiKSkpKSA6IG51bGwsXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmlsbEJ1dHRvbiwgeyBvbkNsaWNrOiBoYW5kbGVTdWJtaXQgfSwgc3RhdHVzID09PSAnd2FpdGluZycgPyBSZWFjdC5jcmVhdGVFbGVtZW50KFNwaW5uZXIsIG51bGwpIDogJ1J1bicpKSkpO1xyXG59O1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1lZGl0b3IuanMubWFwIl19 */",
475
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
476
+ });
477
+
478
+ const DOCKER_SIGTERM = 143;
479
+ const Editor = ({
480
+ language,
481
+ text,
482
+ hideCopyButton,
483
+ onChange,
484
+ copyFormatter,
485
+ snippetsBaseUrl,
486
+ trackingData
487
+ }) => {
488
+ const [output, setOutput] = useState('');
489
+ const [status, setStatus] = useState('ready');
490
+ const [isCodeByteCopied, setIsCodeByteCopied] = useState(false);
491
+
492
+ const onCopyClick = () => {
493
+ if (!isCodeByteCopied) {
494
+ navigator.clipboard.writeText(copyFormatter ? copyFormatter({
495
+ text,
496
+ language
497
+ }) : text) // eslint-disable-next-line no-console
498
+ .catch(() => console.error('Failed to copy'));
499
+ setIsCodeByteCopied(true);
500
+ trackClick('copy', trackingData);
501
+ }
502
+ };
503
+
504
+ const setErrorStatusAndOutput = message => {
505
+ setOutput(message);
506
+ setStatus('error');
507
+ };
508
+
509
+ const handleSubmit = async () => {
510
+ if (text.trim().length === 0) {
511
+ return;
512
+ }
513
+
514
+ const data = {
515
+ language,
516
+ code: text
517
+ };
518
+ setStatus('waiting');
519
+ setOutput('');
520
+ trackClick('run', trackingData);
521
+
522
+ try {
523
+ const response = await postSnippet(data, snippetsBaseUrl);
524
+
525
+ if (response.stderr.length > 0) {
526
+ setErrorStatusAndOutput(response.stderr);
527
+ } else if (response.exit_code === DOCKER_SIGTERM) {
528
+ setErrorStatusAndOutput('Your code took too long to return a result. Double check your code for any issues and try again!');
529
+ } else if (response.exit_code !== 0) {
530
+ setErrorStatusAndOutput('An unknown error occured.');
531
+ } else {
532
+ setOutput(response.stdout);
533
+ setStatus('ready');
534
+ }
535
+ } catch (error) {
536
+ setErrorStatusAndOutput('Error: ' + error);
537
+ }
538
+ };
539
+
540
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Drawers, {
541
+ leftChild: /*#__PURE__*/React.createElement(SimpleMonacoEditor, {
542
+ value: text,
543
+ language: language,
544
+ onChange: onChange
545
+ }),
546
+ rightChild: /*#__PURE__*/React.createElement(Output, {
547
+ hasError: status === 'error',
548
+ "aria-live": "polite"
549
+ }, output)
550
+ }), /*#__PURE__*/React.createElement(FlexBox, {
551
+ justifyContent: hideCopyButton ? 'flex-end' : 'space-between',
552
+ pl: 8
553
+ }, !hideCopyButton ? /*#__PURE__*/React.createElement(ToolTip, {
554
+ id: "codebyte-copied",
555
+ alignment: "top-right",
556
+ target: /*#__PURE__*/React.createElement(TextButton, {
557
+ variant: "secondary",
558
+ onClick: onCopyClick,
559
+ onBlur: () => setIsCodeByteCopied(false),
560
+ "data-testid": "copy-codebyte-btn"
561
+ }, /*#__PURE__*/React.createElement(CopyIconStyled, {
562
+ "aria-hidden": "true"
563
+ }), " Copy Codebyte")
564
+ }, isCodeByteCopied ? /*#__PURE__*/React.createElement("span", {
565
+ "data-testid": "copy-confirmation-tooltip",
566
+ role: "alert"
567
+ }, "Copied!") : /*#__PURE__*/React.createElement("span", {
568
+ "data-testid": "copy-prompt-tooltip"
569
+ }, "Copy to your clipboard")) : null, /*#__PURE__*/React.createElement(FillButton, {
570
+ onClick: handleSubmit
571
+ }, status === 'waiting' ? /*#__PURE__*/React.createElement(Spinner, null) : 'Run')));
572
+ };
573
+
574
+ const useIntersection = (ref, options) => {
575
+ const [intersectionObserverEntry, setIntersectionObserverEntry] = useState(null);
576
+ useEffect(() => {
577
+ if (ref.current && typeof IntersectionObserver === 'function') {
578
+ const handler = entries => {
579
+ setIntersectionObserverEntry(entries[0]);
580
+ };
581
+
582
+ const observer = new IntersectionObserver(handler, {
583
+ threshold: options.threshold,
584
+ root: options.root,
585
+ rootMargin: options.rootMargin
586
+ });
587
+ observer.observe(ref.current);
588
+ return () => {
589
+ setIntersectionObserverEntry(null);
590
+ observer.disconnect();
591
+ };
592
+ } // eslint-disable-next-line @typescript-eslint/no-empty-function
593
+
594
+
595
+ return () => {};
596
+ }, [ref, options.threshold, options.root, options.rootMargin]);
597
+ return intersectionObserverEntry;
598
+ };
599
+
600
+ // will determine the amount of the element that needs to come into the viewport
601
+ // before the useEverInView hook is triggered. The rootMargin will determine the
602
+ // size of the root element's bounding box.
603
+ // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API#intersection_observer_options
604
+
605
+ const useEverInView = (rootMargin = '0px', threshold = 0.2) => {
606
+ const ref = useRef(null);
607
+ const [everInView, setEverInView] = useState(false);
608
+ const intersection = useIntersection(ref, {
609
+ root: null,
610
+ rootMargin,
611
+ threshold
612
+ });
613
+ const inView = intersection == null ? void 0 : intersection.isIntersecting;
614
+ useEffect(() => {
615
+ if (inView) {
616
+ setEverInView(true);
617
+ }
618
+ }, [inView]);
619
+ return {
620
+ everInView: Boolean(everInView || inView),
621
+ ref
622
+ };
623
+ };
624
+
625
+ const LanguageSelection = ({
626
+ onChange
627
+ }) => {
628
+ return /*#__PURE__*/React.createElement(ColorMode, {
629
+ mode: "dark",
630
+ flex: 1,
631
+ px: 16,
632
+ pt: 48
633
+ }, /*#__PURE__*/React.createElement(Text, {
634
+ mb: 16
635
+ }, "Which language do you want to code in?"), /*#__PURE__*/React.createElement(Select, {
636
+ id: "language-select",
637
+ "aria-label": "Select a language",
638
+ options: LanguageOptions,
639
+ onChange: e => onChange(e.target.value)
640
+ }));
641
+ };
642
+
643
+ const _excluded = ["text", "language", "hideCopyButton", "snippetsBaseUrl", "onEdit", "onLanguageChange", "copyFormatter", "trackingData", "trackFirstEdit"];
644
+ const editorBaseStyles = system.css({
645
+ border: 1,
646
+ borderColor: 'gray-900',
647
+ display: 'flex',
648
+ flexDirection: 'column',
649
+ minHeight: '25rem'
650
+ });
651
+
652
+ const EditorContainer = /*#__PURE__*/_styled(Background, {
653
+ target: "e1epka4g0",
654
+ label: "EditorContainer"
655
+ })(editorBaseStyles, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvZGVCeXRlRWRpdG9yLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrQndCIiwiZmlsZSI6ImNvZGVCeXRlRWRpdG9yLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJveCwgSWNvbkJ1dHRvbiB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcclxuaW1wb3J0IHsgRmF2aWNvbkljb24gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1pY29ucyc7XHJcbmltcG9ydCB7IEJhY2tncm91bmQsIHN5c3RlbSB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0LXN0eWxlcyc7XHJcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcclxuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCB7IGhlbGxvV29ybGQgfSBmcm9tICcuL2NvbnN0cyc7XHJcbmltcG9ydCB7IEVkaXRvciB9IGZyb20gJy4vZWRpdG9yJztcclxuaW1wb3J0IHsgdHJhY2tDbGljayB9IGZyb20gJy4vaGVscGVycyc7XHJcbmltcG9ydCB7IHVzZUV2ZXJJblZpZXcgfSBmcm9tICcuL2hlbHBlcnMvdXNlRXZlckluVmlldyc7XHJcbmltcG9ydCB7IExhbmd1YWdlU2VsZWN0aW9uIH0gZnJvbSAnLi9sYW5ndWFnZVNlbGVjdGlvbic7XHJcbmltcG9ydCB7IHRyYWNrVXNlckltcHJlc3Npb24gfSBmcm9tICcuL2xpYnMvZXZlbnRUcmFja2luZyc7XHJcbmNvbnN0IGVkaXRvckJhc2VTdHlsZXMgPSBzeXN0ZW0uY3NzKHtcclxuICAgIGJvcmRlcjogMSxcclxuICAgIGJvcmRlckNvbG9yOiAnZ3JheS05MDAnLFxyXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxyXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXHJcbiAgICBtaW5IZWlnaHQ6ICcyNXJlbScsXHJcbn0pO1xyXG5jb25zdCBFZGl0b3JDb250YWluZXIgPSBzdHlsZWQoQmFja2dyb3VuZCkoZWRpdG9yQmFzZVN0eWxlcyk7XHJcbmV4cG9ydCBjb25zdCBDb2RlQnl0ZUVkaXRvciA9ICh7IHRleHQ6IGluaXRpYWxUZXh0LCBsYW5ndWFnZTogaW5pdGlhbExhbmd1YWdlLCBoaWRlQ29weUJ1dHRvbiA9IGZhbHNlLCBzbmlwcGV0c0Jhc2VVcmwsIG9uRWRpdCwgb25MYW5ndWFnZUNoYW5nZSwgY29weUZvcm1hdHRlciwgdHJhY2tpbmdEYXRhLCB0cmFja0ZpcnN0RWRpdCA9IGZhbHNlLCAuLi5yZXN0IH0pID0+IHtcclxuICAgIGNvbnN0IHsgZXZlckluVmlldywgcmVmIH0gPSB1c2VFdmVySW5WaWV3KCk7XHJcbiAgICBjb25zdCBnZXRJbml0aWFsVGV4dCA9ICgpID0+IHtcclxuICAgICAgICBpZiAoaW5pdGlhbFRleHQgIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgcmV0dXJuIGluaXRpYWxUZXh0O1xyXG4gICAgICAgIHJldHVybiBpbml0aWFsTGFuZ3VhZ2UgPyBoZWxsb1dvcmxkW2luaXRpYWxMYW5ndWFnZV0gOiAnJztcclxuICAgIH07XHJcbiAgICBjb25zdCBbdGV4dCwgc2V0VGV4dF0gPSB1c2VTdGF0ZShnZXRJbml0aWFsVGV4dCgpKTtcclxuICAgIGNvbnN0IFtsYW5ndWFnZSwgc2V0TGFuZ3VhZ2VdID0gdXNlU3RhdGUoaW5pdGlhbExhbmd1YWdlID8/ICcnKTtcclxuICAgIGNvbnN0IFtoYXNCZWVuRWRpdGVkLCBzZXRIYXNCZWVuRWRpdGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKGV2ZXJJblZpZXcpIHtcclxuICAgICAgICAgICAgdHJhY2tVc2VySW1wcmVzc2lvbih7XHJcbiAgICAgICAgICAgICAgICBwYWdlX25hbWU6IHRyYWNraW5nRGF0YT8ucGFnZV9uYW1lID8/ICdVbmtub3duJyxcclxuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRyYWNraW5nRGF0YT8uY29udGV4dCA/PyBkb2N1bWVudC5yZWZlcnJlcixcclxuICAgICAgICAgICAgICAgIHRhcmdldDogJ2NvZGVieXRlJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2V2ZXJJblZpZXcsIHRyYWNraW5nRGF0YV0pO1xyXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KEVkaXRvckNvbnRhaW5lciwgeyBiZzogXCJibGFja1wiLCBtYXhXaWR0aDogXCI0M3JlbVwiLCAuLi5yZXN0LCBvdmVyZmxvdzogXCJoaWRkZW5cIiwgcmVmOiByZWYgfSxcclxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEJveCwgeyBib3JkZXJCb3R0b206IDEsIGJvcmRlckNvbG9yOiBcImdyYXktOTAwXCIsIHB5OiA0LCBwbDogOCB9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEljb25CdXR0b24sIHsgaWNvbjogRmF2aWNvbkljb24sIHZhcmlhbnQ6IFwic2Vjb25kYXJ5XCIsIGhyZWY6IFwiaHR0cHM6Ly93d3cuY29kZWNhZGVteS5jb20vXCIsIHRhcmdldDogXCJfYmxhbmtcIiwgcmVsOiBcIm5vcmVmZXJyZXJcIiwgXCJhcmlhLWxhYmVsXCI6IFwidmlzaXQgY29kZWNhZGVteS5jb21cIiwgb25DbGljazogKCkgPT4gdHJhY2tDbGljaygnbG9nbycsIHRyYWNraW5nRGF0YSkgfSkpLFxyXG4gICAgICAgIGxhbmd1YWdlID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRWRpdG9yLCB7IGxhbmd1YWdlOiBsYW5ndWFnZSwgdGV4dDogdGV4dCwgaGlkZUNvcHlCdXR0b246IGhpZGVDb3B5QnV0dG9uLCBvbkNoYW5nZTogKG5ld1RleHQpID0+IHtcclxuICAgICAgICAgICAgICAgIHNldFRleHQobmV3VGV4dCk7XHJcbiAgICAgICAgICAgICAgICBvbkVkaXQ/LihuZXdUZXh0LCBsYW5ndWFnZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAodHJhY2tGaXJzdEVkaXQgJiYgaGFzQmVlbkVkaXRlZCA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZXRIYXNCZWVuRWRpdGVkKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYWNrQ2xpY2soJ2VkaXQnLCB0cmFja2luZ0RhdGEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LCBzbmlwcGV0c0Jhc2VVcmw6IHNuaXBwZXRzQmFzZVVybCwgY29weUZvcm1hdHRlcjogY29weUZvcm1hdHRlciwgdHJhY2tpbmdEYXRhOiB0cmFja2luZ0RhdGEgfSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGFuZ3VhZ2VTZWxlY3Rpb24sIHsgb25DaGFuZ2U6IChuZXdMYW5ndWFnZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3VGV4dCA9IHRleHQgfHwgKG5ld0xhbmd1YWdlID8gaGVsbG9Xb3JsZFtuZXdMYW5ndWFnZV0gOiAnJyk7XHJcbiAgICAgICAgICAgICAgICBzZXRMYW5ndWFnZShuZXdMYW5ndWFnZSk7XHJcbiAgICAgICAgICAgICAgICBzZXRUZXh0KG5ld1RleHQpO1xyXG4gICAgICAgICAgICAgICAgdHJhY2tDbGljaygnbGFuZ19zZWxlY3QnLCB0cmFja2luZ0RhdGEpO1xyXG4gICAgICAgICAgICAgICAgb25MYW5ndWFnZUNoYW5nZT8uKG5ld1RleHQsIG5ld0xhbmd1YWdlKTtcclxuICAgICAgICAgICAgfSB9KSkpKTtcclxufTtcclxuZXhwb3J0IGRlZmF1bHQgQ29kZUJ5dGVFZGl0b3I7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvZGVCeXRlRWRpdG9yLmpzLm1hcCJdfQ== */");
656
+
657
+ const CodeByteEditor = _ref => {
658
+ let {
659
+ text: initialText,
660
+ language: initialLanguage,
661
+ hideCopyButton = false,
662
+ snippetsBaseUrl,
663
+ onEdit,
664
+ onLanguageChange,
665
+ copyFormatter,
666
+ trackingData,
667
+ trackFirstEdit = false
668
+ } = _ref,
669
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded);
670
+
671
+ const {
672
+ everInView,
673
+ ref
674
+ } = useEverInView();
675
+
676
+ const getInitialText = () => {
677
+ if (initialText !== undefined) return initialText;
678
+ return initialLanguage ? helloWorld[initialLanguage] : '';
679
+ };
680
+
681
+ const [text, setText] = useState(getInitialText());
682
+ const [language, setLanguage] = useState(initialLanguage != null ? initialLanguage : '');
683
+ const [hasBeenEdited, setHasBeenEdited] = useState(false);
684
+ useEffect(() => {
685
+ if (everInView) {
686
+ var _trackingData$page_na, _trackingData$context;
687
+
688
+ trackUserImpression({
689
+ page_name: (_trackingData$page_na = trackingData == null ? void 0 : trackingData.page_name) != null ? _trackingData$page_na : 'Unknown',
690
+ context: (_trackingData$context = trackingData == null ? void 0 : trackingData.context) != null ? _trackingData$context : document.referrer,
691
+ target: 'codebyte'
692
+ });
693
+ }
694
+ }, [everInView, trackingData]);
695
+ return /*#__PURE__*/React.createElement(EditorContainer, _extends({
696
+ bg: "black",
697
+ maxWidth: "43rem"
698
+ }, rest, {
699
+ overflow: "hidden",
700
+ ref: ref
701
+ }), /*#__PURE__*/React.createElement(Box, {
702
+ borderBottom: 1,
703
+ borderColor: "gray-900",
704
+ py: 4,
705
+ pl: 8
706
+ }, /*#__PURE__*/React.createElement(IconButton, {
707
+ icon: FaviconIcon,
708
+ variant: "secondary",
709
+ href: "https://www.codecademy.com/",
710
+ target: "_blank",
711
+ rel: "noreferrer",
712
+ "aria-label": "visit codecademy.com",
713
+ onClick: () => trackClick('logo', trackingData)
714
+ })), language ? /*#__PURE__*/React.createElement(Editor, {
715
+ language: language,
716
+ text: text,
717
+ hideCopyButton: hideCopyButton,
718
+ onChange: newText => {
719
+ setText(newText);
720
+ onEdit == null ? void 0 : onEdit(newText, language);
721
+
722
+ if (trackFirstEdit && hasBeenEdited === false) {
723
+ setHasBeenEdited(true);
724
+ trackClick('edit', trackingData);
725
+ }
726
+ },
727
+ snippetsBaseUrl: snippetsBaseUrl,
728
+ copyFormatter: copyFormatter,
729
+ trackingData: trackingData
730
+ }) : /*#__PURE__*/React.createElement(LanguageSelection, {
731
+ onChange: newLanguage => {
732
+ const newText = text || (newLanguage ? helloWorld[newLanguage] : '');
733
+ setLanguage(newLanguage);
734
+ setText(newText);
735
+ trackClick('lang_select', trackingData);
736
+ onLanguageChange == null ? void 0 : onLanguageChange(newText, newLanguage);
737
+ }
738
+ }));
739
+ };
740
+
741
+ export { CodeByteEditor, LanguageOptions, helloWorld, validLanguages };