@contentful/field-editor-markdown 1.2.1 → 1.3.1

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.
Files changed (136) hide show
  1. package/dist/cjs/MarkdownActions.js +235 -0
  2. package/dist/cjs/MarkdownEditor.js +180 -0
  3. package/dist/cjs/__fixtures__/FakeSdk.js +183 -0
  4. package/dist/cjs/__fixtures__/asset/index.js +37 -0
  5. package/dist/cjs/__fixtures__/content-type/index.js +16 -0
  6. package/dist/cjs/__fixtures__/entry/index.js +33 -0
  7. package/dist/cjs/__fixtures__/fixtures.js +71 -0
  8. package/dist/cjs/__fixtures__/locale/index.js +40 -0
  9. package/dist/cjs/__fixtures__/space/index.js +16 -0
  10. package/dist/cjs/codemirrorImports.js +9 -0
  11. package/dist/cjs/components/HeadingSelector.js +66 -0
  12. package/dist/cjs/components/InsertLinkSelector.js +86 -0
  13. package/dist/cjs/components/MarkdownBottomBar.js +111 -0
  14. package/dist/cjs/components/MarkdownConstraints.js +79 -0
  15. package/dist/cjs/components/MarkdownPreview.js +249 -0
  16. package/dist/cjs/components/MarkdownTabs.js +128 -0
  17. package/dist/cjs/components/MarkdownTextarea/CodeMirrorWrapper.js +383 -0
  18. package/dist/cjs/components/MarkdownTextarea/MarkdownCommands.js +233 -0
  19. package/dist/cjs/components/MarkdownTextarea/MarkdownTextarea.js +190 -0
  20. package/dist/cjs/components/MarkdownTextarea/createMarkdownEditor.js +101 -0
  21. package/dist/cjs/components/MarkdownToolbar.js +367 -0
  22. package/dist/cjs/components/icons.js +193 -0
  23. package/dist/cjs/dialogs/CheatsheetModalDialog.js +239 -0
  24. package/dist/cjs/dialogs/ConfirmInsertAssetModalDialog.js +94 -0
  25. package/dist/cjs/dialogs/EmdebExternalContentDialog.js +202 -0
  26. package/dist/cjs/dialogs/InsertLinkModalDialog.js +149 -0
  27. package/dist/cjs/dialogs/InsertTableModalDialog.js +140 -0
  28. package/dist/cjs/dialogs/SpecialCharacterModalDialog.js +146 -0
  29. package/dist/cjs/dialogs/ZenModeModalDialog.js +257 -0
  30. package/dist/cjs/dialogs/openMarkdownDialog.js +121 -0
  31. package/dist/cjs/dialogs/renderMarkdownDialog.js +108 -0
  32. package/dist/cjs/index.js +29 -0
  33. package/dist/cjs/types.js +20 -0
  34. package/dist/cjs/utils/insertAssetLinks.js +122 -0
  35. package/dist/cjs/utils/insertAssetLinks.spec.js +22 -0
  36. package/dist/cjs/utils/isValidUrl.js +22 -0
  37. package/dist/cjs/utils/linkOrganizer.js +187 -0
  38. package/dist/cjs/utils/linkOrganizer.spec.js +96 -0
  39. package/dist/cjs/utils/replaceMailtoAmp.js +15 -0
  40. package/dist/cjs/utils/replaceMailtoAmp.spec.js +22 -0
  41. package/dist/cjs/utils/specialCharacters.js +228 -0
  42. package/dist/cjs/utils/userAgent.js +28 -0
  43. package/dist/esm/MarkdownActions.js +186 -0
  44. package/dist/esm/MarkdownEditor.js +118 -0
  45. package/dist/esm/__fixtures__/FakeSdk.js +173 -0
  46. package/dist/esm/__fixtures__/asset/index.js +6 -0
  47. package/dist/esm/__fixtures__/content-type/index.js +2 -0
  48. package/dist/esm/__fixtures__/entry/index.js +5 -0
  49. package/dist/esm/__fixtures__/fixtures.js +6 -0
  50. package/dist/esm/__fixtures__/locale/index.js +15 -0
  51. package/dist/esm/__fixtures__/space/index.js +2 -0
  52. package/dist/esm/codemirrorImports.js +5 -0
  53. package/dist/esm/components/HeadingSelector.js +17 -0
  54. package/dist/esm/components/InsertLinkSelector.js +37 -0
  55. package/dist/esm/components/MarkdownBottomBar.js +46 -0
  56. package/dist/esm/components/MarkdownConstraints.js +25 -0
  57. package/dist/esm/components/MarkdownPreview.js +195 -0
  58. package/dist/esm/components/MarkdownTabs.js +74 -0
  59. package/dist/esm/components/MarkdownTextarea/CodeMirrorWrapper.js +329 -0
  60. package/dist/esm/components/MarkdownTextarea/MarkdownCommands.js +218 -0
  61. package/dist/esm/components/MarkdownTextarea/MarkdownTextarea.js +136 -0
  62. package/dist/esm/components/MarkdownTextarea/createMarkdownEditor.js +52 -0
  63. package/dist/esm/components/MarkdownToolbar.js +302 -0
  64. package/dist/esm/components/icons.js +112 -0
  65. package/dist/esm/dialogs/CheatsheetModalDialog.js +177 -0
  66. package/dist/esm/dialogs/ConfirmInsertAssetModalDialog.js +37 -0
  67. package/dist/esm/dialogs/EmdebExternalContentDialog.js +140 -0
  68. package/dist/esm/dialogs/InsertLinkModalDialog.js +92 -0
  69. package/dist/esm/dialogs/InsertTableModalDialog.js +78 -0
  70. package/dist/esm/dialogs/SpecialCharacterModalDialog.js +84 -0
  71. package/dist/esm/dialogs/ZenModeModalDialog.js +195 -0
  72. package/dist/esm/dialogs/openMarkdownDialog.js +72 -0
  73. package/dist/esm/dialogs/renderMarkdownDialog.js +59 -0
  74. package/dist/esm/index.js +5 -0
  75. package/dist/esm/types.js +10 -0
  76. package/dist/esm/utils/insertAssetLinks.js +99 -0
  77. package/dist/esm/utils/insertAssetLinks.spec.js +18 -0
  78. package/dist/esm/utils/isValidUrl.js +4 -0
  79. package/dist/esm/utils/linkOrganizer.js +152 -0
  80. package/dist/esm/utils/linkOrganizer.spec.js +53 -0
  81. package/dist/esm/utils/replaceMailtoAmp.js +5 -0
  82. package/dist/esm/utils/replaceMailtoAmp.spec.js +18 -0
  83. package/dist/esm/utils/specialCharacters.js +218 -0
  84. package/dist/esm/utils/userAgent.js +13 -0
  85. package/dist/{MarkdownActions.d.ts → types/MarkdownActions.d.ts} +38 -38
  86. package/dist/{MarkdownEditor.d.ts → types/MarkdownEditor.d.ts} +22 -22
  87. package/dist/types/__fixtures__/FakeSdk.d.ts +8 -0
  88. package/dist/types/__fixtures__/asset/index.d.ts +6 -0
  89. package/dist/types/__fixtures__/content-type/index.d.ts +2 -0
  90. package/dist/types/__fixtures__/entry/index.d.ts +5 -0
  91. package/dist/types/__fixtures__/fixtures.d.ts +6 -0
  92. package/dist/types/__fixtures__/locale/index.d.ts +42 -0
  93. package/dist/types/__fixtures__/space/index.d.ts +2 -0
  94. package/dist/{codemirrorImports.d.ts → types/codemirrorImports.d.ts} +5 -5
  95. package/dist/{components → types/components}/HeadingSelector.d.ts +7 -7
  96. package/dist/{components → types/components}/InsertLinkSelector.d.ts +9 -9
  97. package/dist/{components → types/components}/MarkdownBottomBar.d.ts +11 -11
  98. package/dist/{components → types/components}/MarkdownConstraints.d.ts +6 -6
  99. package/dist/{components → types/components}/MarkdownPreview.d.ts +14 -14
  100. package/dist/{components → types/components}/MarkdownTabs.d.ts +8 -8
  101. package/dist/{components → types/components}/MarkdownTextarea/CodeMirrorWrapper.d.ts +58 -58
  102. package/dist/{components → types/components}/MarkdownTextarea/MarkdownCommands.d.ts +33 -33
  103. package/dist/{components → types/components}/MarkdownTextarea/MarkdownTextarea.d.ts +17 -17
  104. package/dist/{components → types/components}/MarkdownTextarea/createMarkdownEditor.d.ts +55 -55
  105. package/dist/{components → types/components}/MarkdownToolbar.d.ts +12 -12
  106. package/dist/types/components/icons.d.ts +18 -0
  107. package/dist/{dialogs → types/dialogs}/CheatsheetModalDialog.d.ts +4 -4
  108. package/dist/{dialogs → types/dialogs}/ConfirmInsertAssetModalDialog.d.ts +23 -23
  109. package/dist/{dialogs → types/dialogs}/EmdebExternalContentDialog.d.ts +9 -9
  110. package/dist/{dialogs → types/dialogs}/InsertLinkModalDialog.d.ts +17 -17
  111. package/dist/{dialogs → types/dialogs}/InsertTableModalDialog.d.ts +13 -13
  112. package/dist/{dialogs → types/dialogs}/SpecialCharacterModalDialog.d.ts +9 -9
  113. package/dist/{dialogs → types/dialogs}/ZenModeModalDialog.d.ts +24 -24
  114. package/dist/{dialogs → types/dialogs}/openMarkdownDialog.d.ts +5 -5
  115. package/dist/{dialogs → types/dialogs}/renderMarkdownDialog.d.ts +8 -8
  116. package/dist/{index.d.ts → types/index.d.ts} +5 -5
  117. package/dist/{types.d.ts → types/types.d.ts} +75 -75
  118. package/dist/{utils → types/utils}/insertAssetLinks.d.ts +29 -29
  119. package/dist/types/utils/insertAssetLinks.spec.d.ts +1 -0
  120. package/dist/{utils → types/utils}/isValidUrl.d.ts +2 -2
  121. package/dist/{utils → types/utils}/linkOrganizer.d.ts +6 -6
  122. package/dist/types/utils/linkOrganizer.spec.d.ts +1 -0
  123. package/dist/{utils → types/utils}/replaceMailtoAmp.d.ts +1 -1
  124. package/dist/types/utils/replaceMailtoAmp.spec.d.ts +1 -0
  125. package/dist/{utils → types/utils}/specialCharacters.d.ts +4 -4
  126. package/dist/{utils → types/utils}/userAgent.d.ts +1 -1
  127. package/package.json +25 -12
  128. package/CHANGELOG.md +0 -314
  129. package/dist/components/icons.d.ts +0 -18
  130. package/dist/field-editor-markdown.cjs.development.js +0 -3609
  131. package/dist/field-editor-markdown.cjs.development.js.map +0 -1
  132. package/dist/field-editor-markdown.cjs.production.min.js +0 -216
  133. package/dist/field-editor-markdown.cjs.production.min.js.map +0 -1
  134. package/dist/field-editor-markdown.esm.js +0 -3599
  135. package/dist/field-editor-markdown.esm.js.map +0 -1
  136. package/dist/index.js +0 -8
