@codecademy/codebytes 0.7.4-alpha.42681.0 → 0.7.4-alpha.6839f7.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/CHANGELOG.md CHANGED
@@ -3,7 +3,7 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ### [0.7.4-alpha.42681.0](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.7.3...@codecademy/codebytes@0.7.4-alpha.42681.0) (2022-10-21)
6
+ ### [0.7.4-alpha.6839f7.0](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.7.3...@codecademy/codebytes@0.7.4-alpha.6839f7.0) (2022-10-26)
7
7
 
8
8
  **Note:** Version bump only for package @codecademy/codebytes
9
9
 
@@ -2,7 +2,6 @@
2
2
  // This file is part of the Codebytes MVP and only includes basic configuration around theming for the SimpleMonacoEditor component
3
3
  // We are working on a monaco package in client-modules that has more configuration around themes and languages
4
4
  // Monaco as a shared package RFC https://www.notion.so/codecademy/Monaco-editor-as-a-shared-package-1f4484db165b4abc8394c3556451ef6a
5
-
6
5
  import { colors, editorColors } from '@codecademy/gamut-styles';
7
6
  var darkTheme = {
8
7
  blue: editorColors.blue,
@@ -2,15 +2,14 @@
2
2
  // This component is part of the Codebytes MVP and only includes basic configuration around theming
3
3
  // We are working on a monaco package in client-modules that has more configuration around themes and languages
4
4
  // Monaco as a shared package RFC https://www.notion.so/codecademy/Monaco-editor-as-a-shared-package-1f4484db165b4abc8394c3556451ef6a
5
-
6
5
  import ReactMonacoEditor from '@monaco-editor/react';
7
6
  import React, { useCallback, useRef } from 'react';
8
7
  import ResizeObserver from 'react-resize-observer';
9
8
  import { dark } from './theme';
10
9
  export var SimpleMonacoEditor = function SimpleMonacoEditor(_ref) {
11
10
  var value = _ref.value,
12
- language = _ref.language,
13
- onChange = _ref.onChange;
11
+ language = _ref.language,
12
+ onChange = _ref.onChange;
14
13
  var editorRef = useRef(null);
15
14
  var editorWillMount = useCallback(function (editor, monaco) {
16
15
  editorRef.current = editor;
@@ -20,8 +19,9 @@ export var SimpleMonacoEditor = function SimpleMonacoEditor(_ref) {
20
19
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ResizeObserver, {
21
20
  onResize: function onResize(_ref2) {
22
21
  var _editorRef$current;
22
+
23
23
  var height = _ref2.height,
24
- width = _ref2.width;
24
+ width = _ref2.width;
25
25
  (_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 ? void 0 : _editorRef$current.layout({
26
26
  height: height,
27
27
  width: width
@@ -2,19 +2,19 @@
2
2
  // This file is part of the Codebytes MVP and only includes basic configuration around theming for the SimpleMonacoEditor component
3
3
  // We are working on a monaco package in client-modules that has more configuration around themes and languages
4
4
  // Monaco as a shared package RFC https://www.notion.so/codecademy/Monaco-editor-as-a-shared-package-1f4484db165b4abc8394c3556451ef6a
5
-
6
5
  import * as darkColors from './colorsDark';
6
+
7
7
  var c = function c(color) {
8
8
  return color.substr(1);
9
9
  };
10
+
10
11
  var theme = function theme(_ref) {
11
12
  var ui = _ref.ui,
12
- syntax = _ref.syntax;
13
+ syntax = _ref.syntax;
13
14
  return {
14
15
  base: 'vs-dark',
15
16
  inherit: true,
16
- rules: [
17
- // Base
17
+ rules: [// Base
18
18
  {
19
19
  token: '',
20
20
  foreground: c(syntax.basic)
@@ -119,4 +119,5 @@ var theme = function theme(_ref) {
119
119
  }
120
120
  };
121
121
  };
122
+
122
123
  export var dark = theme(darkColors);
@@ -1 +0,0 @@
1
- export {};
@@ -6,14 +6,13 @@ import { CodeByteEditor } from '..';
6
6
  import { helloWorld, validLanguages } from '../consts';
7
7
  import { trackClick } from '../helpers';
8
8
  import { trackUserImpression } from '../libs/eventTracking';
9
- var mockEditorTestId = 'mock-editor-test-id';
9
+ var mockEditorTestId = 'mock-editor-test-id'; // This is a super simplified mock capable of render value and trigger onChange.
10
10
 
11
- // This is a super simplified mock capable of render value and trigger onChange.
12
11
  jest.mock('../MonacoEditor', function () {
13
12
  return {
14
13
  SimpleMonacoEditor: function SimpleMonacoEditor(_ref) {
15
14
  var value = _ref.value,
16
- _onChange = _ref.onChange;
15
+ _onChange = _ref.onChange;
17
16
  return /*#__PURE__*/React.createElement(React.Fragment, null, value, /*#__PURE__*/React.createElement("input", {
18
17
  "data-testid": mockEditorTestId,
19
18
  type: "text",
@@ -40,46 +39,54 @@ describe('CodeBytes', function () {
40
39
  });
41
40
  it('initializes with a language-specific "hello world" program when there is no language prop', function () {
42
41
  var _renderWrapper = renderWrapper(),
43
- view = _renderWrapper.view;
42
+ view = _renderWrapper.view;
43
+
44
44
  var selectedLanguage = view.getByRole('combobox');
45
45
  userEvent.selectOptions(selectedLanguage, ['javascript']);
46
46
  view.getByText(helloWorld.javascript);
47
47
  });
48
48
  it('initializes with a language-specific "hello world" program when there is a language prop but no text prop', function () {
49
49
  var _renderWrapper2 = renderWrapper({
50
- language: 'javascript'
51
- }),
52
- view = _renderWrapper2.view;
50
+ language: 'javascript'
51
+ }),
52
+ view = _renderWrapper2.view;
53
+
53
54
  view.getByText(helloWorld.javascript);
54
55
  });
55
56
  it('initializes with deserialized text when there is a text prop but no language prop', function () {
56
57
  var testString = 'yes hello';
58
+
57
59
  var _renderWrapper3 = renderWrapper({
58
- text: testString
59
- }),
60
- view = _renderWrapper3.view;
60
+ text: testString
61
+ }),
62
+ view = _renderWrapper3.view;
63
+
61
64
  var selectedLanguage = view.getByRole('combobox');
62
65
  userEvent.selectOptions(selectedLanguage, ['javascript']);
63
66
  view.getByText(testString);
64
67
  });
65
68
  it('initializes with deserialized text when there is both a language and text prop', function () {
66
69
  var testString = 'yes hello';
70
+
67
71
  var _renderWrapper4 = renderWrapper({
68
- text: testString,
69
- language: 'javascript'
70
- }),
71
- view = _renderWrapper4.view;
72
+ text: testString,
73
+ language: 'javascript'
74
+ }),
75
+ view = _renderWrapper4.view;
76
+
72
77
  view.getByText(testString);
73
78
  });
74
79
  describe('Change Handlers', function () {
75
80
  it('triggers onEdit on text edit', function () {
76
81
  var onEdit = jest.fn();
82
+
77
83
  var _renderWrapper5 = renderWrapper({
78
- text: '',
79
- language: 'javascript',
80
- onEdit: onEdit
81
- }),
82
- view = _renderWrapper5.view;
84
+ text: '',
85
+ language: 'javascript',
86
+ onEdit: onEdit
87
+ }),
88
+ view = _renderWrapper5.view;
89
+
83
90
  var editor = view.getByTestId(mockEditorTestId);
84
91
  userEvent.type(editor, 'dog');
85
92
  expect(onEdit).toHaveBeenCalledTimes(3);
@@ -87,10 +94,12 @@ describe('CodeBytes', function () {
87
94
  });
88
95
  it('triggers onLanguageChange on language selection', function () {
89
96
  var onLanguageChange = jest.fn();
97
+
90
98
  var _renderWrapper6 = renderWrapper({
91
- onLanguageChange: onLanguageChange
92
- }),
93
- view = _renderWrapper6.view;
99
+ onLanguageChange: onLanguageChange
100
+ }),
101
+ view = _renderWrapper6.view;
102
+
94
103
  var selectedLanguage = view.getByRole('combobox');
95
104
  userEvent.selectOptions(selectedLanguage, ['javascript']);
96
105
  expect(onLanguageChange).toHaveBeenCalledWith("console.log('Hello world!');", 'javascript');
@@ -99,26 +108,30 @@ describe('CodeBytes', function () {
99
108
  describe('Tracking', function () {
100
109
  it('triggers trackClick on clicking the logo', function () {
101
110
  var _renderWrapper7 = renderWrapper({}),
102
- view = _renderWrapper7.view;
111
+ view = _renderWrapper7.view;
112
+
103
113
  var logo = view.getByLabelText('visit codecademy.com');
104
114
  userEvent.click(logo);
105
115
  expect(trackClick).toHaveBeenCalledWith('logo', undefined);
106
116
  });
107
117
  it('triggers trackClick on language selection', function () {
108
118
  var _renderWrapper8 = renderWrapper(),
109
- view = _renderWrapper8.view;
119
+ view = _renderWrapper8.view;
120
+
110
121
  var selectedLanguage = view.getByRole('combobox');
111
122
  userEvent.selectOptions(selectedLanguage, ['javascript']);
112
123
  expect(trackClick).toHaveBeenCalledWith('lang_select', undefined);
113
124
  });
114
125
  it('triggers trackClick for the first edit', function () {
115
126
  var testString = 'original-value';
127
+
116
128
  var _renderWrapper9 = renderWrapper({
117
- text: testString,
118
- language: 'javascript',
119
- trackFirstEdit: true
120
- }),
121
- view = _renderWrapper9.view;
129
+ text: testString,
130
+ language: 'javascript',
131
+ trackFirstEdit: true
132
+ }),
133
+ view = _renderWrapper9.view;
134
+
122
135
  var editor = view.getByTestId(mockEditorTestId);
123
136
  userEvent.type(editor, 'd');
124
137
  expect(trackClick).toHaveBeenCalledWith('edit', undefined);
@@ -1,6 +1,9 @@
1
1
  import _regeneratorRuntime from "@babel/runtime/regenerator";
2
+
2
3
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
4
+
3
5
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
6
+
4
7
  import './mocks';
5
8
  import { setupRtl } from '@codecademy/gamut-tests';
6
9
  import { act } from '@testing-library/react';
@@ -37,13 +40,15 @@ describe('Editor', function () {
37
40
  });
38
41
  it('shows a prompt tooltip when the CodeByte has __not__ been copied via the button', function () {
39
42
  var _renderWrapper = renderWrapper(),
40
- view = _renderWrapper.view;
43
+ view = _renderWrapper.view;
44
+
41
45
  expect(view.queryByTestId('copy-confirmation-tooltip')).toBeFalsy();
42
46
  view.getByTestId('copy-prompt-tooltip');
43
47
  });
44
48
  it('shows a confirmation tooltip when the CodeByte has been copied via the button', function () {
45
49
  var _renderWrapper2 = renderWrapper(),
46
- view = _renderWrapper2.view;
50
+ view = _renderWrapper2.view;
51
+
47
52
  var copyBtn = view.getByTestId('copy-codebyte-btn');
48
53
  userEvent.click(copyBtn);
49
54
  expect(view.queryByTestId('copy-prompt-tooltip')).toBeFalsy();
@@ -51,19 +56,22 @@ describe('Editor', function () {
51
56
  });
52
57
  it('hides the copy codebyte button if hideCopyButton prop is true"', function () {
53
58
  var _renderWrapper3 = renderWrapper({
54
- hideCopyButton: true
55
- }),
56
- view = _renderWrapper3.view;
59
+ hideCopyButton: true
60
+ }),
61
+ view = _renderWrapper3.view;
62
+
57
63
  expect(view.queryByTestId('copy-codebyte-btn')).toBeNull();
58
64
  });
59
65
  it('shows the copy codebyte button if hideCopyButton prop is not set', function () {
60
66
  var _renderWrapper4 = renderWrapper(),
61
- view = _renderWrapper4.view;
67
+ view = _renderWrapper4.view;
68
+
62
69
  view.getByTestId('copy-codebyte-btn');
63
70
  });
64
71
  describe('Tracking', function () {
65
72
  it('tracks clicks on the run button', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
66
73
  var _renderWrapper5, view, runButton;
74
+
67
75
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
68
76
  while (1) {
69
77
  switch (_context2.prev = _context2.next) {
@@ -90,6 +98,7 @@ describe('Editor', function () {
90
98
  switch (_context.prev = _context.next) {
91
99
  case 0:
92
100
  userEvent.click(runButton);
101
+
93
102
  case 1:
94
103
  case "end":
95
104
  return _context.stop();
@@ -97,8 +106,10 @@ describe('Editor', function () {
97
106
  }
98
107
  }, _callee);
99
108
  })));
109
+
100
110
  case 5:
101
111
  expect(trackClick).toHaveBeenCalledWith('run', undefined);
112
+
102
113
  case 6:
103
114
  case "end":
104
115
  return _context2.stop();
@@ -108,11 +119,12 @@ describe('Editor', function () {
108
119
  })));
109
120
  it('tracks clicks on the copy codebyte button', function () {
110
121
  var _renderWrapper6 = renderWrapper({
111
- onChange: jest.fn(),
112
- text: 'test',
113
- language: 'javascript'
114
- }),
115
- view = _renderWrapper6.view;
122
+ onChange: jest.fn(),
123
+ text: 'test',
124
+ language: 'javascript'
125
+ }),
126
+ view = _renderWrapper6.view;
127
+
116
128
  var copyButton = view.getByTestId('copy-codebyte-btn');
117
129
  userEvent.click(copyButton);
118
130
  expect(trackClick).toHaveBeenCalledWith('copy', undefined);
@@ -2,9 +2,11 @@ import { trackClick } from '../helpers';
2
2
  import { trackUserClick } from '../libs/eventTracking';
3
3
  jest.mock('../libs/eventTracking');
4
4
  var initialUrl = window.location.href;
5
+
5
6
  var resetCodebytesParams = function resetCodebytesParams() {
6
7
  return window.history.replaceState(null, '', initialUrl);
7
8
  };
9
+
8
10
  describe('trackClick', function () {
9
11
  afterEach(function () {
10
12
  resetCodebytesParams();
@@ -8,7 +8,8 @@ var renderWrapper = setupRtl(LanguageSelection, {
8
8
  describe('LanguageSelection', function () {
9
9
  it('has placeholder text', function () {
10
10
  var _renderWrapper = renderWrapper(),
11
- view = _renderWrapper.view;
11
+ view = _renderWrapper.view;
12
+
12
13
  view.getByText('Which language do you want to code in?');
13
14
  });
14
15
  });
@@ -1,6 +1,9 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
2
+
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4
+
3
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
+
4
7
  jest.mock('react-resize-observer');
5
8
  jest.mock('../libs/eventTracking');
6
9
  jest.mock('../helpers', function () {
package/dist/api.js CHANGED
@@ -1,6 +1,9 @@
1
1
  import _regeneratorRuntime from "@babel/runtime/regenerator";
2
+
2
3
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
4
+
3
5
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
6
+
4
7
  export var postSnippet = /*#__PURE__*/function () {
5
8
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(data, snippetsBaseUrl) {
6
9
  var snippetsEndpoint, response;
@@ -17,9 +20,11 @@ export var postSnippet = /*#__PURE__*/function () {
17
20
  'x-codecademy-user-id': 'codebytes-anon-user'
18
21
  }
19
22
  });
23
+
20
24
  case 3:
21
25
  response = _context.sent;
22
26
  return _context.abrupt("return", response.json());
27
+
23
28
  case 5:
24
29
  case "end":
25
30
  return _context.stop();
@@ -27,6 +32,7 @@ export var postSnippet = /*#__PURE__*/function () {
27
32
  }
28
33
  }, _callee);
29
34
  }));
35
+
30
36
  return function postSnippet(_x, _x2) {
31
37
  return _ref.apply(this, arguments);
32
38
  };
@@ -1,14 +1,23 @@
1
1
  import _styled from "@emotion/styled/base";
2
- var _excluded = ["text", "language", "hideCopyButton", "snippetsBaseUrl", "onEdit", "onLanguageChange", "copyFormatter", "trackingData", "trackFirstEdit"];
3
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
4
+
4
5
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
6
+
5
7
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
8
+
6
9
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
10
+
7
11
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
8
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
12
+
13
+ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
14
+
9
15
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
16
+
10
17
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
18
+
11
19
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
20
+
12
21
  import { Box, IconButton } from '@codecademy/gamut';
13
22
  import { FaviconIcon } from '@codecademy/gamut-icons';
14
23
  import { Background, system } from '@codecademy/gamut-styles';
@@ -25,41 +34,49 @@ var editorBaseStyles = system.css({
25
34
  flexDirection: 'column',
26
35
  minHeight: '25rem'
27
36
  });
37
+
28
38
  var EditorContainer = /*#__PURE__*/_styled(Background, {
29
39
  target: "e1epka4g0",
30
40
  label: "EditorContainer"
31
41
  })(editorBaseStyles, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb2RlQnl0ZUVkaXRvci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0J3QiIsImZpbGUiOiIuLi9zcmMvY29kZUJ5dGVFZGl0b3IudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm94LCBJY29uQnV0dG9uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQnO1xuaW1wb3J0IHsgRmF2aWNvbkljb24gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1pY29ucyc7XG5pbXBvcnQgeyBCYWNrZ3JvdW5kLCBzeXN0ZW0gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgU3R5bGVQcm9wcyB9IGZyb20gJ0Bjb2RlY2FkZW15L3ZhcmlhbmNlJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBoZWxsb1dvcmxkLCBMYW5ndWFnZU9wdGlvbiB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IEVkaXRvciB9IGZyb20gJy4vZWRpdG9yJztcbmltcG9ydCB7IHRyYWNrQ2xpY2sgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZWxlY3Rpb24gfSBmcm9tICcuL2xhbmd1YWdlU2VsZWN0aW9uJztcbmltcG9ydCB7IHRyYWNrVXNlckltcHJlc3Npb24gfSBmcm9tICcuL2xpYnMvZXZlbnRUcmFja2luZyc7XG5pbXBvcnQgeyBDb2RlQnl0ZUVkaXRvclByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IGVkaXRvckJhc2VTdHlsZXMgPSBzeXN0ZW0uY3NzKHtcbiAgYm9yZGVyOiAxLFxuICBib3JkZXJDb2xvcjogJ2dyYXktOTAwJyxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgbWluSGVpZ2h0OiAnMjVyZW0nLFxufSk7XG5cbmNvbnN0IEVkaXRvckNvbnRhaW5lciA9IHN0eWxlZChCYWNrZ3JvdW5kKTxTdHlsZVByb3BzPHR5cGVvZiBlZGl0b3JCYXNlU3R5bGVzPj4oXG4gIGVkaXRvckJhc2VTdHlsZXNcbik7XG5cbmV4cG9ydCBjb25zdCBDb2RlQnl0ZUVkaXRvcjogUmVhY3QuRkM8Q29kZUJ5dGVFZGl0b3JQcm9wcz4gPSAoe1xuICB0ZXh0OiBpbml0aWFsVGV4dCxcbiAgbGFuZ3VhZ2U6IGluaXRpYWxMYW5ndWFnZSxcbiAgaGlkZUNvcHlCdXR0b24gPSBmYWxzZSxcbiAgc25pcHBldHNCYXNlVXJsLFxuICBvbkVkaXQsXG4gIG9uTGFuZ3VhZ2VDaGFuZ2UsXG4gIGNvcHlGb3JtYXR0ZXIsXG4gIHRyYWNraW5nRGF0YSxcbiAgdHJhY2tGaXJzdEVkaXQgPSBmYWxzZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBnZXRJbml0aWFsVGV4dCA9ICgpID0+IHtcbiAgICBpZiAoaW5pdGlhbFRleHQgIT09IHVuZGVmaW5lZCkgcmV0dXJuIGluaXRpYWxUZXh0O1xuICAgIHJldHVybiBpbml0aWFsTGFuZ3VhZ2UgPyBoZWxsb1dvcmxkW2luaXRpYWxMYW5ndWFnZV0gOiAnJztcbiAgfTtcblxuICBjb25zdCBbdGV4dCwgc2V0VGV4dF0gPSB1c2VTdGF0ZTxzdHJpbmc+KGdldEluaXRpYWxUZXh0KCkpO1xuICBjb25zdCBbbGFuZ3VhZ2UsIHNldExhbmd1YWdlXSA9IHVzZVN0YXRlPExhbmd1YWdlT3B0aW9uPihcbiAgICBpbml0aWFsTGFuZ3VhZ2UgPz8gJydcbiAgKTtcbiAgY29uc3QgW2hhc0JlZW5FZGl0ZWQsIHNldEhhc0JlZW5FZGl0ZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdHJhY2tVc2VySW1wcmVzc2lvbih7XG4gICAgICBwYWdlX25hbWU6IHRyYWNraW5nRGF0YT8ucGFnZV9uYW1lID8/ICdVbmtub3duJyxcbiAgICAgIGNvbnRleHQ6IHRyYWNraW5nRGF0YT8uY29udGV4dCA/PyBkb2N1bWVudC5yZWZlcnJlcixcbiAgICAgIHRhcmdldDogJ2NvZGVieXRlJyxcbiAgICB9KTtcbiAgfSwgW3RyYWNraW5nRGF0YV0pO1xuXG4gIHJldHVybiAoXG4gICAgPEVkaXRvckNvbnRhaW5lciBiZz1cImJsYWNrXCIgbWF4V2lkdGg9XCI0M3JlbVwiIHsuLi5yZXN0fSBvdmVyZmxvdz1cImhpZGRlblwiPlxuICAgICAgPEJveCBib3JkZXJCb3R0b209ezF9IGJvcmRlckNvbG9yPVwiZ3JheS05MDBcIiBweT17NH0gcGw9ezh9PlxuICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgIGljb249e0Zhdmljb25JY29ufVxuICAgICAgICAgIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgIGhyZWY9XCJodHRwczovL3d3dy5jb2RlY2FkZW15LmNvbS9cIlxuICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgcmVsPVwibm9yZWZlcnJlclwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInZpc2l0IGNvZGVjYWRlbXkuY29tXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0cmFja0NsaWNrKCdsb2dvJywgdHJhY2tpbmdEYXRhKX1cbiAgICAgICAgLz5cbiAgICAgIDwvQm94PlxuICAgICAge2xhbmd1YWdlID8gKFxuICAgICAgICA8RWRpdG9yXG4gICAgICAgICAgbGFuZ3VhZ2U9e2xhbmd1YWdlfVxuICAgICAgICAgIHRleHQ9e3RleHR9XG4gICAgICAgICAgaGlkZUNvcHlCdXR0b249e2hpZGVDb3B5QnV0dG9ufVxuICAgICAgICAgIG9uQ2hhbmdlPXsobmV3VGV4dDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBzZXRUZXh0KG5ld1RleHQpO1xuICAgICAgICAgICAgb25FZGl0Py4obmV3VGV4dCwgbGFuZ3VhZ2UpO1xuICAgICAgICAgICAgaWYgKHRyYWNrRmlyc3RFZGl0ICYmIGhhc0JlZW5FZGl0ZWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIHNldEhhc0JlZW5FZGl0ZWQodHJ1ZSk7XG4gICAgICAgICAgICAgIHRyYWNrQ2xpY2soJ2VkaXQnLCB0cmFja2luZ0RhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgc25pcHBldHNCYXNlVXJsPXtzbmlwcGV0c0Jhc2VVcmx9XG4gICAgICAgICAgY29weUZvcm1hdHRlcj17Y29weUZvcm1hdHRlcn1cbiAgICAgICAgICB0cmFja2luZ0RhdGE9e3RyYWNraW5nRGF0YX1cbiAgICAgICAgLz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxMYW5ndWFnZVNlbGVjdGlvblxuICAgICAgICAgIG9uQ2hhbmdlPXsobmV3TGFuZ3VhZ2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1RleHQ6IHN0cmluZyA9XG4gICAgICAgICAgICAgIHRleHQgfHwgKG5ld0xhbmd1YWdlID8gaGVsbG9Xb3JsZFtuZXdMYW5ndWFnZV0gOiAnJyk7XG4gICAgICAgICAgICBzZXRMYW5ndWFnZShuZXdMYW5ndWFnZSk7XG4gICAgICAgICAgICBzZXRUZXh0KG5ld1RleHQpO1xuICAgICAgICAgICAgdHJhY2tDbGljaygnbGFuZ19zZWxlY3QnLCB0cmFja2luZ0RhdGEpO1xuICAgICAgICAgICAgb25MYW5ndWFnZUNoYW5nZT8uKG5ld1RleHQsIG5ld0xhbmd1YWdlKTtcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L0VkaXRvckNvbnRhaW5lcj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvZGVCeXRlRWRpdG9yO1xuIl19 */");
42
+
32
43
  export var CodeByteEditor = function CodeByteEditor(_ref) {
33
44
  var initialText = _ref.text,
34
- initialLanguage = _ref.language,
35
- _ref$hideCopyButton = _ref.hideCopyButton,
36
- hideCopyButton = _ref$hideCopyButton === void 0 ? false : _ref$hideCopyButton,
37
- snippetsBaseUrl = _ref.snippetsBaseUrl,
38
- onEdit = _ref.onEdit,
39
- onLanguageChange = _ref.onLanguageChange,
40
- copyFormatter = _ref.copyFormatter,
41
- trackingData = _ref.trackingData,
42
- _ref$trackFirstEdit = _ref.trackFirstEdit,
43
- trackFirstEdit = _ref$trackFirstEdit === void 0 ? false : _ref$trackFirstEdit,
44
- rest = _objectWithoutProperties(_ref, _excluded);
45
+ initialLanguage = _ref.language,
46
+ _ref$hideCopyButton = _ref.hideCopyButton,
47
+ hideCopyButton = _ref$hideCopyButton === void 0 ? false : _ref$hideCopyButton,
48
+ snippetsBaseUrl = _ref.snippetsBaseUrl,
49
+ onEdit = _ref.onEdit,
50
+ onLanguageChange = _ref.onLanguageChange,
51
+ copyFormatter = _ref.copyFormatter,
52
+ trackingData = _ref.trackingData,
53
+ _ref$trackFirstEdit = _ref.trackFirstEdit,
54
+ trackFirstEdit = _ref$trackFirstEdit === void 0 ? false : _ref$trackFirstEdit,
55
+ rest = _objectWithoutProperties(_ref, ["text", "language", "hideCopyButton", "snippetsBaseUrl", "onEdit", "onLanguageChange", "copyFormatter", "trackingData", "trackFirstEdit"]);
56
+
45
57
  var getInitialText = function getInitialText() {
46
58
  if (initialText !== undefined) return initialText;
47
59
  return initialLanguage ? helloWorld[initialLanguage] : '';
48
60
  };
61
+
49
62
  var _useState = useState(getInitialText()),
50
- _useState2 = _slicedToArray(_useState, 2),
51
- text = _useState2[0],
52
- setText = _useState2[1];
63
+ _useState2 = _slicedToArray(_useState, 2),
64
+ text = _useState2[0],
65
+ setText = _useState2[1];
66
+
53
67
  var _useState3 = useState(initialLanguage !== null && initialLanguage !== void 0 ? initialLanguage : ''),
54
- _useState4 = _slicedToArray(_useState3, 2),
55
- language = _useState4[0],
56
- setLanguage = _useState4[1];
68
+ _useState4 = _slicedToArray(_useState3, 2),
69
+ language = _useState4[0],
70
+ setLanguage = _useState4[1];
71
+
57
72
  var _useState5 = useState(false),
58
- _useState6 = _slicedToArray(_useState5, 2),
59
- hasBeenEdited = _useState6[0],
60
- setHasBeenEdited = _useState6[1];
73
+ _useState6 = _slicedToArray(_useState5, 2),
74
+ hasBeenEdited = _useState6[0],
75
+ setHasBeenEdited = _useState6[1];
76
+
61
77
  useEffect(function () {
62
78
  var _trackingData$page_na, _trackingData$context;
79
+
63
80
  trackUserImpression({
64
81
  page_name: (_trackingData$page_na = trackingData === null || trackingData === void 0 ? void 0 : trackingData.page_name) !== null && _trackingData$page_na !== void 0 ? _trackingData$page_na : 'Unknown',
65
82
  context: (_trackingData$context = trackingData === null || trackingData === void 0 ? void 0 : trackingData.context) !== null && _trackingData$context !== void 0 ? _trackingData$context : document.referrer,
@@ -93,6 +110,7 @@ export var CodeByteEditor = function CodeByteEditor(_ref) {
93
110
  onChange: function onChange(newText) {
94
111
  setText(newText);
95
112
  onEdit === null || onEdit === void 0 ? void 0 : onEdit(newText, language);
113
+
96
114
  if (trackFirstEdit && hasBeenEdited === false) {
97
115
  setHasBeenEdited(true);
98
116
  trackClick('edit', trackingData);
package/dist/drawers.js CHANGED
@@ -1,14 +1,23 @@
1
1
  import _styled from "@emotion/styled/base";
2
+
2
3
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
4
+
3
5
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
6
+
4
7
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
8
+
5
9
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
6
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
10
+
11
+ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
12
+
7
13
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
+
8
15
  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)."; }
16
+
9
17
  import { FlexBox, IconButton } from '@codecademy/gamut';
10
18
  import { ArrowChevronLeftIcon, ArrowChevronRightIcon } from '@codecademy/gamut-icons';
11
19
  import React, { useState } from 'react';
20
+
12
21
  var DrawerLabel = _styled("span", {
13
22
  target: "e1keub6a2",
14
23
  label: "DrawerLabel"
@@ -21,6 +30,7 @@ var DrawerLabel = _styled("span", {
21
30
  map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kcmF3ZXJzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRK0IiLCJmaWxlIjoiLi4vc3JjL2RyYXdlcnMudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxleEJveCwgSWNvbkJ1dHRvbiB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7XG4gIEFycm93Q2hldnJvbkxlZnRJY29uLFxuICBBcnJvd0NoZXZyb25SaWdodEljb24sXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0LWljb25zJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgRHJhd2VyTGFiZWwgPSBzdHlsZWQuc3BhbmBcbiAgcGFkZGluZzogMC44NzVyZW0gMC41cmVtO1xuYDtcblxuY29uc3QgTGVmdERyYXdlckljb24gPSBzdHlsZWQoQXJyb3dDaGV2cm9uTGVmdEljb24pPHsgb3Blbj86IGJvb2xlYW4gfT5gXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2UtaW4tb3V0O1xuYDtcbmNvbnN0IFJpZ2h0RHJhd2VySWNvbiA9IExlZnREcmF3ZXJJY29uLndpdGhDb21wb25lbnQoQXJyb3dDaGV2cm9uUmlnaHRJY29uKTtcblxuY29uc3QgRHJhd2VyID0gc3R5bGVkKEZsZXhCb3gpPHsgb3Blbj86IGJvb2xlYW47IGhpZGVPbkNsb3NlPzogYm9vbGVhbiB9PmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAkeyh7IG9wZW4sIGhpZGVPbkNsb3NlIH0pID0+IGBcbiAgICBmbGV4LWJhc2lzOiAke29wZW4gPyAnMTAwJScgOiAnMCUnfTtcbiAgICB2aXNpYmlsaXR5OiAkeyFvcGVuICYmIGhpZGVPbkNsb3NlID8gJ2hpZGRlbicgOiAndmlzaWJsZSd9O1xuICAgIHRyYW5zaXRpb246IGZsZXgtYmFzaXMgMC4ycyAke1xuICAgICAgb3BlbiA/ICdlYXNlLW91dCcgOiAnZWFzZS1pbiwgdmlzaWJpbGl0eSAwcyAwLjJzJ1xuICAgIH07XG5cbiAgICAke0xlZnREcmF3ZXJJY29ufSwgJHtSaWdodERyYXdlckljb259IHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlWigke29wZW4gPyAnMCcgOiAnMTgwJ31kZWcpfTtcbiAgICB9XG4gIGB9XG5gO1xuXG5leHBvcnQgdHlwZSBEcmF3ZXJzUHJvcHMgPSB7XG4gIGxlZnRDaGlsZDogUmVhY3QuUmVhY3ROb2RlO1xuICByaWdodENoaWxkOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5leHBvcnQgY29uc3QgRHJhd2VyczogUmVhY3QuRkM8RHJhd2Vyc1Byb3BzPiA9ICh7IGxlZnRDaGlsZCwgcmlnaHRDaGlsZCB9KSA9PiB7XG4gIGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlPCdsZWZ0JyB8ICdyaWdodCcgfCAnYm90aCc+KCdib3RoJyk7XG5cbiAgbGV0IGFyaWFMYWJlbENvZGVCdXR0b24gPSAnaGlkZSBjb2RlJztcbiAgbGV0IGFyaWFMYWJlbE91dHB1dEJ1dHRvbiA9ICdoaWRlIG91dHB1dCc7XG4gIGxldCBpc0xlZnRPcGVuID0gZmFsc2U7XG4gIGxldCBpc1JpZ2h0T3BlbiA9IGZhbHNlO1xuXG4gIGlmIChvcGVuID09PSAnbGVmdCcpIHtcbiAgICBhcmlhTGFiZWxDb2RlQnV0dG9uID0gYXJpYUxhYmVsT3V0cHV0QnV0dG9uID0gJ3Nob3cgb3V0cHV0JztcbiAgICBpc0xlZnRPcGVuID0gdHJ1ZTtcbiAgfSBlbHNlIGlmIChvcGVuID09PSAncmlnaHQnKSB7XG4gICAgYXJpYUxhYmVsQ29kZUJ1dHRvbiA9IGFyaWFMYWJlbE91dHB1dEJ1dHRvbiA9ICdzaG93IGNvZGUnO1xuICAgIGlzUmlnaHRPcGVuID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxGbGV4Qm94PlxuICAgICAgICA8RHJhd2VyXG4gICAgICAgICAgb3Blbj17IWlzUmlnaHRPcGVufVxuICAgICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICAgIGZsZXhXcmFwPVwibm93cmFwXCJcbiAgICAgICAgICB0ZXh0QWxpZ249XCJsZWZ0XCJcbiAgICAgICAgICBib3JkZXJSaWdodD17MX1cbiAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktOTAwXCJcbiAgICAgICAgICBweD17OH1cbiAgICAgICAgPlxuICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICBpY29uPXtMZWZ0RHJhd2VySWNvbn1cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XG4gICAgICAgICAgICAgIHNldE9wZW4oKHN0YXRlKSA9PiAoc3RhdGUgPT09ICdib3RoJyA/ICdyaWdodCcgOiAnYm90aCcpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD17YXJpYUxhYmVsQ29kZUJ1dHRvbn1cbiAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJjb2RlLWRyYXdlclwiXG4gICAgICAgICAgICBhcmlhLWV4cGFuZGVkPXshaXNSaWdodE9wZW59XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8RHJhd2VyTGFiZWwgaWQ9XCJjb2RlLWRyYXdlci1sYWJlbFwiPkNvZGU8L0RyYXdlckxhYmVsPlxuICAgICAgICA8L0RyYXdlcj5cbiAgICAgICAgPERyYXdlclxuICAgICAgICAgIG9wZW49eyFpc0xlZnRPcGVufVxuICAgICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICAgIGZsZXhXcmFwPVwibm93cmFwXCJcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudD1cImZsZXgtZW5kXCJcbiAgICAgICAgICBweD17OH1cbiAgICAgICAgPlxuICAgICAgICAgIDxEcmF3ZXJMYWJlbCBpZD1cIm91dHB1dC1kcmF3ZXItbGFiZWxcIj5PdXRwdXQ8L0RyYXdlckxhYmVsPlxuICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICBpY29uPXtSaWdodERyYXdlckljb259XG4gICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICBzZXRPcGVuKChzdGF0ZSkgPT4gKHN0YXRlID09PSAnYm90aCcgPyAnbGVmdCcgOiAnYm90aCcpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD17YXJpYUxhYmVsT3V0cHV0QnV0dG9ufVxuICAgICAgICAgICAgYXJpYS1jb250cm9scz1cIm91dHB1dC1kcmF3ZXJcIlxuICAgICAgICAgICAgYXJpYS1leHBhbmRlZD17IWlzTGVmdE9wZW59XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9EcmF3ZXI+XG4gICAgICA8L0ZsZXhCb3g+XG4gICAgICA8RmxleEJveFxuICAgICAgICBmbGV4R3Jvdz17MX1cbiAgICAgICAgYm9yZGVyWT17MX1cbiAgICAgICAgYm9yZGVyQ29sb3I9XCJncmF5LTkwMFwiXG4gICAgICAgIGFsaWduSXRlbXM9XCJzdHJldGNoXCJcbiAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgPlxuICAgICAgICA8RHJhd2VyXG4gICAgICAgICAgaGlkZU9uQ2xvc2VcbiAgICAgICAgICBpZD1cImNvZGUtZHJhd2VyXCJcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJjb2RlLWRyYXdlci1sYWJlbFwiXG4gICAgICAgICAgb3Blbj17IWlzUmlnaHRPcGVufVxuICAgICAgICAgIGZsZXhHcm93PXswfVxuICAgICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktOTAwXCJcbiAgICAgICAgICBib3JkZXJTdHlsZVJpZ2h0PVwic29saWRcIlxuICAgICAgICAgIGJvcmRlcldpZHRoUmlnaHQ9XCJ0aGluXCJcbiAgICAgICAgPlxuICAgICAgICAgIHtsZWZ0Q2hpbGR9XG4gICAgICAgIDwvRHJhd2VyPlxuICAgICAgICA8RHJhd2VyXG4gICAgICAgICAgaGlkZU9uQ2xvc2VcbiAgICAgICAgICBpZD1cIm91dHB1dC1kcmF3ZXJcIlxuICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cIm91dHB1dC1kcmF3ZXItbGFiZWxcIlxuICAgICAgICAgIHJvbGU9XCJyZWdpb25cIlxuICAgICAgICAgIG9wZW49eyFpc0xlZnRPcGVufVxuICAgICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIHtyaWdodENoaWxkfVxuICAgICAgICA8L0RyYXdlcj5cbiAgICAgIDwvRmxleEJveD5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXX0= */",
22
31
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
23
32
  });
33
+
24
34
  var LeftDrawerIcon = /*#__PURE__*/_styled(ArrowChevronLeftIcon, {
25
35
  target: "e1keub6a1",
26
36
  label: "LeftDrawerIcon"
@@ -33,29 +43,35 @@ var LeftDrawerIcon = /*#__PURE__*/_styled(ArrowChevronLeftIcon, {
33
43
  map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kcmF3ZXJzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZdUUiLCJmaWxlIjoiLi4vc3JjL2RyYXdlcnMudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxleEJveCwgSWNvbkJ1dHRvbiB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7XG4gIEFycm93Q2hldnJvbkxlZnRJY29uLFxuICBBcnJvd0NoZXZyb25SaWdodEljb24sXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0LWljb25zJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgRHJhd2VyTGFiZWwgPSBzdHlsZWQuc3BhbmBcbiAgcGFkZGluZzogMC44NzVyZW0gMC41cmVtO1xuYDtcblxuY29uc3QgTGVmdERyYXdlckljb24gPSBzdHlsZWQoQXJyb3dDaGV2cm9uTGVmdEljb24pPHsgb3Blbj86IGJvb2xlYW4gfT5gXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2UtaW4tb3V0O1xuYDtcbmNvbnN0IFJpZ2h0RHJhd2VySWNvbiA9IExlZnREcmF3ZXJJY29uLndpdGhDb21wb25lbnQoQXJyb3dDaGV2cm9uUmlnaHRJY29uKTtcblxuY29uc3QgRHJhd2VyID0gc3R5bGVkKEZsZXhCb3gpPHsgb3Blbj86IGJvb2xlYW47IGhpZGVPbkNsb3NlPzogYm9vbGVhbiB9PmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAkeyh7IG9wZW4sIGhpZGVPbkNsb3NlIH0pID0+IGBcbiAgICBmbGV4LWJhc2lzOiAke29wZW4gPyAnMTAwJScgOiAnMCUnfTtcbiAgICB2aXNpYmlsaXR5OiAkeyFvcGVuICYmIGhpZGVPbkNsb3NlID8gJ2hpZGRlbicgOiAndmlzaWJsZSd9O1xuICAgIHRyYW5zaXRpb246IGZsZXgtYmFzaXMgMC4ycyAke1xuICAgICAgb3BlbiA/ICdlYXNlLW91dCcgOiAnZWFzZS1pbiwgdmlzaWJpbGl0eSAwcyAwLjJzJ1xuICAgIH07XG5cbiAgICAke0xlZnREcmF3ZXJJY29ufSwgJHtSaWdodERyYXdlckljb259IHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlWigke29wZW4gPyAnMCcgOiAnMTgwJ31kZWcpfTtcbiAgICB9XG4gIGB9XG5gO1xuXG5leHBvcnQgdHlwZSBEcmF3ZXJzUHJvcHMgPSB7XG4gIGxlZnRDaGlsZDogUmVhY3QuUmVhY3ROb2RlO1xuICByaWdodENoaWxkOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5leHBvcnQgY29uc3QgRHJhd2VyczogUmVhY3QuRkM8RHJhd2Vyc1Byb3BzPiA9ICh7IGxlZnRDaGlsZCwgcmlnaHRDaGlsZCB9KSA9PiB7XG4gIGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlPCdsZWZ0JyB8ICdyaWdodCcgfCAnYm90aCc+KCdib3RoJyk7XG5cbiAgbGV0IGFyaWFMYWJlbENvZGVCdXR0b24gPSAnaGlkZSBjb2RlJztcbiAgbGV0IGFyaWFMYWJlbE91dHB1dEJ1dHRvbiA9ICdoaWRlIG91dHB1dCc7XG4gIGxldCBpc0xlZnRPcGVuID0gZmFsc2U7XG4gIGxldCBpc1JpZ2h0T3BlbiA9IGZhbHNlO1xuXG4gIGlmIChvcGVuID09PSAnbGVmdCcpIHtcbiAgICBhcmlhTGFiZWxDb2RlQnV0dG9uID0gYXJpYUxhYmVsT3V0cHV0QnV0dG9uID0gJ3Nob3cgb3V0cHV0JztcbiAgICBpc0xlZnRPcGVuID0gdHJ1ZTtcbiAgfSBlbHNlIGlmIChvcGVuID09PSAncmlnaHQnKSB7XG4gICAgYXJpYUxhYmVsQ29kZUJ1dHRvbiA9IGFyaWFMYWJlbE91dHB1dEJ1dHRvbiA9ICdzaG93IGNvZGUnO1xuICAgIGlzUmlnaHRPcGVuID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxGbGV4Qm94PlxuICAgICAgICA8RHJhd2VyXG4gICAgICAgICAgb3Blbj17IWlzUmlnaHRPcGVufVxuICAgICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICAgIGZsZXhXcmFwPVwibm93cmFwXCJcbiAgICAgICAgICB0ZXh0QWxpZ249XCJsZWZ0XCJcbiAgICAgICAgICBib3JkZXJSaWdodD17MX1cbiAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktOTAwXCJcbiAgICAgICAgICBweD17OH1cbiAgICAgICAgPlxuICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICBpY29uPXtMZWZ0RHJhd2VySWNvbn1cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XG4gICAgICAgICAgICAgIHNldE9wZW4oKHN0YXRlKSA9PiAoc3RhdGUgPT09ICdib3RoJyA/ICdyaWdodCcgOiAnYm90aCcpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD17YXJpYUxhYmVsQ29kZUJ1dHRvbn1cbiAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJjb2RlLWRyYXdlclwiXG4gICAgICAgICAgICBhcmlhLWV4cGFuZGVkPXshaXNSaWdodE9wZW59XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8RHJhd2VyTGFiZWwgaWQ9XCJjb2RlLWRyYXdlci1sYWJlbFwiPkNvZGU8L0RyYXdlckxhYmVsPlxuICAgICAgICA8L0RyYXdlcj5cbiAgICAgICAgPERyYXdlclxuICAgICAgICAgIG9wZW49eyFpc0xlZnRPcGVufVxuICAgICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICAgIGZsZXhXcmFwPVwibm93cmFwXCJcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudD1cImZsZXgtZW5kXCJcbiAgICAgICAgICBweD17OH1cbiAgICAgICAgPlxuICAgICAgICAgIDxEcmF3ZXJMYWJlbCBpZD1cIm91dHB1dC1kcmF3ZXItbGFiZWxcIj5PdXRwdXQ8L0RyYXdlckxhYmVsPlxuICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICBpY29uPXtSaWdodERyYXdlckljb259XG4gICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICBzZXRPcGVuKChzdGF0ZSkgPT4gKHN0YXRlID09PSAnYm90aCcgPyAnbGVmdCcgOiAnYm90aCcpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD17YXJpYUxhYmVsT3V0cHV0QnV0dG9ufVxuICAgICAgICAgICAgYXJpYS1jb250cm9scz1cIm91dHB1dC1kcmF3ZXJcIlxuICAgICAgICAgICAgYXJpYS1leHBhbmRlZD17IWlzTGVmdE9wZW59XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9EcmF3ZXI+XG4gICAgICA8L0ZsZXhCb3g+XG4gICAgICA8RmxleEJveFxuICAgICAgICBmbGV4R3Jvdz17MX1cbiAgICAgICAgYm9yZGVyWT17MX1cbiAgICAgICAgYm9yZGVyQ29sb3I9XCJncmF5LTkwMFwiXG4gICAgICAgIGFsaWduSXRlbXM9XCJzdHJldGNoXCJcbiAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgPlxuICAgICAgICA8RHJhd2VyXG4gICAgICAgICAgaGlkZU9uQ2xvc2VcbiAgICAgICAgICBpZD1cImNvZGUtZHJhd2VyXCJcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJjb2RlLWRyYXdlci1sYWJlbFwiXG4gICAgICAgICAgb3Blbj17IWlzUmlnaHRPcGVufVxuICAgICAgICAgIGZsZXhHcm93PXswfVxuICAgICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktOTAwXCJcbiAgICAgICAgICBib3JkZXJTdHlsZVJpZ2h0PVwic29saWRcIlxuICAgICAgICAgIGJvcmRlcldpZHRoUmlnaHQ9XCJ0aGluXCJcbiAgICAgICAgPlxuICAgICAgICAgIHtsZWZ0Q2hpbGR9XG4gICAgICAgIDwvRHJhd2VyPlxuICAgICAgICA8RHJhd2VyXG4gICAgICAgICAgaGlkZU9uQ2xvc2VcbiAgICAgICAgICBpZD1cIm91dHB1dC1kcmF3ZXJcIlxuICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cIm91dHB1dC1kcmF3ZXItbGFiZWxcIlxuICAgICAgICAgIHJvbGU9XCJyZWdpb25cIlxuICAgICAgICAgIG9wZW49eyFpc0xlZnRPcGVufVxuICAgICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIHtyaWdodENoaWxkfVxuICAgICAgICA8L0RyYXdlcj5cbiAgICAgIDwvRmxleEJveD5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXX0= */",
34
44
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
35
45
  });
46
+
36
47
  var RightDrawerIcon = LeftDrawerIcon.withComponent(ArrowChevronRightIcon, {
37
48
  target: "e1keub6a3",
38
49
  label: "RightDrawerIcon"
39
50
  });
51
+
40
52
  var Drawer = /*#__PURE__*/_styled(FlexBox, {
41
53
  target: "e1keub6a0",
42
54
  label: "Drawer"
43
55
  })("position:relative;", function (_ref) {
44
56
  var open = _ref.open,
45
- hideOnClose = _ref.hideOnClose;
57
+ hideOnClose = _ref.hideOnClose;
46
58
  return "\n flex-basis: ".concat(open ? '100%' : '0%', ";\n visibility: ").concat(!open && hideOnClose ? 'hidden' : 'visible', ";\n transition: flex-basis 0.2s ").concat(open ? 'ease-out' : 'ease-in, visibility 0s 0.2s', ";\n\n ").concat(LeftDrawerIcon, ", ").concat(RightDrawerIcon, " {\n transform: rotateZ(").concat(open ? '0' : '180', "deg)};\n }\n ");
47
59
  }, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kcmF3ZXJzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQnlFIiwiZmlsZSI6Ii4uL3NyYy9kcmF3ZXJzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsZXhCb3gsIEljb25CdXR0b24gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dCc7XG5pbXBvcnQge1xuICBBcnJvd0NoZXZyb25MZWZ0SWNvbixcbiAgQXJyb3dDaGV2cm9uUmlnaHRJY29uLFxufSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1pY29ucyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IERyYXdlckxhYmVsID0gc3R5bGVkLnNwYW5gXG4gIHBhZGRpbmc6IDAuODc1cmVtIDAuNXJlbTtcbmA7XG5cbmNvbnN0IExlZnREcmF3ZXJJY29uID0gc3R5bGVkKEFycm93Q2hldnJvbkxlZnRJY29uKTx7IG9wZW4/OiBib29sZWFuIH0+YFxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlLWluLW91dDtcbmA7XG5jb25zdCBSaWdodERyYXdlckljb24gPSBMZWZ0RHJhd2VySWNvbi53aXRoQ29tcG9uZW50KEFycm93Q2hldnJvblJpZ2h0SWNvbik7XG5cbmNvbnN0IERyYXdlciA9IHN0eWxlZChGbGV4Qm94KTx7IG9wZW4/OiBib29sZWFuOyBoaWRlT25DbG9zZT86IGJvb2xlYW4gfT5gXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgJHsoeyBvcGVuLCBoaWRlT25DbG9zZSB9KSA9PiBgXG4gICAgZmxleC1iYXNpczogJHtvcGVuID8gJzEwMCUnIDogJzAlJ307XG4gICAgdmlzaWJpbGl0eTogJHshb3BlbiAmJiBoaWRlT25DbG9zZSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnfTtcbiAgICB0cmFuc2l0aW9uOiBmbGV4LWJhc2lzIDAuMnMgJHtcbiAgICAgIG9wZW4gPyAnZWFzZS1vdXQnIDogJ2Vhc2UtaW4sIHZpc2liaWxpdHkgMHMgMC4ycydcbiAgICB9O1xuXG4gICAgJHtMZWZ0RHJhd2VySWNvbn0sICR7UmlnaHREcmF3ZXJJY29ufSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZVooJHtvcGVuID8gJzAnIDogJzE4MCd9ZGVnKX07XG4gICAgfVxuICBgfVxuYDtcblxuZXhwb3J0IHR5cGUgRHJhd2Vyc1Byb3BzID0ge1xuICBsZWZ0Q2hpbGQ6IFJlYWN0LlJlYWN0Tm9kZTtcbiAgcmlnaHRDaGlsZDogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuZXhwb3J0IGNvbnN0IERyYXdlcnM6IFJlYWN0LkZDPERyYXdlcnNQcm9wcz4gPSAoeyBsZWZ0Q2hpbGQsIHJpZ2h0Q2hpbGQgfSkgPT4ge1xuICBjb25zdCBbb3Blbiwgc2V0T3Blbl0gPSB1c2VTdGF0ZTwnbGVmdCcgfCAncmlnaHQnIHwgJ2JvdGgnPignYm90aCcpO1xuXG4gIGxldCBhcmlhTGFiZWxDb2RlQnV0dG9uID0gJ2hpZGUgY29kZSc7XG4gIGxldCBhcmlhTGFiZWxPdXRwdXRCdXR0b24gPSAnaGlkZSBvdXRwdXQnO1xuICBsZXQgaXNMZWZ0T3BlbiA9IGZhbHNlO1xuICBsZXQgaXNSaWdodE9wZW4gPSBmYWxzZTtcblxuICBpZiAob3BlbiA9PT0gJ2xlZnQnKSB7XG4gICAgYXJpYUxhYmVsQ29kZUJ1dHRvbiA9IGFyaWFMYWJlbE91dHB1dEJ1dHRvbiA9ICdzaG93IG91dHB1dCc7XG4gICAgaXNMZWZ0T3BlbiA9IHRydWU7XG4gIH0gZWxzZSBpZiAob3BlbiA9PT0gJ3JpZ2h0Jykge1xuICAgIGFyaWFMYWJlbENvZGVCdXR0b24gPSBhcmlhTGFiZWxPdXRwdXRCdXR0b24gPSAnc2hvdyBjb2RlJztcbiAgICBpc1JpZ2h0T3BlbiA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8RmxleEJveD5cbiAgICAgICAgPERyYXdlclxuICAgICAgICAgIG9wZW49eyFpc1JpZ2h0T3Blbn1cbiAgICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgICBmbGV4V3JhcD1cIm5vd3JhcFwiXG4gICAgICAgICAgdGV4dEFsaWduPVwibGVmdFwiXG4gICAgICAgICAgYm9yZGVyUmlnaHQ9ezF9XG4gICAgICAgICAgYm9yZGVyQ29sb3I9XCJncmF5LTkwMFwiXG4gICAgICAgICAgcHg9ezh9XG4gICAgICAgID5cbiAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgaWNvbj17TGVmdERyYXdlckljb259XG4gICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICBzZXRPcGVuKChzdGF0ZSkgPT4gKHN0YXRlID09PSAnYm90aCcgPyAncmlnaHQnIDogJ2JvdGgnKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9e2FyaWFMYWJlbENvZGVCdXR0b259XG4gICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwiY29kZS1kcmF3ZXJcIlxuICAgICAgICAgICAgYXJpYS1leHBhbmRlZD17IWlzUmlnaHRPcGVufVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPERyYXdlckxhYmVsIGlkPVwiY29kZS1kcmF3ZXItbGFiZWxcIj5Db2RlPC9EcmF3ZXJMYWJlbD5cbiAgICAgICAgPC9EcmF3ZXI+XG4gICAgICAgIDxEcmF3ZXJcbiAgICAgICAgICBvcGVuPXshaXNMZWZ0T3Blbn1cbiAgICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgICBmbGV4V3JhcD1cIm5vd3JhcFwiXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ9XCJmbGV4LWVuZFwiXG4gICAgICAgICAgcHg9ezh9XG4gICAgICAgID5cbiAgICAgICAgICA8RHJhd2VyTGFiZWwgaWQ9XCJvdXRwdXQtZHJhd2VyLWxhYmVsXCI+T3V0cHV0PC9EcmF3ZXJMYWJlbD5cbiAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgaWNvbj17UmlnaHREcmF3ZXJJY29ufVxuICAgICAgICAgICAgdmFyaWFudD1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgc2V0T3Blbigoc3RhdGUpID0+IChzdGF0ZSA9PT0gJ2JvdGgnID8gJ2xlZnQnIDogJ2JvdGgnKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9e2FyaWFMYWJlbE91dHB1dEJ1dHRvbn1cbiAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJvdXRwdXQtZHJhd2VyXCJcbiAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9eyFpc0xlZnRPcGVufVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvRHJhd2VyPlxuICAgICAgPC9GbGV4Qm94PlxuICAgICAgPEZsZXhCb3hcbiAgICAgICAgZmxleEdyb3c9ezF9XG4gICAgICAgIGJvcmRlclk9ezF9XG4gICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS05MDBcIlxuICAgICAgICBhbGlnbkl0ZW1zPVwic3RyZXRjaFwiXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAgPERyYXdlclxuICAgICAgICAgIGhpZGVPbkNsb3NlXG4gICAgICAgICAgaWQ9XCJjb2RlLWRyYXdlclwiXG4gICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiY29kZS1kcmF3ZXItbGFiZWxcIlxuICAgICAgICAgIG9wZW49eyFpc1JpZ2h0T3Blbn1cbiAgICAgICAgICBmbGV4R3Jvdz17MH1cbiAgICAgICAgICBvdmVyZmxvdz1cImhpZGRlblwiXG4gICAgICAgICAgYm9yZGVyQ29sb3I9XCJncmF5LTkwMFwiXG4gICAgICAgICAgYm9yZGVyU3R5bGVSaWdodD1cInNvbGlkXCJcbiAgICAgICAgICBib3JkZXJXaWR0aFJpZ2h0PVwidGhpblwiXG4gICAgICAgID5cbiAgICAgICAgICB7bGVmdENoaWxkfVxuICAgICAgICA8L0RyYXdlcj5cbiAgICAgICAgPERyYXdlclxuICAgICAgICAgIGhpZGVPbkNsb3NlXG4gICAgICAgICAgaWQ9XCJvdXRwdXQtZHJhd2VyXCJcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJvdXRwdXQtZHJhd2VyLWxhYmVsXCJcbiAgICAgICAgICByb2xlPVwicmVnaW9uXCJcbiAgICAgICAgICBvcGVuPXshaXNMZWZ0T3Blbn1cbiAgICAgICAgICBvdmVyZmxvdz1cImhpZGRlblwiXG4gICAgICAgID5cbiAgICAgICAgICB7cmlnaHRDaGlsZH1cbiAgICAgICAgPC9EcmF3ZXI+XG4gICAgICA8L0ZsZXhCb3g+XG4gICAgPC8+XG4gICk7XG59O1xuIl19 */"));
60
+
48
61
  export var Drawers = function Drawers(_ref2) {
49
62
  var leftChild = _ref2.leftChild,
50
- rightChild = _ref2.rightChild;
63
+ rightChild = _ref2.rightChild;
64
+
51
65
  var _useState = useState('both'),
52
- _useState2 = _slicedToArray(_useState, 2),
53
- open = _useState2[0],
54
- setOpen = _useState2[1];
66
+ _useState2 = _slicedToArray(_useState, 2),
67
+ open = _useState2[0],
68
+ setOpen = _useState2[1];
69
+
55
70
  var ariaLabelCodeButton = 'hide code';
56
71
  var ariaLabelOutputButton = 'hide output';
57
72
  var isLeftOpen = false;
58
73
  var isRightOpen = false;
74
+
59
75
  if (open === 'left') {
60
76
  ariaLabelCodeButton = ariaLabelOutputButton = 'show output';
61
77
  isLeftOpen = true;
@@ -63,6 +79,7 @@ export var Drawers = function Drawers(_ref2) {
63
79
  ariaLabelCodeButton = ariaLabelOutputButton = 'show code';
64
80
  isRightOpen = true;
65
81
  }
82
+
66
83
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FlexBox, null, /*#__PURE__*/React.createElement(Drawer, {
67
84
  open: !isRightOpen,
68
85
  alignItems: "center",
package/dist/editor.js CHANGED
@@ -1,14 +1,24 @@
1
1
  import _regeneratorRuntime from "@babel/runtime/regenerator";
2
2
  import _styled from "@emotion/styled/base";
3
+
3
4
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
5
+
4
6
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
7
+
5
8
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
9
+
6
10
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
11
+
7
12
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
13
+
8
14
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
9
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
15
+
16
+ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
17
+
10
18
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
19
+
11
20
  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)."; }
21
+
12
22
  import { FillButton, FlexBox, Spinner, TextButton, ToolTip } from '@codecademy/gamut';
13
23
  import { CopyIcon } from '@codecademy/gamut-icons';
14
24
  import React, { useState } from 'react';
@@ -16,14 +26,16 @@ import { postSnippet } from './api';
16
26
  import { Drawers } from './drawers';
17
27
  import { trackClick } from './helpers';
18
28
  import { SimpleMonacoEditor } from './MonacoEditor';
29
+
19
30
  var Output = _styled("pre", {
20
31
  target: "e1lzxy8e1",
21
32
  label: "Output"
22
33
  })("width:100%;height:100%;margin:0;padding:0 1rem;font-family:Monaco;font-size:0.875rem;overflow:auto;", function (_ref) {
23
34
  var hasError = _ref.hasError,
24
- theme = _ref.theme;
35
+ theme = _ref.theme;
25
36
  return "\n color: ".concat(hasError ? theme.colors.orange : theme.colors.text, ";\n background-color: ").concat(theme.colors['navy-900'], ";\n");
26
37
  }, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lZGl0b3IudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1CZ0QiLCJmaWxlIjoiLi4vc3JjL2VkaXRvci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBGaWxsQnV0dG9uLFxuICBGbGV4Qm94LFxuICBTcGlubmVyLFxuICBUZXh0QnV0dG9uLFxuICBUb29sVGlwLFxufSBmcm9tICdAY29kZWNhZGVteS9nYW11dCc7XG5pbXBvcnQgeyBDb3B5SWNvbiB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0LWljb25zJztcbmltcG9ydCB7IFVzZXJDbGlja0RhdGEgfSBmcm9tICdAY29kZWNhZGVteS90cmFja2luZyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHBvc3RTbmlwcGV0IH0gZnJvbSAnLi9hcGknO1xuaW1wb3J0IHR5cGUgeyBMYW5ndWFnZU9wdGlvbiB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IERyYXdlcnMgfSBmcm9tICcuL2RyYXdlcnMnO1xuaW1wb3J0IHsgdHJhY2tDbGljayB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBTaW1wbGVNb25hY29FZGl0b3IgfSBmcm9tICcuL01vbmFjb0VkaXRvcic7XG5pbXBvcnQgeyBDb2RlYnl0ZXNDb3B5Rm9ybWF0dGVyIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IE91dHB1dCA9IHN0eWxlZC5wcmU8eyBoYXNFcnJvcjogYm9vbGVhbiB9PmBcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwIDFyZW07XG4gIGZvbnQtZmFtaWx5OiBNb25hY287XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIG92ZXJmbG93OiBhdXRvO1xuICAkeyh7IGhhc0Vycm9yLCB0aGVtZSB9KSA9PiBgXG4gIGNvbG9yOiAke2hhc0Vycm9yID8gdGhlbWUuY29sb3JzLm9yYW5nZSA6IHRoZW1lLmNvbG9ycy50ZXh0fTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHt0aGVtZS5jb2xvcnNbJ25hdnktOTAwJ119O1xuYH1cbmA7XG5cbmNvbnN0IENvcHlJY29uU3R5bGVkID0gc3R5bGVkKENvcHlJY29uKWBcbiAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07XG5gO1xuXG5jb25zdCBET0NLRVJfU0lHVEVSTSA9IDE0MztcblxudHlwZSBFZGl0b3JQcm9wcyA9IHtcbiAgaGlkZUNvcHlCdXR0b246IGJvb2xlYW47XG4gIGxhbmd1YWdlOiBMYW5ndWFnZU9wdGlvbjtcbiAgdGV4dDogc3RyaW5nO1xuICBvbkNoYW5nZTogKHRleHQ6IHN0cmluZykgPT4gdm9pZDtcbiAgc25pcHBldHNCYXNlVXJsPzogc3RyaW5nO1xuICBjb3B5Rm9ybWF0dGVyPzogQ29kZWJ5dGVzQ29weUZvcm1hdHRlcjtcbiAgdHJhY2tpbmdEYXRhPzogT21pdDxVc2VyQ2xpY2tEYXRhLCAndGFyZ2V0Jz47XG59O1xuXG5leHBvcnQgY29uc3QgRWRpdG9yOiBSZWFjdC5GQzxFZGl0b3JQcm9wcz4gPSAoe1xuICBsYW5ndWFnZSxcbiAgdGV4dCxcbiAgaGlkZUNvcHlCdXR0b24sXG4gIG9uQ2hhbmdlLFxuICBjb3B5Rm9ybWF0dGVyLFxuICBzbmlwcGV0c0Jhc2VVcmwsXG4gIHRyYWNraW5nRGF0YSxcbn0pID0+IHtcbiAgY29uc3QgW291dHB1dCwgc2V0T3V0cHV0XSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgW3N0YXR1cywgc2V0U3RhdHVzXSA9IHVzZVN0YXRlPCdyZWFkeScgfCAnd2FpdGluZycgfCAnZXJyb3InPigncmVhZHknKTtcbiAgY29uc3QgW2lzQ29kZUJ5dGVDb3BpZWQsIHNldElzQ29kZUJ5dGVDb3BpZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBvbkNvcHlDbGljayA9ICgpID0+IHtcbiAgICBpZiAoIWlzQ29kZUJ5dGVDb3BpZWQpIHtcbiAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmRcbiAgICAgICAgLndyaXRlVGV4dChjb3B5Rm9ybWF0dGVyID8gY29weUZvcm1hdHRlcih7IHRleHQsIGxhbmd1YWdlIH0pIDogdGV4dClcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgLmNhdGNoKCgpID0+IGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBjb3B5JykpO1xuICAgICAgc2V0SXNDb2RlQnl0ZUNvcGllZCh0cnVlKTtcbiAgICAgIHRyYWNrQ2xpY2soJ2NvcHknLCB0cmFja2luZ0RhdGEpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBzZXRFcnJvclN0YXR1c0FuZE91dHB1dCA9IChtZXNzYWdlOiBzdHJpbmcpID0+IHtcbiAgICBzZXRPdXRwdXQobWVzc2FnZSk7XG4gICAgc2V0U3RhdHVzKCdlcnJvcicpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAodGV4dC50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBsYW5ndWFnZSxcbiAgICAgIGNvZGU6IHRleHQsXG4gICAgfTtcbiAgICBzZXRTdGF0dXMoJ3dhaXRpbmcnKTtcbiAgICBzZXRPdXRwdXQoJycpO1xuICAgIHRyYWNrQ2xpY2soJ3J1bicsIHRyYWNraW5nRGF0YSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBwb3N0U25pcHBldChkYXRhLCBzbmlwcGV0c0Jhc2VVcmwpO1xuICAgICAgaWYgKHJlc3BvbnNlLnN0ZGVyci5sZW5ndGggPiAwKSB7XG4gICAgICAgIHNldEVycm9yU3RhdHVzQW5kT3V0cHV0KHJlc3BvbnNlLnN0ZGVycik7XG4gICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLmV4aXRfY29kZSA9PT0gRE9DS0VSX1NJR1RFUk0pIHtcbiAgICAgICAgc2V0RXJyb3JTdGF0dXNBbmRPdXRwdXQoXG4gICAgICAgICAgJ1lvdXIgY29kZSB0b29rIHRvbyBsb25nIHRvIHJldHVybiBhIHJlc3VsdC4gRG91YmxlIGNoZWNrIHlvdXIgY29kZSBmb3IgYW55IGlzc3VlcyBhbmQgdHJ5IGFnYWluISdcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UuZXhpdF9jb2RlICE9PSAwKSB7XG4gICAgICAgIHNldEVycm9yU3RhdHVzQW5kT3V0cHV0KCdBbiB1bmtub3duIGVycm9yIG9jY3VyZWQuJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRPdXRwdXQocmVzcG9uc2Uuc3Rkb3V0KTtcbiAgICAgICAgc2V0U3RhdHVzKCdyZWFkeScpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBzZXRFcnJvclN0YXR1c0FuZE91dHB1dCgnRXJyb3I6ICcgKyBlcnJvcik7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxEcmF3ZXJzXG4gICAgICAgIGxlZnRDaGlsZD17XG4gICAgICAgICAgPFNpbXBsZU1vbmFjb0VkaXRvclxuICAgICAgICAgICAgdmFsdWU9e3RleHR9XG4gICAgICAgICAgICBsYW5ndWFnZT17bGFuZ3VhZ2V9XG4gICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgICByaWdodENoaWxkPXtcbiAgICAgICAgICA8T3V0cHV0IGhhc0Vycm9yPXtzdGF0dXMgPT09ICdlcnJvcid9IGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAge291dHB1dH1cbiAgICAgICAgICA8L091dHB1dD5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxGbGV4Qm94XG4gICAgICAgIGp1c3RpZnlDb250ZW50PXtoaWRlQ29weUJ1dHRvbiA/ICdmbGV4LWVuZCcgOiAnc3BhY2UtYmV0d2Vlbid9XG4gICAgICAgIHBsPXs4fVxuICAgICAgPlxuICAgICAgICB7IWhpZGVDb3B5QnV0dG9uID8gKFxuICAgICAgICAgIDxUb29sVGlwXG4gICAgICAgICAgICBpZD1cImNvZGVieXRlLWNvcGllZFwiXG4gICAgICAgICAgICBhbGlnbm1lbnQ9XCJ0b3AtcmlnaHRcIlxuICAgICAgICAgICAgbW9kZT1cImRhcmtcIlxuICAgICAgICAgICAgdGFyZ2V0PXtcbiAgICAgICAgICAgICAgPFRleHRCdXR0b25cbiAgICAgICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkNvcHlDbGlja31cbiAgICAgICAgICAgICAgICBvbkJsdXI9eygpID0+IHNldElzQ29kZUJ5dGVDb3BpZWQoZmFsc2UpfVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY29weS1jb2RlYnl0ZS1idG5cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPENvcHlJY29uU3R5bGVkIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+IENvcHkgQ29kZWJ5dGVcbiAgICAgICAgICAgICAgPC9UZXh0QnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpc0NvZGVCeXRlQ29waWVkID8gKFxuICAgICAgICAgICAgICA8c3BhbiBkYXRhLXRlc3RpZD1cImNvcHktY29uZmlybWF0aW9uLXRvb2x0aXBcIiByb2xlPVwiYWxlcnRcIj5cbiAgICAgICAgICAgICAgICBDb3BpZWQhXG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxzcGFuIGRhdGEtdGVzdGlkPVwiY29weS1wcm9tcHQtdG9vbHRpcFwiPlxuICAgICAgICAgICAgICAgIENvcHkgdG8geW91ciBjbGlwYm9hcmRcbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L1Rvb2xUaXA+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICA8RmlsbEJ1dHRvbiBvbkNsaWNrPXtoYW5kbGVTdWJtaXR9PlxuICAgICAgICAgIHtzdGF0dXMgPT09ICd3YWl0aW5nJyA/IDxTcGlubmVyIC8+IDogJ1J1bid9XG4gICAgICAgIDwvRmlsbEJ1dHRvbj5cbiAgICAgIDwvRmxleEJveD5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXX0= */"));
38
+
27
39
  var CopyIconStyled = /*#__PURE__*/_styled(CopyIcon, {
28
40
  target: "e1lzxy8e0",
29
41
  label: "CopyIconStyled"
@@ -36,34 +48,38 @@ var CopyIconStyled = /*#__PURE__*/_styled(CopyIcon, {
36
48
  map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lZGl0b3IudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlDdUMiLCJmaWxlIjoiLi4vc3JjL2VkaXRvci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBGaWxsQnV0dG9uLFxuICBGbGV4Qm94LFxuICBTcGlubmVyLFxuICBUZXh0QnV0dG9uLFxuICBUb29sVGlwLFxufSBmcm9tICdAY29kZWNhZGVteS9nYW11dCc7XG5pbXBvcnQgeyBDb3B5SWNvbiB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0LWljb25zJztcbmltcG9ydCB7IFVzZXJDbGlja0RhdGEgfSBmcm9tICdAY29kZWNhZGVteS90cmFja2luZyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHBvc3RTbmlwcGV0IH0gZnJvbSAnLi9hcGknO1xuaW1wb3J0IHR5cGUgeyBMYW5ndWFnZU9wdGlvbiB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IERyYXdlcnMgfSBmcm9tICcuL2RyYXdlcnMnO1xuaW1wb3J0IHsgdHJhY2tDbGljayB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBTaW1wbGVNb25hY29FZGl0b3IgfSBmcm9tICcuL01vbmFjb0VkaXRvcic7XG5pbXBvcnQgeyBDb2RlYnl0ZXNDb3B5Rm9ybWF0dGVyIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IE91dHB1dCA9IHN0eWxlZC5wcmU8eyBoYXNFcnJvcjogYm9vbGVhbiB9PmBcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwIDFyZW07XG4gIGZvbnQtZmFtaWx5OiBNb25hY287XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIG92ZXJmbG93OiBhdXRvO1xuICAkeyh7IGhhc0Vycm9yLCB0aGVtZSB9KSA9PiBgXG4gIGNvbG9yOiAke2hhc0Vycm9yID8gdGhlbWUuY29sb3JzLm9yYW5nZSA6IHRoZW1lLmNvbG9ycy50ZXh0fTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHt0aGVtZS5jb2xvcnNbJ25hdnktOTAwJ119O1xuYH1cbmA7XG5cbmNvbnN0IENvcHlJY29uU3R5bGVkID0gc3R5bGVkKENvcHlJY29uKWBcbiAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07XG5gO1xuXG5jb25zdCBET0NLRVJfU0lHVEVSTSA9IDE0MztcblxudHlwZSBFZGl0b3JQcm9wcyA9IHtcbiAgaGlkZUNvcHlCdXR0b246IGJvb2xlYW47XG4gIGxhbmd1YWdlOiBMYW5ndWFnZU9wdGlvbjtcbiAgdGV4dDogc3RyaW5nO1xuICBvbkNoYW5nZTogKHRleHQ6IHN0cmluZykgPT4gdm9pZDtcbiAgc25pcHBldHNCYXNlVXJsPzogc3RyaW5nO1xuICBjb3B5Rm9ybWF0dGVyPzogQ29kZWJ5dGVzQ29weUZvcm1hdHRlcjtcbiAgdHJhY2tpbmdEYXRhPzogT21pdDxVc2VyQ2xpY2tEYXRhLCAndGFyZ2V0Jz47XG59O1xuXG5leHBvcnQgY29uc3QgRWRpdG9yOiBSZWFjdC5GQzxFZGl0b3JQcm9wcz4gPSAoe1xuICBsYW5ndWFnZSxcbiAgdGV4dCxcbiAgaGlkZUNvcHlCdXR0b24sXG4gIG9uQ2hhbmdlLFxuICBjb3B5Rm9ybWF0dGVyLFxuICBzbmlwcGV0c0Jhc2VVcmwsXG4gIHRyYWNraW5nRGF0YSxcbn0pID0+IHtcbiAgY29uc3QgW291dHB1dCwgc2V0T3V0cHV0XSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgW3N0YXR1cywgc2V0U3RhdHVzXSA9IHVzZVN0YXRlPCdyZWFkeScgfCAnd2FpdGluZycgfCAnZXJyb3InPigncmVhZHknKTtcbiAgY29uc3QgW2lzQ29kZUJ5dGVDb3BpZWQsIHNldElzQ29kZUJ5dGVDb3BpZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBvbkNvcHlDbGljayA9ICgpID0+IHtcbiAgICBpZiAoIWlzQ29kZUJ5dGVDb3BpZWQpIHtcbiAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmRcbiAgICAgICAgLndyaXRlVGV4dChjb3B5Rm9ybWF0dGVyID8gY29weUZvcm1hdHRlcih7IHRleHQsIGxhbmd1YWdlIH0pIDogdGV4dClcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgLmNhdGNoKCgpID0+IGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBjb3B5JykpO1xuICAgICAgc2V0SXNDb2RlQnl0ZUNvcGllZCh0cnVlKTtcbiAgICAgIHRyYWNrQ2xpY2soJ2NvcHknLCB0cmFja2luZ0RhdGEpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBzZXRFcnJvclN0YXR1c0FuZE91dHB1dCA9IChtZXNzYWdlOiBzdHJpbmcpID0+IHtcbiAgICBzZXRPdXRwdXQobWVzc2FnZSk7XG4gICAgc2V0U3RhdHVzKCdlcnJvcicpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAodGV4dC50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBsYW5ndWFnZSxcbiAgICAgIGNvZGU6IHRleHQsXG4gICAgfTtcbiAgICBzZXRTdGF0dXMoJ3dhaXRpbmcnKTtcbiAgICBzZXRPdXRwdXQoJycpO1xuICAgIHRyYWNrQ2xpY2soJ3J1bicsIHRyYWNraW5nRGF0YSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBwb3N0U25pcHBldChkYXRhLCBzbmlwcGV0c0Jhc2VVcmwpO1xuICAgICAgaWYgKHJlc3BvbnNlLnN0ZGVyci5sZW5ndGggPiAwKSB7XG4gICAgICAgIHNldEVycm9yU3RhdHVzQW5kT3V0cHV0KHJlc3BvbnNlLnN0ZGVycik7XG4gICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLmV4aXRfY29kZSA9PT0gRE9DS0VSX1NJR1RFUk0pIHtcbiAgICAgICAgc2V0RXJyb3JTdGF0dXNBbmRPdXRwdXQoXG4gICAgICAgICAgJ1lvdXIgY29kZSB0b29rIHRvbyBsb25nIHRvIHJldHVybiBhIHJlc3VsdC4gRG91YmxlIGNoZWNrIHlvdXIgY29kZSBmb3IgYW55IGlzc3VlcyBhbmQgdHJ5IGFnYWluISdcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UuZXhpdF9jb2RlICE9PSAwKSB7XG4gICAgICAgIHNldEVycm9yU3RhdHVzQW5kT3V0cHV0KCdBbiB1bmtub3duIGVycm9yIG9jY3VyZWQuJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRPdXRwdXQocmVzcG9uc2Uuc3Rkb3V0KTtcbiAgICAgICAgc2V0U3RhdHVzKCdyZWFkeScpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBzZXRFcnJvclN0YXR1c0FuZE91dHB1dCgnRXJyb3I6ICcgKyBlcnJvcik7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxEcmF3ZXJzXG4gICAgICAgIGxlZnRDaGlsZD17XG4gICAgICAgICAgPFNpbXBsZU1vbmFjb0VkaXRvclxuICAgICAgICAgICAgdmFsdWU9e3RleHR9XG4gICAgICAgICAgICBsYW5ndWFnZT17bGFuZ3VhZ2V9XG4gICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgICByaWdodENoaWxkPXtcbiAgICAgICAgICA8T3V0cHV0IGhhc0Vycm9yPXtzdGF0dXMgPT09ICdlcnJvcid9IGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAge291dHB1dH1cbiAgICAgICAgICA8L091dHB1dD5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxGbGV4Qm94XG4gICAgICAgIGp1c3RpZnlDb250ZW50PXtoaWRlQ29weUJ1dHRvbiA/ICdmbGV4LWVuZCcgOiAnc3BhY2UtYmV0d2Vlbid9XG4gICAgICAgIHBsPXs4fVxuICAgICAgPlxuICAgICAgICB7IWhpZGVDb3B5QnV0dG9uID8gKFxuICAgICAgICAgIDxUb29sVGlwXG4gICAgICAgICAgICBpZD1cImNvZGVieXRlLWNvcGllZFwiXG4gICAgICAgICAgICBhbGlnbm1lbnQ9XCJ0b3AtcmlnaHRcIlxuICAgICAgICAgICAgbW9kZT1cImRhcmtcIlxuICAgICAgICAgICAgdGFyZ2V0PXtcbiAgICAgICAgICAgICAgPFRleHRCdXR0b25cbiAgICAgICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkNvcHlDbGlja31cbiAgICAgICAgICAgICAgICBvbkJsdXI9eygpID0+IHNldElzQ29kZUJ5dGVDb3BpZWQoZmFsc2UpfVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY29weS1jb2RlYnl0ZS1idG5cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPENvcHlJY29uU3R5bGVkIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+IENvcHkgQ29kZWJ5dGVcbiAgICAgICAgICAgICAgPC9UZXh0QnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpc0NvZGVCeXRlQ29waWVkID8gKFxuICAgICAgICAgICAgICA8c3BhbiBkYXRhLXRlc3RpZD1cImNvcHktY29uZmlybWF0aW9uLXRvb2x0aXBcIiByb2xlPVwiYWxlcnRcIj5cbiAgICAgICAgICAgICAgICBDb3BpZWQhXG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxzcGFuIGRhdGEtdGVzdGlkPVwiY29weS1wcm9tcHQtdG9vbHRpcFwiPlxuICAgICAgICAgICAgICAgIENvcHkgdG8geW91ciBjbGlwYm9hcmRcbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L1Rvb2xUaXA+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICA8RmlsbEJ1dHRvbiBvbkNsaWNrPXtoYW5kbGVTdWJtaXR9PlxuICAgICAgICAgIHtzdGF0dXMgPT09ICd3YWl0aW5nJyA/IDxTcGlubmVyIC8+IDogJ1J1bid9XG4gICAgICAgIDwvRmlsbEJ1dHRvbj5cbiAgICAgIDwvRmxleEJveD5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXX0= */",
37
49
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
38
50
  });
51
+
39
52
  var DOCKER_SIGTERM = 143;
40
53
  export var Editor = function Editor(_ref2) {
41
54
  var language = _ref2.language,
42
- text = _ref2.text,
43
- hideCopyButton = _ref2.hideCopyButton,
44
- onChange = _ref2.onChange,
45
- copyFormatter = _ref2.copyFormatter,
46
- snippetsBaseUrl = _ref2.snippetsBaseUrl,
47
- trackingData = _ref2.trackingData;
55
+ text = _ref2.text,
56
+ hideCopyButton = _ref2.hideCopyButton,
57
+ onChange = _ref2.onChange,
58
+ copyFormatter = _ref2.copyFormatter,
59
+ snippetsBaseUrl = _ref2.snippetsBaseUrl,
60
+ trackingData = _ref2.trackingData;
61
+
48
62
  var _useState = useState(''),
49
- _useState2 = _slicedToArray(_useState, 2),
50
- output = _useState2[0],
51
- setOutput = _useState2[1];
63
+ _useState2 = _slicedToArray(_useState, 2),
64
+ output = _useState2[0],
65
+ setOutput = _useState2[1];
66
+
52
67
  var _useState3 = useState('ready'),
53
- _useState4 = _slicedToArray(_useState3, 2),
54
- status = _useState4[0],
55
- setStatus = _useState4[1];
68
+ _useState4 = _slicedToArray(_useState3, 2),
69
+ status = _useState4[0],
70
+ setStatus = _useState4[1];
71
+
56
72
  var _useState5 = useState(false),
57
- _useState6 = _slicedToArray(_useState5, 2),
58
- isCodeByteCopied = _useState6[0],
59
- setIsCodeByteCopied = _useState6[1];
73
+ _useState6 = _slicedToArray(_useState5, 2),
74
+ isCodeByteCopied = _useState6[0],
75
+ setIsCodeByteCopied = _useState6[1];
76
+
60
77
  var onCopyClick = function onCopyClick() {
61
78
  if (!isCodeByteCopied) {
62
79
  navigator.clipboard.writeText(copyFormatter ? copyFormatter({
63
80
  text: text,
64
81
  language: language
65
- }) : text)
66
- // eslint-disable-next-line no-console
82
+ }) : text) // eslint-disable-next-line no-console
67
83
  ["catch"](function () {
68
84
  return console.error('Failed to copy');
69
85
  });
@@ -71,10 +87,12 @@ export var Editor = function Editor(_ref2) {
71
87
  trackClick('copy', trackingData);
72
88
  }
73
89
  };
90
+
74
91
  var setErrorStatusAndOutput = function setErrorStatusAndOutput(message) {
75
92
  setOutput(message);
76
93
  setStatus('error');
77
94
  };
95
+
78
96
  var handleSubmit = /*#__PURE__*/function () {
79
97
  var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
80
98
  var data, response;
@@ -86,7 +104,9 @@ export var Editor = function Editor(_ref2) {
86
104
  _context.next = 2;
87
105
  break;
88
106
  }
107
+
89
108
  return _context.abrupt("return");
109
+
90
110
  case 2:
91
111
  data = {
92
112
  language: language,
@@ -98,8 +118,10 @@ export var Editor = function Editor(_ref2) {
98
118
  _context.prev = 6;
99
119
  _context.next = 9;
100
120
  return postSnippet(data, snippetsBaseUrl);
121
+
101
122
  case 9:
102
123
  response = _context.sent;
124
+
103
125
  if (response.stderr.length > 0) {
104
126
  setErrorStatusAndOutput(response.stderr);
105
127
  } else if (response.exit_code === DOCKER_SIGTERM) {
@@ -110,12 +132,15 @@ export var Editor = function Editor(_ref2) {
110
132
  setOutput(response.stdout);
111
133
  setStatus('ready');
112
134
  }
135
+
113
136
  _context.next = 16;
114
137
  break;
138
+
115
139
  case 13:
116
140
  _context.prev = 13;
117
141
  _context.t0 = _context["catch"](6);
118
142
  setErrorStatusAndOutput('Error: ' + _context.t0);
143
+
119
144
  case 16:
120
145
  case "end":
121
146
  return _context.stop();
@@ -123,10 +148,12 @@ export var Editor = function Editor(_ref2) {
123
148
  }
124
149
  }, _callee, null, [[6, 13]]);
125
150
  }));
151
+
126
152
  return function handleSubmit() {
127
153
  return _ref3.apply(this, arguments);
128
154
  };
129
155
  }();
156
+
130
157
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Drawers, {
131
158
  leftChild: /*#__PURE__*/React.createElement(SimpleMonacoEditor, {
132
159
  value: text,
@@ -1,6 +1,9 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
2
+
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4
+
3
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
+
4
7
  import { trackUserClick } from '../libs/eventTracking';
5
8
  export var trackClick = function trackClick(target, trackingData) {
6
9
  return trackUserClick(_objectSpread(_objectSpread({}, trackingData), {}, {
@@ -1,12 +1,11 @@
1
1
  import { createTracker } from '@codecademy/tracking';
2
- var IS_DEV = process.env.NODE_ENV === 'development';
2
+ var IS_DEV = process.env.NODE_ENV === 'development'; // TODO: confirm tracking details and implementation DISC-447
3
3
 
4
- // TODO: confirm tracking details and implementation DISC-447
5
4
  var tracker = createTracker({
6
5
  apiBaseUrl: typeof window === 'undefined' ? 'https://www.codecademy.com' : window.location.origin,
7
6
  verbose: IS_DEV
8
7
  });
9
8
  var trackUserClick = tracker.click,
10
- trackUserVisit = tracker.visit,
11
- trackUserImpression = tracker.impression;
9
+ trackUserVisit = tracker.visit,
10
+ trackUserImpression = tracker.impression;
12
11
  export { trackUserClick, trackUserVisit, trackUserImpression };
package/dist/types.js CHANGED
@@ -1 +0,0 @@
1
- export {};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@codecademy/codebytes",
3
3
  "description": "Codebytes Code Editor",
4
- "version": "0.7.4-alpha.042681.0",
4
+ "version": "0.7.4-alpha.6839f7.0",
5
5
  "author": "Codecademy Engineering <dev@codecademy.com>",
6
6
  "sideEffects": [
7
7
  "**/*.css",
@@ -47,7 +47,7 @@
47
47
  "@codecademy/gamut-icons": "*",
48
48
  "@codecademy/gamut-styles": "*",
49
49
  "@codecademy/gamut-tests": "*",
50
- "@codecademy/tracking": "0.25.1-alpha.042681.0",
50
+ "@codecademy/tracking": "0.25.1-alpha.6839f7.0",
51
51
  "@codecademy/variance": "*",
52
52
  "@emotion/jest": "^11.3.0",
53
53
  "@testing-library/dom": "^7.31.2",
@@ -64,5 +64,5 @@
64
64
  "files": [
65
65
  "dist/**"
66
66
  ],
67
- "gitHead": "a8c6b1ac467efb23d472d456a9779cb84c42eb18"
67
+ "gitHead": "4f37a6f92e6ad9847cd95d1b2360bbdac5d60b96"
68
68
  }