@codecademy/codebytes 1.0.44-alpha.44fc03f69a.0 → 1.0.44-alpha.648a9e5803.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.
@@ -1,5 +1,5 @@
1
1
  import _styled from "@emotion/styled/base";
2
- const _excluded = ["text", "language", "hideCopyButton", "snippetsBaseUrl", "onEdit", "onLanguageChange", "copyFormatter", "trackingEnabled", "trackingData", "trackFirstEdit", "onOutput"];
2
+ const _excluded = ["text", "language", "hideCopyButton", "snippetsBaseUrl", "onEdit", "onLanguageChange", "copyFormatter", "trackingEnabled", "trackingData", "trackFirstEdit", "onOutput", "onBack", "showBackButton"];
3
3
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
4
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
5
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@@ -16,8 +16,8 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
16
16
  import { Box, FlexBox, IconButton } from '@codecademy/gamut';
17
17
  import { FaviconIcon, ArrowChevronLeftIcon } from '@codecademy/gamut-icons';
18
18
  import { Background, system } from '@codecademy/gamut-styles';
19
- import React, { useEffect, useState } from 'react';
20
- import { helloWorld, LOCAL_STORAGE_KEYS } from './consts';
19
+ import React, { useEffect, useMemo, useState } from 'react';
20
+ import { helloWorld } from './consts';
21
21
  import { Editor } from './editor';
22
22
  import { trackClick } from './helpers';
23
23
  import { useEverInView } from './helpers/useEverInView';
