@mdzip/editor 1.3.21 → 1.4.4
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 +62 -0
- package/dist/archive-utils.d.ts.map +1 -1
- package/dist/archive-utils.js +16 -2
- package/dist/archive-utils.js.map +1 -1
- package/dist/asset-cache.d.ts +14 -0
- package/dist/asset-cache.d.ts.map +1 -1
- package/dist/asset-cache.js +57 -0
- package/dist/asset-cache.js.map +1 -1
- package/dist/front-matter-extension.d.ts +45 -0
- package/dist/front-matter-extension.d.ts.map +1 -0
- package/dist/front-matter-extension.js +114 -0
- package/dist/front-matter-extension.js.map +1 -0
- package/dist/front-matter.d.ts +18 -0
- package/dist/front-matter.d.ts.map +1 -0
- package/dist/front-matter.js +48 -0
- package/dist/front-matter.js.map +1 -0
- package/dist/highlight-core.d.ts +3 -0
- package/dist/highlight-core.d.ts.map +1 -0
- package/dist/highlight-core.js +53 -0
- package/dist/highlight-core.js.map +1 -0
- package/dist/image-edit.d.ts +26 -0
- package/dist/image-edit.d.ts.map +1 -0
- package/dist/image-edit.js +195 -0
- package/dist/image-edit.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/library-info.d.ts +2 -2
- package/dist/library-info.js +2 -2
- package/dist/library-info.js.map +1 -1
- package/dist/mdz-archive-worker-protocol.d.ts +36 -0
- package/dist/mdz-archive-worker-protocol.d.ts.map +1 -0
- package/dist/mdz-archive-worker-protocol.js +2 -0
- package/dist/mdz-archive-worker-protocol.js.map +1 -0
- package/dist/mdz-archive.worker-client.d.ts +30 -0
- package/dist/mdz-archive.worker-client.d.ts.map +1 -0
- package/dist/mdz-archive.worker-client.js +97 -0
- package/dist/mdz-archive.worker-client.js.map +1 -0
- package/dist/mdz-archive.worker.d.ts +2 -0
- package/dist/mdz-archive.worker.d.ts.map +1 -0
- package/dist/mdz-archive.worker.js +8870 -0
- package/dist/mdz-archive.worker.js.map +1 -0
- package/dist/mermaid.d.ts.map +1 -1
- package/dist/mermaid.js +60 -41
- package/dist/mermaid.js.map +1 -1
- package/dist/metadata.d.ts +1 -1
- package/dist/metadata.d.ts.map +1 -1
- package/dist/metadata.js +12 -2
- package/dist/metadata.js.map +1 -1
- package/dist/preview.d.ts +1 -0
- package/dist/preview.d.ts.map +1 -1
- package/dist/preview.js +1 -0
- package/dist/preview.js.map +1 -1
- package/dist/rendering.d.ts +114 -0
- package/dist/rendering.d.ts.map +1 -1
- package/dist/rendering.js +153 -1
- package/dist/rendering.js.map +1 -1
- package/dist/stats.d.ts +23 -0
- package/dist/stats.d.ts.map +1 -0
- package/dist/stats.js +31 -0
- package/dist/stats.js.map +1 -0
- package/dist/view-css.d.ts.map +1 -1
- package/dist/view-css.js +112 -0
- package/dist/view-css.js.map +1 -1
- package/dist/view.d.ts +421 -1
- package/dist/view.d.ts.map +1 -1
- package/dist/view.js +2219 -410
- package/dist/view.js.map +1 -1
- package/dist/workspace.d.ts +14 -0
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +53 -41
- package/dist/workspace.js.map +1 -1
- package/package.json +11 -5
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import hljs from 'highlight.js/lib/core';
|
|
2
|
+
import bash from 'highlight.js/lib/languages/bash';
|
|
3
|
+
import cpp from 'highlight.js/lib/languages/cpp';
|
|
4
|
+
import csharp from 'highlight.js/lib/languages/csharp';
|
|
5
|
+
import css from 'highlight.js/lib/languages/css';
|
|
6
|
+
import go from 'highlight.js/lib/languages/go';
|
|
7
|
+
import java from 'highlight.js/lib/languages/java';
|
|
8
|
+
import javascript from 'highlight.js/lib/languages/javascript';
|
|
9
|
+
import json from 'highlight.js/lib/languages/json';
|
|
10
|
+
import markdown from 'highlight.js/lib/languages/markdown';
|
|
11
|
+
import python from 'highlight.js/lib/languages/python';
|
|
12
|
+
import rust from 'highlight.js/lib/languages/rust';
|
|
13
|
+
import sql from 'highlight.js/lib/languages/sql';
|
|
14
|
+
import typescript from 'highlight.js/lib/languages/typescript';
|
|
15
|
+
import xml from 'highlight.js/lib/languages/xml';
|
|
16
|
+
import yaml from 'highlight.js/lib/languages/yaml';
|
|
17
|
+
/**
|
|
18
|
+
* `highlight.js`'s default entry point (`import hljs from 'highlight.js'`)
|
|
19
|
+
* registers every bundled language grammar at import time — a meaningful
|
|
20
|
+
* chunk of the webview bundle (#45). This registers `highlight.js/lib/core`
|
|
21
|
+
* with only the languages `DEFAULT_CODE_BLOCK_LANGUAGES` (view.ts) offers in
|
|
22
|
+
* the code-block-language picker, plus `xml`/`tsx` for fence-info spellings
|
|
23
|
+
* that don't match a toolbar id 1:1. A fenced code block naming a language
|
|
24
|
+
* outside this set renders as plain, unhighlighted code (both call sites
|
|
25
|
+
* already guard with `hljs.getLanguage(language)` before highlighting) —
|
|
26
|
+
* same as today's behavior for a made-up language name, just now also true
|
|
27
|
+
* for real but uncurated languages.
|
|
28
|
+
*/
|
|
29
|
+
hljs.registerLanguage('bash', bash);
|
|
30
|
+
hljs.registerLanguage('cpp', cpp);
|
|
31
|
+
hljs.registerLanguage('csharp', csharp);
|
|
32
|
+
hljs.registerLanguage('css', css);
|
|
33
|
+
hljs.registerLanguage('go', go);
|
|
34
|
+
hljs.registerLanguage('java', java);
|
|
35
|
+
hljs.registerLanguage('javascript', javascript);
|
|
36
|
+
hljs.registerLanguage('json', json);
|
|
37
|
+
hljs.registerLanguage('markdown', markdown);
|
|
38
|
+
hljs.registerLanguage('python', python);
|
|
39
|
+
hljs.registerLanguage('rust', rust);
|
|
40
|
+
hljs.registerLanguage('sql', sql);
|
|
41
|
+
hljs.registerLanguage('typescript', typescript);
|
|
42
|
+
// highlight.js has no distinct tsx grammar; the typescript grammar handles
|
|
43
|
+
// JSX/TSX well enough in practice, and DEFAULT_CODE_BLOCK_LANGUAGES offers
|
|
44
|
+
// 'tsx' as its own toolbar entry (view.ts), so it needs its own registration
|
|
45
|
+
// key rather than relying on 'typescript' aliasing to it.
|
|
46
|
+
hljs.registerLanguage('tsx', typescript);
|
|
47
|
+
// highlight.js's HTML grammar lives under the 'xml' module; register it
|
|
48
|
+
// under both keys since fenced blocks are written as both ```html and ```xml.
|
|
49
|
+
hljs.registerLanguage('html', xml);
|
|
50
|
+
hljs.registerLanguage('xml', xml);
|
|
51
|
+
hljs.registerLanguage('yaml', yaml);
|
|
52
|
+
export default hljs;
|
|
53
|
+
//# sourceMappingURL=highlight-core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight-core.js","sourceRoot":"","sources":["../src/highlight-core.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,uBAAuB,CAAC;AACzC,OAAO,IAAI,MAAM,iCAAiC,CAAC;AACnD,OAAO,GAAG,MAAM,gCAAgC,CAAC;AACjD,OAAO,MAAM,MAAM,mCAAmC,CAAC;AACvD,OAAO,GAAG,MAAM,gCAAgC,CAAC;AACjD,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAC/C,OAAO,IAAI,MAAM,iCAAiC,CAAC;AACnD,OAAO,UAAU,MAAM,uCAAuC,CAAC;AAC/D,OAAO,IAAI,MAAM,iCAAiC,CAAC;AACnD,OAAO,QAAQ,MAAM,qCAAqC,CAAC;AAC3D,OAAO,MAAM,MAAM,mCAAmC,CAAC;AACvD,OAAO,IAAI,MAAM,iCAAiC,CAAC;AACnD,OAAO,GAAG,MAAM,gCAAgC,CAAC;AACjD,OAAO,UAAU,MAAM,uCAAuC,CAAC;AAC/D,OAAO,GAAG,MAAM,gCAAgC,CAAC;AACjD,OAAO,IAAI,MAAM,iCAAiC,CAAC;AAEnD;;;;;;;;;;;GAWG;AACH,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACpC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAClC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACxC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAChC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACpC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAChD,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACpC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAC5C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACxC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACpC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAClC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAChD,2EAA2E;AAC3E,2EAA2E;AAC3E,6EAA6E;AAC7E,0DAA0D;AAC1D,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACzC,wEAAwE;AACxE,8EAA8E;AAC9E,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACnC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAClC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAEpC,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { EditorState } from '@codemirror/state';
|
|
2
|
+
import type { MdzipImageInsertDecision, MdzipImageInsertOutputMode, MdzipImagePosition } from './view.js';
|
|
3
|
+
export interface MdzipParsedImageReference {
|
|
4
|
+
kind: MdzipImageInsertOutputMode;
|
|
5
|
+
/** Exact doc range to replace when applying an edit decision. Half-open. */
|
|
6
|
+
from: number;
|
|
7
|
+
to: number;
|
|
8
|
+
/** Text currently at [from, to) — used as a race guard before applying an edit. */
|
|
9
|
+
raw: string;
|
|
10
|
+
src: string;
|
|
11
|
+
altText: string;
|
|
12
|
+
width?: number;
|
|
13
|
+
height?: number;
|
|
14
|
+
position: MdzipImagePosition;
|
|
15
|
+
}
|
|
16
|
+
export declare function escapeMarkdownImageAlt(value: string): string;
|
|
17
|
+
/** Finds the image reference (Markdown or raw HTML) enclosing `offset`, if any. */
|
|
18
|
+
export declare function findImageReferenceAtOffset(state: EditorState, offset: number): MdzipParsedImageReference | null;
|
|
19
|
+
/**
|
|
20
|
+
* Formats a decision as replacement text for an existing image's exact
|
|
21
|
+
* range. Unlike `formatImageInsertMarkdown`, this never pads with
|
|
22
|
+
* surrounding blank lines — the caller replaces an already-delimited
|
|
23
|
+
* `[from, to)` span, not inserting at an arbitrary cursor position.
|
|
24
|
+
*/
|
|
25
|
+
export declare function formatImageEditMarkdown(src: string, decision: MdzipImageInsertDecision): string;
|
|
26
|
+
//# sourceMappingURL=image-edit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-edit.d.ts","sourceRoot":"","sources":["../src/image-edit.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE1G,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,0BAA0B,CAAC;IACjC,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,mFAAmF;IACnF,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,kBAAkB,CAAC;CAC9B;AA6CD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5D;AA4HD,mFAAmF;AACnF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,yBAAyB,GAAG,IAAI,CAE/G;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,wBAAwB,GAAG,MAAM,CAmB/F"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
// Locates an existing image reference (Markdown `![]()` or raw HTML `<img>`,
|
|
2
|
+
// optionally wrapped in `<p align="...">`) around a document offset, and
|
|
3
|
+
// formats a decision back into replacement text for that exact range. Pure
|
|
4
|
+
// text/syntax-tree logic — no DOM, no MdzipWorkspaceView dependency — so it
|
|
5
|
+
// can be unit tested standalone and reused by the click-to-edit affordance
|
|
6
|
+
// in view.ts.
|
|
7
|
+
import { syntaxTree } from '@codemirror/language';
|
|
8
|
+
import { escapeHtml } from './workspace-view.js';
|
|
9
|
+
const IMAGE_NODE_NAMES = new Set(['Image']);
|
|
10
|
+
const HTML_CONTAINER_NODE_NAMES = new Set(['HTMLBlock', 'HTMLTag']);
|
|
11
|
+
const IMG_TAG_RE = /<img\b[^>]*>/gi;
|
|
12
|
+
const ATTR_RE = /([a-zA-Z:-]+)\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'>]+))/g;
|
|
13
|
+
const WRAP_P_RE = /^<p\b[^>]*\salign\s*=\s*(?:"([^"]*)"|'([^']*)'|(\S+))[^>]*>\s*<img\b[^>]*>\s*<\/p>\s*$/i;
|
|
14
|
+
/**
|
|
15
|
+
* Finds the enclosing node of one of `names` at `offset`, trying both sides
|
|
16
|
+
* of the offset (a click can land right at a node's opening or closing
|
|
17
|
+
* boundary, and `resolveInner`'s `side` argument only favors one direction).
|
|
18
|
+
*/
|
|
19
|
+
function resolveAncestorNode(state, offset, names) {
|
|
20
|
+
const tree = syntaxTree(state);
|
|
21
|
+
for (const side of [-1, 1]) {
|
|
22
|
+
let node = tree.resolveInner(offset, side);
|
|
23
|
+
while (node) {
|
|
24
|
+
if (names.has(node.name)) {
|
|
25
|
+
return node;
|
|
26
|
+
}
|
|
27
|
+
node = node.parent;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
function parseDim(value) {
|
|
33
|
+
if (!value) {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
const parsed = Number(value);
|
|
37
|
+
return Number.isFinite(parsed) && parsed > 0 ? Math.round(parsed) : undefined;
|
|
38
|
+
}
|
|
39
|
+
function unescapeHtml(value) {
|
|
40
|
+
return value
|
|
41
|
+
.replace(/</g, '<')
|
|
42
|
+
.replace(/>/g, '>')
|
|
43
|
+
.replace(/"/g, '"')
|
|
44
|
+
.replace(/'/g, "'")
|
|
45
|
+
.replace(/&/g, '&');
|
|
46
|
+
}
|
|
47
|
+
export function escapeMarkdownImageAlt(value) {
|
|
48
|
+
return value.replace(/\\/g, '\\\\').replace(/]/g, '\\]');
|
|
49
|
+
}
|
|
50
|
+
function unescapeMarkdownImageAlt(value) {
|
|
51
|
+
return value.replace(/\\\\|\\]/g, (match) => (match === '\\\\' ? '\\' : ']'));
|
|
52
|
+
}
|
|
53
|
+
function parseHtmlAttributes(tagSource) {
|
|
54
|
+
const attrs = new Map();
|
|
55
|
+
ATTR_RE.lastIndex = 0;
|
|
56
|
+
let match;
|
|
57
|
+
while ((match = ATTR_RE.exec(tagSource))) {
|
|
58
|
+
attrs.set(match[1].toLowerCase(), match[2] ?? match[3] ?? match[4] ?? '');
|
|
59
|
+
}
|
|
60
|
+
return attrs;
|
|
61
|
+
}
|
|
62
|
+
function parseMarkdownImageAt(state, offset) {
|
|
63
|
+
const found = resolveAncestorNode(state, offset, IMAGE_NODE_NAMES);
|
|
64
|
+
if (!found) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
const urlNode = found.getChild('URL');
|
|
68
|
+
if (!urlNode) {
|
|
69
|
+
// Reference-style `![alt][label]` has no URL child — out of scope.
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
const marks = found.getChildren('LinkMark');
|
|
73
|
+
if (marks.length < 2) {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
const doc = state.doc;
|
|
77
|
+
const altText = unescapeMarkdownImageAlt(doc.sliceString(marks[0].to, marks[1].from));
|
|
78
|
+
const src = doc.sliceString(urlNode.from, urlNode.to);
|
|
79
|
+
return {
|
|
80
|
+
kind: 'markdown',
|
|
81
|
+
from: found.from,
|
|
82
|
+
to: found.to,
|
|
83
|
+
raw: doc.sliceString(found.from, found.to),
|
|
84
|
+
src,
|
|
85
|
+
altText,
|
|
86
|
+
width: undefined,
|
|
87
|
+
height: undefined,
|
|
88
|
+
position: 'inline'
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function parseHtmlImageAt(state, offset) {
|
|
92
|
+
const container = resolveAncestorNode(state, offset, HTML_CONTAINER_NODE_NAMES);
|
|
93
|
+
if (!container) {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
const doc = state.doc;
|
|
97
|
+
const containerText = doc.sliceString(container.from, container.to);
|
|
98
|
+
// `<p align="...">` wrapping is checked against the whole block first,
|
|
99
|
+
// independent of exactly where within it `offset` lands — the wrapper is
|
|
100
|
+
// just position styling, so a click anywhere in the block (including on
|
|
101
|
+
// the <p> tag itself, not only the nested <img>) should hit the image.
|
|
102
|
+
if (container.name === 'HTMLBlock') {
|
|
103
|
+
const wrapperMatch = WRAP_P_RE.exec(containerText.trim());
|
|
104
|
+
if (wrapperMatch) {
|
|
105
|
+
IMG_TAG_RE.lastIndex = 0;
|
|
106
|
+
const imgMatch = IMG_TAG_RE.exec(containerText);
|
|
107
|
+
const attrs = imgMatch ? parseHtmlAttributes(imgMatch[0]) : null;
|
|
108
|
+
const src = attrs?.get('src');
|
|
109
|
+
if (attrs && src) {
|
|
110
|
+
const align = (wrapperMatch[1] ?? wrapperMatch[2] ?? wrapperMatch[3] ?? '').toLowerCase();
|
|
111
|
+
const position = align === 'left' || align === 'center' || align === 'right' ? align : 'inline';
|
|
112
|
+
return {
|
|
113
|
+
kind: 'html',
|
|
114
|
+
from: container.from,
|
|
115
|
+
to: container.to,
|
|
116
|
+
raw: containerText,
|
|
117
|
+
src: unescapeHtml(src),
|
|
118
|
+
altText: unescapeHtml(attrs.get('alt') ?? ''),
|
|
119
|
+
width: parseDim(attrs.get('width')),
|
|
120
|
+
height: parseDim(attrs.get('height')),
|
|
121
|
+
position
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Not (or not validly) a <p align> wrapper — fall back to locating the
|
|
127
|
+
// specific <img> tag offset lands on (needed for inline HTMLTag, and for
|
|
128
|
+
// an HTMLBlock containing more than one raw <img>).
|
|
129
|
+
IMG_TAG_RE.lastIndex = 0;
|
|
130
|
+
let match;
|
|
131
|
+
let hit = null;
|
|
132
|
+
while ((match = IMG_TAG_RE.exec(containerText))) {
|
|
133
|
+
const absFrom = container.from + match.index;
|
|
134
|
+
const absTo = absFrom + match[0].length;
|
|
135
|
+
if (offset >= absFrom && offset <= absTo) {
|
|
136
|
+
hit = { text: match[0], from: absFrom, to: absTo };
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if (!hit) {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
const attrs = parseHtmlAttributes(hit.text);
|
|
144
|
+
const src = attrs.get('src');
|
|
145
|
+
if (!src) {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
const width = parseDim(attrs.get('width'));
|
|
149
|
+
const height = parseDim(attrs.get('height'));
|
|
150
|
+
const altText = unescapeHtml(attrs.get('alt') ?? '');
|
|
151
|
+
const imgAlign = attrs.get('align')?.toLowerCase();
|
|
152
|
+
const position = imgAlign === 'left' ? 'wrap-left' : imgAlign === 'right' ? 'wrap-right' : 'inline';
|
|
153
|
+
return {
|
|
154
|
+
kind: 'html',
|
|
155
|
+
from: hit.from,
|
|
156
|
+
to: hit.to,
|
|
157
|
+
raw: hit.text,
|
|
158
|
+
src: unescapeHtml(src),
|
|
159
|
+
altText,
|
|
160
|
+
width,
|
|
161
|
+
height,
|
|
162
|
+
position
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
/** Finds the image reference (Markdown or raw HTML) enclosing `offset`, if any. */
|
|
166
|
+
export function findImageReferenceAtOffset(state, offset) {
|
|
167
|
+
return parseMarkdownImageAt(state, offset) ?? parseHtmlImageAt(state, offset);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Formats a decision as replacement text for an existing image's exact
|
|
171
|
+
* range. Unlike `formatImageInsertMarkdown`, this never pads with
|
|
172
|
+
* surrounding blank lines — the caller replaces an already-delimited
|
|
173
|
+
* `[from, to)` span, not inserting at an arbitrary cursor position.
|
|
174
|
+
*/
|
|
175
|
+
export function formatImageEditMarkdown(src, decision) {
|
|
176
|
+
if (decision.mode === 'html') {
|
|
177
|
+
const attrs = [`src="${escapeHtml(src)}"`, `alt="${escapeHtml(decision.altText)}"`];
|
|
178
|
+
if (decision.width) {
|
|
179
|
+
attrs.push(`width="${decision.width}"`);
|
|
180
|
+
}
|
|
181
|
+
if (decision.height) {
|
|
182
|
+
attrs.push(`height="${decision.height}"`);
|
|
183
|
+
}
|
|
184
|
+
if (decision.position === 'wrap-left' || decision.position === 'wrap-right') {
|
|
185
|
+
attrs.push(`align="${decision.position === 'wrap-left' ? 'left' : 'right'}"`);
|
|
186
|
+
}
|
|
187
|
+
const image = `<img ${attrs.join(' ')}>`;
|
|
188
|
+
if (decision.position === 'left' || decision.position === 'center' || decision.position === 'right') {
|
|
189
|
+
return `<p align="${decision.position}">${image}</p>`;
|
|
190
|
+
}
|
|
191
|
+
return image;
|
|
192
|
+
}
|
|
193
|
+
return ``;
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=image-edit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-edit.js","sourceRoot":"","sources":["../src/image-edit.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,8 +3,12 @@ export * from './archive-utils.js';
|
|
|
3
3
|
export * from './asset-cache.js';
|
|
4
4
|
export * from './browser.js';
|
|
5
5
|
export * from './diff.js';
|
|
6
|
+
export * from './front-matter.js';
|
|
7
|
+
export * from './front-matter-extension.js';
|
|
8
|
+
export * from './mdz-archive.worker-client.js';
|
|
6
9
|
export * from './metadata.js';
|
|
7
10
|
export * from './rendering.js';
|
|
11
|
+
export * from './stats.js';
|
|
8
12
|
export * from './theme.js';
|
|
9
13
|
export * from './view.js';
|
|
10
14
|
export * from './workspace.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,8 +2,12 @@ export * from './archive-utils.js';
|
|
|
2
2
|
export * from './asset-cache.js';
|
|
3
3
|
export * from './browser.js';
|
|
4
4
|
export * from './diff.js';
|
|
5
|
+
export * from './front-matter.js';
|
|
6
|
+
export * from './front-matter-extension.js';
|
|
7
|
+
export * from './mdz-archive.worker-client.js';
|
|
5
8
|
export * from './metadata.js';
|
|
6
9
|
export * from './rendering.js';
|
|
10
|
+
export * from './stats.js';
|
|
7
11
|
export * from './theme.js';
|
|
8
12
|
export * from './view.js';
|
|
9
13
|
export * from './workspace.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
|
package/dist/library-info.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
export declare const MDZIP_RUNTIME_LIBRARIES: readonly [{
|
|
2
2
|
readonly name: "@mdzip/editor";
|
|
3
|
-
readonly version: "1.
|
|
3
|
+
readonly version: "1.4.4";
|
|
4
4
|
readonly repositoryUrl: "https://github.com/mdzip-project/mdzip-editor";
|
|
5
5
|
readonly description: "MDZip workspace engine and browser UI.";
|
|
6
6
|
}, {
|
|
7
7
|
readonly name: "@mdzip/core-js";
|
|
8
|
-
readonly version: "1.
|
|
8
|
+
readonly version: "1.5.0";
|
|
9
9
|
readonly repositoryUrl: "https://github.com/mdzip-project/mdzip-core-js";
|
|
10
10
|
readonly description: "MDZip archive reading, writing, and validation.";
|
|
11
11
|
}, {
|
package/dist/library-info.js
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
export const MDZIP_RUNTIME_LIBRARIES = [
|
|
3
3
|
{
|
|
4
4
|
"name": "@mdzip/editor",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.4.4",
|
|
6
6
|
"repositoryUrl": "https://github.com/mdzip-project/mdzip-editor",
|
|
7
7
|
"description": "MDZip workspace engine and browser UI."
|
|
8
8
|
},
|
|
9
9
|
{
|
|
10
10
|
"name": "@mdzip/core-js",
|
|
11
|
-
"version": "1.
|
|
11
|
+
"version": "1.5.0",
|
|
12
12
|
"repositoryUrl": "https://github.com/mdzip-project/mdzip-core-js",
|
|
13
13
|
"description": "MDZip archive reading, writing, and validation."
|
|
14
14
|
},
|
package/dist/library-info.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"library-info.js","sourceRoot":"","sources":["../src/library-info.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC;QACE,MAAM,EAAE,eAAe;QACvB,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"library-info.js","sourceRoot":"","sources":["../src/library-info.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC;QACE,MAAM,EAAE,eAAe;QACvB,SAAS,EAAE,OAAO;QAClB,eAAe,EAAE,+CAA+C;QAChE,aAAa,EAAE,wCAAwC;KACxD;IACD;QACE,MAAM,EAAE,gBAAgB;QACxB,SAAS,EAAE,OAAO;QAClB,eAAe,EAAE,gDAAgD;QACjE,aAAa,EAAE,iDAAiD;KACjE;IACD;QACE,MAAM,EAAE,YAAY;QACpB,SAAS,EAAE,QAAQ;QACnB,eAAe,EAAE,mCAAmC;QACpD,aAAa,EAAE,qCAAqC;KACrD;IACD;QACE,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,SAAS;QACpB,eAAe,EAAE,oCAAoC;QACrD,aAAa,EAAE,+BAA+B;KAC/C;IACD;QACE,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE,OAAO;QAClB,eAAe,EAAE,qCAAqC;QACtD,aAAa,EAAE,oBAAoB;KACpC;IACD;QACE,MAAM,EAAE,cAAc;QACtB,SAAS,EAAE,SAAS;QACpB,eAAe,EAAE,6CAA6C;QAC9D,aAAa,EAAE,iCAAiC;KACjD;IACD;QACE,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,QAAQ;QACnB,eAAe,EAAE,wCAAwC;QACzD,aAAa,EAAE,kBAAkB;KAClC;CACO,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { MdzOpenWorkspaceOptions } from '@mdzip/core-js';
|
|
2
|
+
/**
|
|
3
|
+
* Message protocol between {@link MdzArchiveWorkerClient} (main thread) and
|
|
4
|
+
* `mdz-archive.worker.ts` (worker). Kept deliberately small — one worker
|
|
5
|
+
* handles exactly one archive's lifetime, so there is no session id.
|
|
6
|
+
*/
|
|
7
|
+
export type MdzArchiveWorkerRequest = {
|
|
8
|
+
id: number;
|
|
9
|
+
type: 'open';
|
|
10
|
+
bytes: ArrayBuffer;
|
|
11
|
+
options: MdzOpenWorkspaceOptions;
|
|
12
|
+
} | {
|
|
13
|
+
id: number;
|
|
14
|
+
type: 'readText';
|
|
15
|
+
path: string;
|
|
16
|
+
} | {
|
|
17
|
+
id: number;
|
|
18
|
+
type: 'readBytes';
|
|
19
|
+
path: string;
|
|
20
|
+
} | {
|
|
21
|
+
id: number;
|
|
22
|
+
type: 'dispose';
|
|
23
|
+
};
|
|
24
|
+
export type MdzArchiveWorkerResponse = {
|
|
25
|
+
id: number;
|
|
26
|
+
ok: true;
|
|
27
|
+
result: unknown;
|
|
28
|
+
} | {
|
|
29
|
+
id: number;
|
|
30
|
+
ok: false;
|
|
31
|
+
error: {
|
|
32
|
+
name: string;
|
|
33
|
+
message: string;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=mdz-archive-worker-protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mdz-archive-worker-protocol.d.ts","sourceRoot":"","sources":["../src/mdz-archive-worker-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAE9D;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAC/B;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,uBAAuB,CAAA;CAAE,GAClF;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAEpC,MAAM,MAAM,wBAAwB,GAChC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACzC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mdz-archive-worker-protocol.js","sourceRoot":"","sources":["../src/mdz-archive-worker-protocol.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { MdzOpenWorkspaceOptions, MdzWorkspace } from '@mdzip/core-js';
|
|
2
|
+
/**
|
|
3
|
+
* Main-thread bridge to a dedicated Worker running `mdz-archive.worker.ts`.
|
|
4
|
+
* One client owns one worker for the lifetime of the archive it opens —
|
|
5
|
+
* callers construct the `Worker` themselves (URL resolution varies too much
|
|
6
|
+
* across host bundlers to own here) and pass it in.
|
|
7
|
+
*/
|
|
8
|
+
export declare class MdzArchiveWorkerClient {
|
|
9
|
+
private readonly worker;
|
|
10
|
+
private readonly pending;
|
|
11
|
+
private nextId;
|
|
12
|
+
private disposed;
|
|
13
|
+
constructor(worker: Worker);
|
|
14
|
+
/**
|
|
15
|
+
* Opens `bytes` in the worker and returns a workspace shape-identical to
|
|
16
|
+
* `MdzArchiveCore.openWorkspace()`'s direct (non-worker) result: lazy
|
|
17
|
+
* `readText`/`readBytes`/`readDataUri` closures are reattached here so
|
|
18
|
+
* consumers (editor-react/vue/ng) see no difference in the public shape —
|
|
19
|
+
* the closures just call back into the worker instead of a local instance.
|
|
20
|
+
*/
|
|
21
|
+
open(bytes: Uint8Array, options: MdzOpenWorkspaceOptions): Promise<MdzWorkspace>;
|
|
22
|
+
readText(path: string): Promise<string>;
|
|
23
|
+
readBytes(path: string): Promise<Uint8Array>;
|
|
24
|
+
/** Terminates the worker and rejects any in-flight requests. Safe to call more than once. */
|
|
25
|
+
dispose(): void;
|
|
26
|
+
private attachLazyReaders;
|
|
27
|
+
private send;
|
|
28
|
+
private handleMessage;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=mdz-archive.worker-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mdz-archive.worker-client.d.ts","sourceRoot":"","sources":["../src/mdz-archive.worker-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAQ5E;;;;;GAKG;AACH,qBAAa,sBAAsB;IAKd,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJ1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAS;gBAEW,MAAM,EAAE,MAAM;IAIlD;;;;;;OAMG;IACU,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,YAAY,CAAC;IAUtF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKjC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAMzD,6FAA6F;IACtF,OAAO,IAAI,IAAI;IActB,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,aAAa;CAYtB"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main-thread bridge to a dedicated Worker running `mdz-archive.worker.ts`.
|
|
3
|
+
* One client owns one worker for the lifetime of the archive it opens —
|
|
4
|
+
* callers construct the `Worker` themselves (URL resolution varies too much
|
|
5
|
+
* across host bundlers to own here) and pass it in.
|
|
6
|
+
*/
|
|
7
|
+
export class MdzArchiveWorkerClient {
|
|
8
|
+
constructor(worker) {
|
|
9
|
+
this.worker = worker;
|
|
10
|
+
this.pending = new Map();
|
|
11
|
+
this.nextId = 1;
|
|
12
|
+
this.disposed = false;
|
|
13
|
+
this.worker.onmessage = (event) => this.handleMessage(event.data);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Opens `bytes` in the worker and returns a workspace shape-identical to
|
|
17
|
+
* `MdzArchiveCore.openWorkspace()`'s direct (non-worker) result: lazy
|
|
18
|
+
* `readText`/`readBytes`/`readDataUri` closures are reattached here so
|
|
19
|
+
* consumers (editor-react/vue/ng) see no difference in the public shape —
|
|
20
|
+
* the closures just call back into the worker instead of a local instance.
|
|
21
|
+
*/
|
|
22
|
+
async open(bytes, options) {
|
|
23
|
+
const buffer = bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);
|
|
24
|
+
const id = this.nextId++;
|
|
25
|
+
const workspace = await this.send({ id, type: 'open', bytes: buffer, options }, [buffer]);
|
|
26
|
+
return this.attachLazyReaders(workspace);
|
|
27
|
+
}
|
|
28
|
+
readText(path) {
|
|
29
|
+
const id = this.nextId++;
|
|
30
|
+
return this.send({ id, type: 'readText', path });
|
|
31
|
+
}
|
|
32
|
+
async readBytes(path) {
|
|
33
|
+
const id = this.nextId++;
|
|
34
|
+
const buffer = await this.send({ id, type: 'readBytes', path });
|
|
35
|
+
return new Uint8Array(buffer);
|
|
36
|
+
}
|
|
37
|
+
/** Terminates the worker and rejects any in-flight requests. Safe to call more than once. */
|
|
38
|
+
dispose() {
|
|
39
|
+
if (this.disposed)
|
|
40
|
+
return;
|
|
41
|
+
this.disposed = true;
|
|
42
|
+
try {
|
|
43
|
+
this.worker.postMessage({ id: this.nextId++, type: 'dispose' });
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// Worker may already be unusable — termination below still runs.
|
|
47
|
+
}
|
|
48
|
+
this.worker.terminate();
|
|
49
|
+
const error = new Error('ERR_ARCHIVE_WORKER_DISPOSED: the archive worker was disposed.');
|
|
50
|
+
for (const entry of this.pending.values())
|
|
51
|
+
entry.reject(error);
|
|
52
|
+
this.pending.clear();
|
|
53
|
+
}
|
|
54
|
+
attachLazyReaders(workspace) {
|
|
55
|
+
return {
|
|
56
|
+
...workspace,
|
|
57
|
+
documents: workspace.documents.map((document) => (document.isLazy ? { ...document, readText: () => this.readText(document.path) } : document)),
|
|
58
|
+
assets: workspace.assets.map((asset) => (asset.bytes === undefined
|
|
59
|
+
? {
|
|
60
|
+
...asset,
|
|
61
|
+
readBytes: () => this.readBytes(asset.path),
|
|
62
|
+
readDataUri: async () => dataUriFromBytes(await this.readBytes(asset.path), asset.mimeType)
|
|
63
|
+
}
|
|
64
|
+
: asset))
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
send(request, transfer = []) {
|
|
68
|
+
if (this.disposed) {
|
|
69
|
+
return Promise.reject(new Error('ERR_ARCHIVE_WORKER_DISPOSED: the archive worker was disposed.'));
|
|
70
|
+
}
|
|
71
|
+
return new Promise((resolve, reject) => {
|
|
72
|
+
this.pending.set(request.id, { resolve: resolve, reject });
|
|
73
|
+
this.worker.postMessage(request, transfer);
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
handleMessage(response) {
|
|
77
|
+
const entry = this.pending.get(response.id);
|
|
78
|
+
if (!entry)
|
|
79
|
+
return;
|
|
80
|
+
this.pending.delete(response.id);
|
|
81
|
+
if (response.ok) {
|
|
82
|
+
entry.resolve(response.result);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const error = new Error(response.error.message);
|
|
86
|
+
error.name = response.error.name;
|
|
87
|
+
entry.reject(error);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
function dataUriFromBytes(bytes, mimeType) {
|
|
91
|
+
let binary = '';
|
|
92
|
+
for (let index = 0; index < bytes.length; index += 0x8000) {
|
|
93
|
+
binary += String.fromCharCode(...bytes.subarray(index, index + 0x8000));
|
|
94
|
+
}
|
|
95
|
+
return `data:${mimeType};base64,${btoa(binary)}`;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=mdz-archive.worker-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mdz-archive.worker-client.js","sourceRoot":"","sources":["../src/mdz-archive.worker-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mdz-archive.worker.d.ts","sourceRoot":"","sources":["../src/mdz-archive.worker.ts"],"names":[],"mappings":""}
|