@mdzip/editor 1.3.0 → 1.3.8
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/README.md +145 -8
- package/dist/archive-utils.d.ts.map +1 -1
- package/dist/archive-utils.js +1 -34
- package/dist/archive-utils.js.map +1 -1
- package/dist/asset-cache.d.ts +81 -0
- package/dist/asset-cache.d.ts.map +1 -0
- package/dist/asset-cache.js +365 -0
- package/dist/asset-cache.js.map +1 -0
- package/dist/diff-view-css.d.ts +2 -0
- package/dist/diff-view-css.d.ts.map +1 -0
- package/dist/diff-view-css.js +49 -0
- package/dist/diff-view-css.js.map +1 -0
- package/dist/diff-view.d.ts +112 -0
- package/dist/diff-view.d.ts.map +1 -0
- package/dist/diff-view.js +573 -0
- package/dist/diff-view.js.map +1 -0
- package/dist/diff.d.ts +2 -1
- package/dist/diff.d.ts.map +1 -1
- package/dist/diff.js +3 -1
- package/dist/diff.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/library-info.d.ts +37 -0
- package/dist/library-info.d.ts.map +1 -0
- package/dist/library-info.js +46 -0
- package/dist/library-info.js.map +1 -0
- package/dist/preview.d.ts +10 -0
- package/dist/preview.d.ts.map +1 -0
- package/dist/preview.js +9 -0
- package/dist/preview.js.map +1 -0
- package/dist/rendering.d.ts +138 -2
- package/dist/rendering.d.ts.map +1 -1
- package/dist/rendering.js +108 -13
- package/dist/rendering.js.map +1 -1
- package/dist/view-css.d.ts.map +1 -1
- package/dist/view-css.js +109 -1
- package/dist/view-css.js.map +1 -1
- package/dist/view.d.ts +136 -1
- package/dist/view.d.ts.map +1 -1
- package/dist/view.js +733 -22
- package/dist/view.js.map +1 -1
- package/dist/workspace.d.ts +15 -0
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +28 -0
- package/dist/workspace.js.map +1 -1
- package/package.json +23 -4
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
export class MdzipIndexedDbAssetCache {
|
|
2
|
+
constructor(options = {}) {
|
|
3
|
+
this.databasePromise = null;
|
|
4
|
+
this.databaseName = options.databaseName ?? 'mdzip-asset-cache';
|
|
5
|
+
this.maxBytes = options.maxBytes ?? 64 * 1024 * 1024;
|
|
6
|
+
this.maxEntries = options.maxEntries ?? 512;
|
|
7
|
+
this.maxAgeMs = options.maxAgeMs ?? 30 * 24 * 60 * 60 * 1000;
|
|
8
|
+
}
|
|
9
|
+
async get(contentKey) {
|
|
10
|
+
const db = await this.database();
|
|
11
|
+
const stored = await request(db.transaction('assets', 'readonly').objectStore('assets').get(contentKey));
|
|
12
|
+
if (!stored)
|
|
13
|
+
return undefined;
|
|
14
|
+
if (Date.now() - stored.accessedAt > this.maxAgeMs) {
|
|
15
|
+
await this.deleteAsset(contentKey);
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
stored.accessedAt = Date.now();
|
|
19
|
+
void this.putStored(stored).catch(() => undefined);
|
|
20
|
+
return { bytes: new Uint8Array(stored.bytes), mimeType: stored.mimeType };
|
|
21
|
+
}
|
|
22
|
+
async set(contentKey, entry) {
|
|
23
|
+
const bytes = entry.bytes.slice().buffer;
|
|
24
|
+
await this.putStored({
|
|
25
|
+
key: contentKey,
|
|
26
|
+
bytes,
|
|
27
|
+
mimeType: entry.mimeType,
|
|
28
|
+
size: bytes.byteLength,
|
|
29
|
+
accessedAt: Date.now()
|
|
30
|
+
});
|
|
31
|
+
await this.prune();
|
|
32
|
+
}
|
|
33
|
+
async getReference(referenceKey) {
|
|
34
|
+
const db = await this.database();
|
|
35
|
+
return request(db.transaction('references', 'readonly').objectStore('references').get(referenceKey));
|
|
36
|
+
}
|
|
37
|
+
async setReference(referenceKey, contentKey) {
|
|
38
|
+
const db = await this.database();
|
|
39
|
+
const transaction = db.transaction('references', 'readwrite');
|
|
40
|
+
transaction.objectStore('references').put(contentKey, referenceKey);
|
|
41
|
+
await transactionDone(transaction);
|
|
42
|
+
}
|
|
43
|
+
async database() {
|
|
44
|
+
if (typeof indexedDB === 'undefined') {
|
|
45
|
+
throw new Error('IndexedDB is unavailable.');
|
|
46
|
+
}
|
|
47
|
+
this.databasePromise ??= new Promise((resolve, reject) => {
|
|
48
|
+
const open = indexedDB.open(this.databaseName, 1);
|
|
49
|
+
open.onupgradeneeded = () => {
|
|
50
|
+
if (!open.result.objectStoreNames.contains('assets')) {
|
|
51
|
+
open.result.createObjectStore('assets', { keyPath: 'key' });
|
|
52
|
+
}
|
|
53
|
+
if (!open.result.objectStoreNames.contains('references')) {
|
|
54
|
+
open.result.createObjectStore('references');
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
open.onsuccess = () => resolve(open.result);
|
|
58
|
+
open.onerror = () => reject(open.error ?? new Error('Could not open the asset cache.'));
|
|
59
|
+
});
|
|
60
|
+
return this.databasePromise;
|
|
61
|
+
}
|
|
62
|
+
async putStored(stored) {
|
|
63
|
+
const db = await this.database();
|
|
64
|
+
const transaction = db.transaction('assets', 'readwrite');
|
|
65
|
+
transaction.objectStore('assets').put(stored);
|
|
66
|
+
await transactionDone(transaction);
|
|
67
|
+
}
|
|
68
|
+
async deleteAsset(contentKey) {
|
|
69
|
+
const db = await this.database();
|
|
70
|
+
const transaction = db.transaction('assets', 'readwrite');
|
|
71
|
+
transaction.objectStore('assets').delete(contentKey);
|
|
72
|
+
await transactionDone(transaction);
|
|
73
|
+
}
|
|
74
|
+
async prune() {
|
|
75
|
+
const db = await this.database();
|
|
76
|
+
const entries = await request(db.transaction('assets', 'readonly').objectStore('assets').getAll());
|
|
77
|
+
entries.sort((a, b) => b.accessedAt - a.accessedAt);
|
|
78
|
+
let totalBytes = 0;
|
|
79
|
+
const removals = [];
|
|
80
|
+
for (let index = 0; index < entries.length; index += 1) {
|
|
81
|
+
const entry = entries[index];
|
|
82
|
+
totalBytes += entry.size;
|
|
83
|
+
if (index >= this.maxEntries || totalBytes > this.maxBytes || Date.now() - entry.accessedAt > this.maxAgeMs) {
|
|
84
|
+
removals.push(entry.key);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (!removals.length)
|
|
88
|
+
return;
|
|
89
|
+
const transaction = db.transaction('assets', 'readwrite');
|
|
90
|
+
const store = transaction.objectStore('assets');
|
|
91
|
+
for (const key of removals)
|
|
92
|
+
store.delete(key);
|
|
93
|
+
await transactionDone(transaction);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
export class MdzipAssetSession {
|
|
97
|
+
constructor(workspace, assets, ownerDocument, options = {}) {
|
|
98
|
+
this.workspace = workspace;
|
|
99
|
+
this.assets = assets;
|
|
100
|
+
this.ownerDocument = ownerDocument;
|
|
101
|
+
this.options = options;
|
|
102
|
+
this.urls = new Map();
|
|
103
|
+
this.sizes = new Map();
|
|
104
|
+
this.pending = new Map();
|
|
105
|
+
this.sourceIdPromise = null;
|
|
106
|
+
this.destroyed = false;
|
|
107
|
+
}
|
|
108
|
+
resolveKnown(path, currentPath) {
|
|
109
|
+
const assetPath = resolveAssetPath(path, currentPath, this.assets);
|
|
110
|
+
return assetPath ? this.urls.get(assetPath.toLowerCase()) : undefined;
|
|
111
|
+
}
|
|
112
|
+
async resolve(path, currentPath) {
|
|
113
|
+
if (this.destroyed)
|
|
114
|
+
return undefined;
|
|
115
|
+
const assetPath = resolveAssetPath(path, currentPath, this.assets);
|
|
116
|
+
if (!assetPath)
|
|
117
|
+
return undefined;
|
|
118
|
+
const key = assetPath.toLowerCase();
|
|
119
|
+
const existing = this.urls.get(key);
|
|
120
|
+
if (existing)
|
|
121
|
+
return existing;
|
|
122
|
+
const active = this.pending.get(key);
|
|
123
|
+
if (active)
|
|
124
|
+
return active;
|
|
125
|
+
const pending = this.resolveAsset(assetPath).finally(() => this.pending.delete(key));
|
|
126
|
+
this.pending.set(key, pending);
|
|
127
|
+
return pending;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Resolves an image to its URL plus, when sniffable from the bytes, its
|
|
131
|
+
* intrinsic dimensions — enabling progressive hydration that reserves layout
|
|
132
|
+
* space before the image visually loads.
|
|
133
|
+
*/
|
|
134
|
+
async resolveImage(path, currentPath) {
|
|
135
|
+
const url = await this.resolve(path, currentPath);
|
|
136
|
+
if (!url)
|
|
137
|
+
return undefined;
|
|
138
|
+
const assetPath = resolveAssetPath(path, currentPath, this.assets);
|
|
139
|
+
const size = assetPath ? this.sizes.get(assetPath.toLowerCase()) : undefined;
|
|
140
|
+
return size ? { url, width: size.width, height: size.height } : { url };
|
|
141
|
+
}
|
|
142
|
+
async rewriteHtml(html, currentPath, signal) {
|
|
143
|
+
const template = this.ownerDocument.createElement('template');
|
|
144
|
+
template.innerHTML = html;
|
|
145
|
+
const images = Array.from(template.content.querySelectorAll('img[src]'));
|
|
146
|
+
await Promise.all(images.map(async (image) => {
|
|
147
|
+
const source = image.getAttribute('src');
|
|
148
|
+
if (!source)
|
|
149
|
+
return;
|
|
150
|
+
const resolved = await this.resolve(source, currentPath);
|
|
151
|
+
if (!signal.aborted && resolved)
|
|
152
|
+
image.setAttribute('src', resolved);
|
|
153
|
+
}));
|
|
154
|
+
if (signal.aborted)
|
|
155
|
+
throw new DOMException('Rendering aborted.', 'AbortError');
|
|
156
|
+
return template.innerHTML;
|
|
157
|
+
}
|
|
158
|
+
destroy() {
|
|
159
|
+
this.destroyed = true;
|
|
160
|
+
const urlApi = this.ownerDocument.defaultView?.URL;
|
|
161
|
+
if (urlApi?.revokeObjectURL) {
|
|
162
|
+
for (const url of this.urls.values()) {
|
|
163
|
+
if (url.startsWith('blob:'))
|
|
164
|
+
urlApi.revokeObjectURL(url);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
this.urls.clear();
|
|
168
|
+
this.sizes.clear();
|
|
169
|
+
this.pending.clear();
|
|
170
|
+
}
|
|
171
|
+
async resolveAsset(assetPath) {
|
|
172
|
+
const asset = this.assets.find((item) => item.path.toLowerCase() === assetPath.toLowerCase());
|
|
173
|
+
if (!asset)
|
|
174
|
+
return undefined;
|
|
175
|
+
let loadedBytes;
|
|
176
|
+
try {
|
|
177
|
+
const referenceKey = await this.referenceKey(asset.path);
|
|
178
|
+
if (this.options.cache && referenceKey) {
|
|
179
|
+
const contentKey = await this.options.cache.getReference(referenceKey);
|
|
180
|
+
if (contentKey) {
|
|
181
|
+
const cached = await this.options.cache.get(contentKey);
|
|
182
|
+
if (cached)
|
|
183
|
+
return this.storeUrl(asset.path, cached.bytes, cached.mimeType);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
loadedBytes = await this.workspace.readPathBytes(asset.path);
|
|
187
|
+
if (!loadedBytes)
|
|
188
|
+
return undefined;
|
|
189
|
+
if (this.options.cache) {
|
|
190
|
+
const contentKey = await contentAddress(loadedBytes, asset.mimeType);
|
|
191
|
+
await this.options.cache.set(contentKey, { bytes: loadedBytes, mimeType: asset.mimeType });
|
|
192
|
+
if (referenceKey)
|
|
193
|
+
await this.options.cache.setReference(referenceKey, contentKey);
|
|
194
|
+
}
|
|
195
|
+
return this.storeUrl(asset.path, loadedBytes, asset.mimeType);
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
this.options.onFailed?.(error);
|
|
199
|
+
const bytes = loadedBytes ?? await this.workspace.readPathBytes(asset.path).catch(() => undefined);
|
|
200
|
+
return bytes ? this.storeUrl(asset.path, bytes, asset.mimeType) : undefined;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
storeUrl(path, bytes, mimeType) {
|
|
204
|
+
if (this.destroyed)
|
|
205
|
+
return undefined;
|
|
206
|
+
const urlApi = this.ownerDocument.defaultView?.URL;
|
|
207
|
+
const url = urlApi?.createObjectURL
|
|
208
|
+
? urlApi.createObjectURL(new Blob([bytes], { type: mimeType }))
|
|
209
|
+
: `data:${mimeType};base64,${bytesToBase64(bytes)}`;
|
|
210
|
+
this.urls.set(path.toLowerCase(), url);
|
|
211
|
+
const size = sniffImageSize(bytes, mimeType);
|
|
212
|
+
if (size)
|
|
213
|
+
this.sizes.set(path.toLowerCase(), size);
|
|
214
|
+
return url;
|
|
215
|
+
}
|
|
216
|
+
async referenceKey(path) {
|
|
217
|
+
if (!this.options.sourceId)
|
|
218
|
+
return undefined;
|
|
219
|
+
this.sourceIdPromise ??= typeof this.options.sourceId === 'string'
|
|
220
|
+
? Promise.resolve(this.options.sourceId)
|
|
221
|
+
: this.options.sourceId();
|
|
222
|
+
return `${await this.sourceIdPromise}:${path.toLowerCase()}`;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
export async function mdzipArchiveSourceId(bytes) {
|
|
226
|
+
return `sha256:${await sha256(bytes)}`;
|
|
227
|
+
}
|
|
228
|
+
async function contentAddress(bytes, mimeType) {
|
|
229
|
+
const mime = new TextEncoder().encode(`${mimeType}\0`);
|
|
230
|
+
const input = new Uint8Array(mime.length + bytes.length);
|
|
231
|
+
input.set(mime);
|
|
232
|
+
input.set(bytes, mime.length);
|
|
233
|
+
return `sha256:${await sha256(input)}`;
|
|
234
|
+
}
|
|
235
|
+
async function sha256(bytes) {
|
|
236
|
+
const input = bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);
|
|
237
|
+
const digest = await crypto.subtle.digest('SHA-256', input);
|
|
238
|
+
return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, '0')).join('');
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Reads intrinsic pixel dimensions from common image headers without decoding
|
|
242
|
+
* the image. Returns `undefined` for formats it does not recognize.
|
|
243
|
+
*/
|
|
244
|
+
export function sniffImageSize(bytes, mimeType) {
|
|
245
|
+
const len = bytes.length;
|
|
246
|
+
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
247
|
+
// PNG: 8-byte signature, then IHDR with big-endian width/height.
|
|
248
|
+
if (len >= 24 && bytes[0] === 0x89 && bytes[1] === 0x50 && bytes[2] === 0x4e && bytes[3] === 0x47) {
|
|
249
|
+
return { width: view.getUint32(16), height: view.getUint32(20) };
|
|
250
|
+
}
|
|
251
|
+
// GIF: 'GIF', then little-endian logical screen width/height.
|
|
252
|
+
if (len >= 10 && bytes[0] === 0x47 && bytes[1] === 0x49 && bytes[2] === 0x46) {
|
|
253
|
+
return { width: view.getUint16(6, true), height: view.getUint16(8, true) };
|
|
254
|
+
}
|
|
255
|
+
// BMP: 'BM', then signed little-endian width/height in the DIB header.
|
|
256
|
+
if (len >= 26 && bytes[0] === 0x42 && bytes[1] === 0x4d) {
|
|
257
|
+
return { width: Math.abs(view.getInt32(18, true)), height: Math.abs(view.getInt32(22, true)) };
|
|
258
|
+
}
|
|
259
|
+
// WebP: RIFF container with a WEBP fourcc and one of three chunk forms.
|
|
260
|
+
if (len >= 30
|
|
261
|
+
&& bytes[0] === 0x52 && bytes[1] === 0x49 && bytes[2] === 0x46 && bytes[3] === 0x46
|
|
262
|
+
&& bytes[8] === 0x57 && bytes[9] === 0x45 && bytes[10] === 0x42 && bytes[11] === 0x50) {
|
|
263
|
+
const chunk = String.fromCharCode(bytes[12], bytes[13], bytes[14], bytes[15]);
|
|
264
|
+
if (chunk === 'VP8 ') {
|
|
265
|
+
return { width: view.getUint16(26, true) & 0x3fff, height: view.getUint16(28, true) & 0x3fff };
|
|
266
|
+
}
|
|
267
|
+
if (chunk === 'VP8L') {
|
|
268
|
+
const b0 = bytes[21], b1 = bytes[22], b2 = bytes[23], b3 = bytes[24];
|
|
269
|
+
return {
|
|
270
|
+
width: 1 + (((b1 & 0x3f) << 8) | b0),
|
|
271
|
+
height: 1 + (((b3 & 0x0f) << 10) | (b2 << 2) | ((b1 & 0xc0) >> 6))
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
if (chunk === 'VP8X') {
|
|
275
|
+
return {
|
|
276
|
+
width: 1 + (bytes[24] | (bytes[25] << 8) | (bytes[26] << 16)),
|
|
277
|
+
height: 1 + (bytes[27] | (bytes[28] << 8) | (bytes[29] << 16))
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
// JPEG: scan for a Start-Of-Frame marker carrying the dimensions.
|
|
282
|
+
if (len >= 4 && bytes[0] === 0xff && bytes[1] === 0xd8) {
|
|
283
|
+
let offset = 2;
|
|
284
|
+
while (offset + 9 < len) {
|
|
285
|
+
if (bytes[offset] !== 0xff) {
|
|
286
|
+
offset += 1;
|
|
287
|
+
continue;
|
|
288
|
+
}
|
|
289
|
+
const marker = bytes[offset + 1];
|
|
290
|
+
if (marker >= 0xc0 && marker <= 0xcf
|
|
291
|
+
&& marker !== 0xc4 && marker !== 0xc8 && marker !== 0xcc) {
|
|
292
|
+
return { height: view.getUint16(offset + 5), width: view.getUint16(offset + 7) };
|
|
293
|
+
}
|
|
294
|
+
const segmentLength = view.getUint16(offset + 2);
|
|
295
|
+
if (segmentLength < 2)
|
|
296
|
+
break;
|
|
297
|
+
offset += 2 + segmentLength;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
// SVG: read width/height or fall back to the viewBox extents.
|
|
301
|
+
if (mimeType === 'image/svg+xml' || (len >= 5 && bytes[0] === 0x3c)) {
|
|
302
|
+
const text = new TextDecoder('utf-8', { fatal: false }).decode(bytes.subarray(0, Math.min(len, 2048)));
|
|
303
|
+
const svg = /<svg[^>]*>/i.exec(text)?.[0];
|
|
304
|
+
if (svg) {
|
|
305
|
+
const width = /\bwidth\s*=\s*["']?\s*([\d.]+)/i.exec(svg)?.[1];
|
|
306
|
+
const height = /\bheight\s*=\s*["']?\s*([\d.]+)/i.exec(svg)?.[1];
|
|
307
|
+
if (width && height)
|
|
308
|
+
return { width: Math.round(Number(width)), height: Math.round(Number(height)) };
|
|
309
|
+
const viewBox = /\bviewBox\s*=\s*["']?\s*[\d.]+\s+[\d.]+\s+([\d.]+)\s+([\d.]+)/i.exec(svg);
|
|
310
|
+
if (viewBox)
|
|
311
|
+
return { width: Math.round(Number(viewBox[1])), height: Math.round(Number(viewBox[2])) };
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
return undefined;
|
|
315
|
+
}
|
|
316
|
+
function resolveAssetPath(rawPath, currentPath, assets) {
|
|
317
|
+
if (/^(?:[a-z][a-z\d+.-]*:|\/\/|#)/i.test(rawPath))
|
|
318
|
+
return undefined;
|
|
319
|
+
let decoded;
|
|
320
|
+
try {
|
|
321
|
+
decoded = decodeURIComponent(rawPath.replace(/^<|>$/g, '').split(/[?#]/, 1)[0] ?? '');
|
|
322
|
+
}
|
|
323
|
+
catch {
|
|
324
|
+
return undefined;
|
|
325
|
+
}
|
|
326
|
+
const direct = assets.find((asset) => asset.path.toLowerCase() === decoded.replace(/^[/\\]+/, '').toLowerCase());
|
|
327
|
+
if (direct)
|
|
328
|
+
return direct.path;
|
|
329
|
+
const base = currentPath.includes('/') ? currentPath.slice(0, currentPath.lastIndexOf('/') + 1) : '';
|
|
330
|
+
const normalized = normalizePath(decoded.startsWith('/') ? decoded.slice(1) : `${base}${decoded}`);
|
|
331
|
+
return assets.find((asset) => asset.path.toLowerCase() === normalized.toLowerCase())?.path;
|
|
332
|
+
}
|
|
333
|
+
function normalizePath(path) {
|
|
334
|
+
const parts = [];
|
|
335
|
+
for (const part of path.replace(/\\/g, '/').split('/')) {
|
|
336
|
+
if (!part || part === '.')
|
|
337
|
+
continue;
|
|
338
|
+
if (part === '..')
|
|
339
|
+
parts.pop();
|
|
340
|
+
else
|
|
341
|
+
parts.push(part);
|
|
342
|
+
}
|
|
343
|
+
return parts.join('/');
|
|
344
|
+
}
|
|
345
|
+
function bytesToBase64(bytes) {
|
|
346
|
+
let binary = '';
|
|
347
|
+
for (let index = 0; index < bytes.length; index += 0x8000) {
|
|
348
|
+
binary += String.fromCharCode(...bytes.subarray(index, index + 0x8000));
|
|
349
|
+
}
|
|
350
|
+
return btoa(binary);
|
|
351
|
+
}
|
|
352
|
+
function request(value) {
|
|
353
|
+
return new Promise((resolve, reject) => {
|
|
354
|
+
value.onsuccess = () => resolve(value.result);
|
|
355
|
+
value.onerror = () => reject(value.error ?? new Error('IndexedDB request failed.'));
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
function transactionDone(transaction) {
|
|
359
|
+
return new Promise((resolve, reject) => {
|
|
360
|
+
transaction.oncomplete = () => resolve();
|
|
361
|
+
transaction.onerror = () => reject(transaction.error ?? new Error('IndexedDB transaction failed.'));
|
|
362
|
+
transaction.onabort = () => reject(transaction.error ?? new Error('IndexedDB transaction aborted.'));
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
//# sourceMappingURL=asset-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-cache.js","sourceRoot":"","sources":["../src/asset-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-view-css.d.ts","sourceRoot":"","sources":["../src/diff-view-css.ts"],"names":[],"mappings":"AAEA,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CA6CxD"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
const DIFF_STYLE_ID = 'mdzip-diff-view-styles';
|
|
2
|
+
export function injectDiffViewStyles(doc) {
|
|
3
|
+
if (doc.getElementById(DIFF_STYLE_ID))
|
|
4
|
+
return;
|
|
5
|
+
const style = doc.createElement('style');
|
|
6
|
+
style.id = DIFF_STYLE_ID;
|
|
7
|
+
style.textContent = `
|
|
8
|
+
.mdzip-diff-root{height:100%;display:flex;flex-direction:column;color:var(--mdzip-foreground-color,#24292f);background:var(--mdzip-background-color,#fff);font:14px system-ui,sans-serif}
|
|
9
|
+
.mdzip-diff-toolbar{display:flex;align-items:center;gap:4px;min-height:42px;padding:4px 8px;border-bottom:1px solid var(--mdzip-border-color,#d0d7de)}
|
|
10
|
+
.mdzip-diff-toolbar-actions{display:flex;align-items:center;gap:4px;margin-left:auto}
|
|
11
|
+
.mdzip-diff-toolbar-button{min-width:32px;height:32px;display:inline-grid;place-items:center;border:0;border-radius:6px;padding:6px;background:transparent;color:inherit;cursor:pointer;transition:background .12s ease,color .12s ease}
|
|
12
|
+
.mdzip-diff-toolbar-button[hidden]{display:none}
|
|
13
|
+
.mdzip-diff-toolbar-button:hover:not(:disabled){background:var(--mdzip-hover-background-color,#f3f4f6)}
|
|
14
|
+
.mdzip-diff-toolbar-button.active{color:var(--mdzip-accent-color,#0969da)}
|
|
15
|
+
.mdzip-diff-toolbar-button:focus-visible{outline:2px solid var(--mdzip-accent-color,#0969da);outline-offset:-2px}
|
|
16
|
+
.mdzip-diff-toolbar-button:disabled{opacity:.5;cursor:default}.mdzip-diff-toolbar-icon{width:18px;height:18px}
|
|
17
|
+
.mdzip-diff-workspace{flex:1;min-height:0;display:flex;flex-direction:row}
|
|
18
|
+
.mdzip-diff-nav{flex:0 0 var(--mdzip-diff-nav-width,280px);width:var(--mdzip-diff-nav-width,280px);min-width:0;border-right:1px solid var(--mdzip-border-color,#d0d7de);overflow:auto;transition:flex-basis .18s ease,width .18s ease,opacity .14s ease,border-color .18s ease}
|
|
19
|
+
.mdzip-diff-nav.hidden{flex-basis:0;width:0;opacity:0;overflow:hidden;pointer-events:none;border-right-color:transparent}
|
|
20
|
+
.mdzip-diff-summary{position:sticky;top:0;z-index:1;padding:12px;background:inherit;border-bottom:1px solid var(--mdzip-border-color,#d0d7de)}
|
|
21
|
+
.mdzip-diff-labels{font-weight:600;margin-bottom:8px;overflow-wrap:anywhere}
|
|
22
|
+
.mdzip-diff-counts{color:var(--mdzip-muted-foreground-color,#57606a);font-size:12px;margin-bottom:8px}
|
|
23
|
+
.mdzip-diff-filter{display:flex;gap:6px;align-items:center;font-size:12px}
|
|
24
|
+
.mdzip-diff-list{display:flex;flex-direction:column;padding:6px}
|
|
25
|
+
.mdzip-diff-directory{padding:7px 8px 3px calc(8px + var(--mdzip-diff-depth)*16px);font-size:12px;font-weight:600;color:var(--mdzip-muted-foreground-color,#57606a)}
|
|
26
|
+
.mdzip-diff-directory::before{content:"▾";display:inline-block;width:18px}
|
|
27
|
+
.mdzip-diff-entry{display:grid;grid-template-columns:18px 1fr;gap:4px;border:0;background:transparent;color:inherit;text-align:left;padding:6px 8px 6px calc(8px + var(--mdzip-diff-depth)*16px);border-radius:4px;cursor:pointer}
|
|
28
|
+
.mdzip-diff-entry:hover,.mdzip-diff-entry.active{background:var(--mdzip-hover-background-color,#f3f4f6)}
|
|
29
|
+
.mdzip-diff-entry:focus-visible{outline:2px solid var(--mdzip-accent-color,#0969da);outline-offset:-2px}
|
|
30
|
+
.mdzip-diff-entry.added .mdzip-diff-status{color:#1a7f37}.mdzip-diff-entry.removed .mdzip-diff-status{color:#cf222e}.mdzip-diff-entry.changed .mdzip-diff-status{color:#9a6700}
|
|
31
|
+
.mdzip-diff-entry.unchanged{opacity:.65}.mdzip-diff-path{overflow-wrap:anywhere}
|
|
32
|
+
.mdzip-diff-content{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}
|
|
33
|
+
.mdzip-diff-heading{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--mdzip-border-color,#d0d7de);font-weight:600}
|
|
34
|
+
.mdzip-diff-heading>div{padding:10px 14px;overflow-wrap:anywhere}.mdzip-diff-heading>div+div{border-left:1px solid var(--mdzip-border-color,#d0d7de)}
|
|
35
|
+
.mdzip-diff-body{flex:1;min-height:0;overflow:auto;position:relative}.mdzip-diff-body .cm-mergeView{height:100%;overflow:auto}
|
|
36
|
+
.mdzip-diff-body .cm-editor{height:100%;font-size:13px}.mdzip-diff-body .cm-scroller{overflow:auto}
|
|
37
|
+
.mdzip-diff-message{padding:24px;color:var(--mdzip-muted-foreground-color,#57606a)}
|
|
38
|
+
.mdzip-diff-pair{display:grid;grid-template-columns:1fr 1fr;height:100%}.mdzip-diff-side{padding:18px;overflow:auto;min-width:0}
|
|
39
|
+
.mdzip-diff-side+.mdzip-diff-side{border-left:1px solid var(--mdzip-border-color,#d0d7de)}
|
|
40
|
+
.mdzip-diff-text-side{padding:0}.mdzip-diff-text-side .cm-editor{height:100%}
|
|
41
|
+
.mdzip-diff-missing{display:grid;place-items:center;color:var(--mdzip-muted-foreground-color,#57606a);font-style:italic}
|
|
42
|
+
.mdzip-diff-image{max-width:100%;max-height:70vh;display:block;margin:auto}.mdzip-diff-meta{margin-top:12px;white-space:pre-wrap;font:12px ui-monospace,monospace}
|
|
43
|
+
.mdzip-diff-error{color:#cf222e}
|
|
44
|
+
@media(max-width:700px){.mdzip-diff-workspace{flex-direction:column}.mdzip-diff-nav{flex:0 0 35%;width:auto;min-height:140px;border-right:0;border-bottom:1px solid var(--mdzip-border-color,#d0d7de);transition:flex-basis .18s ease,opacity .14s ease,border-color .18s ease}.mdzip-diff-nav.hidden{flex-basis:0;min-height:0;height:0;border-bottom-color:transparent}}
|
|
45
|
+
@media(prefers-reduced-motion:reduce){.mdzip-diff-nav{transition:none}}
|
|
46
|
+
`;
|
|
47
|
+
doc.head.appendChild(style);
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=diff-view-css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-view-css.js","sourceRoot":"","sources":["../src/diff-view-css.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAE/C,MAAM,UAAU,oBAAoB,CAAC,GAAa;IAChD,IAAI,GAAG,CAAC,cAAc,CAAC,aAAa,CAAC;QAAE,OAAO;IAC9C,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,GAAG,aAAa,CAAC;IACzB,KAAK,CAAC,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCrB,CAAC;IACA,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { type ArchiveInventoryDiffEntry } from './diff.js';
|
|
2
|
+
export interface MdzipDiffSideInput {
|
|
3
|
+
bytes?: Uint8Array;
|
|
4
|
+
label?: string;
|
|
5
|
+
fileName?: string;
|
|
6
|
+
missingMessage?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface MdzipDiffSelectionEvent {
|
|
9
|
+
path: string;
|
|
10
|
+
entry: ArchiveInventoryDiffEntry;
|
|
11
|
+
}
|
|
12
|
+
export type MdzipDiffToolbarIcon = 'refresh';
|
|
13
|
+
export interface MdzipDiffToolbarAction {
|
|
14
|
+
id: string;
|
|
15
|
+
label: string;
|
|
16
|
+
icon?: MdzipDiffToolbarIcon;
|
|
17
|
+
disabled?: boolean;
|
|
18
|
+
pressed?: boolean;
|
|
19
|
+
run: () => void | Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Toggles for the library-owned toolbar controls. All default to `true`.
|
|
23
|
+
* Host-specific actions are supplied separately via `toolbarActions`.
|
|
24
|
+
*/
|
|
25
|
+
export interface MdzipDiffControlsOptions {
|
|
26
|
+
/** Navigation pane visibility toggle. */
|
|
27
|
+
navigation?: boolean;
|
|
28
|
+
/** Previous/next change traversal buttons. */
|
|
29
|
+
changeTraversal?: boolean;
|
|
30
|
+
/** Show-unchanged pressed toggle. */
|
|
31
|
+
showUnchanged?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface MdzipDiffViewOptions {
|
|
34
|
+
before: MdzipDiffSideInput;
|
|
35
|
+
after: MdzipDiffSideInput;
|
|
36
|
+
initialPath?: string;
|
|
37
|
+
showUnchanged?: boolean;
|
|
38
|
+
navigationVisible?: boolean;
|
|
39
|
+
controls?: MdzipDiffControlsOptions;
|
|
40
|
+
toolbarActions?: readonly MdzipDiffToolbarAction[];
|
|
41
|
+
onSelectionChanged?: (event: MdzipDiffSelectionEvent) => void;
|
|
42
|
+
onFailed?: (error: Error) => void;
|
|
43
|
+
}
|
|
44
|
+
export declare class MdzipDiffView {
|
|
45
|
+
private options;
|
|
46
|
+
private generation;
|
|
47
|
+
private selectionGeneration;
|
|
48
|
+
private before;
|
|
49
|
+
private after;
|
|
50
|
+
private diff;
|
|
51
|
+
private selectedPath;
|
|
52
|
+
private showUnchanged;
|
|
53
|
+
private navigationVisible;
|
|
54
|
+
private controls;
|
|
55
|
+
private mergeView;
|
|
56
|
+
private editorViews;
|
|
57
|
+
private objectUrls;
|
|
58
|
+
private openingOptions;
|
|
59
|
+
private openingPromise;
|
|
60
|
+
private toolbarActions;
|
|
61
|
+
private pendingToolbarAction;
|
|
62
|
+
private readonly root;
|
|
63
|
+
private readonly workspace;
|
|
64
|
+
private readonly toolbar;
|
|
65
|
+
private readonly navButton;
|
|
66
|
+
private readonly prevChangeButton;
|
|
67
|
+
private readonly nextChangeButton;
|
|
68
|
+
private readonly showUnchangedButton;
|
|
69
|
+
private readonly actionHost;
|
|
70
|
+
private readonly nav;
|
|
71
|
+
private readonly summary;
|
|
72
|
+
private readonly list;
|
|
73
|
+
private readonly heading;
|
|
74
|
+
private readonly body;
|
|
75
|
+
constructor(container: HTMLElement, options: MdzipDiffViewOptions);
|
|
76
|
+
open(options: MdzipDiffViewOptions): Promise<void>;
|
|
77
|
+
private openComparison;
|
|
78
|
+
openPath(path: string): Promise<boolean>;
|
|
79
|
+
setShowUnchanged(show: boolean): void;
|
|
80
|
+
/**
|
|
81
|
+
* Selects the previous entry whose status is not `unchanged`. Resolves
|
|
82
|
+
* `false` (without changing selection) when already at the first change.
|
|
83
|
+
*/
|
|
84
|
+
openPreviousChange(): Promise<boolean>;
|
|
85
|
+
/**
|
|
86
|
+
* Selects the next entry whose status is not `unchanged`. Resolves `false`
|
|
87
|
+
* (without changing selection) when already at the last change.
|
|
88
|
+
*/
|
|
89
|
+
openNextChange(): Promise<boolean>;
|
|
90
|
+
private adjacentChange;
|
|
91
|
+
setNavigationVisible(visible: boolean): void;
|
|
92
|
+
setToolbarActions(actions: readonly MdzipDiffToolbarAction[]): void;
|
|
93
|
+
destroy(): void;
|
|
94
|
+
private renderToolbar;
|
|
95
|
+
/** Syncs the pressed/disabled state of the built-in change + filter controls. */
|
|
96
|
+
private updateBuiltInControls;
|
|
97
|
+
private runToolbarAction;
|
|
98
|
+
private openSide;
|
|
99
|
+
private renderNavigation;
|
|
100
|
+
private renderSelection;
|
|
101
|
+
private renderText;
|
|
102
|
+
private textSide;
|
|
103
|
+
private renderImages;
|
|
104
|
+
private imageSide;
|
|
105
|
+
private renderBinary;
|
|
106
|
+
private binarySide;
|
|
107
|
+
private createPair;
|
|
108
|
+
private renderEmptyState;
|
|
109
|
+
private disposeSelection;
|
|
110
|
+
private handleNavigationKey;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=diff-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-view.d.ts","sourceRoot":"","sources":["../src/diff-view.ts"],"names":[],"mappings":"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"}
|