@@ -34,7 +34,7 @@ const editorBaseStyles = system.css({
34
34
  const EditorContainer = /*#__PURE__*/_styled(Background, {
35
35
  target: "e1epka4g0",
36
36
  label: "EditorContainer"
37
- })(editorBaseStyles, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb2RlQnl0ZUVkaXRvci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0JFIiwiZmlsZSI6Ii4uL3NyYy9jb2RlQnl0ZUVkaXRvci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb3gsIEZsZXhCb3gsIEljb25CdXR0b24gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dCc7XG5pbXBvcnQgeyBGYXZpY29uSWNvbiwgQXJyb3dDaGV2cm9uTGVmdEljb24gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1pY29ucyc7XG5pbXBvcnQgeyBCYWNrZ3JvdW5kLCBzeXN0ZW0gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgU3R5bGVQcm9wcyB9IGZyb20gJ0Bjb2RlY2FkZW15L3ZhcmlhbmNlJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBoZWxsb1dvcmxkLCBMYW5ndWFnZU9wdGlvbiwgTE9DQUxfU1RPUkFHRV9LRVlTIH0gZnJvbSAnLi9jb25zdHMnO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSAnLi9lZGl0b3InO1xuaW1wb3J0IHsgdHJhY2tDbGljayB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyB1c2VFdmVySW5WaWV3IH0gZnJvbSAnLi9oZWxwZXJzL3VzZUV2ZXJJblZpZXcnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZWxlY3Rpb24gfSBmcm9tICcuL2xhbmd1YWdlU2VsZWN0aW9uJztcbmltcG9ydCB7IHRyYWNrVXNlckltcHJlc3Npb24gfSBmcm9tICcuL2xpYnMvZXZlbnRUcmFja2luZyc7XG5pbXBvcnQgeyBDb2RlQnl0ZUVkaXRvclByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IGVkaXRvckJhc2VTdHlsZXMgPSBzeXN0ZW0uY3NzKHtcbiAgYm9yZGVyOiAxLFxuICBib3JkZXJDb2xvcjogJ2dyYXktOTAwJyxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgbWluSGVpZ2h0OiAnMjVyZW0nLFxufSk7XG5cbmNvbnN0IEVkaXRvckNvbnRhaW5lciA9XG4gIHN0eWxlZChCYWNrZ3JvdW5kKTxTdHlsZVByb3BzPHR5cGVvZiBlZGl0b3JCYXNlU3R5bGVzPj4oZWRpdG9yQmFzZVN0eWxlcyk7XG5cbmV4cG9ydCBjb25zdCBDb2RlQnl0ZUVkaXRvcjogUmVhY3QuRkM8Q29kZUJ5dGVFZGl0b3JQcm9wcz4gPSAoe1xuICB0ZXh0OiBpbml0aWFsVGV4dCxcbiAgbGFuZ3VhZ2U6IGluaXRpYWxMYW5ndWFnZSxcbiAgaGlkZUNvcHlCdXR0b24gPSBmYWxzZSxcbiAgc25pcHBldHNCYXNlVXJsLFxuICBvbkVkaXQsXG4gIG9uTGFuZ3VhZ2VDaGFuZ2UsXG4gIGNvcHlGb3JtYXR0ZXIsXG4gIHRyYWNraW5nRW5hYmxlZCA9IHRydWUsXG4gIHRyYWNraW5nRGF0YSxcbiAgdHJhY2tGaXJzdEVkaXQgPSBmYWxzZSxcbiAgb25PdXRwdXQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgeyBldmVySW5WaWV3LCByZWYgfSA9IHVzZUV2ZXJJblZpZXcoKTtcblxuICBjb25zdCBnZXRJbml0aWFsVGV4dCA9ICgpID0+IHtcbiAgICBpZiAoaW5pdGlhbFRleHQgIT09IHVuZGVmaW5lZCkgcmV0dXJuIGluaXRpYWxUZXh0O1xuICAgIHJldHVybiBpbml0aWFsTGFuZ3VhZ2UgPyBoZWxsb1dvcmxkW2luaXRpYWxMYW5ndWFnZV0gOiAnJztcbiAgfTtcblxuICBjb25zdCBbdGV4dCwgc2V0VGV4dF0gPSB1c2VTdGF0ZTxzdHJpbmc+KGdldEluaXRpYWxUZXh0KCkpO1xuICBjb25zdCBbbGFuZ3VhZ2UsIHNldExhbmd1YWdlXSA9IHVzZVN0YXRlPExhbmd1YWdlT3B0aW9uPihcbiAgICBpbml0aWFsTGFuZ3VhZ2UgPz8gJydcbiAgKTtcbiAgY29uc3QgW2hhc0JlZW5FZGl0ZWQsIHNldEhhc0JlZW5FZGl0ZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGV2ZXJJblZpZXcgJiYgdHJhY2tpbmdFbmFibGVkKSB7XG4gICAgICB0cmFja1VzZXJJbXByZXNzaW9uKHtcbiAgICAgICAgcGFnZV9uYW1lOiB0cmFja2luZ0RhdGE/LnBhZ2VfbmFtZSA/PyAnVW5rbm93bicsXG4gICAgICAgIGNvbnRleHQ6IHRyYWNraW5nRGF0YT8uY29udGV4dCA/PyBkb2N1bWVudC5yZWZlcnJlcixcbiAgICAgICAgdGFyZ2V0OiAnY29kZWJ5dGUnLFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbZXZlckluVmlldywgdHJhY2tpbmdEYXRhLCB0cmFja2luZ0VuYWJsZWRdKTtcblxuICBjb25zdCBvbkJhY2sgPSAoKSA9PiB7XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oTE9DQUxfU1RPUkFHRV9LRVlTLkNPREVfRURJVE9SX1BST1BTKTtcbiAgICBzZXRMYW5ndWFnZSgnJyk7XG4gICAgc2V0VGV4dCgnJyk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8RWRpdG9yQ29udGFpbmVyXG4gICAgICBiZz1cImJsYWNrXCJcbiAgICAgIG1heFdpZHRoPVwiNDNyZW1cIlxuICAgICAgey4uLnJlc3R9XG4gICAgICBvdmVyZmxvdz1cImhpZGRlblwiXG4gICAgICByZWY9e3JlZn1cbiAgICA+XG4gICAgICA8Qm94IGJvcmRlckJvdHRvbT17MX0gYm9yZGVyQ29sb3I9XCJncmF5LTkwMFwiIHB5PXs0fSBwbD17OH0+XG4gICAgICAgIDxGbGV4Qm94PlxuICAgICAgICAgIHtsYW5ndWFnZSAmJiAoXG4gICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICBpY29uPXtBcnJvd0NoZXZyb25MZWZ0SWNvbn1cbiAgICAgICAgICAgICAgdmFyaWFudD1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e29uQmFja31cbiAgICAgICAgICAgICAgdGlwPVwiYmFja1wiXG4gICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgaWNvbj17RmF2aWNvbkljb259XG4gICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgIGhyZWY9XCJodHRwczovL3d3dy5jb2RlY2FkZW15LmNvbS9cIlxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgIHJlbD1cIm5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdHJhY2tDbGljaygnbG9nbycsIHRyYWNraW5nRGF0YSl9XG4gICAgICAgICAgICB0aXA9XCJWaXNpdCB1c1wiXG4gICAgICAgICAgICB0aXBQcm9wcz17e1xuICAgICAgICAgICAgICBhbGlnbm1lbnQ6ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiAnZmxvYXRpbmcnLFxuICAgICAgICAgICAgICBuYXJyb3c6IHRydWUsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvRmxleEJveD5cbiAgICAgIDwvQm94PlxuICAgICAge2xhbmd1YWdlID8gKFxuICAgICAgICA8RWRpdG9yXG4gICAgICAgICAgbGFuZ3VhZ2U9e2xhbmd1YWdlfVxuICAgICAgICAgIHRleHQ9e3RleHR9XG4gICAgICAgICAgaGlkZUNvcHlCdXR0b249e2hpZGVDb3B5QnV0dG9ufVxuICAgICAgICAgIG9uQ2hhbmdlPXsobmV3VGV4dDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBzZXRUZXh0KG5ld1RleHQpO1xuICAgICAgICAgICAgb25FZGl0Py4obmV3VGV4dCwgbGFuZ3VhZ2UpO1xuICAgICAgICAgICAgaWYgKHRyYWNrRmlyc3RFZGl0ICYmIGhhc0JlZW5FZGl0ZWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIHNldEhhc0JlZW5FZGl0ZWQodHJ1ZSk7XG4gICAgICAgICAgICAgIGlmICh0cmFja2luZ0VuYWJsZWQpIHRyYWNrQ2xpY2soJ2VkaXQnLCB0cmFja2luZ0RhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25PdXRwdXQ9e29uT3V0cHV0fVxuICAgICAgICAgIHNuaXBwZXRzQmFzZVVybD17c25pcHBldHNCYXNlVXJsfVxuICAgICAgICAgIGNvcHlGb3JtYXR0ZXI9e2NvcHlGb3JtYXR0ZXJ9XG4gICAgICAgICAgdHJhY2tpbmdFbmFibGVkPXt0cmFja2luZ0VuYWJsZWR9XG4gICAgICAgICAgdHJhY2tpbmdEYXRhPXt0cmFja2luZ0RhdGF9XG4gICAgICAgIC8+XG4gICAgICApIDogKFxuICAgICAgICA8TGFuZ3VhZ2VTZWxlY3Rpb25cbiAgICAgICAgICBvbkNoYW5nZT17KG5ld0xhbmd1YWdlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdUZXh0OiBzdHJpbmcgPVxuICAgICAgICAgICAgICB0ZXh0IHx8IChuZXdMYW5ndWFnZSA/IGhlbGxvV29ybGRbbmV3TGFuZ3VhZ2VdIDogJycpO1xuICAgICAgICAgICAgc2V0TGFuZ3VhZ2UobmV3TGFuZ3VhZ2UpO1xuICAgICAgICAgICAgc2V0VGV4dChuZXdUZXh0KTtcbiAgICAgICAgICAgIGlmICh0cmFja2luZ0VuYWJsZWQpIHRyYWNrQ2xpY2soJ2xhbmdfc2VsZWN0JywgdHJhY2tpbmdEYXRhKTtcbiAgICAgICAgICAgIG9uTGFuZ3VhZ2VDaGFuZ2U/LihuZXdUZXh0LCBuZXdMYW5ndWFnZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9FZGl0b3JDb250YWluZXI+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb2RlQnl0ZUVkaXRvcjtcbiJdfQ== */");
37
+ })(editorBaseStyles, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb2RlQnl0ZUVkaXRvci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0JFIiwiZmlsZSI6Ii4uL3NyYy9jb2RlQnl0ZUVkaXRvci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb3gsIEZsZXhCb3gsIEljb25CdXR0b24gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dCc7XG5pbXBvcnQgeyBGYXZpY29uSWNvbiwgQXJyb3dDaGV2cm9uTGVmdEljb24gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1pY29ucyc7XG5pbXBvcnQgeyBCYWNrZ3JvdW5kLCBzeXN0ZW0gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgU3R5bGVQcm9wcyB9IGZyb20gJ0Bjb2RlY2FkZW15L3ZhcmlhbmNlJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBoZWxsb1dvcmxkLCBMYW5ndWFnZU9wdGlvbiB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IEVkaXRvciB9IGZyb20gJy4vZWRpdG9yJztcbmltcG9ydCB7IHRyYWNrQ2xpY2sgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgdXNlRXZlckluVmlldyB9IGZyb20gJy4vaGVscGVycy91c2VFdmVySW5WaWV3JztcbmltcG9ydCB7IExhbmd1YWdlU2VsZWN0aW9uIH0gZnJvbSAnLi9sYW5ndWFnZVNlbGVjdGlvbic7XG5pbXBvcnQgeyB0cmFja1VzZXJJbXByZXNzaW9uIH0gZnJvbSAnLi9saWJzL2V2ZW50VHJhY2tpbmcnO1xuaW1wb3J0IHsgQ29kZUJ5dGVFZGl0b3JQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBlZGl0b3JCYXNlU3R5bGVzID0gc3lzdGVtLmNzcyh7XG4gIGJvcmRlcjogMSxcbiAgYm9yZGVyQ29sb3I6ICdncmF5LTkwMCcsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gIG1pbkhlaWdodDogJzI1cmVtJyxcbn0pO1xuXG5jb25zdCBFZGl0b3JDb250YWluZXIgPVxuICBzdHlsZWQoQmFja2dyb3VuZCk8U3R5bGVQcm9wczx0eXBlb2YgZWRpdG9yQmFzZVN0eWxlcz4+KGVkaXRvckJhc2VTdHlsZXMpO1xuXG5leHBvcnQgY29uc3QgQ29kZUJ5dGVFZGl0b3I6IFJlYWN0LkZDPENvZGVCeXRlRWRpdG9yUHJvcHM+ID0gKHtcbiAgdGV4dDogaW5pdGlhbFRleHQsXG4gIGxhbmd1YWdlOiBpbml0aWFsTGFuZ3VhZ2UsXG4gIGhpZGVDb3B5QnV0dG9uID0gZmFsc2UsXG4gIHNuaXBwZXRzQmFzZVVybCxcbiAgb25FZGl0LFxuICBvbkxhbmd1YWdlQ2hhbmdlLFxuICBjb3B5Rm9ybWF0dGVyLFxuICB0cmFja2luZ0VuYWJsZWQgPSB0cnVlLFxuICB0cmFja2luZ0RhdGEsXG4gIHRyYWNrRmlyc3RFZGl0ID0gZmFsc2UsXG4gIG9uT3V0cHV0LFxuICBvbkJhY2ssXG4gIHNob3dCYWNrQnV0dG9uID0gZmFsc2UsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgeyBldmVySW5WaWV3LCByZWYgfSA9IHVzZUV2ZXJJblZpZXcoKTtcblxuICBjb25zdCBnZXRJbml0aWFsVGV4dCA9ICgpID0+IHtcbiAgICBpZiAoaW5pdGlhbFRleHQgIT09IHVuZGVmaW5lZCkgcmV0dXJuIGluaXRpYWxUZXh0O1xuICAgIHJldHVybiBpbml0aWFsTGFuZ3VhZ2UgPyBoZWxsb1dvcmxkW2luaXRpYWxMYW5ndWFnZV0gOiAnJztcbiAgfTtcblxuICBjb25zdCBbdGV4dCwgc2V0VGV4dF0gPSB1c2VTdGF0ZTxzdHJpbmc+KGdldEluaXRpYWxUZXh0KCkpO1xuICBjb25zdCBbbGFuZ3VhZ2UsIHNldExhbmd1YWdlXSA9IHVzZVN0YXRlPExhbmd1YWdlT3B0aW9uPihcbiAgICBpbml0aWFsTGFuZ3VhZ2UgPz8gJydcbiAgKTtcbiAgY29uc3QgW2hhc0JlZW5FZGl0ZWQsIHNldEhhc0JlZW5FZGl0ZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGV2ZXJJblZpZXcgJiYgdHJhY2tpbmdFbmFibGVkKSB7XG4gICAgICB0cmFja1VzZXJJbXByZXNzaW9uKHtcbiAgICAgICAgcGFnZV9uYW1lOiB0cmFja2luZ0RhdGE/LnBhZ2VfbmFtZSA/PyAnVW5rbm93bicsXG4gICAgICAgIGNvbnRleHQ6IHRyYWNraW5nRGF0YT8uY29udGV4dCA/PyBkb2N1bWVudC5yZWZlcnJlcixcbiAgICAgICAgdGFyZ2V0OiAnY29kZWJ5dGUnLFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbZXZlckluVmlldywgdHJhY2tpbmdEYXRhLCB0cmFja2luZ0VuYWJsZWRdKTtcblxuICBjb25zdCBoYW5kbGVCYWNrID0gKCkgPT4ge1xuICAgIHNldExhbmd1YWdlKCcnKTtcbiAgICBzZXRUZXh0KCcnKTtcbiAgICBpZiAob25CYWNrKSB7XG4gICAgICBvbkJhY2soKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgcmVuZGVyQmFja0J1dHRvbiA9IHVzZU1lbW8oXG4gICAgKCkgPT4gbGFuZ3VhZ2UgJiYgc2hvd0JhY2tCdXR0b24sXG4gICAgW2xhbmd1YWdlLCBzaG93QmFja0J1dHRvbl1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxFZGl0b3JDb250YWluZXJcbiAgICAgIGJnPVwiYmxhY2tcIlxuICAgICAgbWF4V2lkdGg9XCI0M3JlbVwiXG4gICAgICB7Li4ucmVzdH1cbiAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgIHJlZj17cmVmfVxuICAgID5cbiAgICAgIDxCb3ggYm9yZGVyQm90dG9tPXsxfSBib3JkZXJDb2xvcj1cImdyYXktOTAwXCIgcHk9ezR9IHBsPXs4fT5cbiAgICAgICAgPEZsZXhCb3g+XG4gICAgICAgICAgeyEhcmVuZGVyQmFja0J1dHRvbiAmJiAoXG4gICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICBpY29uPXtBcnJvd0NoZXZyb25MZWZ0SWNvbn1cbiAgICAgICAgICAgICAgdmFyaWFudD1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUJhY2t9XG4gICAgICAgICAgICAgIHRpcD1cImJhY2tcIlxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuXG4gICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgIGljb249e0Zhdmljb25JY29ufVxuICAgICAgICAgICAgdmFyaWFudD1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly93d3cuY29kZWNhZGVteS5jb20vXCJcbiAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICByZWw9XCJub3JlZmVycmVyXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRyYWNrQ2xpY2soJ2xvZ28nLCB0cmFja2luZ0RhdGEpfVxuICAgICAgICAgICAgdGlwPVwiVmlzaXQgdXNcIlxuICAgICAgICAgICAgdGlwUHJvcHM9e3tcbiAgICAgICAgICAgICAgYWxpZ25tZW50OiAnYm90dG9tLWNlbnRlcicsXG4gICAgICAgICAgICAgIHBsYWNlbWVudDogJ2Zsb2F0aW5nJyxcbiAgICAgICAgICAgICAgbmFycm93OiB0cnVlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICA8L0JveD5cbiAgICAgIHtsYW5ndWFnZSA/IChcbiAgICAgICAgPEVkaXRvclxuICAgICAgICAgIGxhbmd1YWdlPXtsYW5ndWFnZX1cbiAgICAgICAgICB0ZXh0PXt0ZXh0fVxuICAgICAgICAgIGhpZGVDb3B5QnV0dG9uPXtoaWRlQ29weUJ1dHRvbn1cbiAgICAgICAgICBvbkNoYW5nZT17KG5ld1RleHQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgc2V0VGV4dChuZXdUZXh0KTtcbiAgICAgICAgICAgIG9uRWRpdD8uKG5ld1RleHQsIGxhbmd1YWdlKTtcbiAgICAgICAgICAgIGlmICh0cmFja0ZpcnN0RWRpdCAmJiBoYXNCZWVuRWRpdGVkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICBzZXRIYXNCZWVuRWRpdGVkKHRydWUpO1xuICAgICAgICAgICAgICBpZiAodHJhY2tpbmdFbmFibGVkKSB0cmFja0NsaWNrKCdlZGl0JywgdHJhY2tpbmdEYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uT3V0cHV0PXtvbk91dHB1dH1cbiAgICAgICAgICBzbmlwcGV0c0Jhc2VVcmw9e3NuaXBwZXRzQmFzZVVybH1cbiAgICAgICAgICBjb3B5Rm9ybWF0dGVyPXtjb3B5Rm9ybWF0dGVyfVxuICAgICAgICAgIHRyYWNraW5nRW5hYmxlZD17dHJhY2tpbmdFbmFibGVkfVxuICAgICAgICAgIHRyYWNraW5nRGF0YT17dHJhY2tpbmdEYXRhfVxuICAgICAgICAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPExhbmd1YWdlU2VsZWN0aW9uXG4gICAgICAgICAgb25DaGFuZ2U9eyhuZXdMYW5ndWFnZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3VGV4dDogc3RyaW5nID1cbiAgICAgICAgICAgICAgdGV4dCB8fCAobmV3TGFuZ3VhZ2UgPyBoZWxsb1dvcmxkW25ld0xhbmd1YWdlXSA6ICcnKTtcbiAgICAgICAgICAgIHNldExhbmd1YWdlKG5ld0xhbmd1YWdlKTtcbiAgICAgICAgICAgIHNldFRleHQobmV3VGV4dCk7XG4gICAgICAgICAgICBpZiAodHJhY2tpbmdFbmFibGVkKSB0cmFja0NsaWNrKCdsYW5nX3NlbGVjdCcsIHRyYWNraW5nRGF0YSk7XG4gICAgICAgICAgICBvbkxhbmd1YWdlQ2hhbmdlPy4obmV3VGV4dCwgbmV3TGFuZ3VhZ2UpO1xuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvRWRpdG9yQ29udGFpbmVyPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29kZUJ5dGVFZGl0b3I7XG4iXX0= */");
38
38
  export const CodeByteEditor = _ref => {
39
39
  let initialText = _ref.text,
40
40
  initialLanguage = _ref.language,
@@ -50,6 +50,9 @@ export const CodeByteEditor = _ref => {
50
50
  _ref$trackFirstEdit = _ref.trackFirstEdit,
51
51
  trackFirstEdit = _ref$trackFirstEdit === void 0 ? false : _ref$trackFirstEdit,
52
52
  onOutput = _ref.onOutput,
53
+ onBack = _ref.onBack,
54
+ _ref$showBackButton = _ref.showBackButton,
55
+ showBackButton = _ref$showBackButton === void 0 ? false : _ref$showBackButton,
53
56
  rest = _objectWithoutProperties(_ref, _excluded);
54
57
  const _useEverInView = useEverInView(),
55
58
  everInView = _useEverInView.everInView,
@@ -80,11 +83,14 @@ export const CodeByteEditor = _ref => {
80
83
  });
81
84
  }
82
85
  }, [everInView, trackingData, trackingEnabled]);
