@theia/preview 1.17.0-next.ff9e0507 → 1.18.0-next.05f289b3
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/lib/browser/markdown/markdown-preview-handler.js +131 -220
- package/lib/browser/markdown/markdown-preview-handler.js.map +1 -1
- package/lib/browser/markdown/markdown-preview-handler.spec.js +118 -187
- package/lib/browser/markdown/markdown-preview-handler.spec.js.map +1 -1
- package/lib/browser/preview-contribution.d.ts.map +1 -1
- package/lib/browser/preview-contribution.js +169 -301
- package/lib/browser/preview-contribution.js.map +1 -1
- package/lib/browser/preview-frontend-module.js +22 -70
- package/lib/browser/preview-frontend-module.js.map +1 -1
- package/lib/browser/preview-handler.js +16 -19
- package/lib/browser/preview-handler.js.map +1 -1
- package/lib/browser/preview-link-normalizer.js +16 -17
- package/lib/browser/preview-link-normalizer.js.map +1 -1
- package/lib/browser/preview-preferences.js +5 -6
- package/lib/browser/preview-preferences.js.map +1 -1
- package/lib/browser/preview-uri.js +4 -24
- package/lib/browser/preview-uri.js.map +1 -1
- package/lib/browser/preview-widget.d.ts.map +1 -1
- package/lib/browser/preview-widget.js +168 -261
- package/lib/browser/preview-widget.js.map +1 -1
- package/lib/package.spec.js +2 -2
- package/lib/package.spec.js.map +1 -1
- package/package.json +6 -6
- package/src/browser/preview-contribution.ts +3 -3
- package/src/browser/preview-widget.ts +2 -2
|
@@ -23,107 +23,59 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
23
23
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
24
24
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
25
25
|
};
|
|
26
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
27
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
28
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
29
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
30
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
31
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
32
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
33
|
-
});
|
|
34
|
-
};
|
|
35
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
36
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
37
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
38
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
39
|
-
function step(op) {
|
|
40
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
41
|
-
while (_) try {
|
|
42
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
43
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
44
|
-
switch (op[0]) {
|
|
45
|
-
case 0: case 1: t = op; break;
|
|
46
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
47
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
48
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
49
|
-
default:
|
|
50
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
51
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
52
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
53
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
54
|
-
if (t[2]) _.ops.pop();
|
|
55
|
-
_.trys.pop(); continue;
|
|
56
|
-
}
|
|
57
|
-
op = body.call(thisArg, _);
|
|
58
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
59
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
var __values = (this && this.__values) || function(o) {
|
|
63
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
64
|
-
if (m) return m.call(o);
|
|
65
|
-
if (o && typeof o.length === "number") return {
|
|
66
|
-
next: function () {
|
|
67
|
-
if (o && i >= o.length) o = void 0;
|
|
68
|
-
return { value: o && o[i++], done: !o };
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
72
|
-
};
|
|
73
26
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
74
27
|
exports.MarkdownPreviewHandler = void 0;
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
28
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
29
|
+
const uri_1 = require("@theia/core/lib/common/uri");
|
|
30
|
+
const browser_1 = require("@theia/core/lib/browser");
|
|
31
|
+
const common_1 = require("@theia/core/lib/common");
|
|
32
|
+
const path_1 = require("@theia/core/lib/common/path");
|
|
33
|
+
const hljs = require("highlight.js");
|
|
34
|
+
const markdownit = require("markdown-it");
|
|
35
|
+
const anchor = require("markdown-it-anchor");
|
|
36
|
+
const DOMPurify = require("@theia/core/shared/dompurify");
|
|
37
|
+
const preview_uri_1 = require("../preview-uri");
|
|
38
|
+
const preview_handler_1 = require("../preview-handler");
|
|
39
|
+
const preview_link_normalizer_1 = require("../preview-link-normalizer");
|
|
40
|
+
let MarkdownPreviewHandler = class MarkdownPreviewHandler {
|
|
41
|
+
constructor() {
|
|
89
42
|
this.iconClass = 'markdown-icon file-icon';
|
|
90
43
|
this.contentClass = 'markdown-preview';
|
|
91
44
|
}
|
|
92
|
-
|
|
45
|
+
canHandle(uri) {
|
|
93
46
|
return uri.scheme === 'file'
|
|
94
47
|
&& (uri.path.ext.toLowerCase() === '.md' ||
|
|
95
48
|
uri.path.ext.toLowerCase() === '.markdown') ? 500 : 0;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
49
|
+
}
|
|
50
|
+
renderContent(params) {
|
|
51
|
+
const content = params.content;
|
|
52
|
+
const renderedContent = this.getEngine().render(content, params);
|
|
53
|
+
const sanitizedContent = DOMPurify.sanitize(renderedContent);
|
|
54
|
+
const contentElement = document.createElement('div');
|
|
102
55
|
contentElement.classList.add(this.contentClass);
|
|
103
56
|
contentElement.innerHTML = sanitizedContent;
|
|
104
57
|
this.addLinkClickedListener(contentElement, params);
|
|
105
58
|
return contentElement;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
var link = _this.findLink(candidate, contentElement);
|
|
59
|
+
}
|
|
60
|
+
addLinkClickedListener(contentElement, params) {
|
|
61
|
+
contentElement.addEventListener('click', (event) => {
|
|
62
|
+
const candidate = (event.target || event.srcElement);
|
|
63
|
+
const link = this.findLink(candidate, contentElement);
|
|
112
64
|
if (link) {
|
|
113
65
|
event.preventDefault();
|
|
114
66
|
if (link.startsWith('#')) {
|
|
115
|
-
|
|
67
|
+
this.revealFragment(contentElement, link);
|
|
116
68
|
}
|
|
117
69
|
else {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
70
|
+
const preview = !(common_1.isOSX ? event.metaKey : event.ctrlKey);
|
|
71
|
+
const uri = this.resolveUri(link, params.originUri, preview);
|
|
72
|
+
this.openLink(uri, params.originUri);
|
|
121
73
|
}
|
|
122
74
|
}
|
|
123
75
|
});
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
|
|
76
|
+
}
|
|
77
|
+
findLink(element, container) {
|
|
78
|
+
let candidate = element;
|
|
127
79
|
while (candidate.tagName !== 'A') {
|
|
128
80
|
if (candidate === container) {
|
|
129
81
|
return;
|
|
@@ -134,44 +86,34 @@ var MarkdownPreviewHandler = /** @class */ (function () {
|
|
|
134
86
|
}
|
|
135
87
|
}
|
|
136
88
|
return candidate.getAttribute('href') || undefined;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
case 1:
|
|
145
|
-
opener = _a.sent();
|
|
146
|
-
opener.open(uri, { originUri: originUri });
|
|
147
|
-
return [2 /*return*/];
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
});
|
|
151
|
-
};
|
|
152
|
-
MarkdownPreviewHandler.prototype.resolveUri = function (link, uri, preview) {
|
|
153
|
-
var linkURI = new uri_1.default(link);
|
|
89
|
+
}
|
|
90
|
+
async openLink(uri, originUri) {
|
|
91
|
+
const opener = await this.openerService.getOpener(uri);
|
|
92
|
+
opener.open(uri, { originUri });
|
|
93
|
+
}
|
|
94
|
+
resolveUri(link, uri, preview) {
|
|
95
|
+
const linkURI = new uri_1.default(link);
|
|
154
96
|
// URIs are always absolute, check link as a path whether it is relative
|
|
155
97
|
if (!new path_1.Path(link).isAbsolute && linkURI.scheme === uri.scheme &&
|
|
156
98
|
(!linkURI.authority || linkURI.authority === uri.authority)) {
|
|
157
99
|
// get a relative path from URI by trimming leading `/`
|
|
158
|
-
|
|
159
|
-
|
|
100
|
+
const relativePath = linkURI.path.toString().substring(1);
|
|
101
|
+
const resolvedUri = uri.parent.resolve(relativePath).withFragment(linkURI.fragment).withQuery(linkURI.query);
|
|
160
102
|
return preview ? preview_uri_1.PreviewUri.encode(resolvedUri) : resolvedUri;
|
|
161
103
|
}
|
|
162
104
|
return linkURI;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
|
|
105
|
+
}
|
|
106
|
+
revealFragment(contentElement, fragment) {
|
|
107
|
+
const elementToReveal = this.findElementForFragment(contentElement, fragment);
|
|
166
108
|
if (!elementToReveal) {
|
|
167
109
|
return;
|
|
168
110
|
}
|
|
169
111
|
elementToReveal.scrollIntoView();
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
acceptNode:
|
|
112
|
+
}
|
|
113
|
+
findElementForFragment(content, link) {
|
|
114
|
+
const fragment = link.startsWith('#') ? link.substring(1) : link;
|
|
115
|
+
const filter = {
|
|
116
|
+
acceptNode: (node) => {
|
|
175
117
|
if (node instanceof HTMLHeadingElement) {
|
|
176
118
|
if (node.tagName.toLowerCase().startsWith('h') && node.id === fragment) {
|
|
177
119
|
return NodeFilter.FILTER_ACCEPT;
|
|
@@ -181,56 +123,56 @@ var MarkdownPreviewHandler = /** @class */ (function () {
|
|
|
181
123
|
return NodeFilter.FILTER_SKIP;
|
|
182
124
|
}
|
|
183
125
|
};
|
|
184
|
-
|
|
126
|
+
const treeWalker = document.createTreeWalker(content, NodeFilter.SHOW_ELEMENT, filter, false);
|
|
185
127
|
if (treeWalker.nextNode()) {
|
|
186
|
-
|
|
128
|
+
const element = treeWalker.currentNode;
|
|
187
129
|
return element;
|
|
188
130
|
}
|
|
189
131
|
return undefined;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
for (
|
|
195
|
-
|
|
196
|
-
|
|
132
|
+
}
|
|
133
|
+
findElementForSourceLine(content, sourceLine) {
|
|
134
|
+
const markedElements = content.getElementsByClassName('line');
|
|
135
|
+
let matchedElement;
|
|
136
|
+
for (let i = 0; i < markedElements.length; i++) {
|
|
137
|
+
const element = markedElements[i];
|
|
138
|
+
const line = Number.parseInt(element.getAttribute('data-line') || '0');
|
|
197
139
|
if (line > sourceLine) {
|
|
198
140
|
break;
|
|
199
141
|
}
|
|
200
142
|
matchedElement = element;
|
|
201
143
|
}
|
|
202
144
|
return matchedElement;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
|
|
145
|
+
}
|
|
146
|
+
getSourceLineForOffset(content, offset) {
|
|
147
|
+
const lineElements = this.getLineElementsAtOffset(content, offset);
|
|
206
148
|
if (lineElements.length < 1) {
|
|
207
149
|
return undefined;
|
|
208
150
|
}
|
|
209
|
-
|
|
151
|
+
const firstLineNumber = this.getLineNumberFromAttribute(lineElements[0]);
|
|
210
152
|
if (firstLineNumber === undefined) {
|
|
211
153
|
return undefined;
|
|
212
154
|
}
|
|
213
155
|
if (lineElements.length === 1) {
|
|
214
156
|
return firstLineNumber;
|
|
215
157
|
}
|
|
216
|
-
|
|
158
|
+
const secondLineNumber = this.getLineNumberFromAttribute(lineElements[1]);
|
|
217
159
|
if (secondLineNumber === undefined) {
|
|
218
160
|
return firstLineNumber;
|
|
219
161
|
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
162
|
+
const y1 = lineElements[0].offsetTop;
|
|
163
|
+
const y2 = lineElements[1].offsetTop;
|
|
164
|
+
const dY = (offset - y1) / (y2 - y1);
|
|
165
|
+
const dL = (secondLineNumber - firstLineNumber) * dY;
|
|
166
|
+
const line = firstLineNumber + Math.floor(dL);
|
|
225
167
|
return line;
|
|
226
|
-
}
|
|
168
|
+
}
|
|
227
169
|
/**
|
|
228
170
|
* returns two significant line elements for the given offset.
|
|
229
171
|
*/
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
acceptNode:
|
|
172
|
+
getLineElementsAtOffset(content, offset) {
|
|
173
|
+
let skipNext = false;
|
|
174
|
+
const filter = {
|
|
175
|
+
acceptNode: (node) => {
|
|
234
176
|
if (node instanceof HTMLElement) {
|
|
235
177
|
if (node.classList.contains('line')) {
|
|
236
178
|
if (skipNext) {
|
|
@@ -246,42 +188,40 @@ var MarkdownPreviewHandler = /** @class */ (function () {
|
|
|
246
188
|
return NodeFilter.FILTER_REJECT;
|
|
247
189
|
}
|
|
248
190
|
};
|
|
249
|
-
|
|
250
|
-
|
|
191
|
+
const treeWalker = document.createTreeWalker(content, NodeFilter.SHOW_ELEMENT, filter, false);
|
|
192
|
+
const lineElements = [];
|
|
251
193
|
while (treeWalker.nextNode()) {
|
|
252
|
-
|
|
194
|
+
const element = treeWalker.currentNode;
|
|
253
195
|
lineElements.push(element);
|
|
254
196
|
}
|
|
255
197
|
return lineElements.slice(-2);
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
|
|
198
|
+
}
|
|
199
|
+
getLineNumberFromAttribute(element) {
|
|
200
|
+
const attribute = element.getAttribute('data-line');
|
|
259
201
|
return attribute ? Number.parseInt(attribute) : undefined;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
var e_1, _a, e_2, _b;
|
|
263
|
-
var _this = this;
|
|
202
|
+
}
|
|
203
|
+
getEngine() {
|
|
264
204
|
if (!this.engine) {
|
|
265
|
-
|
|
205
|
+
const engine = this.engine = markdownit({
|
|
266
206
|
html: true,
|
|
267
207
|
linkify: true,
|
|
268
|
-
highlight:
|
|
208
|
+
highlight: (str, lang) => {
|
|
269
209
|
if (lang && hljs.getLanguage(lang)) {
|
|
270
210
|
try {
|
|
271
211
|
return '<pre class="hljs"><code><div>' + hljs.highlight(lang, str, true).value + '</div></code></pre>';
|
|
272
212
|
}
|
|
273
213
|
catch (_a) { }
|
|
274
214
|
}
|
|
275
|
-
return '<pre class="hljs"><code><div>' +
|
|
215
|
+
return '<pre class="hljs"><code><div>' + engine.utils.escapeHtml(str) + '</div></code></pre>';
|
|
276
216
|
}
|
|
277
217
|
});
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
218
|
+
const renderers = ['heading_open', 'paragraph_open', 'list_item_open', 'blockquote_open', 'code_block', 'image', 'fence'];
|
|
219
|
+
for (const renderer of renderers) {
|
|
220
|
+
const originalRenderer = engine.renderer.rules[renderer];
|
|
221
|
+
engine.renderer.rules[renderer] = (tokens, index, options, env, self) => {
|
|
222
|
+
const token = tokens[index];
|
|
283
223
|
if (token.map) {
|
|
284
|
-
|
|
224
|
+
const line = token.map[0];
|
|
285
225
|
token.attrJoin('class', 'line');
|
|
286
226
|
token.attrSet('data-line', line.toString());
|
|
287
227
|
}
|
|
@@ -290,103 +230,74 @@ var MarkdownPreviewHandler = /** @class */ (function () {
|
|
|
290
230
|
? originalRenderer(tokens, index, options, env, self)
|
|
291
231
|
: self.renderToken(tokens, index, options);
|
|
292
232
|
};
|
|
293
|
-
};
|
|
294
|
-
try {
|
|
295
|
-
for (var renderers_1 = __values(renderers), renderers_1_1 = renderers_1.next(); !renderers_1_1.done; renderers_1_1 = renderers_1.next()) {
|
|
296
|
-
var renderer = renderers_1_1.value;
|
|
297
|
-
_loop_1(renderer);
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
301
|
-
finally {
|
|
302
|
-
try {
|
|
303
|
-
if (renderers_1_1 && !renderers_1_1.done && (_a = renderers_1.return)) _a.call(renderers_1);
|
|
304
|
-
}
|
|
305
|
-
finally { if (e_1) throw e_1.error; }
|
|
306
233
|
}
|
|
307
|
-
|
|
308
|
-
if (
|
|
309
|
-
|
|
234
|
+
const originalImageRenderer = engine.renderer.rules.image;
|
|
235
|
+
if (originalImageRenderer) {
|
|
236
|
+
engine.renderer.rules.image = (tokens, index, options, env, self) => {
|
|
310
237
|
if (preview_handler_1.RenderContentParams.is(env)) {
|
|
311
|
-
|
|
312
|
-
|
|
238
|
+
const documentUri = env.originUri;
|
|
239
|
+
const token = tokens[index];
|
|
313
240
|
if (token.attrs) {
|
|
314
|
-
|
|
241
|
+
const srcAttr = token.attrs.find(a => a[0] === 'src');
|
|
315
242
|
if (srcAttr) {
|
|
316
|
-
|
|
317
|
-
srcAttr[1] =
|
|
243
|
+
const href = srcAttr[1];
|
|
244
|
+
srcAttr[1] = this.linkNormalizer.normalizeLink(documentUri, href);
|
|
318
245
|
}
|
|
319
246
|
}
|
|
320
247
|
}
|
|
321
|
-
return
|
|
248
|
+
return originalImageRenderer(tokens, index, options, env, self);
|
|
322
249
|
};
|
|
323
250
|
}
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
for (var i = 0; i < elements.length; i++) {
|
|
331
|
-
var element = elements.item(i);
|
|
251
|
+
const domParser = new DOMParser();
|
|
252
|
+
const parseDOM = (html) => domParser.parseFromString(html, 'text/html').getElementsByTagName('body')[0];
|
|
253
|
+
const modifyDOM = (body, tag, procedure) => {
|
|
254
|
+
const elements = body.getElementsByTagName(tag);
|
|
255
|
+
for (let i = 0; i < elements.length; i++) {
|
|
256
|
+
const element = elements.item(i);
|
|
332
257
|
if (element) {
|
|
333
258
|
procedure(element);
|
|
334
259
|
}
|
|
335
260
|
}
|
|
336
261
|
};
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
262
|
+
const normalizeAllImgSrcInHTML = (html, normalizeLink) => {
|
|
263
|
+
const body = parseDOM(html);
|
|
264
|
+
modifyDOM(body, 'img', img => {
|
|
265
|
+
const src = img.getAttributeNode('src');
|
|
341
266
|
if (src) {
|
|
342
267
|
src.nodeValue = normalizeLink(src.nodeValue || '');
|
|
343
268
|
}
|
|
344
269
|
});
|
|
345
270
|
return body.innerHTML;
|
|
346
271
|
};
|
|
347
|
-
|
|
348
|
-
|
|
272
|
+
for (const name of ['html_block', 'html_inline']) {
|
|
273
|
+
const originalRenderer = engine.renderer.rules[name];
|
|
349
274
|
if (originalRenderer) {
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
275
|
+
engine.renderer.rules[name] = (tokens, index, options, env, self) => {
|
|
276
|
+
const currentToken = tokens[index];
|
|
277
|
+
const content = currentToken.content;
|
|
353
278
|
if (content.includes('<img') && preview_handler_1.RenderContentParams.is(env)) {
|
|
354
|
-
|
|
355
|
-
currentToken.content =
|
|
279
|
+
const documentUri = env.originUri;
|
|
280
|
+
currentToken.content = normalizeAllImgSrcInHTML(content, link => this.linkNormalizer.normalizeLink(documentUri, link));
|
|
356
281
|
}
|
|
357
282
|
return originalRenderer(tokens, index, options, env, self);
|
|
358
283
|
};
|
|
359
284
|
}
|
|
360
|
-
};
|
|
361
|
-
try {
|
|
362
|
-
for (var _c = __values(['html_block', 'html_inline']), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
363
|
-
var name_1 = _d.value;
|
|
364
|
-
_loop_2(name_1);
|
|
365
|
-
}
|
|
366
285
|
}
|
|
367
|
-
|
|
368
|
-
finally {
|
|
369
|
-
try {
|
|
370
|
-
if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
|
|
371
|
-
}
|
|
372
|
-
finally { if (e_2) throw e_2.error; }
|
|
373
|
-
}
|
|
374
|
-
anchor(engine_1, {});
|
|
286
|
+
anchor(engine, {});
|
|
375
287
|
}
|
|
376
288
|
return this.engine;
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
}());
|
|
289
|
+
}
|
|
290
|
+
};
|
|
291
|
+
__decorate([
|
|
292
|
+
inversify_1.inject(browser_1.OpenerService),
|
|
293
|
+
__metadata("design:type", Object)
|
|
294
|
+
], MarkdownPreviewHandler.prototype, "openerService", void 0);
|
|
295
|
+
__decorate([
|
|
296
|
+
inversify_1.inject(preview_link_normalizer_1.PreviewLinkNormalizer),
|
|
297
|
+
__metadata("design:type", preview_link_normalizer_1.PreviewLinkNormalizer)
|
|
298
|
+
], MarkdownPreviewHandler.prototype, "linkNormalizer", void 0);
|
|
299
|
+
MarkdownPreviewHandler = __decorate([
|
|
300
|
+
inversify_1.injectable()
|
|
301
|
+
], MarkdownPreviewHandler);
|
|
391
302
|
exports.MarkdownPreviewHandler = MarkdownPreviewHandler;
|
|
392
303
|
//# sourceMappingURL=markdown-preview-handler.js.map
|