@@ -0,0 +1,249 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "MarkdownPreview", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return MarkdownPreview;
9
+ }
10
+ });
11
+ const _react = _interop_require_wildcard(require("react"));
12
+ const _f36tokens = _interop_require_default(require("@contentful/f36-tokens"));
13
+ const _dompurify = _interop_require_default(require("dompurify"));
14
+ const _emotion = require("emotion");
15
+ const _markdowntojsx = _interop_require_default(require("markdown-to-jsx"));
16
+ const _replaceMailtoAmp = require("../utils/replaceMailtoAmp");
17
+ function _interop_require_default(obj) {
18
+ return obj && obj.__esModule ? obj : {
19
+ default: obj
20
+ };
21
+ }
22
+ function _getRequireWildcardCache(nodeInterop) {
23
+ if (typeof WeakMap !== "function") return null;
24
+ var cacheBabelInterop = new WeakMap();
25
+ var cacheNodeInterop = new WeakMap();
26
+ return (_getRequireWildcardCache = function(nodeInterop) {
27
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
28
+ })(nodeInterop);
29
+ }
30
+ function _interop_require_wildcard(obj, nodeInterop) {
31
+ if (!nodeInterop && obj && obj.__esModule) {
32
+ return obj;
33
+ }
34
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
35
+ return {
36
+ default: obj
37
+ };
38
+ }
39
+ var cache = _getRequireWildcardCache(nodeInterop);
40
+ if (cache && cache.has(obj)) {
41
+ return cache.get(obj);
42
+ }
43
+ var newObj = {};
44
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
45
+ for(var key in obj){
46
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
47
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
48
+ if (desc && (desc.get || desc.set)) {
49
+ Object.defineProperty(newObj, key, desc);
50
+ } else {
51
+ newObj[key] = obj[key];
52
+ }
53
+ }
54
+ }
55
+ newObj.default = obj;
56
+ if (cache) {
57
+ cache.set(obj, newObj);
58
+ }
59
+ return newObj;
60
+ }
61
+ const styles = {
62
+ root: (0, _emotion.css)`
63
+ border: 1px solid ${_f36tokens.default.gray400};
64
+ border-width: 0 1px;
65
+ word-wrap: break-word;
66
+ overflow-wrap: break-word;
67
+ min-height: 300px;
68
+ padding: ${_f36tokens.default.spacingL};
69
+ font-size: ${_f36tokens.default.fontSizeM};
70
+ font-family: ${_f36tokens.default.fontStackPrimary};
71
+ line-height: ${_f36tokens.default.lineHeightDefault};
72
+ color: ${_f36tokens.default.gray700};
73
+ white-space: pre-line;
74
+
75
+ h1,
76
+ h2,
77
+ h3,
78
+ h4,
79
+ h5,
80
+ h6 {
81
+ margin-top: ${_f36tokens.default.spacingL};
82
+ margin-bottom: ${_f36tokens.default.spacingM};
83
+ color: ${_f36tokens.default.gray900};
84
+ }
85
+
86
+ h1:first-child,
87
+ h2:first-child,
88
+ h3:first-child,
89
+ h4:first-child,
90
+ h5:first-child,
91
+ h6:first-child {
92
+ margin-top: 0;
93
+ }
94
+
95
+ h1 {
96
+ font-size: 1.9em;
97
+ }
98
+ h2 {
99
+ font-size: 1.75em;
100
+ }
101
+ h3 {
102
+ font-size: 1.6em;
103
+ }
104
+ h4 {
105
+ font-size: 1.45em;
106
+ }
107
+ h5 {
108
+ font-size: 1.3em;
109
+ }
110
+ h6 {
111
+ font-size: 1.15em;
112
+ }
113
+
114
+ p {
115
+ margin-top: 0;
116
+ margin-bottom: ${_f36tokens.default.spacingM};
117
+ }
118
+
119
+ ul,
120
+ ol {
121
+ margin: ${_f36tokens.default.spacingS} 0;
122
+ padding-left: ${_f36tokens.default.spacingM};
123
+ }
124
+ ul > li {
125
+ list-style-type: disc;
126
+ margin-bottom: 0;
127
+ }
128
+
129
+ ol > li {
130
+ list-style-type: decimal;
131
+ margin-bottom: 0;
132
+ }
133
+
134
+ table {
135
+ table-layout: fixed;
136
+ border-right-width: 0;
137
+ border-bottom-width: 0;
138
+ width: 80%;
139
+ margin: ${_f36tokens.default.spacingM} auto;
140
+ border-spacing: 0;
141
+ border-collapse: collapse;
142
+ border: 1px solid ${_f36tokens.default.gray300};
143
+ }
144
+
145
+ table th,
146
+ table td {
147
+ padding: 5px;
148
+ border-left-width: 0;
149
+ border-top-width: 0;
150
+ }
151
+
152
+ table th {
153
+ background: ${_f36tokens.default.gray200};
154
+ }
155
+
156
+ table td {
157
+ border: 1px solid ${_f36tokens.default.gray300};
158
+ }
159
+
160
+ a {
161
+ color: ${_f36tokens.default.blue500};
162
+ }
163
+
164
+ hr {
165
+ margin-top: ${_f36tokens.default.spacingL};
166
+ margin-bottom: ${_f36tokens.default.spacingL};
167
+ height: 1px;
168
+ background-color: ${_f36tokens.default.gray300};
169
+ border: none;
170
+ }
171
+
172
+ blockquote {
173
+ border-left: 4px solid ${_f36tokens.default.gray200};
174
+ padding-left: ${_f36tokens.default.spacingL};
175
+ margin: 0;
176
+ margin-top: ${_f36tokens.default.spacingM};
177
+ font-style: italic;
178
+ }
179
+
180
+ img {
181
+ margin: ${_f36tokens.default.spacingM} auto;
182
+ display: block;
183
+ max-width: 80%;
184
+ max-height: 250px;
185
+ }
186
+
187
+ pre code {
188
+ font-size: ${_f36tokens.default.fontSizeS};
189
+ font-family: ${_f36tokens.default.fontStackMonospace};
190
+ }
191
+
192
+ .embedly-card {
193
+ margin: ${_f36tokens.default.spacingM} auto;
194
+ display: block;
195
+ }
196
+ `,
197
+ framed: (0, _emotion.css)({
198
+ height: '100%',
199
+ maxHeight: '500px',
200
+ overflowY: 'auto'
201
+ }),
202
+ zen: (0, _emotion.css)({
203
+ maxWidth: '650px',
204
+ margin: '0 auto',
205
+ border: 'none !important'
206
+ }),
207
+ rtl: (0, _emotion.css)({
208
+ direction: 'rtl'
209
+ })
210
+ };
211
+ function MarkdownLink(props) {
212
+ const { Embedly , children , ...rest } = props;
213
+ if (props.className === 'embedly-card' && Embedly) {
214
+ return _react.createElement(Embedly, {
215
+ url: props.href
216
+ });
217
+ }
218
+ return _react.createElement("a", {
219
+ ...rest,
220
+ target: "_blank",
221
+ rel: "noopener noreferrer"
222
+ }, children);
223
+ }
224
+ const MarkdownPreview = _react.memo((props)=>{
225
+ const className = (0, _emotion.cx)(styles.root, props.minHeight !== undefined ? (0, _emotion.css)({
226
+ minHeight: props.minHeight
227
+ }) : undefined, props.mode === 'default' ? styles.framed : styles.zen, props.direction === 'rtl' ? styles.rtl : undefined);
228
+ const cleanHTML = _react.useMemo(()=>{
229
+ return (0, _replaceMailtoAmp.replaceMailtoAmp)(_dompurify.default.sanitize(props.value));
230
+ }, [
231
+ props.value
232
+ ]);
233
+ return _react.createElement("div", {
234
+ className: className,
235
+ "data-test-id": "markdown-preview"
236
+ }, _react.createElement(_markdowntojsx.default, {
237
+ options: {
238
+ overrides: {
239
+ a: {
240
+ component: MarkdownLink,
241
+ props: {
242
+ Embedly: props.previewComponents?.embedly
243
+ }
244
+ }
245
+ }
246
+ }
247
+ }, cleanHTML));
248
+ });
249
+ MarkdownPreview.displayName = 'MarkdownPreview';
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "MarkdownTabs", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return MarkdownTabs;
9
+ }
10
+ });
11
+ const _react = _interop_require_wildcard(require("react"));
12
+ const _f36tokens = _interop_require_default(require("@contentful/f36-tokens"));
13
+ const _emotion = require("emotion");
14
+ function _interop_require_default(obj) {
15
+ return obj && obj.__esModule ? obj : {
16
+ default: obj
17
+ };
18
+ }
19
+ function _getRequireWildcardCache(nodeInterop) {
20
+ if (typeof WeakMap !== "function") return null;
21
+ var cacheBabelInterop = new WeakMap();
22
+ var cacheNodeInterop = new WeakMap();
23
+ return (_getRequireWildcardCache = function(nodeInterop) {
24
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
25
+ })(nodeInterop);
26
+ }
27
+ function _interop_require_wildcard(obj, nodeInterop) {
28
+ if (!nodeInterop && obj && obj.__esModule) {
29
+ return obj;
30
+ }
31
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
32
+ return {
33
+ default: obj
34
+ };
35
+ }
36
+ var cache = _getRequireWildcardCache(nodeInterop);
37
+ if (cache && cache.has(obj)) {
38
+ return cache.get(obj);
39
+ }
40
+ var newObj = {};
41
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
42
+ for(var key in obj){
43
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
44
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
45
+ if (desc && (desc.get || desc.set)) {
46
+ Object.defineProperty(newObj, key, desc);
47
+ } else {
48
+ newObj[key] = obj[key];
49
+ }
50
+ }
51
+ }
52
+ newObj.default = obj;
53
+ if (cache) {
54
+ cache.set(obj, newObj);
55
+ }
56
+ return newObj;
57
+ }
58
+ const styles = {
59
+ root: (0, _emotion.css)({
60
+ display: 'flex',
61
+ zIndex: 10,
62
+ flexDirection: 'row',
63
+ justifyContent: 'flex-end',
64
+ overflow: 'hidden',
65
+ marginBottom: '-1px',
66
+ fontSize: _f36tokens.default.fontSizeM
67
+ }),
68
+ tab: (0, _emotion.css)({
69
+ cursor: 'pointer',
70
+ color: _f36tokens.default.gray700,
71
+ padding: _f36tokens.default.spacingXs,
72
+ minWidth: '70px',
73
+ border: `1px solid ${_f36tokens.default.gray400}`,
74
+ borderTopLeftRadius: _f36tokens.default.borderRadiusSmall,
75
+ borderTopRightRadius: _f36tokens.default.borderRadiusSmall,
76
+ marginLeft: _f36tokens.default.spacingXs,
77
+ textAlign: 'center',
78
+ backgroundColor: _f36tokens.default.gray100,
79
+ borderBottomColor: _f36tokens.default.gray100,
80
+ outline: 'none',
81
+ '&:focus': {
82
+ boxShadow: _f36tokens.default.boxShadowHeavy
83
+ },
84
+ transition: `all ${_f36tokens.default.transitionEasingDefault} ${_f36tokens.default.transitionDurationShort}`
85
+ }),
86
+ inactiveTab: (0, _emotion.css)({
87
+ background: _f36tokens.default.gray200,
88
+ borderBottomColor: _f36tokens.default.gray400,
89
+ '&:hover': {
90
+ background: _f36tokens.default.gray300
91
+ }
92
+ })
93
+ };
94
+ function MarkdownTabItem(props) {
95
+ return _react.createElement("div", {
96
+ className: (0, _emotion.cx)(styles.tab, {
97
+ [styles.inactiveTab]: props.isActive === false
98
+ }),
99
+ onClick: ()=>{
100
+ props.onSelect(props.name);
101
+ },
102
+ onKeyDown: (e)=>{
103
+ if (e.keyCode === 13) {
104
+ props.onSelect(props.name);
105
+ }
106
+ },
107
+ tabIndex: 0,
108
+ role: "tab",
109
+ "aria-controls": props.name,
110
+ "aria-selected": props.isActive === true,
111
+ "data-test-id": props.testId
112
+ }, props.children);
113
+ }
114
+ function MarkdownTabs(props) {
115
+ return _react.createElement("div", {
116
+ className: styles.root
117
+ }, _react.createElement(MarkdownTabItem, {
118
+ name: "editor",
119
+ onSelect: props.onSelect,
120
+ isActive: props.active === 'editor',
121
+ testId: "markdown-tab-md"
122
+ }, "Editor"), _react.createElement(MarkdownTabItem, {
123
+ name: "preview",
124
+ onSelect: props.onSelect,
125
+ isActive: props.active === 'preview',
126
+ testId: "markdown-tab-preview"
127
+ }, "Preview"));
128
+ }