83
- const onBack = () => {
84
- localStorage.removeItem(LOCAL_STORAGE_KEYS.CODE_EDITOR_PROPS);
86
+ const handleBack = () => {
85
87
  setLanguage('');
86
88
  setText('');
89
+ if (onBack) {
90
+ onBack();
91
+ }
87
92
  };
93
+ const renderBackButton = useMemo(() => language && showBackButton, [language, showBackButton]);
88
94
  return /*#__PURE__*/_jsxs(EditorContainer, _objectSpread(_objectSpread({
89
95
  bg: "black",
90
96
  maxWidth: "43rem"
@@ -97,10 +103,10 @@ export const CodeByteEditor = _ref => {
97
103
  py: 4,
98
104
  pl: 8,
99
105
  children: /*#__PURE__*/_jsxs(FlexBox, {
100
- children: [language && /*#__PURE__*/_jsx(IconButton, {
106
+ children: [!!renderBackButton && /*#__PURE__*/_jsx(IconButton, {
101
107
  icon: ArrowChevronLeftIcon,
102
108
  variant: "secondary",
103
- onClick: onBack,
109
+ onClick: handleBack,
104
110
  tip: "back",
105
111
  size: "small"
106
112
  }), /*#__PURE__*/_jsx(IconButton, {
package/dist/consts.d.ts CHANGED
@@ -21,6 +21,3 @@ export declare const helloWorld: {
21
21
  readonly ruby: "puts \"Hello world!\"";
22
22
  readonly scheme: "(begin\n (display \"Hello world!\")\n (newline))";
23
23
  };
24
- export declare const LOCAL_STORAGE_KEYS: {
25
- CODE_EDITOR_PROPS: string;
26
- };
package/dist/consts.js CHANGED
@@ -29,7 +29,4 @@ export const helloWorld = {
29
29
  python,
30
30
  ruby,
31
31
  scheme
32
- };
33
- export const LOCAL_STORAGE_KEYS = {
34
- CODE_EDITOR_PROPS: 'codecademy/codebyte/editor_props'
35
32
  };
package/dist/types.d.ts CHANGED
@@ -24,4 +24,6 @@ export interface CodeByteEditorProps extends Omit<BackgroundProps, 'bg'> {
24
24
  trackingEnabled?: boolean;
25
25
  trackingData?: Omit<UserClickData, 'target'>;
26
26
  trackFirstEdit?: boolean;
27
+ onBack?: VoidFunction;
28
+ showBackButton?: boolean;
27
29
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@codecademy/codebytes",
3
3
  "description": "Codebytes Editor",
4
- "version": "1.0.44-alpha.44fc03f69a.0",
4
+ "version": "1.0.44-alpha.648a9e5803.0",
5
5
  "author": "Codecademy Engineering <dev@codecademy.com>",
6
6
  "dependencies": {
7
7
  "@codecademy/tracking": "1.0.33",
@@ -36,5 +36,5 @@
36
36
  "dist/**/[A-Z]**/[A-Z]*.js",
37
37
  "dist/**/[A-Z]**/index.js"
38
38
  ],
39
- "gitHead": "3491c5a69f7dd392ed01ba80cfd8bbc0cd2f904f"
39
+ "gitHead": "84c02f8bc7c5f4da9c93784d97a51f2766959a35"
40
40
  }