@codecademy/codebytes 1.3.0-alpha.c459366758.0 → 2.0.0-alpha.319255f0ae.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/package.json +2 -2
- package/dist/MonacoEditor/colorsDark.d.ts +0 -32
- package/dist/MonacoEditor/colorsDark.js +0 -47
- package/dist/MonacoEditor/index.d.ts +0 -8
- package/dist/MonacoEditor/index.js +0 -45
- package/dist/MonacoEditor/theme.d.ts +0 -2
- package/dist/MonacoEditor/theme.js +0 -120
- package/dist/MonacoEditor/types.d.ts +0 -1
- package/dist/MonacoEditor/types.js +0 -1
- package/dist/api.d.ts +0 -12
- package/dist/api.js +0 -8
- package/dist/codeByteEditor.d.ts +0 -4
- package/dist/codeByteEditor.js +0 -131
- package/dist/consts.d.ts +0 -23
- package/dist/consts.js +0 -32
- package/dist/drawers.d.ts +0 -6
- package/dist/drawers.js +0 -149
- package/dist/editor.d.ts +0 -15
- package/dist/editor.js +0 -123
- package/dist/helpers/index.d.ts +0 -2
- package/dist/helpers/index.js +0 -9
- package/dist/helpers/useEverInView.d.ts +0 -4
- package/dist/helpers/useEverInView.js +0 -43
- package/dist/helpers/useEverInView.test.js +0 -39
- package/dist/helpers/useIntersection.d.ts +0 -2
- package/dist/helpers/useIntersection.js +0 -33
- package/dist/helpers/useIntersection.test.js +0 -76
- package/dist/index.d.ts +0 -3
- package/dist/index.js +0 -3
- package/dist/languageSelection.d.ts +0 -6
- package/dist/languageSelection.js +0 -23
- package/dist/libs/eventTracking.d.ts +0 -1
- package/dist/libs/eventTracking.js +0 -12
- package/dist/theme.d.ts +0 -5
- package/dist/types.d.ts +0 -22
- package/dist/types.js +0 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codecademy/codebytes",
|
|
3
3
|
"description": "Codebytes Editor",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "2.0.0-alpha.319255f0ae.0",
|
|
5
5
|
"author": "Codecademy Engineering <dev@codecademy.com>",
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@monaco-editor/react": "^4.4.5",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"@codecademy/gamut": "*",
|
|
18
18
|
"@codecademy/gamut-icons": "*",
|
|
19
19
|
"@codecademy/gamut-styles": "*",
|
|
20
|
-
"@codecademy/tracking": "
|
|
20
|
+
"@codecademy/tracking": "2.0.0-alpha.319255f0ae.0",
|
|
21
21
|
"@codecademy/variance": "*",
|
|
22
22
|
"@emotion/styled": "^11.3.0",
|
|
23
23
|
"monaco-editor": "*",
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
export declare const syntax: {
|
|
2
|
-
attribute: "#b4d353";
|
|
3
|
-
annotation: "#ea6c8b";
|
|
4
|
-
atom: "#cc7bc2";
|
|
5
|
-
basic: "#ffffff";
|
|
6
|
-
comment: "#939598";
|
|
7
|
-
constant: "#ff8973";
|
|
8
|
-
decoration: "#ea6c8b";
|
|
9
|
-
invalid: "#ea6c8b";
|
|
10
|
-
key: "#83fff5";
|
|
11
|
-
keyword: "#b3ccff";
|
|
12
|
-
number: "#ea6c8b";
|
|
13
|
-
operator: "#ea6c8b";
|
|
14
|
-
predefined: "#ffffff";
|
|
15
|
-
property: "#ea6c8b";
|
|
16
|
-
regexp: "#b4d353";
|
|
17
|
-
string: "#ffe083";
|
|
18
|
-
tag: "#ea6c8b";
|
|
19
|
-
text: "#ff8973";
|
|
20
|
-
value: "#ffe083";
|
|
21
|
-
variable: "#b4d353";
|
|
22
|
-
};
|
|
23
|
-
export declare const ui: {
|
|
24
|
-
background: string;
|
|
25
|
-
text: "#ffffff";
|
|
26
|
-
indent: {
|
|
27
|
-
active: string;
|
|
28
|
-
inactive: string;
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
|
-
export type SyntaxColors = typeof syntax;
|
|
32
|
-
export type UIColors = typeof ui;
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
// DO NOT CHANGE ANYTHING HERE
|
|
2
|
-
// This file is part of the Codebytes MVP and only includes basic configuration around theming for the SimpleMonacoEditor component
|
|
3
|
-
// We are working on a monaco package in client-modules that has more configuration around themes and languages
|
|
4
|
-
// Monaco as a shared package RFC https://www.notion.so/codecademy/Monaco-editor-as-a-shared-package-1f4484db165b4abc8394c3556451ef6a
|
|
5
|
-
|
|
6
|
-
import { colors, editorColors } from '@codecademy/gamut-styles';
|
|
7
|
-
const darkTheme = {
|
|
8
|
-
blue: editorColors.blue,
|
|
9
|
-
deepPurple: editorColors.deepPurple,
|
|
10
|
-
gray: editorColors.gray,
|
|
11
|
-
green: editorColors.green,
|
|
12
|
-
orange: editorColors.orange,
|
|
13
|
-
purple: editorColors.purple,
|
|
14
|
-
red: editorColors.red,
|
|
15
|
-
white: colors.white,
|
|
16
|
-
yellow: editorColors.yellow
|
|
17
|
-
};
|
|
18
|
-
export const syntax = {
|
|
19
|
-
attribute: darkTheme.green,
|
|
20
|
-
annotation: darkTheme.red,
|
|
21
|
-
atom: darkTheme.deepPurple,
|
|
22
|
-
basic: darkTheme.white,
|
|
23
|
-
comment: darkTheme.gray,
|
|
24
|
-
constant: darkTheme.orange,
|
|
25
|
-
decoration: darkTheme.red,
|
|
26
|
-
invalid: darkTheme.red,
|
|
27
|
-
key: darkTheme.blue,
|
|
28
|
-
keyword: darkTheme.purple,
|
|
29
|
-
number: darkTheme.red,
|
|
30
|
-
operator: darkTheme.red,
|
|
31
|
-
predefined: darkTheme.white,
|
|
32
|
-
property: darkTheme.red,
|
|
33
|
-
regexp: darkTheme.green,
|
|
34
|
-
string: darkTheme.yellow,
|
|
35
|
-
tag: darkTheme.red,
|
|
36
|
-
text: darkTheme.orange,
|
|
37
|
-
value: darkTheme.yellow,
|
|
38
|
-
variable: darkTheme.green
|
|
39
|
-
};
|
|
40
|
-
export const ui = {
|
|
41
|
-
background: '#211E2F',
|
|
42
|
-
text: darkTheme.white,
|
|
43
|
-
indent: {
|
|
44
|
-
active: '#393b41',
|
|
45
|
-
inactive: '#494b51'
|
|
46
|
-
}
|
|
47
|
-
};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { EditorProps } from '@monaco-editor/react';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
export type SimpleMonacoEditorProps = {
|
|
4
|
-
value: string;
|
|
5
|
-
language: string;
|
|
6
|
-
onChange?: EditorProps['onChange'];
|
|
7
|
-
};
|
|
8
|
-
export declare const SimpleMonacoEditor: React.FC<SimpleMonacoEditorProps>;
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
// DO NOT CHANGE ANYTHING HERE
|
|
2
|
-
// This component is part of the Codebytes MVP and only includes basic configuration around theming
|
|
3
|
-
// We are working on a monaco package in client-modules that has more configuration around themes and languages
|
|
4
|
-
// Monaco as a shared package RFC https://www.notion.so/codecademy/Monaco-editor-as-a-shared-package-1f4484db165b4abc8394c3556451ef6a
|
|
5
|
-
|
|
6
|
-
import ReactMonacoEditor from '@monaco-editor/react';
|
|
7
|
-
import React, { useCallback, useRef } from 'react';
|
|
8
|
-
import ResizeObserver from 'react-resize-observer';
|
|
9
|
-
import { dark } from './theme';
|
|
10
|
-
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
-
export const SimpleMonacoEditor = _ref => {
|
|
12
|
-
let value = _ref.value,
|
|
13
|
-
language = _ref.language,
|
|
14
|
-
onChange = _ref.onChange;
|
|
15
|
-
const editorRef = useRef(null);
|
|
16
|
-
const editorWillMount = useCallback((editor, monaco) => {
|
|
17
|
-
editorRef.current = editor;
|
|
18
|
-
monaco.editor.defineTheme('dark', dark);
|
|
19
|
-
monaco.editor.setTheme('dark');
|
|
20
|
-
}, []);
|
|
21
|
-
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
22
|
-
children: [/*#__PURE__*/_jsx(ResizeObserver, {
|
|
23
|
-
onResize: _ref2 => {
|
|
24
|
-
var _editorRef$current;
|
|
25
|
-
let height = _ref2.height,
|
|
26
|
-
width = _ref2.width;
|
|
27
|
-
(_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 ? void 0 : _editorRef$current.layout({
|
|
28
|
-
height,
|
|
29
|
-
width
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
}), /*#__PURE__*/_jsx(ReactMonacoEditor, {
|
|
33
|
-
onMount: editorWillMount,
|
|
34
|
-
onChange: onChange,
|
|
35
|
-
options: {
|
|
36
|
-
minimap: {
|
|
37
|
-
enabled: false
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
theme: "vs-dark",
|
|
41
|
-
value: value,
|
|
42
|
-
language: language
|
|
43
|
-
})]
|
|
44
|
-
});
|
|
45
|
-
};
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
// DO NOT CHANGE ANYTHING HERE
|
|
2
|
-
// This file is part of the Codebytes MVP and only includes basic configuration around theming for the SimpleMonacoEditor component
|
|
3
|
-
// We are working on a monaco package in client-modules that has more configuration around themes and languages
|
|
4
|
-
// Monaco as a shared package RFC https://www.notion.so/codecademy/Monaco-editor-as-a-shared-package-1f4484db165b4abc8394c3556451ef6a
|
|
5
|
-
|
|
6
|
-
import * as darkColors from './colorsDark';
|
|
7
|
-
const c = color => color.slice(1, color.length);
|
|
8
|
-
const theme = _ref => {
|
|
9
|
-
let ui = _ref.ui,
|
|
10
|
-
syntax = _ref.syntax;
|
|
11
|
-
return {
|
|
12
|
-
base: 'vs-dark',
|
|
13
|
-
inherit: true,
|
|
14
|
-
rules: [
|
|
15
|
-
// Base
|
|
16
|
-
{
|
|
17
|
-
token: '',
|
|
18
|
-
foreground: c(syntax.basic)
|
|
19
|
-
}, {
|
|
20
|
-
token: 'regexp',
|
|
21
|
-
foreground: c(syntax.regexp)
|
|
22
|
-
}, {
|
|
23
|
-
token: 'annotation',
|
|
24
|
-
foreground: c(syntax.annotation)
|
|
25
|
-
}, {
|
|
26
|
-
token: 'type',
|
|
27
|
-
foreground: c(syntax.annotation)
|
|
28
|
-
}, {
|
|
29
|
-
token: 'doctype',
|
|
30
|
-
foreground: c(syntax.comment)
|
|
31
|
-
}, {
|
|
32
|
-
token: 'delimiter',
|
|
33
|
-
foreground: c(syntax.decoration)
|
|
34
|
-
}, {
|
|
35
|
-
token: 'invalid',
|
|
36
|
-
foreground: c(syntax.invalid)
|
|
37
|
-
}, {
|
|
38
|
-
token: 'emphasis',
|
|
39
|
-
fontStyle: 'italic'
|
|
40
|
-
}, {
|
|
41
|
-
token: 'strong',
|
|
42
|
-
fontStyle: 'bold'
|
|
43
|
-
}, {
|
|
44
|
-
token: 'variable',
|
|
45
|
-
foreground: c(syntax.variable)
|
|
46
|
-
}, {
|
|
47
|
-
token: 'variable.predefined',
|
|
48
|
-
foreground: c(syntax.variable)
|
|
49
|
-
}, {
|
|
50
|
-
token: 'constant',
|
|
51
|
-
foreground: c(syntax.constant)
|
|
52
|
-
}, {
|
|
53
|
-
token: 'comment',
|
|
54
|
-
foreground: c(syntax.comment)
|
|
55
|
-
}, {
|
|
56
|
-
token: 'number',
|
|
57
|
-
foreground: c(syntax.number)
|
|
58
|
-
}, {
|
|
59
|
-
token: 'number.hex',
|
|
60
|
-
foreground: c(syntax.number)
|
|
61
|
-
}, {
|
|
62
|
-
token: 'keyword.directive',
|
|
63
|
-
foreground: c(syntax.comment)
|
|
64
|
-
}, {
|
|
65
|
-
token: 'include',
|
|
66
|
-
foreground: c(syntax.comment)
|
|
67
|
-
}, {
|
|
68
|
-
token: 'key',
|
|
69
|
-
foreground: c(syntax.property)
|
|
70
|
-
}, {
|
|
71
|
-
token: 'attribute.name',
|
|
72
|
-
foreground: c(syntax.attribute)
|
|
73
|
-
}, {
|
|
74
|
-
token: 'attribute.name-numeric',
|
|
75
|
-
foreground: c(syntax.string)
|
|
76
|
-
}, {
|
|
77
|
-
token: 'attribute.value',
|
|
78
|
-
foreground: c(syntax.property)
|
|
79
|
-
}, {
|
|
80
|
-
token: 'attribute.value.number',
|
|
81
|
-
foreground: c(syntax.number)
|
|
82
|
-
}, {
|
|
83
|
-
token: 'string',
|
|
84
|
-
foreground: c(syntax.string)
|
|
85
|
-
}, {
|
|
86
|
-
token: 'string.yaml',
|
|
87
|
-
foreground: c(syntax.string)
|
|
88
|
-
}, {
|
|
89
|
-
token: 'tag',
|
|
90
|
-
foreground: c(syntax.tag)
|
|
91
|
-
}, {
|
|
92
|
-
token: 'tag.id.jade',
|
|
93
|
-
foreground: c(syntax.tag)
|
|
94
|
-
}, {
|
|
95
|
-
token: 'tag.class.jade',
|
|
96
|
-
foreground: c(syntax.tag)
|
|
97
|
-
}, {
|
|
98
|
-
token: 'metatag',
|
|
99
|
-
foreground: c(syntax.comment)
|
|
100
|
-
}, {
|
|
101
|
-
token: 'attribute.value.unit',
|
|
102
|
-
foreground: c(syntax.string)
|
|
103
|
-
}, {
|
|
104
|
-
token: 'keyword',
|
|
105
|
-
foreground: c(syntax.keyword)
|
|
106
|
-
}, {
|
|
107
|
-
token: 'keyword.flow',
|
|
108
|
-
foreground: c(syntax.keyword)
|
|
109
|
-
}],
|
|
110
|
-
colors: {
|
|
111
|
-
'editor.background': ui.background,
|
|
112
|
-
'editor.foreground': ui.text,
|
|
113
|
-
'editorIndentGuide.background': ui.indent.inactive,
|
|
114
|
-
'editorIndentGuide.activeBackground': ui.indent.active,
|
|
115
|
-
'editorWhitespace.foreground': syntax.comment,
|
|
116
|
-
'editorLineNumber.foreground': '#9FA2AC'
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
};
|
|
120
|
-
export const dark = theme(darkColors);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type Monaco = typeof import('monaco-editor');
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/api.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { LanguageOption } from './consts';
|
|
2
|
-
interface Response {
|
|
3
|
-
stderr: string;
|
|
4
|
-
stdout: string;
|
|
5
|
-
exit_code: number;
|
|
6
|
-
}
|
|
7
|
-
interface PostSnippetData {
|
|
8
|
-
language: LanguageOption;
|
|
9
|
-
code: string;
|
|
10
|
-
}
|
|
11
|
-
export declare const postSnippet: (data: PostSnippetData, snippetsBaseUrl?: string) => Promise<Response>;
|
|
12
|
-
export {};
|
package/dist/api.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export const postSnippet = async (data, snippetsBaseUrl) => {
|
|
2
|
-
const snippetsEndpoint = "https://".concat(snippetsBaseUrl, "/snippets");
|
|
3
|
-
const response = await fetch(snippetsEndpoint, {
|
|
4
|
-
method: 'POST',
|
|
5
|
-
body: JSON.stringify(data)
|
|
6
|
-
});
|
|
7
|
-
return response.json();
|
|
8
|
-
};
|
package/dist/codeByteEditor.d.ts
DELETED
package/dist/codeByteEditor.js
DELETED
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import _styled from "@emotion/styled/base";
|
|
2
|
-
const _excluded = ["text", "language", "hideCopyButton", "snippetsBaseUrl", "onEdit", "onLanguageChange", "copyFormatter", "trackingData", "trackFirstEdit"];
|
|
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
|
-
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
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
6
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
7
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
8
|
-
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
9
|
-
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."); }
|
|
10
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
11
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
12
|
-
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
13
|
-
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
14
|
-
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
15
|
-
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
16
|
-
import { Box, IconButton } from '@codecademy/gamut';
|
|
17
|
-
import { FaviconIcon } from '@codecademy/gamut-icons';
|
|
18
|
-
import { Background, system } from '@codecademy/gamut-styles';
|
|
19
|
-
import React, { useEffect, useState } from 'react';
|
|
20
|
-
import { helloWorld } from './consts';
|
|
21
|
-
import { Editor } from './editor';
|
|
22
|
-
import { trackClick } from './helpers';
|
|
23
|
-
import { useEverInView } from './helpers/useEverInView';
|
|
24
|
-
import { LanguageSelection } from './languageSelection';
|
|
25
|
-
import { trackUserImpression } from './libs/eventTracking';
|
|
26
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
27
|
-
const editorBaseStyles = system.css({
|
|
28
|
-
border: 1,
|
|
29
|
-
borderColor: 'gray-900',
|
|
30
|
-
display: 'flex',
|
|
31
|
-
flexDirection: 'column',
|
|
32
|
-
minHeight: '25rem'
|
|
33
|
-
});
|
|
34
|
-
const EditorContainer = /*#__PURE__*/_styled(Background, {
|
|
35
|
-
target: "e1epka4g0",
|
|
36
|
-
label: "EditorContainer"
|
|
37
|
-
})(editorBaseStyles, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb2RlQnl0ZUVkaXRvci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0JFIiwiZmlsZSI6Ii4uL3NyYy9jb2RlQnl0ZUVkaXRvci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb3gsIEljb25CdXR0b24gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dCc7XG5pbXBvcnQgeyBGYXZpY29uSWNvbiB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0LWljb25zJztcbmltcG9ydCB7IEJhY2tncm91bmQsIHN5c3RlbSB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0LXN0eWxlcyc7XG5pbXBvcnQgeyBTdHlsZVByb3BzIH0gZnJvbSAnQGNvZGVjYWRlbXkvdmFyaWFuY2UnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IGhlbGxvV29ybGQsIExhbmd1YWdlT3B0aW9uIH0gZnJvbSAnLi9jb25zdHMnO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSAnLi9lZGl0b3InO1xuaW1wb3J0IHsgdHJhY2tDbGljayB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyB1c2VFdmVySW5WaWV3IH0gZnJvbSAnLi9oZWxwZXJzL3VzZUV2ZXJJblZpZXcnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZWxlY3Rpb24gfSBmcm9tICcuL2xhbmd1YWdlU2VsZWN0aW9uJztcbmltcG9ydCB7IHRyYWNrVXNlckltcHJlc3Npb24gfSBmcm9tICcuL2xpYnMvZXZlbnRUcmFja2luZyc7XG5pbXBvcnQgeyBDb2RlQnl0ZUVkaXRvclByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IGVkaXRvckJhc2VTdHlsZXMgPSBzeXN0ZW0uY3NzKHtcbiAgYm9yZGVyOiAxLFxuICBib3JkZXJDb2xvcjogJ2dyYXktOTAwJyxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgbWluSGVpZ2h0OiAnMjVyZW0nLFxufSk7XG5cbmNvbnN0IEVkaXRvckNvbnRhaW5lciA9XG4gIHN0eWxlZChCYWNrZ3JvdW5kKTxTdHlsZVByb3BzPHR5cGVvZiBlZGl0b3JCYXNlU3R5bGVzPj4oZWRpdG9yQmFzZVN0eWxlcyk7XG5cbmV4cG9ydCBjb25zdCBDb2RlQnl0ZUVkaXRvcjogUmVhY3QuRkM8Q29kZUJ5dGVFZGl0b3JQcm9wcz4gPSAoe1xuICB0ZXh0OiBpbml0aWFsVGV4dCxcbiAgbGFuZ3VhZ2U6IGluaXRpYWxMYW5ndWFnZSxcbiAgaGlkZUNvcHlCdXR0b24gPSBmYWxzZSxcbiAgc25pcHBldHNCYXNlVXJsLFxuICBvbkVkaXQsXG4gIG9uTGFuZ3VhZ2VDaGFuZ2UsXG4gIGNvcHlGb3JtYXR0ZXIsXG4gIHRyYWNraW5nRGF0YSxcbiAgdHJhY2tGaXJzdEVkaXQgPSBmYWxzZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCB7IGV2ZXJJblZpZXcsIHJlZiB9ID0gdXNlRXZlckluVmlldygpO1xuXG4gIGNvbnN0IGdldEluaXRpYWxUZXh0ID0gKCkgPT4ge1xuICAgIGlmIChpbml0aWFsVGV4dCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gaW5pdGlhbFRleHQ7XG4gICAgcmV0dXJuIGluaXRpYWxMYW5ndWFnZSA/IGhlbGxvV29ybGRbaW5pdGlhbExhbmd1YWdlXSA6ICcnO1xuICB9O1xuXG4gIGNvbnN0IFt0ZXh0LCBzZXRUZXh0XSA9IHVzZVN0YXRlPHN0cmluZz4oZ2V0SW5pdGlhbFRleHQoKSk7XG4gIGNvbnN0IFtsYW5ndWFnZSwgc2V0TGFuZ3VhZ2VdID0gdXNlU3RhdGU8TGFuZ3VhZ2VPcHRpb24+KFxuICAgIGluaXRpYWxMYW5ndWFnZSA/PyAnJ1xuICApO1xuICBjb25zdCBbaGFzQmVlbkVkaXRlZCwgc2V0SGFzQmVlbkVkaXRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZXZlckluVmlldykge1xuICAgICAgdHJhY2tVc2VySW1wcmVzc2lvbih7XG4gICAgICAgIHBhZ2VfbmFtZTogdHJhY2tpbmdEYXRhPy5wYWdlX25hbWUgPz8gJ1Vua25vd24nLFxuICAgICAgICBjb250ZXh0OiB0cmFja2luZ0RhdGE/LmNvbnRleHQgPz8gZG9jdW1lbnQucmVmZXJyZXIsXG4gICAgICAgIHRhcmdldDogJ2NvZGVieXRlJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW2V2ZXJJblZpZXcsIHRyYWNraW5nRGF0YV0pO1xuXG4gIHJldHVybiAoXG4gICAgPEVkaXRvckNvbnRhaW5lclxuICAgICAgYmc9XCJibGFja1wiXG4gICAgICBtYXhXaWR0aD1cIjQzcmVtXCJcbiAgICAgIHsuLi5yZXN0fVxuICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgcmVmPXtyZWZ9XG4gICAgPlxuICAgICAgPEJveCBib3JkZXJCb3R0b209ezF9IGJvcmRlckNvbG9yPVwiZ3JheS05MDBcIiBweT17NH0gcGw9ezh9PlxuICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgIGljb249e0Zhdmljb25JY29ufVxuICAgICAgICAgIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgIGhyZWY9XCJodHRwczovL3d3dy5jb2RlY2FkZW15LmNvbS9cIlxuICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgcmVsPVwibm9yZWZlcnJlclwiXG4gICAgICAgICAgb25DbGljaz17KCkgPT4gdHJhY2tDbGljaygnbG9nbycsIHRyYWNraW5nRGF0YSl9XG4gICAgICAgICAgdGlwPVwiVmlzaXQgdXNcIlxuICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICBhbGlnbm1lbnQ6ICdib3R0b20tY2VudGVyJyxcbiAgICAgICAgICAgIHBsYWNlbWVudDogJ2Zsb2F0aW5nJyxcbiAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgICB7bGFuZ3VhZ2UgPyAoXG4gICAgICAgIDxFZGl0b3JcbiAgICAgICAgICBsYW5ndWFnZT17bGFuZ3VhZ2V9XG4gICAgICAgICAgdGV4dD17dGV4dH1cbiAgICAgICAgICBoaWRlQ29weUJ1dHRvbj17aGlkZUNvcHlCdXR0b259XG4gICAgICAgICAgb25DaGFuZ2U9eyhuZXdUZXh0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHNldFRleHQobmV3VGV4dCk7XG4gICAgICAgICAgICBvbkVkaXQ/LihuZXdUZXh0LCBsYW5ndWFnZSk7XG4gICAgICAgICAgICBpZiAodHJhY2tGaXJzdEVkaXQgJiYgaGFzQmVlbkVkaXRlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgc2V0SGFzQmVlbkVkaXRlZCh0cnVlKTtcbiAgICAgICAgICAgICAgdHJhY2tDbGljaygnZWRpdCcsIHRyYWNraW5nRGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBzbmlwcGV0c0Jhc2VVcmw9e3NuaXBwZXRzQmFzZVVybH1cbiAgICAgICAgICBjb3B5Rm9ybWF0dGVyPXtjb3B5Rm9ybWF0dGVyfVxuICAgICAgICAgIHRyYWNraW5nRGF0YT17dHJhY2tpbmdEYXRhfVxuICAgICAgICAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPExhbmd1YWdlU2VsZWN0aW9uXG4gICAgICAgICAgb25DaGFuZ2U9eyhuZXdMYW5ndWFnZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3VGV4dDogc3RyaW5nID1cbiAgICAgICAgICAgICAgdGV4dCB8fCAobmV3TGFuZ3VhZ2UgPyBoZWxsb1dvcmxkW25ld0xhbmd1YWdlXSA6ICcnKTtcbiAgICAgICAgICAgIHNldExhbmd1YWdlKG5ld0xhbmd1YWdlKTtcbiAgICAgICAgICAgIHNldFRleHQobmV3VGV4dCk7XG4gICAgICAgICAgICB0cmFja0NsaWNrKCdsYW5nX3NlbGVjdCcsIHRyYWNraW5nRGF0YSk7XG4gICAgICAgICAgICBvbkxhbmd1YWdlQ2hhbmdlPy4obmV3VGV4dCwgbmV3TGFuZ3VhZ2UpO1xuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvRWRpdG9yQ29udGFpbmVyPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29kZUJ5dGVFZGl0b3I7XG4iXX0= */");
|
|
38
|
-
export const CodeByteEditor = _ref => {
|
|
39
|
-
let initialText = _ref.text,
|
|
40
|
-
initialLanguage = _ref.language,
|
|
41
|
-
_ref$hideCopyButton = _ref.hideCopyButton,
|
|
42
|
-
hideCopyButton = _ref$hideCopyButton === void 0 ? false : _ref$hideCopyButton,
|
|
43
|
-
snippetsBaseUrl = _ref.snippetsBaseUrl,
|
|
44
|
-
onEdit = _ref.onEdit,
|
|
45
|
-
onLanguageChange = _ref.onLanguageChange,
|
|
46
|
-
copyFormatter = _ref.copyFormatter,
|
|
47
|
-
trackingData = _ref.trackingData,
|
|
48
|
-
_ref$trackFirstEdit = _ref.trackFirstEdit,
|
|
49
|
-
trackFirstEdit = _ref$trackFirstEdit === void 0 ? false : _ref$trackFirstEdit,
|
|
50
|
-
rest = _objectWithoutProperties(_ref, _excluded);
|
|
51
|
-
const _useEverInView = useEverInView(),
|
|
52
|
-
everInView = _useEverInView.everInView,
|
|
53
|
-
ref = _useEverInView.ref;
|
|
54
|
-
const getInitialText = () => {
|
|
55
|
-
if (initialText !== undefined) return initialText;
|
|
56
|
-
return initialLanguage ? helloWorld[initialLanguage] : '';
|
|
57
|
-
};
|
|
58
|
-
const _useState = useState(getInitialText()),
|
|
59
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
60
|
-
text = _useState2[0],
|
|
61
|
-
setText = _useState2[1];
|
|
62
|
-
const _useState3 = useState(initialLanguage !== null && initialLanguage !== void 0 ? initialLanguage : ''),
|
|
63
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
64
|
-
language = _useState4[0],
|
|
65
|
-
setLanguage = _useState4[1];
|
|
66
|
-
const _useState5 = useState(false),
|
|
67
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
68
|
-
hasBeenEdited = _useState6[0],
|
|
69
|
-
setHasBeenEdited = _useState6[1];
|
|
70
|
-
useEffect(() => {
|
|
71
|
-
if (everInView) {
|
|
72
|
-
var _trackingData$page_na, _trackingData$context;
|
|
73
|
-
trackUserImpression({
|
|
74
|
-
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',
|
|
75
|
-
context: (_trackingData$context = trackingData === null || trackingData === void 0 ? void 0 : trackingData.context) !== null && _trackingData$context !== void 0 ? _trackingData$context : document.referrer,
|
|
76
|
-
target: 'codebyte'
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
}, [everInView, trackingData]);
|
|
80
|
-
return /*#__PURE__*/_jsxs(EditorContainer, _objectSpread(_objectSpread({
|
|
81
|
-
bg: "black",
|
|
82
|
-
maxWidth: "43rem"
|
|
83
|
-
}, rest), {}, {
|
|
84
|
-
overflow: "hidden",
|
|
85
|
-
ref: ref,
|
|
86
|
-
children: [/*#__PURE__*/_jsx(Box, {
|
|
87
|
-
borderBottom: 1,
|
|
88
|
-
borderColor: "gray-900",
|
|
89
|
-
py: 4,
|
|
90
|
-
pl: 8,
|
|
91
|
-
children: /*#__PURE__*/_jsx(IconButton, {
|
|
92
|
-
icon: FaviconIcon,
|
|
93
|
-
variant: "secondary",
|
|
94
|
-
href: "https://www.codecademy.com/",
|
|
95
|
-
target: "_blank",
|
|
96
|
-
rel: "noreferrer",
|
|
97
|
-
onClick: () => trackClick('logo', trackingData),
|
|
98
|
-
tip: "Visit us",
|
|
99
|
-
tipProps: {
|
|
100
|
-
alignment: 'bottom-center',
|
|
101
|
-
placement: 'floating',
|
|
102
|
-
narrow: true
|
|
103
|
-
}
|
|
104
|
-
})
|
|
105
|
-
}), language ? /*#__PURE__*/_jsx(Editor, {
|
|
106
|
-
language: language,
|
|
107
|
-
text: text,
|
|
108
|
-
hideCopyButton: hideCopyButton,
|
|
109
|
-
onChange: newText => {
|
|
110
|
-
setText(newText);
|
|
111
|
-
onEdit === null || onEdit === void 0 ? void 0 : onEdit(newText, language);
|
|
112
|
-
if (trackFirstEdit && hasBeenEdited === false) {
|
|
113
|
-
setHasBeenEdited(true);
|
|
114
|
-
trackClick('edit', trackingData);
|
|
115
|
-
}
|
|
116
|
-
},
|
|
117
|
-
snippetsBaseUrl: snippetsBaseUrl,
|
|
118
|
-
copyFormatter: copyFormatter,
|
|
119
|
-
trackingData: trackingData
|
|
120
|
-
}) : /*#__PURE__*/_jsx(LanguageSelection, {
|
|
121
|
-
onChange: newLanguage => {
|
|
122
|
-
const newText = text || (newLanguage ? helloWorld[newLanguage] : '');
|
|
123
|
-
setLanguage(newLanguage);
|
|
124
|
-
setText(newText);
|
|
125
|
-
trackClick('lang_select', trackingData);
|
|
126
|
-
onLanguageChange === null || onLanguageChange === void 0 ? void 0 : onLanguageChange(newText, newLanguage);
|
|
127
|
-
}
|
|
128
|
-
})]
|
|
129
|
-
}));
|
|
130
|
-
};
|
|
131
|
-
export default CodeByteEditor;
|
package/dist/consts.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export declare const LanguageOptions: {
|
|
2
|
-
'': string;
|
|
3
|
-
cpp: string;
|
|
4
|
-
csharp: string;
|
|
5
|
-
golang: string;
|
|
6
|
-
javascript: string;
|
|
7
|
-
php: string;
|
|
8
|
-
python: string;
|
|
9
|
-
ruby: string;
|
|
10
|
-
scheme: string;
|
|
11
|
-
};
|
|
12
|
-
export type LanguageOption = keyof typeof LanguageOptions;
|
|
13
|
-
export declare const validLanguages: Exclude<LanguageOption, "">[];
|
|
14
|
-
export declare const helloWorld: {
|
|
15
|
-
readonly cpp: "#include <iostream>\nint main() {\n std::cout << \"Hello world!\";\n return 0;\n}";
|
|
16
|
-
readonly csharp: "namespace HelloWorld {\n class Hello {\n static void Main(string[] args) {\n System.Console.WriteLine(\"Hello world!\");\n }\n }\n}";
|
|
17
|
-
readonly golang: "package main\nimport \"fmt\"\nfunc main() {\n fmt.Println(\"Hello world!\")\n}";
|
|
18
|
-
readonly javascript: "console.log('Hello world!');";
|
|
19
|
-
readonly php: "<?php\n echo \"Hello world!\";\n?>";
|
|
20
|
-
readonly python: "print('Hello world!')";
|
|
21
|
-
readonly ruby: "puts \"Hello world!\"";
|
|
22
|
-
readonly scheme: "(begin\n (display \"Hello world!\")\n (newline))";
|
|
23
|
-
};
|
package/dist/consts.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
// key = language param to send to snippets service
|
|
2
|
-
// val = label in language selection drop down
|
|
3
|
-
export const LanguageOptions = {
|
|
4
|
-
'': 'Select a language',
|
|
5
|
-
cpp: 'C++',
|
|
6
|
-
csharp: 'C#',
|
|
7
|
-
golang: 'Go',
|
|
8
|
-
javascript: 'JavaScript',
|
|
9
|
-
php: 'PHP',
|
|
10
|
-
python: 'Python 3',
|
|
11
|
-
ruby: 'Ruby',
|
|
12
|
-
scheme: 'Scheme'
|
|
13
|
-
};
|
|
14
|
-
export const validLanguages = Object.keys(LanguageOptions).filter(option => !!option);
|
|
15
|
-
const cpp = "#include <iostream>\nint main() {\n std::cout << \"Hello world!\";\n return 0;\n}";
|
|
16
|
-
const csharp = "namespace HelloWorld {\n class Hello {\n static void Main(string[] args) {\n System.Console.WriteLine(\"Hello world!\");\n }\n }\n}";
|
|
17
|
-
const golang = "package main\nimport \"fmt\"\nfunc main() {\n fmt.Println(\"Hello world!\")\n}";
|
|
18
|
-
const javascript = "console.log('Hello world!');";
|
|
19
|
-
const php = "<?php\n echo \"Hello world!\";\n?>";
|
|
20
|
-
const python = "print('Hello world!')";
|
|
21
|
-
const ruby = 'puts "Hello world!"';
|
|
22
|
-
const scheme = "(begin\n (display \"Hello world!\")\n (newline))";
|
|
23
|
-
export const helloWorld = {
|
|
24
|
-
cpp,
|
|
25
|
-
csharp,
|
|
26
|
-
golang,
|
|
27
|
-
javascript,
|
|
28
|
-
php,
|
|
29
|
-
python,
|
|
30
|
-
ruby,
|
|
31
|
-
scheme
|
|
32
|
-
};
|
package/dist/drawers.d.ts
DELETED
package/dist/drawers.js
DELETED
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
import _styled from "@emotion/styled/base";
|
|
2
|
-
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
3
|
-
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."); }
|
|
4
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
5
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
6
|
-
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
7
|
-
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
8
|
-
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)."; }
|
|
9
|
-
import { Box, FlexBox, IconButton } from '@codecademy/gamut';
|
|
10
|
-
import { ArrowChevronLeftIcon, ArrowChevronRightIcon } from '@codecademy/gamut-icons';
|
|
11
|
-
import React, { useState } from 'react';
|
|
12
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
13
|
-
const DrawerLabel = /*#__PURE__*/_styled("span", {
|
|
14
|
-
target: "e1keub6a2",
|
|
15
|
-
label: "DrawerLabel"
|
|
16
|
-
})(process.env.NODE_ENV === "production" ? {
|
|
17
|
-
name: "1u2ibt9",
|
|
18
|
-
styles: "padding:0.875rem 0.5rem"
|
|
19
|
-
} : {
|
|
20
|
-
name: "1u2ibt9",
|
|
21
|
-
styles: "padding:0.875rem 0.5rem/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kcmF3ZXJzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRK0IiLCJmaWxlIjoiLi4vc3JjL2RyYXdlcnMudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm94LCBGbGV4Qm94LCBJY29uQnV0dG9uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQnO1xuaW1wb3J0IHtcbiAgQXJyb3dDaGV2cm9uTGVmdEljb24sXG4gIEFycm93Q2hldnJvblJpZ2h0SWNvbixcbn0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBEcmF3ZXJMYWJlbCA9IHN0eWxlZC5zcGFuYFxuICBwYWRkaW5nOiAwLjg3NXJlbSAwLjVyZW07XG5gO1xuXG5jb25zdCBMZWZ0RHJhd2VySWNvbiA9IHN0eWxlZChBcnJvd0NoZXZyb25MZWZ0SWNvbik8eyBvcGVuPzogYm9vbGVhbiB9PmBcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZS1pbi1vdXQ7XG5gO1xuY29uc3QgUmlnaHREcmF3ZXJJY29uID0gTGVmdERyYXdlckljb24ud2l0aENvbXBvbmVudChBcnJvd0NoZXZyb25SaWdodEljb24pO1xuXG5jb25zdCBEcmF3ZXIgPSBzdHlsZWQoRmxleEJveCk8eyBvcGVuPzogYm9vbGVhbjsgaGlkZU9uQ2xvc2U/OiBib29sZWFuIH0+YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICR7KHsgb3BlbiwgaGlkZU9uQ2xvc2UgfSkgPT4gYFxuICAgIGZsZXgtYmFzaXM6ICR7b3BlbiA/ICcxMDAlJyA6ICcwJSd9O1xuICAgIHZpc2liaWxpdHk6ICR7IW9wZW4gJiYgaGlkZU9uQ2xvc2UgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJ307XG4gICAgdHJhbnNpdGlvbjogZmxleC1iYXNpcyAwLjJzICR7XG4gICAgICBvcGVuID8gJ2Vhc2Utb3V0JyA6ICdlYXNlLWluLCB2aXNpYmlsaXR5IDBzIDAuMnMnXG4gICAgfTtcblxuICAgICR7TGVmdERyYXdlckljb259LCAke1JpZ2h0RHJhd2VySWNvbn0ge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGVaKCR7b3BlbiA/ICcwJyA6ICcxODAnfWRlZyl9O1xuICAgIH1cbiAgYH1cbmA7XG5cbmV4cG9ydCB0eXBlIERyYXdlcnNQcm9wcyA9IHtcbiAgbGVmdENoaWxkOiBSZWFjdC5SZWFjdE5vZGU7XG4gIHJpZ2h0Q2hpbGQ6IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmV4cG9ydCBjb25zdCBEcmF3ZXJzOiBSZWFjdC5GQzxEcmF3ZXJzUHJvcHM+ID0gKHsgbGVmdENoaWxkLCByaWdodENoaWxkIH0pID0+IHtcbiAgY29uc3QgW29wZW4sIHNldE9wZW5dID0gdXNlU3RhdGU8J2xlZnQnIHwgJ3JpZ2h0JyB8ICdib3RoJz4oJ2JvdGgnKTtcblxuICBsZXQgYXJpYUxhYmVsQ29kZUJ1dHRvbiA9ICdIaWRlIGNvZGUnO1xuICBsZXQgYXJpYUxhYmVsT3V0cHV0QnV0dG9uID0gJ0hpZGUgb3V0cHV0JztcbiAgbGV0IGlzTGVmdE9wZW4gPSBmYWxzZTtcbiAgbGV0IGlzUmlnaHRPcGVuID0gZmFsc2U7XG5cbiAgaWYgKG9wZW4gPT09ICdsZWZ0Jykge1xuICAgIGFyaWFMYWJlbENvZGVCdXR0b24gPSBhcmlhTGFiZWxPdXRwdXRCdXR0b24gPSAnU2hvdyBvdXRwdXQnO1xuICAgIGlzTGVmdE9wZW4gPSB0cnVlO1xuICB9IGVsc2UgaWYgKG9wZW4gPT09ICdyaWdodCcpIHtcbiAgICBhcmlhTGFiZWxDb2RlQnV0dG9uID0gYXJpYUxhYmVsT3V0cHV0QnV0dG9uID0gJ1Nob3cgY29kZSc7XG4gICAgaXNSaWdodE9wZW4gPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEZsZXhCb3g+XG4gICAgICAgIDxEcmF3ZXJcbiAgICAgICAgICBvcGVuPXshaXNSaWdodE9wZW59XG4gICAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgICAgZmxleFdyYXA9XCJub3dyYXBcIlxuICAgICAgICAgIHRleHRBbGlnbj1cImxlZnRcIlxuICAgICAgICAgIGJvcmRlclJpZ2h0PXsxfVxuICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS05MDBcIlxuICAgICAgICAgIHB4PXs4fVxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBtbD17OH0+XG4gICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICBpY29uPXtMZWZ0RHJhd2VySWNvbn1cbiAgICAgICAgICAgICAgdmFyaWFudD1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XG4gICAgICAgICAgICAgICAgc2V0T3Blbigoc3RhdGUpID0+IChzdGF0ZSA9PT0gJ2JvdGgnID8gJ3JpZ2h0JyA6ICdib3RoJykpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYXJpYS1jb250cm9scz1cImNvZGUtZHJhd2VyXCJcbiAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD17IWlzUmlnaHRPcGVufVxuICAgICAgICAgICAgICB0aXA9e2FyaWFMYWJlbENvZGVCdXR0b259XG4gICAgICAgICAgICAgIHRpcFByb3BzPXt7IGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLCBuYXJyb3c6IHRydWUgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPERyYXdlckxhYmVsIGlkPVwiY29kZS1kcmF3ZXItbGFiZWxcIj5Db2RlPC9EcmF3ZXJMYWJlbD5cbiAgICAgICAgPC9EcmF3ZXI+XG4gICAgICAgIDxEcmF3ZXJcbiAgICAgICAgICBvcGVuPXshaXNMZWZ0T3Blbn1cbiAgICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgICBmbGV4V3JhcD1cIm5vd3JhcFwiXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ9XCJmbGV4LWVuZFwiXG4gICAgICAgICAgcHg9ezh9XG4gICAgICAgID5cbiAgICAgICAgICA8RHJhd2VyTGFiZWwgaWQ9XCJvdXRwdXQtZHJhd2VyLWxhYmVsXCI+T3V0cHV0PC9EcmF3ZXJMYWJlbD5cbiAgICAgICAgICA8Qm94IG1yPXs4fT5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJUb2dnbGVcIlxuICAgICAgICAgICAgICBpY29uPXtSaWdodERyYXdlckljb259XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgIHNldE9wZW4oKHN0YXRlKSA9PiAoc3RhdGUgPT09ICdib3RoJyA/ICdsZWZ0JyA6ICdib3RoJykpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYXJpYS1jb250cm9scz1cIm91dHB1dC1kcmF3ZXJcIlxuICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPXshaXNMZWZ0T3Blbn1cbiAgICAgICAgICAgICAgdGlwPXthcmlhTGFiZWxPdXRwdXRCdXR0b259XG4gICAgICAgICAgICAgIHRpcFByb3BzPXt7IGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLCBuYXJyb3c6IHRydWUgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgIDwvRHJhd2VyPlxuICAgICAgPC9GbGV4Qm94PlxuICAgICAgPEZsZXhCb3hcbiAgICAgICAgZmxleEdyb3c9ezF9XG4gICAgICAgIGJvcmRlclk9ezF9XG4gICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS05MDBcIlxuICAgICAgICBhbGlnbkl0ZW1zPVwic3RyZXRjaFwiXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAgPERyYXdlclxuICAgICAgICAgIGhpZGVPbkNsb3NlXG4gICAgICAgICAgaWQ9XCJjb2RlLWRyYXdlclwiXG4gICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiY29kZS1kcmF3ZXItbGFiZWxcIlxuICAgICAgICAgIG9wZW49eyFpc1JpZ2h0T3Blbn1cbiAgICAgICAgICBmbGV4R3Jvdz17MH1cbiAgICAgICAgICBvdmVyZmxvdz1cImhpZGRlblwiXG4gICAgICAgICAgYm9yZGVyQ29sb3I9XCJncmF5LTkwMFwiXG4gICAgICAgICAgYm9yZGVyU3R5bGVSaWdodD1cInNvbGlkXCJcbiAgICAgICAgICBib3JkZXJXaWR0aFJpZ2h0PVwidGhpblwiXG4gICAgICAgID5cbiAgICAgICAgICB7bGVmdENoaWxkfVxuICAgICAgICA8L0RyYXdlcj5cbiAgICAgICAgPERyYXdlclxuICAgICAgICAgIGhpZGVPbkNsb3NlXG4gICAgICAgICAgaWQ9XCJvdXRwdXQtZHJhd2VyXCJcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJvdXRwdXQtZHJhd2VyLWxhYmVsXCJcbiAgICAgICAgICByb2xlPVwicmVnaW9uXCJcbiAgICAgICAgICBvcGVuPXshaXNMZWZ0T3Blbn1cbiAgICAgICAgICBvdmVyZmxvdz1cImhpZGRlblwiXG4gICAgICAgID5cbiAgICAgICAgICB7cmlnaHRDaGlsZH1cbiAgICAgICAgPC9EcmF3ZXI+XG4gICAgICA8L0ZsZXhCb3g+XG4gICAgPC8+XG4gICk7XG59O1xuIl19 */",
|
|
22
|
-
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
23
|
-
});
|
|
24
|
-
const LeftDrawerIcon = /*#__PURE__*/_styled(ArrowChevronLeftIcon, {
|
|
25
|
-
target: "e1keub6a1",
|
|
26
|
-
label: "LeftDrawerIcon"
|
|
27
|
-
})(process.env.NODE_ENV === "production" ? {
|
|
28
|
-
name: "jlwh11",
|
|
29
|
-
styles: "transition:transform 0.2s ease-in-out"
|
|
30
|
-
} : {
|
|
31
|
-
name: "jlwh11",
|
|
32
|
-
styles: "transition:transform 0.2s ease-in-out/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kcmF3ZXJzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZdUUiLCJmaWxlIjoiLi4vc3JjL2RyYXdlcnMudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm94LCBGbGV4Qm94LCBJY29uQnV0dG9uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQnO1xuaW1wb3J0IHtcbiAgQXJyb3dDaGV2cm9uTGVmdEljb24sXG4gIEFycm93Q2hldnJvblJpZ2h0SWNvbixcbn0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBEcmF3ZXJMYWJlbCA9IHN0eWxlZC5zcGFuYFxuICBwYWRkaW5nOiAwLjg3NXJlbSAwLjVyZW07XG5gO1xuXG5jb25zdCBMZWZ0RHJhd2VySWNvbiA9IHN0eWxlZChBcnJvd0NoZXZyb25MZWZ0SWNvbik8eyBvcGVuPzogYm9vbGVhbiB9PmBcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZS1pbi1vdXQ7XG5gO1xuY29uc3QgUmlnaHREcmF3ZXJJY29uID0gTGVmdERyYXdlckljb24ud2l0aENvbXBvbmVudChBcnJvd0NoZXZyb25SaWdodEljb24pO1xuXG5jb25zdCBEcmF3ZXIgPSBzdHlsZWQoRmxleEJveCk8eyBvcGVuPzogYm9vbGVhbjsgaGlkZU9uQ2xvc2U/OiBib29sZWFuIH0+YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICR7KHsgb3BlbiwgaGlkZU9uQ2xvc2UgfSkgPT4gYFxuICAgIGZsZXgtYmFzaXM6ICR7b3BlbiA/ICcxMDAlJyA6ICcwJSd9O1xuICAgIHZpc2liaWxpdHk6ICR7IW9wZW4gJiYgaGlkZU9uQ2xvc2UgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJ307XG4gICAgdHJhbnNpdGlvbjogZmxleC1iYXNpcyAwLjJzICR7XG4gICAgICBvcGVuID8gJ2Vhc2Utb3V0JyA6ICdlYXNlLWluLCB2aXNpYmlsaXR5IDBzIDAuMnMnXG4gICAgfTtcblxuICAgICR7TGVmdERyYXdlckljb259LCAke1JpZ2h0RHJhd2VySWNvbn0ge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGVaKCR7b3BlbiA/ICcwJyA6ICcxODAnfWRlZyl9O1xuICAgIH1cbiAgYH1cbmA7XG5cbmV4cG9ydCB0eXBlIERyYXdlcnNQcm9wcyA9IHtcbiAgbGVmdENoaWxkOiBSZWFjdC5SZWFjdE5vZGU7XG4gIHJpZ2h0Q2hpbGQ6IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmV4cG9ydCBjb25zdCBEcmF3ZXJzOiBSZWFjdC5GQzxEcmF3ZXJzUHJvcHM+ID0gKHsgbGVmdENoaWxkLCByaWdodENoaWxkIH0pID0+IHtcbiAgY29uc3QgW29wZW4sIHNldE9wZW5dID0gdXNlU3RhdGU8J2xlZnQnIHwgJ3JpZ2h0JyB8ICdib3RoJz4oJ2JvdGgnKTtcblxuICBsZXQgYXJpYUxhYmVsQ29kZUJ1dHRvbiA9ICdIaWRlIGNvZGUnO1xuICBsZXQgYXJpYUxhYmVsT3V0cHV0QnV0dG9uID0gJ0hpZGUgb3V0cHV0JztcbiAgbGV0IGlzTGVmdE9wZW4gPSBmYWxzZTtcbiAgbGV0IGlzUmlnaHRPcGVuID0gZmFsc2U7XG5cbiAgaWYgKG9wZW4gPT09ICdsZWZ0Jykge1xuICAgIGFyaWFMYWJlbENvZGVCdXR0b24gPSBhcmlhTGFiZWxPdXRwdXRCdXR0b24gPSAnU2hvdyBvdXRwdXQnO1xuICAgIGlzTGVmdE9wZW4gPSB0cnVlO1xuICB9IGVsc2UgaWYgKG9wZW4gPT09ICdyaWdodCcpIHtcbiAgICBhcmlhTGFiZWxDb2RlQnV0dG9uID0gYXJpYUxhYmVsT3V0cHV0QnV0dG9uID0gJ1Nob3cgY29kZSc7XG4gICAgaXNSaWdodE9wZW4gPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEZsZXhCb3g+XG4gICAgICAgIDxEcmF3ZXJcbiAgICAgICAgICBvcGVuPXshaXNSaWdodE9wZW59XG4gICAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgICAgZmxleFdyYXA9XCJub3dyYXBcIlxuICAgICAgICAgIHRleHRBbGlnbj1cImxlZnRcIlxuICAgICAgICAgIGJvcmRlclJpZ2h0PXsxfVxuICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS05MDBcIlxuICAgICAgICAgIHB4PXs4fVxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBtbD17OH0+XG4gICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICBpY29uPXtMZWZ0RHJhd2VySWNvbn1cbiAgICAgICAgICAgICAgdmFyaWFudD1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XG4gICAgICAgICAgICAgICAgc2V0T3Blbigoc3RhdGUpID0+IChzdGF0ZSA9PT0gJ2JvdGgnID8gJ3JpZ2h0JyA6ICdib3RoJykpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYXJpYS1jb250cm9scz1cImNvZGUtZHJhd2VyXCJcbiAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD17IWlzUmlnaHRPcGVufVxuICAgICAgICAgICAgICB0aXA9e2FyaWFMYWJlbENvZGVCdXR0b259XG4gICAgICAgICAgICAgIHRpcFByb3BzPXt7IGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLCBuYXJyb3c6IHRydWUgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPERyYXdlckxhYmVsIGlkPVwiY29kZS1kcmF3ZXItbGFiZWxcIj5Db2RlPC9EcmF3ZXJMYWJlbD5cbiAgICAgICAgPC9EcmF3ZXI+XG4gICAgICAgIDxEcmF3ZXJcbiAgICAgICAgICBvcGVuPXshaXNMZWZ0T3Blbn1cbiAgICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgICBmbGV4V3JhcD1cIm5vd3JhcFwiXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ9XCJmbGV4LWVuZFwiXG4gICAgICAgICAgcHg9ezh9XG4gICAgICAgID5cbiAgICAgICAgICA8RHJhd2VyTGFiZWwgaWQ9XCJvdXRwdXQtZHJhd2VyLWxhYmVsXCI+T3V0cHV0PC9EcmF3ZXJMYWJlbD5cbiAgICAgICAgICA8Qm94IG1yPXs4fT5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJUb2dnbGVcIlxuICAgICAgICAgICAgICBpY29uPXtSaWdodERyYXdlckljb259XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgIHNldE9wZW4oKHN0YXRlKSA9PiAoc3RhdGUgPT09ICdib3RoJyA/ICdsZWZ0JyA6ICdib3RoJykpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYXJpYS1jb250cm9scz1cIm91dHB1dC1kcmF3ZXJcIlxuICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPXshaXNMZWZ0T3Blbn1cbiAgICAgICAgICAgICAgdGlwPXthcmlhTGFiZWxPdXRwdXRCdXR0b259XG4gICAgICAgICAgICAgIHRpcFByb3BzPXt7IGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLCBuYXJyb3c6IHRydWUgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgIDwvRHJhd2VyPlxuICAgICAgPC9GbGV4Qm94PlxuICAgICAgPEZsZXhCb3hcbiAgICAgICAgZmxleEdyb3c9ezF9XG4gICAgICAgIGJvcmRlclk9ezF9XG4gICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS05MDBcIlxuICAgICAgICBhbGlnbkl0ZW1zPVwic3RyZXRjaFwiXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAgPERyYXdlclxuICAgICAgICAgIGhpZGVPbkNsb3NlXG4gICAgICAgICAgaWQ9XCJjb2RlLWRyYXdlclwiXG4gICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiY29kZS1kcmF3ZXItbGFiZWxcIlxuICAgICAgICAgIG9wZW49eyFpc1JpZ2h0T3Blbn1cbiAgICAgICAgICBmbGV4R3Jvdz17MH1cbiAgICAgICAgICBvdmVyZmxvdz1cImhpZGRlblwiXG4gICAgICAgICAgYm9yZGVyQ29sb3I9XCJncmF5LTkwMFwiXG4gICAgICAgICAgYm9yZGVyU3R5bGVSaWdodD1cInNvbGlkXCJcbiAgICAgICAgICBib3JkZXJXaWR0aFJpZ2h0PVwidGhpblwiXG4gICAgICAgID5cbiAgICAgICAgICB7bGVmdENoaWxkfVxuICAgICAgICA8L0RyYXdlcj5cbiAgICAgICAgPERyYXdlclxuICAgICAgICAgIGhpZGVPbkNsb3NlXG4gICAgICAgICAgaWQ9XCJvdXRwdXQtZHJhd2VyXCJcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJvdXRwdXQtZHJhd2VyLWxhYmVsXCJcbiAgICAgICAgICByb2xlPVwicmVnaW9uXCJcbiAgICAgICAgICBvcGVuPXshaXNMZWZ0T3Blbn1cbiAgICAgICAgICBvdmVyZmxvdz1cImhpZGRlblwiXG4gICAgICAgID5cbiAgICAgICAgICB7cmlnaHRDaGlsZH1cbiAgICAgICAgPC9EcmF3ZXI+XG4gICAgICA8L0ZsZXhCb3g+XG4gICAgPC8+XG4gICk7XG59O1xuIl19 */",
|
|
33
|
-
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
34
|
-
});
|
|
35
|
-
const RightDrawerIcon = LeftDrawerIcon.withComponent(ArrowChevronRightIcon, {
|
|
36
|
-
target: "e1keub6a3",
|
|
37
|
-
label: "RightDrawerIcon"
|
|
38
|
-
});
|
|
39
|
-
const Drawer = /*#__PURE__*/_styled(FlexBox, {
|
|
40
|
-
target: "e1keub6a0",
|
|
41
|
-
label: "Drawer"
|
|
42
|
-
})("position:relative;", _ref => {
|
|
43
|
-
let open = _ref.open,
|
|
44
|
-
hideOnClose = _ref.hideOnClose;
|
|
45
|
-
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 ");
|
|
46
|
-
}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kcmF3ZXJzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQnlFIiwiZmlsZSI6Ii4uL3NyYy9kcmF3ZXJzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJveCwgRmxleEJveCwgSWNvbkJ1dHRvbiB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7XG4gIEFycm93Q2hldnJvbkxlZnRJY29uLFxuICBBcnJvd0NoZXZyb25SaWdodEljb24sXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0LWljb25zJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgRHJhd2VyTGFiZWwgPSBzdHlsZWQuc3BhbmBcbiAgcGFkZGluZzogMC44NzVyZW0gMC41cmVtO1xuYDtcblxuY29uc3QgTGVmdERyYXdlckljb24gPSBzdHlsZWQoQXJyb3dDaGV2cm9uTGVmdEljb24pPHsgb3Blbj86IGJvb2xlYW4gfT5gXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2UtaW4tb3V0O1xuYDtcbmNvbnN0IFJpZ2h0RHJhd2VySWNvbiA9IExlZnREcmF3ZXJJY29uLndpdGhDb21wb25lbnQoQXJyb3dDaGV2cm9uUmlnaHRJY29uKTtcblxuY29uc3QgRHJhd2VyID0gc3R5bGVkKEZsZXhCb3gpPHsgb3Blbj86IGJvb2xlYW47IGhpZGVPbkNsb3NlPzogYm9vbGVhbiB9PmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAkeyh7IG9wZW4sIGhpZGVPbkNsb3NlIH0pID0+IGBcbiAgICBmbGV4LWJhc2lzOiAke29wZW4gPyAnMTAwJScgOiAnMCUnfTtcbiAgICB2aXNpYmlsaXR5OiAkeyFvcGVuICYmIGhpZGVPbkNsb3NlID8gJ2hpZGRlbicgOiAndmlzaWJsZSd9O1xuICAgIHRyYW5zaXRpb246IGZsZXgtYmFzaXMgMC4ycyAke1xuICAgICAgb3BlbiA/ICdlYXNlLW91dCcgOiAnZWFzZS1pbiwgdmlzaWJpbGl0eSAwcyAwLjJzJ1xuICAgIH07XG5cbiAgICAke0xlZnREcmF3ZXJJY29ufSwgJHtSaWdodERyYXdlckljb259IHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlWigke29wZW4gPyAnMCcgOiAnMTgwJ31kZWcpfTtcbiAgICB9XG4gIGB9XG5gO1xuXG5leHBvcnQgdHlwZSBEcmF3ZXJzUHJvcHMgPSB7XG4gIGxlZnRDaGlsZDogUmVhY3QuUmVhY3ROb2RlO1xuICByaWdodENoaWxkOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5leHBvcnQgY29uc3QgRHJhd2VyczogUmVhY3QuRkM8RHJhd2Vyc1Byb3BzPiA9ICh7IGxlZnRDaGlsZCwgcmlnaHRDaGlsZCB9KSA9PiB7XG4gIGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlPCdsZWZ0JyB8ICdyaWdodCcgfCAnYm90aCc+KCdib3RoJyk7XG5cbiAgbGV0IGFyaWFMYWJlbENvZGVCdXR0b24gPSAnSGlkZSBjb2RlJztcbiAgbGV0IGFyaWFMYWJlbE91dHB1dEJ1dHRvbiA9ICdIaWRlIG91dHB1dCc7XG4gIGxldCBpc0xlZnRPcGVuID0gZmFsc2U7XG4gIGxldCBpc1JpZ2h0T3BlbiA9IGZhbHNlO1xuXG4gIGlmIChvcGVuID09PSAnbGVmdCcpIHtcbiAgICBhcmlhTGFiZWxDb2RlQnV0dG9uID0gYXJpYUxhYmVsT3V0cHV0QnV0dG9uID0gJ1Nob3cgb3V0cHV0JztcbiAgICBpc0xlZnRPcGVuID0gdHJ1ZTtcbiAgfSBlbHNlIGlmIChvcGVuID09PSAncmlnaHQnKSB7XG4gICAgYXJpYUxhYmVsQ29kZUJ1dHRvbiA9IGFyaWFMYWJlbE91dHB1dEJ1dHRvbiA9ICdTaG93IGNvZGUnO1xuICAgIGlzUmlnaHRPcGVuID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxGbGV4Qm94PlxuICAgICAgICA8RHJhd2VyXG4gICAgICAgICAgb3Blbj17IWlzUmlnaHRPcGVufVxuICAgICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICAgIGZsZXhXcmFwPVwibm93cmFwXCJcbiAgICAgICAgICB0ZXh0QWxpZ249XCJsZWZ0XCJcbiAgICAgICAgICBib3JkZXJSaWdodD17MX1cbiAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktOTAwXCJcbiAgICAgICAgICBweD17OH1cbiAgICAgICAgPlxuICAgICAgICAgIDxCb3ggbWw9ezh9PlxuICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgaWNvbj17TGVmdERyYXdlckljb259XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgIHNldE9wZW4oKHN0YXRlKSA9PiAoc3RhdGUgPT09ICdib3RoJyA/ICdyaWdodCcgOiAnYm90aCcpKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJjb2RlLWRyYXdlclwiXG4gICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9eyFpc1JpZ2h0T3Blbn1cbiAgICAgICAgICAgICAgdGlwPXthcmlhTGFiZWxDb2RlQnV0dG9ufVxuICAgICAgICAgICAgICB0aXBQcm9wcz17eyBhbGlnbm1lbnQ6ICdib3R0b20tY2VudGVyJywgbmFycm93OiB0cnVlIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIDxEcmF3ZXJMYWJlbCBpZD1cImNvZGUtZHJhd2VyLWxhYmVsXCI+Q29kZTwvRHJhd2VyTGFiZWw+XG4gICAgICAgIDwvRHJhd2VyPlxuICAgICAgICA8RHJhd2VyXG4gICAgICAgICAgb3Blbj17IWlzTGVmdE9wZW59XG4gICAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgICAgZmxleFdyYXA9XCJub3dyYXBcIlxuICAgICAgICAgIGp1c3RpZnlDb250ZW50PVwiZmxleC1lbmRcIlxuICAgICAgICAgIHB4PXs4fVxuICAgICAgICA+XG4gICAgICAgICAgPERyYXdlckxhYmVsIGlkPVwib3V0cHV0LWRyYXdlci1sYWJlbFwiPk91dHB1dDwvRHJhd2VyTGFiZWw+XG4gICAgICAgICAgPEJveCBtcj17OH0+XG4gICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiVG9nZ2xlXCJcbiAgICAgICAgICAgICAgaWNvbj17UmlnaHREcmF3ZXJJY29ufVxuICAgICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgICBzZXRPcGVuKChzdGF0ZSkgPT4gKHN0YXRlID09PSAnYm90aCcgPyAnbGVmdCcgOiAnYm90aCcpKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJvdXRwdXQtZHJhd2VyXCJcbiAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD17IWlzTGVmdE9wZW59XG4gICAgICAgICAgICAgIHRpcD17YXJpYUxhYmVsT3V0cHV0QnV0dG9ufVxuICAgICAgICAgICAgICB0aXBQcm9wcz17eyBhbGlnbm1lbnQ6ICdib3R0b20tY2VudGVyJywgbmFycm93OiB0cnVlIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICA8L0RyYXdlcj5cbiAgICAgIDwvRmxleEJveD5cbiAgICAgIDxGbGV4Qm94XG4gICAgICAgIGZsZXhHcm93PXsxfVxuICAgICAgICBib3JkZXJZPXsxfVxuICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktOTAwXCJcbiAgICAgICAgYWxpZ25JdGVtcz1cInN0cmV0Y2hcIlxuICAgICAgICBvdmVyZmxvdz1cImhpZGRlblwiXG4gICAgICA+XG4gICAgICAgIDxEcmF3ZXJcbiAgICAgICAgICBoaWRlT25DbG9zZVxuICAgICAgICAgIGlkPVwiY29kZS1kcmF3ZXJcIlxuICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImNvZGUtZHJhd2VyLWxhYmVsXCJcbiAgICAgICAgICBvcGVuPXshaXNSaWdodE9wZW59XG4gICAgICAgICAgZmxleEdyb3c9ezB9XG4gICAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgICAgIGJvcmRlckNvbG9yPVwiZ3JheS05MDBcIlxuICAgICAgICAgIGJvcmRlclN0eWxlUmlnaHQ9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGhSaWdodD1cInRoaW5cIlxuICAgICAgICA+XG4gICAgICAgICAge2xlZnRDaGlsZH1cbiAgICAgICAgPC9EcmF3ZXI+XG4gICAgICAgIDxEcmF3ZXJcbiAgICAgICAgICBoaWRlT25DbG9zZVxuICAgICAgICAgIGlkPVwib3V0cHV0LWRyYXdlclwiXG4gICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwib3V0cHV0LWRyYXdlci1sYWJlbFwiXG4gICAgICAgICAgcm9sZT1cInJlZ2lvblwiXG4gICAgICAgICAgb3Blbj17IWlzTGVmdE9wZW59XG4gICAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgICA+XG4gICAgICAgICAge3JpZ2h0Q2hpbGR9XG4gICAgICAgIDwvRHJhd2VyPlxuICAgICAgPC9GbGV4Qm94PlxuICAgIDwvPlxuICApO1xufTtcbiJdfQ== */"));
|
|
47
|
-
export const Drawers = _ref2 => {
|
|
48
|
-
let leftChild = _ref2.leftChild,
|
|
49
|
-
rightChild = _ref2.rightChild;
|
|
50
|
-
const _useState = useState('both'),
|
|
51
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
52
|
-
open = _useState2[0],
|
|
53
|
-
setOpen = _useState2[1];
|
|
54
|
-
let ariaLabelCodeButton = 'Hide code';
|
|
55
|
-
let ariaLabelOutputButton = 'Hide output';
|
|
56
|
-
let isLeftOpen = false;
|
|
57
|
-
let isRightOpen = false;
|
|
58
|
-
if (open === 'left') {
|
|
59
|
-
ariaLabelCodeButton = ariaLabelOutputButton = 'Show output';
|
|
60
|
-
isLeftOpen = true;
|
|
61
|
-
} else if (open === 'right') {
|
|
62
|
-
ariaLabelCodeButton = ariaLabelOutputButton = 'Show code';
|
|
63
|
-
isRightOpen = true;
|
|
64
|
-
}
|
|
65
|
-
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
66
|
-
children: [/*#__PURE__*/_jsxs(FlexBox, {
|
|
67
|
-
children: [/*#__PURE__*/_jsxs(Drawer, {
|
|
68
|
-
open: !isRightOpen,
|
|
69
|
-
alignItems: "center",
|
|
70
|
-
flexWrap: "nowrap",
|
|
71
|
-
textAlign: "left",
|
|
72
|
-
borderRight: 1,
|
|
73
|
-
borderColor: "gray-900",
|
|
74
|
-
px: 8,
|
|
75
|
-
children: [/*#__PURE__*/_jsx(Box, {
|
|
76
|
-
ml: 8,
|
|
77
|
-
children: /*#__PURE__*/_jsx(IconButton, {
|
|
78
|
-
icon: LeftDrawerIcon,
|
|
79
|
-
variant: "secondary",
|
|
80
|
-
size: "small",
|
|
81
|
-
onClick: () => setOpen(state => state === 'both' ? 'right' : 'both'),
|
|
82
|
-
"aria-controls": "code-drawer",
|
|
83
|
-
"aria-expanded": !isRightOpen,
|
|
84
|
-
tip: ariaLabelCodeButton,
|
|
85
|
-
tipProps: {
|
|
86
|
-
alignment: 'bottom-center',
|
|
87
|
-
narrow: true
|
|
88
|
-
}
|
|
89
|
-
})
|
|
90
|
-
}), /*#__PURE__*/_jsx(DrawerLabel, {
|
|
91
|
-
id: "code-drawer-label",
|
|
92
|
-
children: "Code"
|
|
93
|
-
})]
|
|
94
|
-
}), /*#__PURE__*/_jsxs(Drawer, {
|
|
95
|
-
open: !isLeftOpen,
|
|
96
|
-
alignItems: "center",
|
|
97
|
-
flexWrap: "nowrap",
|
|
98
|
-
justifyContent: "flex-end",
|
|
99
|
-
px: 8,
|
|
100
|
-
children: [/*#__PURE__*/_jsx(DrawerLabel, {
|
|
101
|
-
id: "output-drawer-label",
|
|
102
|
-
children: "Output"
|
|
103
|
-
}), /*#__PURE__*/_jsx(Box, {
|
|
104
|
-
mr: 8,
|
|
105
|
-
children: /*#__PURE__*/_jsx(IconButton, {
|
|
106
|
-
"aria-label": "Toggle",
|
|
107
|
-
icon: RightDrawerIcon,
|
|
108
|
-
variant: "secondary",
|
|
109
|
-
size: "small",
|
|
110
|
-
onClick: () => setOpen(state => state === 'both' ? 'left' : 'both'),
|
|
111
|
-
"aria-controls": "output-drawer",
|
|
112
|
-
"aria-expanded": !isLeftOpen,
|
|
113
|
-
tip: ariaLabelOutputButton,
|
|
114
|
-
tipProps: {
|
|
115
|
-
alignment: 'bottom-center',
|
|
116
|
-
narrow: true
|
|
117
|
-
}
|
|
118
|
-
})
|
|
119
|
-
})]
|
|
120
|
-
})]
|
|
121
|
-
}), /*#__PURE__*/_jsxs(FlexBox, {
|
|
122
|
-
flexGrow: 1,
|
|
123
|
-
borderY: 1,
|
|
124
|
-
borderColor: "gray-900",
|
|
125
|
-
alignItems: "stretch",
|
|
126
|
-
overflow: "hidden",
|
|
127
|
-
children: [/*#__PURE__*/_jsx(Drawer, {
|
|
128
|
-
hideOnClose: true,
|
|
129
|
-
id: "code-drawer",
|
|
130
|
-
"aria-labelledby": "code-drawer-label",
|
|
131
|
-
open: !isRightOpen,
|
|
132
|
-
flexGrow: 0,
|
|
133
|
-
overflow: "hidden",
|
|
134
|
-
borderColor: "gray-900",
|
|
135
|
-
borderStyleRight: "solid",
|
|
136
|
-
borderWidthRight: "thin",
|
|
137
|
-
children: leftChild
|
|
138
|
-
}), /*#__PURE__*/_jsx(Drawer, {
|
|
139
|
-
hideOnClose: true,
|
|
140
|
-
id: "output-drawer",
|
|
141
|
-
"aria-labelledby": "output-drawer-label",
|
|
142
|
-
role: "region",
|
|
143
|
-
open: !isLeftOpen,
|
|
144
|
-
overflow: "hidden",
|
|
145
|
-
children: rightChild
|
|
146
|
-
})]
|
|
147
|
-
})]
|
|
148
|
-
});
|
|
149
|
-
};
|
package/dist/editor.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { UserClickData } from '@codecademy/tracking';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import type { LanguageOption } from './consts';
|
|
4
|
-
import { CodebytesCopyFormatter } from './types';
|
|
5
|
-
type EditorProps = {
|
|
6
|
-
hideCopyButton: boolean;
|
|
7
|
-
language: LanguageOption;
|
|
8
|
-
text: string;
|
|
9
|
-
onChange: (text: string) => void;
|
|
10
|
-
snippetsBaseUrl?: string;
|
|
11
|
-
copyFormatter?: CodebytesCopyFormatter;
|
|
12
|
-
trackingData?: Omit<UserClickData, 'target'>;
|
|
13
|
-
};
|
|
14
|
-
export declare const Editor: React.FC<EditorProps>;
|
|
15
|
-
export {};
|
package/dist/editor.js
DELETED
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import _styled from "@emotion/styled/base";
|
|
2
|
-
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
3
|
-
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."); }
|
|
4
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
5
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
6
|
-
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
7
|
-
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
8
|
-
import { FillButton, FlexBox, Spinner, TextButton, ToolTip } from '@codecademy/gamut';
|
|
9
|
-
import { CopyIcon } from '@codecademy/gamut-icons';
|
|
10
|
-
import React, { useState } from 'react';
|
|
11
|
-
import { postSnippet } from './api';
|
|
12
|
-
import { Drawers } from './drawers';
|
|
13
|
-
import { trackClick } from './helpers';
|
|
14
|
-
import { SimpleMonacoEditor } from './MonacoEditor';
|
|
15
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
16
|
-
const Output = /*#__PURE__*/_styled("pre", {
|
|
17
|
-
target: "e1lzxy8e0",
|
|
18
|
-
label: "Output"
|
|
19
|
-
})("width:100%;height:100%;margin:0;padding:0 1rem;font-family:Monaco;font-size:0.875rem;overflow:auto;", _ref => {
|
|
20
|
-
let hasError = _ref.hasError,
|
|
21
|
-
theme = _ref.theme;
|
|
22
|
-
return "\n color: ".concat(hasError ? theme.colors.orange : theme.colors.text, ";\n background-color: ").concat(theme.colors['navy-900'], ";\n");
|
|
23
|
-
}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lZGl0b3IudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1CZ0QiLCJmaWxlIjoiLi4vc3JjL2VkaXRvci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBGaWxsQnV0dG9uLFxuICBGbGV4Qm94LFxuICBTcGlubmVyLFxuICBUZXh0QnV0dG9uLFxuICBUb29sVGlwLFxufSBmcm9tICdAY29kZWNhZGVteS9nYW11dCc7XG5pbXBvcnQgeyBDb3B5SWNvbiB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0LWljb25zJztcbmltcG9ydCB7IFVzZXJDbGlja0RhdGEgfSBmcm9tICdAY29kZWNhZGVteS90cmFja2luZyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHBvc3RTbmlwcGV0IH0gZnJvbSAnLi9hcGknO1xuaW1wb3J0IHR5cGUgeyBMYW5ndWFnZU9wdGlvbiB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IERyYXdlcnMgfSBmcm9tICcuL2RyYXdlcnMnO1xuaW1wb3J0IHsgdHJhY2tDbGljayB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBTaW1wbGVNb25hY29FZGl0b3IgfSBmcm9tICcuL01vbmFjb0VkaXRvcic7XG5pbXBvcnQgeyBDb2RlYnl0ZXNDb3B5Rm9ybWF0dGVyIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IE91dHB1dCA9IHN0eWxlZC5wcmU8eyBoYXNFcnJvcjogYm9vbGVhbiB9PmBcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwIDFyZW07XG4gIGZvbnQtZmFtaWx5OiBNb25hY287XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIG92ZXJmbG93OiBhdXRvO1xuICAkeyh7IGhhc0Vycm9yLCB0aGVtZSB9KSA9PiBgXG4gIGNvbG9yOiAke2hhc0Vycm9yID8gdGhlbWUuY29sb3JzLm9yYW5nZSA6IHRoZW1lLmNvbG9ycy50ZXh0fTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHt0aGVtZS5jb2xvcnNbJ25hdnktOTAwJ119O1xuYH1cbmA7XG5cbmNvbnN0IERPQ0tFUl9TSUdURVJNID0gMTQzO1xuXG50eXBlIEVkaXRvclByb3BzID0ge1xuICBoaWRlQ29weUJ1dHRvbjogYm9vbGVhbjtcbiAgbGFuZ3VhZ2U6IExhbmd1YWdlT3B0aW9uO1xuICB0ZXh0OiBzdHJpbmc7XG4gIG9uQ2hhbmdlOiAodGV4dDogc3RyaW5nKSA9PiB2b2lkO1xuICBzbmlwcGV0c0Jhc2VVcmw/OiBzdHJpbmc7XG4gIGNvcHlGb3JtYXR0ZXI/OiBDb2RlYnl0ZXNDb3B5Rm9ybWF0dGVyO1xuICB0cmFja2luZ0RhdGE/OiBPbWl0PFVzZXJDbGlja0RhdGEsICd0YXJnZXQnPjtcbn07XG5cbmV4cG9ydCBjb25zdCBFZGl0b3I6IFJlYWN0LkZDPEVkaXRvclByb3BzPiA9ICh7XG4gIGxhbmd1YWdlLFxuICB0ZXh0LFxuICBoaWRlQ29weUJ1dHRvbixcbiAgb25DaGFuZ2UsXG4gIGNvcHlGb3JtYXR0ZXIsXG4gIHNuaXBwZXRzQmFzZVVybCxcbiAgdHJhY2tpbmdEYXRhLFxufSkgPT4ge1xuICBjb25zdCBbb3V0cHV0LCBzZXRPdXRwdXRdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBbc3RhdHVzLCBzZXRTdGF0dXNdID0gdXNlU3RhdGU8J3JlYWR5JyB8ICd3YWl0aW5nJyB8ICdlcnJvcic+KCdyZWFkeScpO1xuICBjb25zdCBbaXNDb2RlQnl0ZUNvcGllZCwgc2V0SXNDb2RlQnl0ZUNvcGllZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IG9uQ29weUNsaWNrID0gKCkgPT4ge1xuICAgIGlmICghaXNDb2RlQnl0ZUNvcGllZCkge1xuICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZFxuICAgICAgICAud3JpdGVUZXh0KGNvcHlGb3JtYXR0ZXIgPyBjb3B5Rm9ybWF0dGVyKHsgdGV4dCwgbGFuZ3VhZ2UgfSkgOiB0ZXh0KVxuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIC5jYXRjaCgoKSA9PiBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gY29weScpKTtcbiAgICAgIHNldElzQ29kZUJ5dGVDb3BpZWQodHJ1ZSk7XG4gICAgICB0cmFja0NsaWNrKCdjb3B5JywgdHJhY2tpbmdEYXRhKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgc2V0RXJyb3JTdGF0dXNBbmRPdXRwdXQgPSAobWVzc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgc2V0T3V0cHV0KG1lc3NhZ2UpO1xuICAgIHNldFN0YXR1cygnZXJyb3InKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVTdWJtaXQgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKHRleHQudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgbGFuZ3VhZ2UsXG4gICAgICBjb2RlOiB0ZXh0LFxuICAgIH07XG4gICAgc2V0U3RhdHVzKCd3YWl0aW5nJyk7XG4gICAgc2V0T3V0cHV0KCcnKTtcbiAgICB0cmFja0NsaWNrKCdydW4nLCB0cmFja2luZ0RhdGEpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcG9zdFNuaXBwZXQoZGF0YSwgc25pcHBldHNCYXNlVXJsKTtcbiAgICAgIGlmIChyZXNwb25zZS5zdGRlcnIubGVuZ3RoID4gMCkge1xuICAgICAgICBzZXRFcnJvclN0YXR1c0FuZE91dHB1dChyZXNwb25zZS5zdGRlcnIpO1xuICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5leGl0X2NvZGUgPT09IERPQ0tFUl9TSUdURVJNKSB7XG4gICAgICAgIHNldEVycm9yU3RhdHVzQW5kT3V0cHV0KFxuICAgICAgICAgICdZb3VyIGNvZGUgdG9vayB0b28gbG9uZyB0byByZXR1cm4gYSByZXN1bHQuIERvdWJsZSBjaGVjayB5b3VyIGNvZGUgZm9yIGFueSBpc3N1ZXMgYW5kIHRyeSBhZ2FpbiEnXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLmV4aXRfY29kZSAhPT0gMCkge1xuICAgICAgICBzZXRFcnJvclN0YXR1c0FuZE91dHB1dCgnQW4gdW5rbm93biBlcnJvciBvY2N1cmVkLicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0T3V0cHV0KHJlc3BvbnNlLnN0ZG91dCk7XG4gICAgICAgIHNldFN0YXR1cygncmVhZHknKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgc2V0RXJyb3JTdGF0dXNBbmRPdXRwdXQoJ0Vycm9yOiAnICsgZXJyb3IpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8RHJhd2Vyc1xuICAgICAgICBsZWZ0Q2hpbGQ9e1xuICAgICAgICAgIDxTaW1wbGVNb25hY29FZGl0b3JcbiAgICAgICAgICAgIHZhbHVlPXt0ZXh0fVxuICAgICAgICAgICAgbGFuZ3VhZ2U9e2xhbmd1YWdlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgICAgcmlnaHRDaGlsZD17XG4gICAgICAgICAgPE91dHB1dCBoYXNFcnJvcj17c3RhdHVzID09PSAnZXJyb3InfSBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgIHtvdXRwdXR9XG4gICAgICAgICAgPC9PdXRwdXQ+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8RmxleEJveFxuICAgICAgICBqdXN0aWZ5Q29udGVudD17aGlkZUNvcHlCdXR0b24gPyAnZmxleC1lbmQnIDogJ3NwYWNlLWJldHdlZW4nfVxuICAgICAgICBwbD17OH1cbiAgICAgID5cbiAgICAgICAgeyFoaWRlQ29weUJ1dHRvbiA/IChcbiAgICAgICAgICA8VG9vbFRpcFxuICAgICAgICAgICAgaWQ9XCJjb2RlYnl0ZS1jb3BpZWRcIlxuICAgICAgICAgICAgYWxpZ25tZW50PVwidG9wLWNlbnRlclwiXG4gICAgICAgICAgICBpbmZvPXtpc0NvZGVCeXRlQ29waWVkID8gJ0NvcGllZCEnIDogJ0NvcHkgdG8geW91ciBjbGlwYm9hcmQnfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxUZXh0QnV0dG9uXG4gICAgICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJjb2RlYnl0ZS1jb3BpZWRcIlxuICAgICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgb25DbGljaz17b25Db3B5Q2xpY2t9XG4gICAgICAgICAgICAgIG9uQmx1cj17KCkgPT4gc2V0SXNDb2RlQnl0ZUNvcGllZChmYWxzZSl9XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY29weS1jb2RlYnl0ZS1idG5cIlxuICAgICAgICAgICAgICBpY29uPXtDb3B5SWNvbn1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQ29weSBDb2RlYnl0ZVxuICAgICAgICAgICAgPC9UZXh0QnV0dG9uPlxuICAgICAgICAgIDwvVG9vbFRpcD5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDxGaWxsQnV0dG9uIG9uQ2xpY2s9e2hhbmRsZVN1Ym1pdH0+XG4gICAgICAgICAge3N0YXR1cyA9PT0gJ3dhaXRpbmcnID8gPFNwaW5uZXIgLz4gOiAnUnVuJ31cbiAgICAgICAgPC9GaWxsQnV0dG9uPlxuICAgICAgPC9GbGV4Qm94PlxuICAgIDwvPlxuICApO1xufTtcbiJdfQ== */"));
|
|
24
|
-
const DOCKER_SIGTERM = 143;
|
|
25
|
-
export const Editor = _ref2 => {
|
|
26
|
-
let language = _ref2.language,
|
|
27
|
-
text = _ref2.text,
|
|
28
|
-
hideCopyButton = _ref2.hideCopyButton,
|
|
29
|
-
onChange = _ref2.onChange,
|
|
30
|
-
copyFormatter = _ref2.copyFormatter,
|
|
31
|
-
snippetsBaseUrl = _ref2.snippetsBaseUrl,
|
|
32
|
-
trackingData = _ref2.trackingData;
|
|
33
|
-
const _useState = useState(''),
|
|
34
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
35
|
-
output = _useState2[0],
|
|
36
|
-
setOutput = _useState2[1];
|
|
37
|
-
const _useState3 = useState('ready'),
|
|
38
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
39
|
-
status = _useState4[0],
|
|
40
|
-
setStatus = _useState4[1];
|
|
41
|
-
const _useState5 = useState(false),
|
|
42
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
43
|
-
isCodeByteCopied = _useState6[0],
|
|
44
|
-
setIsCodeByteCopied = _useState6[1];
|
|
45
|
-
const onCopyClick = () => {
|
|
46
|
-
if (!isCodeByteCopied) {
|
|
47
|
-
navigator.clipboard.writeText(copyFormatter ? copyFormatter({
|
|
48
|
-
text,
|
|
49
|
-
language
|
|
50
|
-
}) : text)
|
|
51
|
-
|
|
52
|
-
// eslint-disable-next-line no-console
|
|
53
|
-
.catch(() => console.error('Failed to copy'));
|
|
54
|
-
setIsCodeByteCopied(true);
|
|
55
|
-
trackClick('copy', trackingData);
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
const setErrorStatusAndOutput = message => {
|
|
59
|
-
setOutput(message);
|
|
60
|
-
setStatus('error');
|
|
61
|
-
};
|
|
62
|
-
const handleSubmit = async () => {
|
|
63
|
-
if (text.trim().length === 0) {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
const data = {
|
|
67
|
-
language,
|
|
68
|
-
code: text
|
|
69
|
-
};
|
|
70
|
-
setStatus('waiting');
|
|
71
|
-
setOutput('');
|
|
72
|
-
trackClick('run', trackingData);
|
|
73
|
-
try {
|
|
74
|
-
const response = await postSnippet(data, snippetsBaseUrl);
|
|
75
|
-
if (response.stderr.length > 0) {
|
|
76
|
-
setErrorStatusAndOutput(response.stderr);
|
|
77
|
-
} else if (response.exit_code === DOCKER_SIGTERM) {
|
|
78
|
-
setErrorStatusAndOutput('Your code took too long to return a result. Double check your code for any issues and try again!');
|
|
79
|
-
} else if (response.exit_code !== 0) {
|
|
80
|
-
setErrorStatusAndOutput('An unknown error occured.');
|
|
81
|
-
} else {
|
|
82
|
-
setOutput(response.stdout);
|
|
83
|
-
setStatus('ready');
|
|
84
|
-
}
|
|
85
|
-
} catch (error) {
|
|
86
|
-
setErrorStatusAndOutput('Error: ' + error);
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
90
|
-
children: [/*#__PURE__*/_jsx(Drawers, {
|
|
91
|
-
leftChild: /*#__PURE__*/_jsx(SimpleMonacoEditor, {
|
|
92
|
-
value: text,
|
|
93
|
-
language: language,
|
|
94
|
-
onChange: onChange
|
|
95
|
-
}),
|
|
96
|
-
rightChild: /*#__PURE__*/_jsx(Output, {
|
|
97
|
-
hasError: status === 'error',
|
|
98
|
-
"aria-live": "polite",
|
|
99
|
-
children: output
|
|
100
|
-
})
|
|
101
|
-
}), /*#__PURE__*/_jsxs(FlexBox, {
|
|
102
|
-
justifyContent: hideCopyButton ? 'flex-end' : 'space-between',
|
|
103
|
-
pl: 8,
|
|
104
|
-
children: [!hideCopyButton ? /*#__PURE__*/_jsx(ToolTip, {
|
|
105
|
-
id: "codebyte-copied",
|
|
106
|
-
alignment: "top-center",
|
|
107
|
-
info: isCodeByteCopied ? 'Copied!' : 'Copy to your clipboard',
|
|
108
|
-
children: /*#__PURE__*/_jsx(TextButton, {
|
|
109
|
-
"aria-describedby": "codebyte-copied",
|
|
110
|
-
variant: "secondary",
|
|
111
|
-
onClick: onCopyClick,
|
|
112
|
-
onBlur: () => setIsCodeByteCopied(false),
|
|
113
|
-
"data-testid": "copy-codebyte-btn",
|
|
114
|
-
icon: CopyIcon,
|
|
115
|
-
children: "Copy Codebyte"
|
|
116
|
-
})
|
|
117
|
-
}) : null, /*#__PURE__*/_jsx(FillButton, {
|
|
118
|
-
onClick: handleSubmit,
|
|
119
|
-
children: status === 'waiting' ? /*#__PURE__*/_jsx(Spinner, {}) : 'Run'
|
|
120
|
-
})]
|
|
121
|
-
})]
|
|
122
|
-
});
|
|
123
|
-
};
|
package/dist/helpers/index.d.ts
DELETED
package/dist/helpers/index.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
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; }
|
|
2
|
-
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; }
|
|
3
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
4
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
5
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
6
|
-
import { trackUserClick } from '../libs/eventTracking';
|
|
7
|
-
export const trackClick = (target, trackingData) => trackUserClick(_objectSpread(_objectSpread({}, trackingData), {}, {
|
|
8
|
-
target
|
|
9
|
-
}));
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
2
|
-
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."); }
|
|
3
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
5
|
-
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
-
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
7
|
-
/**
|
|
8
|
-
* this code is duplicated from /libs/hooks/sensors
|
|
9
|
-
* importing library code into a library is challenging at the moment
|
|
10
|
-
* until we have an easy way to do that, this is the solution!
|
|
11
|
-
*/
|
|
12
|
-
import { useEffect, useRef, useState } from 'react';
|
|
13
|
-
import { useIntersection } from './useIntersection';
|
|
14
|
-
|
|
15
|
-
// Set either rootMargin or threshold for your use case. The threshold
|
|
16
|
-
// will determine the amount of the element that needs to come into the viewport
|
|
17
|
-
// before the useEverInView hook is triggered. The rootMargin will determine the
|
|
18
|
-
// size of the root element's bounding box.
|
|
19
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API#intersection_observer_options
|
|
20
|
-
export const useEverInView = function () {
|
|
21
|
-
let rootMargin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '0px';
|
|
22
|
-
let threshold = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.2;
|
|
23
|
-
const ref = useRef(null);
|
|
24
|
-
const _useState = useState(false),
|
|
25
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
26
|
-
everInView = _useState2[0],
|
|
27
|
-
setEverInView = _useState2[1];
|
|
28
|
-
const intersection = useIntersection(ref, {
|
|
29
|
-
root: null,
|
|
30
|
-
rootMargin,
|
|
31
|
-
threshold
|
|
32
|
-
});
|
|
33
|
-
const inView = intersection === null || intersection === void 0 ? void 0 : intersection.isIntersecting;
|
|
34
|
-
useEffect(() => {
|
|
35
|
-
if (inView) {
|
|
36
|
-
setEverInView(true);
|
|
37
|
-
}
|
|
38
|
-
}, [inView]);
|
|
39
|
-
return {
|
|
40
|
-
everInView: Boolean(everInView || inView),
|
|
41
|
-
ref
|
|
42
|
-
};
|
|
43
|
-
};
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { renderHook } from '@testing-library/react';
|
|
2
|
-
import { useEverInView } from './useEverInView';
|
|
3
|
-
const mockUseIntersection = jest.fn();
|
|
4
|
-
jest.mock('./useIntersection', () => ({
|
|
5
|
-
get useIntersection() {
|
|
6
|
-
return mockUseIntersection;
|
|
7
|
-
}
|
|
8
|
-
}));
|
|
9
|
-
const ref = {
|
|
10
|
-
current: null
|
|
11
|
-
};
|
|
12
|
-
describe('useEverInView', () => {
|
|
13
|
-
it('returns true after inView becomes false after true', async () => {
|
|
14
|
-
mockUseIntersection.mockReturnValueOnce(null);
|
|
15
|
-
const _renderHook = renderHook(() => useEverInView()),
|
|
16
|
-
result = _renderHook.result,
|
|
17
|
-
rerender = _renderHook.rerender;
|
|
18
|
-
expect(result.current).toEqual({
|
|
19
|
-
everInView: false,
|
|
20
|
-
ref
|
|
21
|
-
});
|
|
22
|
-
mockUseIntersection.mockReturnValueOnce({
|
|
23
|
-
isIntersecting: true
|
|
24
|
-
});
|
|
25
|
-
rerender();
|
|
26
|
-
expect(result.current).toEqual({
|
|
27
|
-
everInView: true,
|
|
28
|
-
ref
|
|
29
|
-
});
|
|
30
|
-
mockUseIntersection.mockReturnValueOnce({
|
|
31
|
-
isIntersecting: false
|
|
32
|
-
});
|
|
33
|
-
rerender();
|
|
34
|
-
expect(result.current).toEqual({
|
|
35
|
-
everInView: true,
|
|
36
|
-
ref
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
});
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
2
|
-
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."); }
|
|
3
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
5
|
-
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
-
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
7
|
-
import { useEffect, useState } from 'react';
|
|
8
|
-
export const useIntersection = (ref, options) => {
|
|
9
|
-
const _useState = useState(null),
|
|
10
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
11
|
-
intersectionObserverEntry = _useState2[0],
|
|
12
|
-
setIntersectionObserverEntry = _useState2[1];
|
|
13
|
-
useEffect(() => {
|
|
14
|
-
if (ref.current && typeof IntersectionObserver === 'function') {
|
|
15
|
-
const handler = entries => {
|
|
16
|
-
setIntersectionObserverEntry(entries[0]);
|
|
17
|
-
};
|
|
18
|
-
const observer = new IntersectionObserver(handler, {
|
|
19
|
-
threshold: options.threshold,
|
|
20
|
-
root: options.root,
|
|
21
|
-
rootMargin: options.rootMargin
|
|
22
|
-
});
|
|
23
|
-
observer.observe(ref.current);
|
|
24
|
-
return () => {
|
|
25
|
-
setIntersectionObserverEntry(null);
|
|
26
|
-
observer.disconnect();
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
30
|
-
return () => {};
|
|
31
|
-
}, [ref, options.threshold, options.root, options.rootMargin]);
|
|
32
|
-
return intersectionObserverEntry;
|
|
33
|
-
};
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { act, renderHook } from '@testing-library/react';
|
|
2
|
-
import { useIntersection } from './useIntersection';
|
|
3
|
-
const originalIntersectionObserver = window.IntersectionObserver;
|
|
4
|
-
const mockObserve = jest.fn();
|
|
5
|
-
const mockDisconnect = jest.fn();
|
|
6
|
-
const mockIntersectionObserver = jest.fn();
|
|
7
|
-
const mockIntersectionObserverInstance = {
|
|
8
|
-
observe: mockObserve,
|
|
9
|
-
disconnect: mockDisconnect
|
|
10
|
-
};
|
|
11
|
-
const ref = {
|
|
12
|
-
current: document.createElement('div')
|
|
13
|
-
};
|
|
14
|
-
const options = {
|
|
15
|
-
root: null,
|
|
16
|
-
rootMargin: '0px',
|
|
17
|
-
threshold: 0.2
|
|
18
|
-
};
|
|
19
|
-
beforeEach(() => {
|
|
20
|
-
mockIntersectionObserver.mockReturnValue(mockIntersectionObserverInstance);
|
|
21
|
-
window.IntersectionObserver = mockIntersectionObserver;
|
|
22
|
-
});
|
|
23
|
-
afterEach(() => {
|
|
24
|
-
window.IntersectionObserver = originalIntersectionObserver;
|
|
25
|
-
});
|
|
26
|
-
describe('useIntersection', () => {
|
|
27
|
-
test('intersection observer is not called', async () => {
|
|
28
|
-
// We render useIntersection with ref.current = null,
|
|
29
|
-
// which should prevent our hook from calling intersectionObserver.
|
|
30
|
-
const hook = renderHook(() => useIntersection({
|
|
31
|
-
current: null
|
|
32
|
-
}, options));
|
|
33
|
-
expect(mockObserve).not.toHaveBeenCalled();
|
|
34
|
-
hook.unmount();
|
|
35
|
-
expect(mockDisconnect).not.toHaveBeenCalled();
|
|
36
|
-
});
|
|
37
|
-
test('intersection observer is called', async () => {
|
|
38
|
-
// We render useIntersection with ref.current = HTMLdivElement,
|
|
39
|
-
// which should make our hook call intersectionObserver.
|
|
40
|
-
const hook = renderHook(() => useIntersection(ref, options));
|
|
41
|
-
expect(mockObserve).toHaveBeenCalledWith(ref.current);
|
|
42
|
-
hook.unmount();
|
|
43
|
-
expect(mockDisconnect).toHaveBeenCalled();
|
|
44
|
-
});
|
|
45
|
-
it('returns the IntersectionObserverEntry from the callback', async () => {
|
|
46
|
-
const fakeIntersectionObserverEntry = {};
|
|
47
|
-
let handler = () => {
|
|
48
|
-
return null;
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
// We mock the insersectionObserver Implementation
|
|
52
|
-
// to grab the handler, which allows us to simulate
|
|
53
|
-
// the element getting scrolled into view.
|
|
54
|
-
mockIntersectionObserver.mockImplementationOnce(cb => {
|
|
55
|
-
handler = cb;
|
|
56
|
-
return mockIntersectionObserverInstance;
|
|
57
|
-
});
|
|
58
|
-
const _renderHook = renderHook(() => useIntersection(ref, options)),
|
|
59
|
-
result = _renderHook.result,
|
|
60
|
-
rerender = _renderHook.rerender;
|
|
61
|
-
|
|
62
|
-
// Element hasn't been scrolled into view and therefore
|
|
63
|
-
// results.current should be null.
|
|
64
|
-
expect(result.current).toBeNull();
|
|
65
|
-
|
|
66
|
-
// Simulate element being scrolled into view
|
|
67
|
-
act(() => {
|
|
68
|
-
handler([fakeIntersectionObserverEntry]);
|
|
69
|
-
});
|
|
70
|
-
expect(result.current).toEqual(fakeIntersectionObserverEntry);
|
|
71
|
-
|
|
72
|
-
// We expect the results to remain the same after a rerender
|
|
73
|
-
rerender();
|
|
74
|
-
expect(result.current).toEqual(fakeIntersectionObserverEntry);
|
|
75
|
-
});
|
|
76
|
-
});
|
package/dist/index.d.ts
DELETED
package/dist/index.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { Select, Text } from '@codecademy/gamut';
|
|
2
|
-
import { ColorMode } from '@codecademy/gamut-styles';
|
|
3
|
-
import React from 'react';
|
|
4
|
-
import { LanguageOptions } from './consts';
|
|
5
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
-
export const LanguageSelection = _ref => {
|
|
7
|
-
let onChange = _ref.onChange;
|
|
8
|
-
return /*#__PURE__*/_jsxs(ColorMode, {
|
|
9
|
-
mode: "dark",
|
|
10
|
-
flex: 1,
|
|
11
|
-
px: 16,
|
|
12
|
-
pt: 48,
|
|
13
|
-
children: [/*#__PURE__*/_jsx(Text, {
|
|
14
|
-
mb: 16,
|
|
15
|
-
children: "Which language do you want to code in?"
|
|
16
|
-
}), /*#__PURE__*/_jsx(Select, {
|
|
17
|
-
id: "language-select",
|
|
18
|
-
"aria-label": "Select a language",
|
|
19
|
-
options: LanguageOptions,
|
|
20
|
-
onChange: e => onChange(e.target.value)
|
|
21
|
-
})]
|
|
22
|
-
});
|
|
23
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const trackUserClick: (data: import("@codecademy/tracking").UserClickData) => void, trackUserVisit: (data: import("@codecademy/tracking").UserVisitData) => void, trackUserImpression: (data: import("@codecademy/tracking").UserImpressionData) => void;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { createTracker } from '@codecademy/tracking';
|
|
2
|
-
const IS_DEV = process.env.NODE_ENV === 'development';
|
|
3
|
-
|
|
4
|
-
// TODO: confirm tracking details and implementation DISC-447
|
|
5
|
-
const tracker = createTracker({
|
|
6
|
-
apiBaseUrl: typeof window === 'undefined' ? 'https://www.codecademy.com' : window.location.origin,
|
|
7
|
-
verbose: IS_DEV
|
|
8
|
-
});
|
|
9
|
-
const trackUserClick = tracker.click,
|
|
10
|
-
trackUserVisit = tracker.visit,
|
|
11
|
-
trackUserImpression = tracker.impression;
|
|
12
|
-
export { trackUserClick, trackUserVisit, trackUserImpression };
|
package/dist/theme.d.ts
DELETED
package/dist/types.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { BackgroundProps } from '@codecademy/gamut-styles';
|
|
2
|
-
import { UserClickData } from '@codecademy/tracking';
|
|
3
|
-
import { LanguageOption } from './consts';
|
|
4
|
-
export interface CodebytesChangeHandler {
|
|
5
|
-
(text: string, language: LanguageOption): void;
|
|
6
|
-
}
|
|
7
|
-
export interface CodebytesCopyFormatterParams {
|
|
8
|
-
text: string;
|
|
9
|
-
language: LanguageOption;
|
|
10
|
-
}
|
|
11
|
-
export type CodebytesCopyFormatter = ({ text, language, }: CodebytesCopyFormatterParams) => string;
|
|
12
|
-
export interface CodeByteEditorProps extends Omit<BackgroundProps, 'bg'> {
|
|
13
|
-
text?: string;
|
|
14
|
-
language?: LanguageOption;
|
|
15
|
-
hideCopyButton?: boolean;
|
|
16
|
-
copyFormatter?: CodebytesCopyFormatter;
|
|
17
|
-
snippetsBaseUrl?: string;
|
|
18
|
-
onEdit?: CodebytesChangeHandler;
|
|
19
|
-
onLanguageChange?: CodebytesChangeHandler;
|
|
20
|
-
trackingData?: Omit<UserClickData, 'target'>;
|
|
21
|
-
trackFirstEdit?: boolean;
|
|
22
|
-
}
|
package/dist/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|