@contentful/field-editor-markdown 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/MarkdownActions.js +235 -0
- package/dist/cjs/MarkdownEditor.js +180 -0
- package/dist/cjs/__fixtures__/FakeSdk.js +183 -0
- package/dist/cjs/__fixtures__/asset/index.js +37 -0
- package/dist/cjs/__fixtures__/content-type/index.js +16 -0
- package/dist/cjs/__fixtures__/entry/index.js +33 -0
- package/dist/cjs/__fixtures__/fixtures.js +71 -0
- package/dist/cjs/__fixtures__/locale/index.js +40 -0
- package/dist/cjs/__fixtures__/space/index.js +16 -0
- package/dist/cjs/codemirrorImports.js +9 -0
- package/dist/cjs/components/HeadingSelector.js +66 -0
- package/dist/cjs/components/InsertLinkSelector.js +86 -0
- package/dist/cjs/components/MarkdownBottomBar.js +111 -0
- package/dist/cjs/components/MarkdownConstraints.js +79 -0
- package/dist/cjs/components/MarkdownPreview.js +249 -0
- package/dist/cjs/components/MarkdownTabs.js +128 -0
- package/dist/cjs/components/MarkdownTextarea/CodeMirrorWrapper.js +383 -0
- package/dist/cjs/components/MarkdownTextarea/MarkdownCommands.js +233 -0
- package/dist/cjs/components/MarkdownTextarea/MarkdownTextarea.js +190 -0
- package/dist/cjs/components/MarkdownTextarea/createMarkdownEditor.js +101 -0
- package/dist/cjs/components/MarkdownToolbar.js +367 -0
- package/dist/cjs/components/icons.js +193 -0
- package/dist/cjs/dialogs/CheatsheetModalDialog.js +239 -0
- package/dist/cjs/dialogs/ConfirmInsertAssetModalDialog.js +94 -0
- package/dist/cjs/dialogs/EmdebExternalContentDialog.js +202 -0
- package/dist/cjs/dialogs/InsertLinkModalDialog.js +149 -0
- package/dist/cjs/dialogs/InsertTableModalDialog.js +140 -0
- package/dist/cjs/dialogs/SpecialCharacterModalDialog.js +146 -0
- package/dist/cjs/dialogs/ZenModeModalDialog.js +257 -0
- package/dist/cjs/dialogs/openMarkdownDialog.js +121 -0
- package/dist/cjs/dialogs/renderMarkdownDialog.js +108 -0
- package/dist/cjs/index.js +29 -0
- package/dist/cjs/types.js +20 -0
- package/dist/cjs/utils/insertAssetLinks.js +122 -0
- package/dist/cjs/utils/insertAssetLinks.spec.js +22 -0
- package/dist/cjs/utils/isValidUrl.js +22 -0
- package/dist/cjs/utils/linkOrganizer.js +187 -0
- package/dist/cjs/utils/linkOrganizer.spec.js +96 -0
- package/dist/cjs/utils/replaceMailtoAmp.js +15 -0
- package/dist/cjs/utils/replaceMailtoAmp.spec.js +22 -0
- package/dist/cjs/utils/specialCharacters.js +228 -0
- package/dist/cjs/utils/userAgent.js +28 -0
- package/dist/esm/MarkdownActions.js +186 -0
- package/dist/esm/MarkdownEditor.js +118 -0
- package/dist/esm/__fixtures__/FakeSdk.js +173 -0
- package/dist/esm/__fixtures__/asset/index.js +6 -0
- package/dist/esm/__fixtures__/content-type/index.js +2 -0
- package/dist/esm/__fixtures__/entry/index.js +5 -0
- package/dist/esm/__fixtures__/fixtures.js +6 -0
- package/dist/esm/__fixtures__/locale/index.js +15 -0
- package/dist/esm/__fixtures__/space/index.js +2 -0
- package/dist/esm/codemirrorImports.js +5 -0
- package/dist/esm/components/HeadingSelector.js +17 -0
- package/dist/esm/components/InsertLinkSelector.js +37 -0
- package/dist/esm/components/MarkdownBottomBar.js +46 -0
- package/dist/esm/components/MarkdownConstraints.js +25 -0
- package/dist/esm/components/MarkdownPreview.js +195 -0
- package/dist/esm/components/MarkdownTabs.js +74 -0
- package/dist/esm/components/MarkdownTextarea/CodeMirrorWrapper.js +329 -0
- package/dist/esm/components/MarkdownTextarea/MarkdownCommands.js +218 -0
- package/dist/esm/components/MarkdownTextarea/MarkdownTextarea.js +136 -0
- package/dist/esm/components/MarkdownTextarea/createMarkdownEditor.js +52 -0
- package/dist/esm/components/MarkdownToolbar.js +302 -0
- package/dist/esm/components/icons.js +112 -0
- package/dist/esm/dialogs/CheatsheetModalDialog.js +177 -0
- package/dist/esm/dialogs/ConfirmInsertAssetModalDialog.js +37 -0
- package/dist/esm/dialogs/EmdebExternalContentDialog.js +140 -0
- package/dist/esm/dialogs/InsertLinkModalDialog.js +92 -0
- package/dist/esm/dialogs/InsertTableModalDialog.js +78 -0
- package/dist/esm/dialogs/SpecialCharacterModalDialog.js +84 -0
- package/dist/esm/dialogs/ZenModeModalDialog.js +195 -0
- package/dist/esm/dialogs/openMarkdownDialog.js +72 -0
- package/dist/esm/dialogs/renderMarkdownDialog.js +59 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/types.js +10 -0
- package/dist/esm/utils/insertAssetLinks.js +99 -0
- package/dist/esm/utils/insertAssetLinks.spec.js +18 -0
- package/dist/esm/utils/isValidUrl.js +4 -0
- package/dist/esm/utils/linkOrganizer.js +152 -0
- package/dist/esm/utils/linkOrganizer.spec.js +53 -0
- package/dist/esm/utils/replaceMailtoAmp.js +5 -0
- package/dist/esm/utils/replaceMailtoAmp.spec.js +18 -0
- package/dist/esm/utils/specialCharacters.js +218 -0
- package/dist/esm/utils/userAgent.js +13 -0
- package/dist/{MarkdownActions.d.ts → types/MarkdownActions.d.ts} +38 -38
- package/dist/{MarkdownEditor.d.ts → types/MarkdownEditor.d.ts} +22 -22
- package/dist/types/__fixtures__/FakeSdk.d.ts +8 -0
- package/dist/types/__fixtures__/asset/index.d.ts +6 -0
- package/dist/types/__fixtures__/content-type/index.d.ts +2 -0
- package/dist/types/__fixtures__/entry/index.d.ts +5 -0
- package/dist/types/__fixtures__/fixtures.d.ts +6 -0
- package/dist/types/__fixtures__/locale/index.d.ts +42 -0
- package/dist/types/__fixtures__/space/index.d.ts +2 -0
- package/dist/{codemirrorImports.d.ts → types/codemirrorImports.d.ts} +5 -5
- package/dist/{components → types/components}/HeadingSelector.d.ts +7 -7
- package/dist/{components → types/components}/InsertLinkSelector.d.ts +9 -9
- package/dist/{components → types/components}/MarkdownBottomBar.d.ts +11 -11
- package/dist/{components → types/components}/MarkdownConstraints.d.ts +6 -6
- package/dist/{components → types/components}/MarkdownPreview.d.ts +14 -14
- package/dist/{components → types/components}/MarkdownTabs.d.ts +8 -8
- package/dist/{components → types/components}/MarkdownTextarea/CodeMirrorWrapper.d.ts +58 -58
- package/dist/{components → types/components}/MarkdownTextarea/MarkdownCommands.d.ts +33 -33
- package/dist/{components → types/components}/MarkdownTextarea/MarkdownTextarea.d.ts +17 -17
- package/dist/{components → types/components}/MarkdownTextarea/createMarkdownEditor.d.ts +55 -55
- package/dist/{components → types/components}/MarkdownToolbar.d.ts +12 -12
- package/dist/types/components/icons.d.ts +18 -0
- package/dist/{dialogs → types/dialogs}/CheatsheetModalDialog.d.ts +4 -4
- package/dist/{dialogs → types/dialogs}/ConfirmInsertAssetModalDialog.d.ts +23 -23
- package/dist/{dialogs → types/dialogs}/EmdebExternalContentDialog.d.ts +9 -9
- package/dist/{dialogs → types/dialogs}/InsertLinkModalDialog.d.ts +17 -17
- package/dist/{dialogs → types/dialogs}/InsertTableModalDialog.d.ts +13 -13
- package/dist/{dialogs → types/dialogs}/SpecialCharacterModalDialog.d.ts +9 -9
- package/dist/{dialogs → types/dialogs}/ZenModeModalDialog.d.ts +24 -24
- package/dist/{dialogs → types/dialogs}/openMarkdownDialog.d.ts +5 -5
- package/dist/{dialogs → types/dialogs}/renderMarkdownDialog.d.ts +8 -8
- package/dist/{index.d.ts → types/index.d.ts} +5 -5
- package/dist/{types.d.ts → types/types.d.ts} +75 -75
- package/dist/{utils → types/utils}/insertAssetLinks.d.ts +29 -29
- package/dist/types/utils/insertAssetLinks.spec.d.ts +1 -0
- package/dist/{utils → types/utils}/isValidUrl.d.ts +2 -2
- package/dist/{utils → types/utils}/linkOrganizer.d.ts +6 -6
- package/dist/types/utils/linkOrganizer.spec.d.ts +1 -0
- package/dist/{utils → types/utils}/replaceMailtoAmp.d.ts +1 -1
- package/dist/types/utils/replaceMailtoAmp.spec.d.ts +1 -0
- package/dist/{utils → types/utils}/specialCharacters.d.ts +4 -4
- package/dist/{utils → types/utils}/userAgent.d.ts +1 -1
- package/package.json +25 -11
- package/CHANGELOG.md +0 -308
- package/dist/components/icons.d.ts +0 -18
- package/dist/field-editor-markdown.cjs.development.js +0 -3605
- package/dist/field-editor-markdown.cjs.development.js.map +0 -1
- package/dist/field-editor-markdown.cjs.production.min.js +0 -216
- package/dist/field-editor-markdown.cjs.production.min.js.map +0 -1
- package/dist/field-editor-markdown.esm.js +0 -3595
- package/dist/field-editor-markdown.esm.js.map +0 -1
- package/dist/index.js +0 -8
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
ZenModeModalDialog: function() {
|
|
13
|
+
return ZenModeModalDialog;
|
|
14
|
+
},
|
|
15
|
+
openZenMode: function() {
|
|
16
|
+
return openZenMode;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const _react = _interop_require_wildcard(require("react"));
|
|
20
|
+
const _f36icons = require("@contentful/f36-icons");
|
|
21
|
+
const _f36tokens = _interop_require_default(require("@contentful/f36-tokens"));
|
|
22
|
+
const _emotion = require("emotion");
|
|
23
|
+
const _MarkdownBottomBar = require("../components/MarkdownBottomBar");
|
|
24
|
+
const _MarkdownPreview = require("../components/MarkdownPreview");
|
|
25
|
+
const _MarkdownTextarea = require("../components/MarkdownTextarea/MarkdownTextarea");
|
|
26
|
+
const _MarkdownToolbar = require("../components/MarkdownToolbar");
|
|
27
|
+
const _CheatsheetModalDialog = require("../dialogs/CheatsheetModalDialog");
|
|
28
|
+
const _MarkdownActions = require("../MarkdownActions");
|
|
29
|
+
const _types = require("../types");
|
|
30
|
+
function _interop_require_default(obj) {
|
|
31
|
+
return obj && obj.__esModule ? obj : {
|
|
32
|
+
default: obj
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
36
|
+
if (typeof WeakMap !== "function") return null;
|
|
37
|
+
var cacheBabelInterop = new WeakMap();
|
|
38
|
+
var cacheNodeInterop = new WeakMap();
|
|
39
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
40
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
41
|
+
})(nodeInterop);
|
|
42
|
+
}
|
|
43
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
44
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
45
|
+
return obj;
|
|
46
|
+
}
|
|
47
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
48
|
+
return {
|
|
49
|
+
default: obj
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
53
|
+
if (cache && cache.has(obj)) {
|
|
54
|
+
return cache.get(obj);
|
|
55
|
+
}
|
|
56
|
+
var newObj = {};
|
|
57
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
58
|
+
for(var key in obj){
|
|
59
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
60
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
61
|
+
if (desc && (desc.get || desc.set)) {
|
|
62
|
+
Object.defineProperty(newObj, key, desc);
|
|
63
|
+
} else {
|
|
64
|
+
newObj[key] = obj[key];
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
newObj.default = obj;
|
|
69
|
+
if (cache) {
|
|
70
|
+
cache.set(obj, newObj);
|
|
71
|
+
}
|
|
72
|
+
return newObj;
|
|
73
|
+
}
|
|
74
|
+
const styles = {
|
|
75
|
+
root: (0, _emotion.css)({
|
|
76
|
+
position: 'fixed',
|
|
77
|
+
left: 0,
|
|
78
|
+
right: 0,
|
|
79
|
+
top: 0,
|
|
80
|
+
bottom: 0
|
|
81
|
+
}),
|
|
82
|
+
topSplit: (0, _emotion.css)({
|
|
83
|
+
position: 'fixed',
|
|
84
|
+
top: 0,
|
|
85
|
+
height: '48px',
|
|
86
|
+
left: 0,
|
|
87
|
+
right: 0
|
|
88
|
+
}),
|
|
89
|
+
bottomSplit: (0, _emotion.css)({
|
|
90
|
+
position: 'fixed',
|
|
91
|
+
bottom: 0,
|
|
92
|
+
left: 0,
|
|
93
|
+
right: 0,
|
|
94
|
+
height: '36px'
|
|
95
|
+
}),
|
|
96
|
+
editorSplit: (0, _emotion.css)({
|
|
97
|
+
width: '50%',
|
|
98
|
+
position: 'fixed',
|
|
99
|
+
top: '48px',
|
|
100
|
+
left: 0,
|
|
101
|
+
bottom: '36px',
|
|
102
|
+
overflowX: 'hidden',
|
|
103
|
+
overflowY: 'scroll'
|
|
104
|
+
}),
|
|
105
|
+
editorSplitFullscreen: (0, _emotion.css)({
|
|
106
|
+
left: 0,
|
|
107
|
+
right: 0,
|
|
108
|
+
width: '100%'
|
|
109
|
+
}),
|
|
110
|
+
previewSplit: (0, _emotion.css)({
|
|
111
|
+
width: '50%',
|
|
112
|
+
position: 'fixed',
|
|
113
|
+
top: '48px',
|
|
114
|
+
right: 0,
|
|
115
|
+
bottom: '36px',
|
|
116
|
+
overflowX: 'hidden',
|
|
117
|
+
overflowY: 'scroll'
|
|
118
|
+
}),
|
|
119
|
+
separator: (0, _emotion.css)({
|
|
120
|
+
position: 'fixed',
|
|
121
|
+
top: '48px',
|
|
122
|
+
bottom: '36px',
|
|
123
|
+
width: '1px',
|
|
124
|
+
background: _f36tokens.default.gray400,
|
|
125
|
+
left: '50%'
|
|
126
|
+
}),
|
|
127
|
+
button: (0, _emotion.css)({
|
|
128
|
+
position: 'fixed',
|
|
129
|
+
cursor: 'pointer',
|
|
130
|
+
zIndex: 105,
|
|
131
|
+
top: '49%',
|
|
132
|
+
height: '30px',
|
|
133
|
+
backgroundColor: _f36tokens.default.gray100,
|
|
134
|
+
border: `1px solid ${_f36tokens.default.gray400}`,
|
|
135
|
+
padding: 0
|
|
136
|
+
}),
|
|
137
|
+
hideButton: (0, _emotion.css)({
|
|
138
|
+
left: '50%'
|
|
139
|
+
}),
|
|
140
|
+
showButton: (0, _emotion.css)({
|
|
141
|
+
right: 0,
|
|
142
|
+
borderRightWidth: 0
|
|
143
|
+
}),
|
|
144
|
+
icon: (0, _emotion.css)({
|
|
145
|
+
verticalAlign: 'middle'
|
|
146
|
+
})
|
|
147
|
+
};
|
|
148
|
+
const ZenModeModalDialog = (props)=>{
|
|
149
|
+
const [currentValue, setCurrentValue] = _react.useState(props.initialValue ?? '');
|
|
150
|
+
const [showPreview, setShowPreview] = _react.useState(true);
|
|
151
|
+
const [editor, setEditor] = _react.useState(null);
|
|
152
|
+
_react.useEffect(()=>{
|
|
153
|
+
props.sdk?.window?.updateHeight('100%');
|
|
154
|
+
}, []);
|
|
155
|
+
_react.useEffect(()=>{
|
|
156
|
+
setTimeout(()=>{
|
|
157
|
+
editor?.setFullsize();
|
|
158
|
+
editor?.refresh();
|
|
159
|
+
}, 150);
|
|
160
|
+
}, [
|
|
161
|
+
editor
|
|
162
|
+
]);
|
|
163
|
+
const actions = _react.useMemo(()=>{
|
|
164
|
+
return (0, _MarkdownActions.createMarkdownActions)({
|
|
165
|
+
sdk: props.sdk,
|
|
166
|
+
editor,
|
|
167
|
+
locale: props.locale
|
|
168
|
+
});
|
|
169
|
+
}, [
|
|
170
|
+
editor
|
|
171
|
+
]);
|
|
172
|
+
actions.closeZenMode = ()=>{
|
|
173
|
+
props.onClose({
|
|
174
|
+
value: currentValue,
|
|
175
|
+
cursor: editor?.getCursor()
|
|
176
|
+
});
|
|
177
|
+
};
|
|
178
|
+
const direction = props.sdk.locales.direction[props.locale] ?? 'ltr';
|
|
179
|
+
return _react.createElement("div", {
|
|
180
|
+
className: styles.root,
|
|
181
|
+
"data-test-id": "zen-mode-markdown-editor"
|
|
182
|
+
}, _react.createElement("div", {
|
|
183
|
+
className: styles.topSplit
|
|
184
|
+
}, _react.createElement(_MarkdownToolbar.MarkdownToolbar, {
|
|
185
|
+
mode: "zen",
|
|
186
|
+
disabled: false,
|
|
187
|
+
canUploadAssets: false,
|
|
188
|
+
actions: actions
|
|
189
|
+
})), _react.createElement("div", {
|
|
190
|
+
className: (0, _emotion.cx)(styles.editorSplit, {
|
|
191
|
+
[styles.editorSplitFullscreen]: showPreview === false
|
|
192
|
+
})
|
|
193
|
+
}, _react.createElement(_MarkdownTextarea.MarkdownTextarea, {
|
|
194
|
+
mode: "zen",
|
|
195
|
+
visible: true,
|
|
196
|
+
disabled: false,
|
|
197
|
+
direction: direction,
|
|
198
|
+
onReady: (editor)=>{
|
|
199
|
+
editor.setContent(props.initialValue ?? '');
|
|
200
|
+
editor.setReadOnly(false);
|
|
201
|
+
setEditor(editor);
|
|
202
|
+
editor.focus();
|
|
203
|
+
editor.events.onChange((value)=>{
|
|
204
|
+
setCurrentValue(value);
|
|
205
|
+
props.saveValueToSDK(value);
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
})), showPreview && _react.createElement("div", {
|
|
209
|
+
className: styles.previewSplit
|
|
210
|
+
}, _react.createElement(_MarkdownPreview.MarkdownPreview, {
|
|
211
|
+
direction: direction,
|
|
212
|
+
mode: "zen",
|
|
213
|
+
value: currentValue,
|
|
214
|
+
previewComponents: props.previewComponents
|
|
215
|
+
})), showPreview && _react.createElement("div", {
|
|
216
|
+
className: styles.separator
|
|
217
|
+
}), showPreview && _react.createElement("button", {
|
|
218
|
+
className: (0, _emotion.cx)(styles.button, styles.hideButton),
|
|
219
|
+
"aria-label": "Hide preview",
|
|
220
|
+
onClick: ()=>{
|
|
221
|
+
setShowPreview(false);
|
|
222
|
+
}
|
|
223
|
+
}, _react.createElement(_f36icons.ChevronRightIcon, {
|
|
224
|
+
variant: "muted",
|
|
225
|
+
size: "tiny",
|
|
226
|
+
className: styles.icon
|
|
227
|
+
})), !showPreview && _react.createElement("button", {
|
|
228
|
+
className: (0, _emotion.cx)(styles.button, styles.showButton),
|
|
229
|
+
"aria-label": "Show preview",
|
|
230
|
+
onClick: ()=>{
|
|
231
|
+
setShowPreview(true);
|
|
232
|
+
}
|
|
233
|
+
}, _react.createElement(_f36icons.ChevronLeftIcon, {
|
|
234
|
+
variant: "muted",
|
|
235
|
+
size: "tiny",
|
|
236
|
+
className: styles.icon
|
|
237
|
+
})), _react.createElement("div", {
|
|
238
|
+
className: styles.bottomSplit
|
|
239
|
+
}, _react.createElement(_MarkdownBottomBar.MarkdownBottomBar, null, _react.createElement(_MarkdownBottomBar.MarkdownHelp, {
|
|
240
|
+
onClick: ()=>{
|
|
241
|
+
(0, _CheatsheetModalDialog.openCheatsheetModal)(props.sdk.dialogs);
|
|
242
|
+
}
|
|
243
|
+
}))));
|
|
244
|
+
};
|
|
245
|
+
const openZenMode = (dialogs, options)=>{
|
|
246
|
+
return dialogs.openCurrent({
|
|
247
|
+
width: 'zen',
|
|
248
|
+
shouldCloseOnEscapePress: false,
|
|
249
|
+
minHeight: '100vh',
|
|
250
|
+
shouldCloseOnOverlayClick: false,
|
|
251
|
+
parameters: {
|
|
252
|
+
type: _types.MarkdownDialogType.zenMode,
|
|
253
|
+
initialValue: options.initialValue,
|
|
254
|
+
locale: options.locale
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
};
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "openMarkdownDialog", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return openMarkdownDialog;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _react = _interop_require_wildcard(require("react"));
|
|
12
|
+
const _fieldeditorshared = require("@contentful/field-editor-shared");
|
|
13
|
+
const _types = require("../types");
|
|
14
|
+
const _CheatsheetModalDialog = require("./CheatsheetModalDialog");
|
|
15
|
+
const _ConfirmInsertAssetModalDialog = require("./ConfirmInsertAssetModalDialog");
|
|
16
|
+
const _EmdebExternalContentDialog = require("./EmdebExternalContentDialog");
|
|
17
|
+
const _InsertLinkModalDialog = require("./InsertLinkModalDialog");
|
|
18
|
+
const _InsertTableModalDialog = require("./InsertTableModalDialog");
|
|
19
|
+
const _SpecialCharacterModalDialog = require("./SpecialCharacterModalDialog");
|
|
20
|
+
const _ZenModeModalDialog = require("./ZenModeModalDialog");
|
|
21
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
22
|
+
if (typeof WeakMap !== "function") return null;
|
|
23
|
+
var cacheBabelInterop = new WeakMap();
|
|
24
|
+
var cacheNodeInterop = new WeakMap();
|
|
25
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
26
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
27
|
+
})(nodeInterop);
|
|
28
|
+
}
|
|
29
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
30
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
31
|
+
return obj;
|
|
32
|
+
}
|
|
33
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
34
|
+
return {
|
|
35
|
+
default: obj
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
39
|
+
if (cache && cache.has(obj)) {
|
|
40
|
+
return cache.get(obj);
|
|
41
|
+
}
|
|
42
|
+
var newObj = {};
|
|
43
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
44
|
+
for(var key in obj){
|
|
45
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
46
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
47
|
+
if (desc && (desc.get || desc.set)) {
|
|
48
|
+
Object.defineProperty(newObj, key, desc);
|
|
49
|
+
} else {
|
|
50
|
+
newObj[key] = obj[key];
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
newObj.default = obj;
|
|
55
|
+
if (cache) {
|
|
56
|
+
cache.set(obj, newObj);
|
|
57
|
+
}
|
|
58
|
+
return newObj;
|
|
59
|
+
}
|
|
60
|
+
const openMarkdownDialog = (sdk, previewComponents)=>(options)=>{
|
|
61
|
+
if (options.parameters?.type === _types.MarkdownDialogType.cheatsheet) {
|
|
62
|
+
return _fieldeditorshared.ModalDialogLauncher.openDialog(options, ()=>{
|
|
63
|
+
return _react.createElement(_CheatsheetModalDialog.CheatsheetModalDialog, null);
|
|
64
|
+
});
|
|
65
|
+
} else if (options.parameters?.type === _types.MarkdownDialogType.insertLink) {
|
|
66
|
+
const selectedText = options.parameters.selectedText;
|
|
67
|
+
return _fieldeditorshared.ModalDialogLauncher.openDialog(options, ({ onClose })=>{
|
|
68
|
+
return _react.createElement(_InsertLinkModalDialog.InsertLinkModal, {
|
|
69
|
+
selectedText: selectedText,
|
|
70
|
+
onClose: onClose
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
} else if (options.parameters?.type === _types.MarkdownDialogType.insertSpecialCharacter) {
|
|
74
|
+
return _fieldeditorshared.ModalDialogLauncher.openDialog(options, ({ onClose })=>{
|
|
75
|
+
return _react.createElement(_SpecialCharacterModalDialog.SpecialCharacterModalDialog, {
|
|
76
|
+
onClose: onClose
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
} else if (options.parameters?.type === _types.MarkdownDialogType.insertTable) {
|
|
80
|
+
return _fieldeditorshared.ModalDialogLauncher.openDialog(options, ({ onClose })=>{
|
|
81
|
+
return _react.createElement(_InsertTableModalDialog.InsertTableModal, {
|
|
82
|
+
onClose: onClose
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
} else if (options.parameters?.type === _types.MarkdownDialogType.embedExternalContent) {
|
|
86
|
+
return _fieldeditorshared.ModalDialogLauncher.openDialog(options, ({ onClose })=>{
|
|
87
|
+
return _react.createElement(_EmdebExternalContentDialog.EmbedExternalContentModal, {
|
|
88
|
+
onClose: onClose
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
} else if (options.parameters?.type === _types.MarkdownDialogType.confirmInsertAsset) {
|
|
92
|
+
const locale = options.parameters.locale;
|
|
93
|
+
const assets = options.parameters.assets;
|
|
94
|
+
return _fieldeditorshared.ModalDialogLauncher.openDialog(options, ({ onClose })=>{
|
|
95
|
+
return _react.createElement(_ConfirmInsertAssetModalDialog.ConfirmInsertAssetModalDialog, {
|
|
96
|
+
onClose: onClose,
|
|
97
|
+
locale: locale,
|
|
98
|
+
assets: assets
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
} else if (options.parameters?.type === _types.MarkdownDialogType.zenMode) {
|
|
102
|
+
const initialValue = options.parameters.initialValue;
|
|
103
|
+
const locale = options.parameters.locale;
|
|
104
|
+
return _fieldeditorshared.ModalDialogLauncher.openDialog(options, ({ onClose })=>{
|
|
105
|
+
return _react.createElement(_ZenModeModalDialog.ZenModeModalDialog, {
|
|
106
|
+
saveValueToSDK: (value)=>{
|
|
107
|
+
if (value) {
|
|
108
|
+
return sdk?.field?.setValue(value);
|
|
109
|
+
}
|
|
110
|
+
return sdk?.field?.removeValue();
|
|
111
|
+
},
|
|
112
|
+
onClose: onClose,
|
|
113
|
+
initialValue: initialValue,
|
|
114
|
+
locale: locale,
|
|
115
|
+
sdk: sdk,
|
|
116
|
+
previewComponents: previewComponents
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
return Promise.reject();
|
|
121
|
+
};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "renderMarkdownDialog", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return renderMarkdownDialog;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _react = _interop_require_wildcard(require("react"));
|
|
12
|
+
const _types = require("../types");
|
|
13
|
+
const _CheatsheetModalDialog = require("./CheatsheetModalDialog");
|
|
14
|
+
const _ConfirmInsertAssetModalDialog = require("./ConfirmInsertAssetModalDialog");
|
|
15
|
+
const _EmdebExternalContentDialog = require("./EmdebExternalContentDialog");
|
|
16
|
+
const _InsertLinkModalDialog = require("./InsertLinkModalDialog");
|
|
17
|
+
const _InsertTableModalDialog = require("./InsertTableModalDialog");
|
|
18
|
+
const _SpecialCharacterModalDialog = require("./SpecialCharacterModalDialog");
|
|
19
|
+
const _ZenModeModalDialog = require("./ZenModeModalDialog");
|
|
20
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
21
|
+
if (typeof WeakMap !== "function") return null;
|
|
22
|
+
var cacheBabelInterop = new WeakMap();
|
|
23
|
+
var cacheNodeInterop = new WeakMap();
|
|
24
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
25
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
26
|
+
})(nodeInterop);
|
|
27
|
+
}
|
|
28
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
29
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
30
|
+
return obj;
|
|
31
|
+
}
|
|
32
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
33
|
+
return {
|
|
34
|
+
default: obj
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
38
|
+
if (cache && cache.has(obj)) {
|
|
39
|
+
return cache.get(obj);
|
|
40
|
+
}
|
|
41
|
+
var newObj = {};
|
|
42
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
43
|
+
for(var key in obj){
|
|
44
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
45
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
46
|
+
if (desc && (desc.get || desc.set)) {
|
|
47
|
+
Object.defineProperty(newObj, key, desc);
|
|
48
|
+
} else {
|
|
49
|
+
newObj[key] = obj[key];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
newObj.default = obj;
|
|
54
|
+
if (cache) {
|
|
55
|
+
cache.set(obj, newObj);
|
|
56
|
+
}
|
|
57
|
+
return newObj;
|
|
58
|
+
}
|
|
59
|
+
const renderMarkdownDialog = (sdk)=>{
|
|
60
|
+
const parameters = sdk.parameters.invocation;
|
|
61
|
+
if (parameters.type === _types.MarkdownDialogType.cheatsheet) {
|
|
62
|
+
sdk.window.startAutoResizer();
|
|
63
|
+
return _react.createElement(_CheatsheetModalDialog.CheatsheetModalDialog, null);
|
|
64
|
+
} else if (parameters.type === _types.MarkdownDialogType.insertLink) {
|
|
65
|
+
const selectedText = parameters.selectedText;
|
|
66
|
+
sdk.window.startAutoResizer();
|
|
67
|
+
return _react.createElement(_InsertLinkModalDialog.InsertLinkModal, {
|
|
68
|
+
selectedText: selectedText,
|
|
69
|
+
onClose: sdk.close
|
|
70
|
+
});
|
|
71
|
+
} else if (parameters.type === _types.MarkdownDialogType.insertSpecialCharacter) {
|
|
72
|
+
sdk.window.startAutoResizer();
|
|
73
|
+
return _react.createElement(_SpecialCharacterModalDialog.SpecialCharacterModalDialog, {
|
|
74
|
+
onClose: sdk.close
|
|
75
|
+
});
|
|
76
|
+
} else if (parameters.type === _types.MarkdownDialogType.insertTable) {
|
|
77
|
+
sdk.window.startAutoResizer();
|
|
78
|
+
return _react.createElement(_InsertTableModalDialog.InsertTableModal, {
|
|
79
|
+
onClose: sdk.close
|
|
80
|
+
});
|
|
81
|
+
} else if (parameters.type === _types.MarkdownDialogType.embedExternalContent) {
|
|
82
|
+
sdk.window.startAutoResizer();
|
|
83
|
+
return _react.createElement(_EmdebExternalContentDialog.EmbedExternalContentModal, {
|
|
84
|
+
onClose: sdk.close
|
|
85
|
+
});
|
|
86
|
+
} else if (parameters.type === _types.MarkdownDialogType.confirmInsertAsset) {
|
|
87
|
+
const locale = parameters.locale;
|
|
88
|
+
const assets = parameters.assets;
|
|
89
|
+
sdk.window.startAutoResizer();
|
|
90
|
+
return _react.createElement(_ConfirmInsertAssetModalDialog.ConfirmInsertAssetModalDialog, {
|
|
91
|
+
onClose: sdk.close,
|
|
92
|
+
locale: locale,
|
|
93
|
+
assets: assets
|
|
94
|
+
});
|
|
95
|
+
} else if (parameters.type === _types.MarkdownDialogType.zenMode) {
|
|
96
|
+
const locale = parameters.locale;
|
|
97
|
+
const initialValue = parameters.initialValue;
|
|
98
|
+
sdk.window.updateHeight('100%');
|
|
99
|
+
return _react.createElement(_ZenModeModalDialog.ZenModeModalDialog, {
|
|
100
|
+
onClose: sdk.close,
|
|
101
|
+
saveValueToSDK: ()=>{},
|
|
102
|
+
initialValue: initialValue,
|
|
103
|
+
locale: locale,
|
|
104
|
+
sdk: sdk
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
return _react.createElement("div", null);
|
|
108
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
MarkdownEditor: function() {
|
|
13
|
+
return _MarkdownEditor.MarkdownEditorConnected;
|
|
14
|
+
},
|
|
15
|
+
MarkdownPreview: function() {
|
|
16
|
+
return _MarkdownPreview.MarkdownPreview;
|
|
17
|
+
},
|
|
18
|
+
openMarkdownDialog: function() {
|
|
19
|
+
return _openMarkdownDialog.openMarkdownDialog;
|
|
20
|
+
},
|
|
21
|
+
renderMarkdownDialog: function() {
|
|
22
|
+
return _renderMarkdownDialog.renderMarkdownDialog;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
require("./codemirrorImports");
|
|
26
|
+
const _MarkdownEditor = require("./MarkdownEditor");
|
|
27
|
+
const _MarkdownPreview = require("./components/MarkdownPreview");
|
|
28
|
+
const _openMarkdownDialog = require("./dialogs/openMarkdownDialog");
|
|
29
|
+
const _renderMarkdownDialog = require("./dialogs/renderMarkdownDialog");
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "MarkdownDialogType", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return MarkdownDialogType;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var MarkdownDialogType;
|
|
12
|
+
(function(MarkdownDialogType) {
|
|
13
|
+
MarkdownDialogType["cheatsheet"] = 'markdown-cheatsheet';
|
|
14
|
+
MarkdownDialogType["insertLink"] = 'markdown-insertLink';
|
|
15
|
+
MarkdownDialogType["insertSpecialCharacter"] = 'markdown-insertSpecialCharacter';
|
|
16
|
+
MarkdownDialogType["insertTable"] = 'markdown-insertTable';
|
|
17
|
+
MarkdownDialogType["embedExternalContent"] = 'markdown-embedExternalContent';
|
|
18
|
+
MarkdownDialogType["confirmInsertAsset"] = 'markdown-confirmInsertAsset';
|
|
19
|
+
MarkdownDialogType["zenMode"] = 'markdown-zenMode';
|
|
20
|
+
})(MarkdownDialogType || (MarkdownDialogType = {}));
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
replaceAssetDomain: function() {
|
|
13
|
+
return replaceAssetDomain;
|
|
14
|
+
},
|
|
15
|
+
insertAssetLinks: function() {
|
|
16
|
+
return insertAssetLinks;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const _get = _interop_require_default(require("lodash/get"));
|
|
20
|
+
const _isObject = _interop_require_default(require("lodash/isObject"));
|
|
21
|
+
function _interop_require_default(obj) {
|
|
22
|
+
return obj && obj.__esModule ? obj : {
|
|
23
|
+
default: obj
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function normalizeWhiteSpace(str) {
|
|
27
|
+
if (str) {
|
|
28
|
+
return str.trim().replace(/\s{2,}/g, ' ');
|
|
29
|
+
} else {
|
|
30
|
+
return str;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function removeExtension(str) {
|
|
34
|
+
return str.replace(/\.\w+$/g, '');
|
|
35
|
+
}
|
|
36
|
+
function fileNameToTitle(str) {
|
|
37
|
+
return normalizeWhiteSpace(removeExtension(str).replace(/_/g, ' '));
|
|
38
|
+
}
|
|
39
|
+
function replaceAssetDomain(fileUrl) {
|
|
40
|
+
const assetDomainMap = {
|
|
41
|
+
images: 'images.ctfassets.net',
|
|
42
|
+
assets: 'assets.ctfassets.net',
|
|
43
|
+
downloads: 'downloads.ctfassets.net',
|
|
44
|
+
videos: 'videos.ctfassets.net'
|
|
45
|
+
};
|
|
46
|
+
return fileUrl.replace(/(images|assets|downloads|videos).contentful.com/, (_, p1)=>{
|
|
47
|
+
return assetDomainMap[p1];
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
function makeAssetLink(asset, { localeCode , fallbackCode , defaultLocaleCode }) {
|
|
51
|
+
const localizedFile = (0, _get.default)(asset, [
|
|
52
|
+
'fields',
|
|
53
|
+
'file',
|
|
54
|
+
localeCode
|
|
55
|
+
]);
|
|
56
|
+
const fallbackFile = fallbackCode ? (0, _get.default)(asset, [
|
|
57
|
+
'fields',
|
|
58
|
+
'file',
|
|
59
|
+
fallbackCode
|
|
60
|
+
]) : null;
|
|
61
|
+
const defaultFile = (0, _get.default)(asset, [
|
|
62
|
+
'fields',
|
|
63
|
+
'file',
|
|
64
|
+
defaultLocaleCode
|
|
65
|
+
]);
|
|
66
|
+
const file = localizedFile || fallbackFile || defaultFile;
|
|
67
|
+
if ((0, _isObject.default)(file) && file.url) {
|
|
68
|
+
const title = (0, _get.default)(asset, [
|
|
69
|
+
'fields',
|
|
70
|
+
'title',
|
|
71
|
+
localeCode
|
|
72
|
+
]) || (0, _get.default)(asset, [
|
|
73
|
+
'fields',
|
|
74
|
+
'title',
|
|
75
|
+
fallbackCode || ''
|
|
76
|
+
]) || (0, _get.default)(asset, [
|
|
77
|
+
'fields',
|
|
78
|
+
'title',
|
|
79
|
+
defaultLocaleCode
|
|
80
|
+
]) || fileNameToTitle(file.fileName);
|
|
81
|
+
const fileUrl = replaceAssetDomain(file.url);
|
|
82
|
+
return {
|
|
83
|
+
title,
|
|
84
|
+
asset,
|
|
85
|
+
url: fileUrl,
|
|
86
|
+
isLocalized: Boolean(localizedFile),
|
|
87
|
+
isFallback: Boolean(fallbackFile),
|
|
88
|
+
asMarkdown: ``
|
|
89
|
+
};
|
|
90
|
+
} else {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
async function insertAssetLinks(assets, locales) {
|
|
95
|
+
const otherLocales = assets.filter((asset)=>{
|
|
96
|
+
return !(0, _get.default)(asset, [
|
|
97
|
+
'fields',
|
|
98
|
+
'file',
|
|
99
|
+
locales.localeCode
|
|
100
|
+
]);
|
|
101
|
+
});
|
|
102
|
+
const linksWithMeta = assets.map((asset)=>makeAssetLink(asset, locales)).filter((asset)=>asset !== null);
|
|
103
|
+
if (otherLocales.length > 0) {
|
|
104
|
+
const fallbackAssets = linksWithMeta.filter(({ isLocalized })=>!isLocalized).map(({ title , isFallback , asset })=>{
|
|
105
|
+
const code = isFallback ? locales.fallbackCode : locales.defaultLocaleCode;
|
|
106
|
+
return {
|
|
107
|
+
title,
|
|
108
|
+
thumbnailUrl: asset.fields.file[code].url,
|
|
109
|
+
thumbnailAltText: title,
|
|
110
|
+
description: isFallback ? `Fallback locale (${code})` : `Default locale (${code})`,
|
|
111
|
+
asset: asset
|
|
112
|
+
};
|
|
113
|
+
});
|
|
114
|
+
return {
|
|
115
|
+
fallbacks: fallbackAssets,
|
|
116
|
+
links: linksWithMeta
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
return {
|
|
120
|
+
links: linksWithMeta
|
|
121
|
+
};
|
|
122
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
const _insertAssetLinks = require("./insertAssetLinks");
|
|
6
|
+
describe('replaceAssetDomain', ()=>{
|
|
7
|
+
it('should replace contentful.com domains to ctfassets.net', ()=>{
|
|
8
|
+
expect((0, _insertAssetLinks.replaceAssetDomain)('//images.contentful.com/image.jpg')).toBe('//images.ctfassets.net/image.jpg');
|
|
9
|
+
expect((0, _insertAssetLinks.replaceAssetDomain)('//videos.contentful.com/video.mp4')).toBe('//videos.ctfassets.net/video.mp4');
|
|
10
|
+
expect((0, _insertAssetLinks.replaceAssetDomain)('//downloads.contentful.com/file.doc')).toBe('//downloads.ctfassets.net/file.doc');
|
|
11
|
+
expect((0, _insertAssetLinks.replaceAssetDomain)('//assets.contentful.com/file.doc')).toBe('//assets.ctfassets.net/file.doc');
|
|
12
|
+
expect((0, _insertAssetLinks.replaceAssetDomain)('https://images.contentful.com/image.jpg')).toBe('https://images.ctfassets.net/image.jpg');
|
|
13
|
+
expect((0, _insertAssetLinks.replaceAssetDomain)('https://videos.contentful.com/video.mp4')).toBe('https://videos.ctfassets.net/video.mp4');
|
|
14
|
+
expect((0, _insertAssetLinks.replaceAssetDomain)('https://downloads.contentful.com/file.doc')).toBe('https://downloads.ctfassets.net/file.doc');
|
|
15
|
+
expect((0, _insertAssetLinks.replaceAssetDomain)('https://assets.contentful.com/file.doc')).toBe('https://assets.ctfassets.net/file.doc');
|
|
16
|
+
});
|
|
17
|
+
it('should not replace domains not listed on the map', ()=>{
|
|
18
|
+
expect((0, _insertAssetLinks.replaceAssetDomain)('//documents.contentful.com/image.jpg')).toBe('//documents.contentful.com/image.jpg');
|
|
19
|
+
expect((0, _insertAssetLinks.replaceAssetDomain)('anyotherdomain.com/file.doc')).toBe('anyotherdomain.com/file.doc');
|
|
20
|
+
expect((0, _insertAssetLinks.replaceAssetDomain)('https://anyotherdomain.com/file.doc')).toBe('https://anyotherdomain.com/file.doc');
|
|
21
|
+
});
|
|
22
|
+
});
|