@stll/folio-core 0.54.2 → 0.55.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/ai-edits/apply.js +22 -1
- package/dist/ai-edits/headless.js +1 -0
- package/dist/compare/content-types.d.ts +3 -15
- package/dist/controller/canonicalComposition.d.ts +36 -0
- package/dist/controller/canonicalComposition.js +168 -0
- package/dist/controller/canonicalInput.d.ts +45 -0
- package/dist/controller/canonicalInput.js +338 -0
- package/dist/controller/canonicalOperations.d.ts +22 -0
- package/dist/controller/canonicalOperations.js +85 -0
- package/dist/controller/canonicalReview.d.ts +12 -0
- package/dist/controller/canonicalReview.js +19 -0
- package/dist/controller/canonicalSession.d.ts +149 -0
- package/dist/controller/canonicalSession.js +1038 -0
- package/dist/controller/canonicalStoryEditor.d.ts +34 -0
- package/dist/controller/canonicalStoryEditor.js +82 -0
- package/dist/controller/canonicalStructure.d.ts +16 -0
- package/dist/controller/canonicalStructure.js +269 -0
- package/dist/controller/folioEditor.d.ts +1 -1
- package/dist/controller/folioEditor.js +9 -0
- package/dist/controller/headerFooterEditorManager.d.ts +4 -0
- package/dist/controller/headerFooterEditorManager.js +71 -3
- package/dist/controller/hiddenEditorApi.d.ts +35 -0
- package/dist/controller/hiddenEditorApi.js +25 -8
- package/dist/controller/hiddenEditorManager.d.ts +11 -2
- package/dist/controller/hiddenEditorManager.js +456 -30
- package/dist/controller/layoutPipeline.d.ts +1 -1
- package/dist/controller/layoutPipeline.js +2 -0
- package/dist/controller/noteEditorManager.d.ts +4 -0
- package/dist/controller/noteEditorManager.js +113 -15
- package/dist/docx/attributeRemainder.js +1 -0
- package/dist/docx/canonicalSessionInput.d.ts +11 -0
- package/dist/docx/canonicalSessionInput.js +27 -0
- package/dist/docx/canonicalStoryRepack.d.ts +10 -0
- package/dist/docx/canonicalStoryRepack.js +41 -0
- package/dist/docx/contentTypeRegistry.d.ts +8 -0
- package/dist/docx/contentTypeRegistry.js +64 -0
- package/dist/docx/ensureParaIds.d.ts +7 -1
- package/dist/docx/ensureParaIds.js +163 -211
- package/dist/docx/foldedListNumberFields.d.ts +85 -0
- package/dist/docx/foldedListNumberFields.js +267 -0
- package/dist/docx/headerFooterVerbatim.d.ts +14 -1
- package/dist/docx/headerFooterVerbatim.js +95 -2
- package/dist/docx/noteIds.d.ts +5 -0
- package/dist/docx/noteIds.js +6 -2
- package/dist/docx/noteReferenceMark.d.ts +3 -1
- package/dist/docx/noteReferenceMark.js +15 -14
- package/dist/docx/numberingParser.d.ts +3 -1
- package/dist/docx/numberingParser.js +17 -3
- package/dist/docx/packageParts.d.ts +3 -1
- package/dist/docx/packageParts.js +65 -16
- package/dist/docx/paragraphMarkPropertyPresence.d.ts +9 -0
- package/dist/docx/paragraphMarkPropertyPresence.js +21 -0
- package/dist/docx/paragraphParser.js +101 -53
- package/dist/docx/paragraphPropertySource.d.ts +15 -1
- package/dist/docx/paragraphPropertySource.js +76 -22
- package/dist/docx/parser.js +2 -1
- package/dist/docx/reviewHistoryNamespace.d.ts +4 -0
- package/dist/docx/reviewHistoryNamespace.js +4 -0
- package/dist/docx/reviewResolutionProvenance.d.ts +25 -0
- package/dist/docx/reviewResolutionProvenance.js +153 -0
- package/dist/docx/rezip.d.ts +7 -3
- package/dist/docx/rezip.js +107 -45
- package/dist/docx/runConsolidator.d.ts +2 -58
- package/dist/docx/runConsolidator.js +3 -175
- package/dist/docx/runParser.d.ts +2 -1
- package/dist/docx/runParser.js +156 -116
- package/dist/docx/saveDiagnostics.d.ts +11 -0
- package/dist/docx/saveDiagnostics.js +0 -0
- package/dist/docx/selectiveSave.d.ts +2 -1
- package/dist/docx/selectiveSave.js +4 -1
- package/dist/docx/selectiveXmlPatch.d.ts +16 -8
- package/dist/docx/selectiveXmlPatch.js +74 -2
- package/dist/docx/serializer/headerFooterSerializer.d.ts +5 -1
- package/dist/docx/serializer/headerFooterSerializer.js +19 -11
- package/dist/docx/serializer/noteSerializer.d.ts +2 -2
- package/dist/docx/serializer/noteSerializer.js +24 -8
- package/dist/docx/serializer/paragraphSerializer.js +41 -4
- package/dist/docx/serializer/partNamespaces.js +2 -1
- package/dist/docx/serializer/runSerializer.js +3 -1
- package/dist/docx/settingsHeaderFooterUpdate.d.ts +5 -0
- package/dist/docx/settingsHeaderFooterUpdate.js +90 -0
- package/dist/docx/settingsParser.d.ts +1 -2
- package/dist/docx/settingsParser.js +5 -6
- package/dist/docx/storyBlockReplay.d.ts +11 -0
- package/dist/docx/storyBlockReplay.js +367 -0
- package/dist/docx/streamingXmlParser.d.ts +22 -1
- package/dist/docx/streamingXmlParser.js +49 -3
- package/dist/docx/structuralXmlPatch.js +8 -1
- package/dist/docx/verbatimCapture.d.ts +3 -1
- package/dist/docx/verbatimCapture.js +49 -6
- package/dist/i18n/messages/ar.gen.d.ts +5 -0
- package/dist/i18n/messages/ar.gen.js +656 -0
- package/dist/i18n/messages/cs.gen.d.ts +5 -0
- package/dist/i18n/messages/cs.gen.js +656 -0
- package/dist/i18n/messages/de.gen.d.ts +5 -0
- package/dist/i18n/messages/de.gen.js +656 -0
- package/dist/i18n/messages/en.gen.d.ts +5 -0
- package/dist/i18n/messages/en.gen.js +656 -0
- package/dist/i18n/messages/es.gen.d.ts +5 -0
- package/dist/i18n/messages/es.gen.js +656 -0
- package/dist/i18n/messages/et.gen.d.ts +5 -0
- package/dist/i18n/messages/et.gen.js +656 -0
- package/dist/i18n/messages/fr.gen.d.ts +5 -0
- package/dist/i18n/messages/fr.gen.js +656 -0
- package/dist/i18n/messages/he.gen.d.ts +5 -0
- package/dist/i18n/messages/he.gen.js +656 -0
- package/dist/i18n/messages/hi.gen.d.ts +5 -0
- package/dist/i18n/messages/hi.gen.js +656 -0
- package/dist/i18n/messages/hu.gen.d.ts +5 -0
- package/dist/i18n/messages/hu.gen.js +656 -0
- package/dist/i18n/messages/locales.d.ts +5 -0
- package/dist/i18n/messages/locales.js +22 -0
- package/dist/i18n/messages/lt.gen.d.ts +5 -0
- package/dist/i18n/messages/lt.gen.js +656 -0
- package/dist/i18n/messages/lv.gen.d.ts +5 -0
- package/dist/i18n/messages/lv.gen.js +656 -0
- package/dist/i18n/messages/pl.gen.d.ts +5 -0
- package/dist/i18n/messages/pl.gen.js +656 -0
- package/dist/i18n/messages/pt-BR.gen.d.ts +5 -0
- package/dist/i18n/messages/pt-BR.gen.js +656 -0
- package/dist/i18n/messages/sk.gen.d.ts +5 -0
- package/dist/i18n/messages/sk.gen.js +656 -0
- package/dist/i18n/messages/tr.gen.d.ts +5 -0
- package/dist/i18n/messages/tr.gen.js +656 -0
- package/dist/i18n/messages/zh-CN.gen.d.ts +5 -0
- package/dist/i18n/messages/zh-CN.gen.js +656 -0
- package/dist/i18n/messages.d.ts +2 -3
- package/dist/i18n/messages.js +1 -19
- package/dist/internal/noteMarkerAttrs.d.ts +8 -0
- package/dist/internal/noteMarkerAttrs.js +16 -0
- package/dist/internal/pageBreakRunSourceDescendantIndex.js +1 -0
- package/dist/internal/prosemirrorAttrBoundary.d.ts +21 -0
- package/dist/internal/prosemirrorAttrBoundary.js +50 -0
- package/dist/layout-bridge/convert/footnoteLayout.d.ts +1 -0
- package/dist/layout-bridge/convert/footnoteLayout.js +3 -3
- package/dist/layout-bridge/convert/headerFooterLayout.d.ts +1 -0
- package/dist/layout-bridge/convert/headerFooterLayout.js +1 -0
- package/dist/layout-bridge/convert/noteReferences.d.ts +1 -3
- package/dist/layout-bridge/convert/noteReferences.js +1 -6
- package/dist/layout-bridge/convert/paragraphRuns.js +2 -4
- package/dist/layout-bridge/convert/toFlowBlocks.d.ts +2 -2
- package/dist/layout-bridge/convert/toFlowBlocks.js +2 -2
- package/dist/managers/DocumentLoaderManager.d.ts +1 -0
- package/dist/managers/DocumentLoaderManager.js +8 -1
- package/dist/markdown/renderBlock.js +15 -1
- package/dist/markdown/renderParagraph.js +9 -13
- package/dist/markdown/renderRuns.js +3 -2
- package/dist/markdown/renderTable.js +2 -0
- package/dist/markdown/types.d.ts +3 -9
- package/dist/prosemirror/attrs/index.d.ts +2 -12
- package/dist/prosemirror/attrs/index.js +22 -48
- package/dist/prosemirror/bookmarkBoundaryAttrs.d.ts +2 -1
- package/dist/prosemirror/canonicalCommands.d.ts +97 -0
- package/dist/prosemirror/canonicalCommands.js +28 -0
- package/dist/prosemirror/commands/pageBreak.js +15 -1
- package/dist/prosemirror/commentReferenceAttrs.d.ts +2 -1
- package/dist/prosemirror/conversion/fromProseDoc.js +91 -19
- package/dist/prosemirror/conversion/listRenderingDefinition.d.ts +6 -0
- package/dist/prosemirror/conversion/listRenderingDefinition.js +97 -0
- package/dist/prosemirror/conversion/toProseDoc.d.ts +4 -3
- package/dist/prosemirror/conversion/toProseDoc.js +51 -11
- package/dist/prosemirror/executeEditorCommand.d.ts +11 -0
- package/dist/prosemirror/executeEditorCommand.js +26 -0
- package/dist/prosemirror/extensions/StarterKit.js +2 -0
- package/dist/prosemirror/extensions/core/ParagraphExtension.js +50 -19
- package/dist/prosemirror/extensions/features/ListExtension.js +18 -5
- package/dist/prosemirror/extensions/features/ParagraphChangeTrackerExtension.d.ts +5 -2
- package/dist/prosemirror/extensions/features/ParagraphChangeTrackerExtension.js +13 -1
- package/dist/prosemirror/extensions/marks/TextColorExtension.js +3 -2
- package/dist/prosemirror/extensions/marks/TrackedChangeExtensions.js +2 -0
- package/dist/prosemirror/extensions/marks/markUtils.js +70 -8
- package/dist/prosemirror/extensions/nodes/NoteMarkerExtension.d.ts +6 -0
- package/dist/prosemirror/extensions/nodes/NoteMarkerExtension.js +36 -0
- package/dist/prosemirror/extensions/nodes/PreservedXmlExtension.js +4 -2
- package/dist/prosemirror/listMarker.d.ts +1 -0
- package/dist/prosemirror/listMarker.js +16 -7
- package/dist/prosemirror/listNumbering.js +26 -5
- package/dist/prosemirror/listRenderingAttrs.d.ts +1 -0
- package/dist/prosemirror/listRenderingAttrs.js +3 -0
- package/dist/prosemirror/markupViewNotes.js +3 -2
- package/dist/prosemirror/moveRangeBoundaryAttrs.d.ts +2 -1
- package/dist/prosemirror/noteReferenceReview.js +5 -3
- package/dist/prosemirror/plugins/suggestionMode.js +50 -2
- package/dist/prosemirror/rangeAnchorAttrs.d.ts +2 -1
- package/dist/prosemirror/runFormattingFromMarks.d.ts +4 -1
- package/dist/prosemirror/runFormattingFromMarks.js +15 -1
- package/dist/prosemirror/runFormattingInlineCarriers.d.ts +2 -1
- package/dist/prosemirror/runFormattingInlineCarriers.js +4 -1
- package/dist/prosemirror/schema/marks.d.ts +2 -0
- package/dist/prosemirror/schema/nodes.d.ts +10 -2
- package/dist/prosemirror/textBoxAnchorAttrs.d.ts +2 -1
- package/dist/prosemirror/textInput.js +5 -1
- package/dist/prosemirror/trackedRevisionPath.js +2 -1
- package/dist/prosemirror/trackedRunInlineAtoms.d.ts +1 -0
- package/dist/prosemirror/trackedRunInlineAtoms.js +1 -0
- package/dist/prosemirror/validation.js +4 -0
- package/dist/types/content.d.ts +2 -2
- package/dist/utils/createDocument.js +2 -2
- package/package.json +14 -2
package/dist/i18n/messages.js
CHANGED
|
@@ -1,24 +1,6 @@
|
|
|
1
1
|
import { CATALOGS as CATALOGS$1 } from "./messages/catalogs.gen.js";
|
|
2
|
+
import { FOLIO_LOCALES } from "./messages/locales.js";
|
|
2
3
|
//#region src/i18n/messages.ts
|
|
3
|
-
const FOLIO_LOCALES = [
|
|
4
|
-
"en",
|
|
5
|
-
"de",
|
|
6
|
-
"fr",
|
|
7
|
-
"es",
|
|
8
|
-
"cs",
|
|
9
|
-
"ar",
|
|
10
|
-
"et",
|
|
11
|
-
"he",
|
|
12
|
-
"hi",
|
|
13
|
-
"hu",
|
|
14
|
-
"lt",
|
|
15
|
-
"lv",
|
|
16
|
-
"pl",
|
|
17
|
-
"pt-BR",
|
|
18
|
-
"sk",
|
|
19
|
-
"tr",
|
|
20
|
-
"zh-CN"
|
|
21
|
-
];
|
|
22
4
|
const CATALOGS = CATALOGS$1;
|
|
23
5
|
const FOLIO_LOCALE_SET = new Set(FOLIO_LOCALES);
|
|
24
6
|
const isFolioLocale = (locale) => FOLIO_LOCALE_SET.has(locale);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { NoteMarkerAttrs } from "../prosemirror/schema/nodes.js";
|
|
2
|
+
import { ReadProseMirrorAttrsResult } from "./prosemirrorAttrBoundary.js";
|
|
3
|
+
import { Node } from "prosemirror-model";
|
|
4
|
+
//#region src/internal/noteMarkerAttrs.d.ts
|
|
5
|
+
declare const readNoteMarkerAttrs: (node: Node) => ReadProseMirrorAttrsResult<NoteMarkerAttrs>;
|
|
6
|
+
declare const expectNoteMarkerAttrs: (node: Node) => NoteMarkerAttrs;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { expectNoteMarkerAttrs, readNoteMarkerAttrs };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { attrsRecord, attrsResult, expectCachedNodeAttrs, expectNodeType } from "./prosemirrorAttrBoundary.js";
|
|
2
|
+
//#region src/internal/noteMarkerAttrs.ts
|
|
3
|
+
const noteMarkerAttrsCache = /* @__PURE__ */ new WeakMap();
|
|
4
|
+
const readNoteMarkerAttrs = (node) => {
|
|
5
|
+
const attrs = attrsRecord(node.attrs);
|
|
6
|
+
const issues = [];
|
|
7
|
+
expectNodeType(node, "noteMarker", issues);
|
|
8
|
+
if (attrs["kind"] !== "footnote" && attrs["kind"] !== "endnote") issues.push({
|
|
9
|
+
path: "noteMarker.attrs.kind",
|
|
10
|
+
message: "Expected footnote or endnote."
|
|
11
|
+
});
|
|
12
|
+
return attrsResult(attrs, issues);
|
|
13
|
+
};
|
|
14
|
+
const expectNoteMarkerAttrs = (node) => expectCachedNodeAttrs(node, noteMarkerAttrsCache, readNoteMarkerAttrs, "noteMarker attrs");
|
|
15
|
+
//#endregion
|
|
16
|
+
export { expectNoteMarkerAttrs, readNoteMarkerAttrs };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Node } from "prosemirror-model";
|
|
2
|
+
//#region src/internal/prosemirrorAttrBoundary.d.ts
|
|
3
|
+
type ProseMirrorAttrIssue = {
|
|
4
|
+
readonly path: string;
|
|
5
|
+
readonly message: string;
|
|
6
|
+
};
|
|
7
|
+
type ReadProseMirrorAttrsResult<T> = {
|
|
8
|
+
ok: true;
|
|
9
|
+
value: T;
|
|
10
|
+
} | {
|
|
11
|
+
ok: false;
|
|
12
|
+
issues: readonly ProseMirrorAttrIssue[];
|
|
13
|
+
};
|
|
14
|
+
declare const attrsRecord: (attrs: unknown) => Record<string, unknown>;
|
|
15
|
+
declare const isRecord: (value: unknown) => value is Record<string, unknown>;
|
|
16
|
+
declare const attrsResult: <T>(attrs: Record<string, unknown>, issues: ProseMirrorAttrIssue[]) => ReadProseMirrorAttrsResult<T>;
|
|
17
|
+
declare const expectAttrs: <T>(result: ReadProseMirrorAttrsResult<T>, label: string) => T;
|
|
18
|
+
declare function expectCachedNodeAttrs<T extends object>(node: Node, cache: WeakMap<Node, T>, reader: (node: Node) => ReadProseMirrorAttrsResult<T>, label: string): T;
|
|
19
|
+
declare const expectNodeType: (node: Node, expected: string, issues: ProseMirrorAttrIssue[]) => void;
|
|
20
|
+
//#endregion
|
|
21
|
+
export { ProseMirrorAttrIssue, ReadProseMirrorAttrsResult, attrsRecord, attrsResult, expectAttrs, expectCachedNodeAttrs, expectNodeType, isRecord };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { panic } from "better-result";
|
|
2
|
+
//#region src/internal/prosemirrorAttrBoundary.ts
|
|
3
|
+
const attrsRecord = (attrs) => {
|
|
4
|
+
if (isRecord(attrs)) return attrs;
|
|
5
|
+
return {};
|
|
6
|
+
};
|
|
7
|
+
const isRecord = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
|
|
8
|
+
const attrsResult = (attrs, issues) => {
|
|
9
|
+
if (issues.length > 0) return {
|
|
10
|
+
ok: false,
|
|
11
|
+
issues
|
|
12
|
+
};
|
|
13
|
+
let normalizedAttrs;
|
|
14
|
+
return {
|
|
15
|
+
ok: true,
|
|
16
|
+
get value() {
|
|
17
|
+
if (normalizedAttrs !== void 0) return normalizedAttrs;
|
|
18
|
+
const presentAttrs = {};
|
|
19
|
+
for (const key in attrs) {
|
|
20
|
+
if (!Object.hasOwn(attrs, key)) continue;
|
|
21
|
+
const value = attrs[key];
|
|
22
|
+
if (value !== null) presentAttrs[key] = value;
|
|
23
|
+
}
|
|
24
|
+
normalizedAttrs = presentAttrs;
|
|
25
|
+
return normalizedAttrs;
|
|
26
|
+
},
|
|
27
|
+
set value(value) {
|
|
28
|
+
normalizedAttrs = value;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
const expectAttrs = (result, label) => {
|
|
33
|
+
if (result.ok) return result.value;
|
|
34
|
+
panic(`Invalid ProseMirror ${label}:\n${result.issues.map((issue) => `${issue.path}: ${issue.message}`).join("\n")}`);
|
|
35
|
+
};
|
|
36
|
+
function expectCachedNodeAttrs(node, cache, reader, label) {
|
|
37
|
+
const cached = cache.get(node);
|
|
38
|
+
if (cached) return cached;
|
|
39
|
+
const value = expectAttrs(reader(node), label);
|
|
40
|
+
cache.set(node, value);
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
const expectNodeType = (node, expected, issues) => {
|
|
44
|
+
if (node.type.name !== expected) issues.push({
|
|
45
|
+
path: "node.type.name",
|
|
46
|
+
message: `Expected ${expected}, got ${node.type.name}.`
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
//#endregion
|
|
50
|
+
export { attrsRecord, attrsResult, expectAttrs, expectCachedNodeAttrs, expectNodeType, isRecord };
|
|
@@ -6,6 +6,7 @@ import "./toFlowBlocks.js";
|
|
|
6
6
|
type MeasureBlocksFn = (blocks: FlowBlock[], contentWidth: number) => Measure[];
|
|
7
7
|
type ConvertFootnoteOptions = {
|
|
8
8
|
styles?: document_d_exports.StyleDefinitions | null;
|
|
9
|
+
numbering?: document_d_exports.NumberingDefinitions;
|
|
9
10
|
theme?: document_d_exports.Theme | null;
|
|
10
11
|
defaultSize?: number;
|
|
11
12
|
fontAlternates?: ToFlowBlocksOptions["fontAlternates"];
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { measureParagraph } from "../../layout-engine/measure/measureParagraph.js";
|
|
2
2
|
import { layoutTextBoxContent } from "../../layout-engine/measure/textBoxParagraphLayout.js";
|
|
3
3
|
import { DEFAULT_TEXTBOX_MARGINS, FOOTNOTE_ENTRY_MARGIN_BOTTOM, FOOTNOTE_FALLBACK_LINE_HEIGHT, FOOTNOTE_SEPARATOR_HEIGHT, isFloatingImageRun, resolveTableWidthPx } from "../../layout-engine/types.js";
|
|
4
|
-
import { expectPreservedXmlAttrs } from "../../prosemirror/attrs/index.js";
|
|
5
4
|
import { footnoteToProseDoc } from "../../prosemirror/conversion/toProseDoc.js";
|
|
6
|
-
import { collectNoteRefs
|
|
5
|
+
import { collectNoteRefs } from "./noteReferences.js";
|
|
7
6
|
import { toFlowBlocks } from "./toFlowBlocks.js";
|
|
8
7
|
//#region src/layout-bridge/convert/footnoteLayout.ts
|
|
9
8
|
/** Default footnote font size in points */
|
|
@@ -203,6 +202,7 @@ function convertNoteStoryToFlowBlocks(content, options, referenceMarkText) {
|
|
|
203
202
|
const proseOptions = {};
|
|
204
203
|
if (options.styles) proseOptions.styles = options.styles;
|
|
205
204
|
if (options.theme !== void 0) proseOptions.theme = options.theme;
|
|
205
|
+
if (options.numbering !== void 0) proseOptions.numbering = options.numbering;
|
|
206
206
|
const pmDoc = footnoteToProseDoc(content, proseOptions);
|
|
207
207
|
const flowOptions = {};
|
|
208
208
|
if (options.defaultSize !== void 0) flowOptions.defaultSize = options.defaultSize;
|
|
@@ -225,7 +225,7 @@ function containsNoteReferenceMark(doc) {
|
|
|
225
225
|
let found = false;
|
|
226
226
|
doc.descendants((node) => {
|
|
227
227
|
if (found) return false;
|
|
228
|
-
if (node.type.name === "
|
|
228
|
+
if (node.type.name === "noteMarker") found = true;
|
|
229
229
|
return !found;
|
|
230
230
|
});
|
|
231
231
|
return found;
|
|
@@ -41,6 +41,7 @@ declare function calculateHeaderFooterMarginPushBounds(blocks: FlowBlock[], meas
|
|
|
41
41
|
declare function calculateHeaderFooterBodyTopClearance(blocks: FlowBlock[], flowHeight: number, metrics: HeaderFooterMetrics): number | undefined;
|
|
42
42
|
type ConvertHeaderFooterOptions = {
|
|
43
43
|
styles?: document_d_exports.StyleDefinitions | null;
|
|
44
|
+
numbering?: document_d_exports.NumberingDefinitions;
|
|
44
45
|
theme?: document_d_exports.Theme | null;
|
|
45
46
|
defaultSize?: number;
|
|
46
47
|
fontAlternates?: ToFlowBlocksOptions["fontAlternates"];
|
|
@@ -340,6 +340,7 @@ function convertHeaderFooterToContent(headerFooter, contentWidth, metrics, optio
|
|
|
340
340
|
const proseDocOptions = {};
|
|
341
341
|
if (options.styles) proseDocOptions.styles = options.styles;
|
|
342
342
|
if (options.theme !== void 0) proseDocOptions.theme = options.theme;
|
|
343
|
+
if (options.numbering !== void 0) proseDocOptions.numbering = options.numbering;
|
|
343
344
|
const pmDoc = headerFooter.watermarkBlockIndex === void 0 ? headerFooterToProseDoc(headerFooter.content, proseDocOptions) : headerFooterToProseDocWithDetachedWatermarkHost(headerFooter, proseDocOptions);
|
|
344
345
|
const flowOptions = {};
|
|
345
346
|
if (options.defaultSize !== void 0) flowOptions.defaultSize = options.defaultSize;
|
|
@@ -8,7 +8,5 @@ declare function collectNoteRefs(blocks: readonly FlowBlock[], idKey: "footnoteR
|
|
|
8
8
|
noteId: number;
|
|
9
9
|
pmPos: number;
|
|
10
10
|
}[];
|
|
11
|
-
/** Whether captured run-child markup is a note story's `w:footnoteRef`/`w:endnoteRef`. */
|
|
12
|
-
declare function isNoteReferenceMarkXml(xml: string): boolean;
|
|
13
11
|
//#endregion
|
|
14
|
-
export { collectNoteRefs
|
|
12
|
+
export { collectNoteRefs };
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
//#region src/layout-bridge/convert/noteReferences.ts
|
|
2
|
-
const NOTE_REFERENCE_MARK_XML = /^<(?:[^\s:/>]+:)?(?:footnoteRef|endnoteRef)[\s/>]/u;
|
|
3
2
|
/**
|
|
4
3
|
* Runs with `idKey` set, in document order: the note references a block list
|
|
5
4
|
* makes, through table cells (and tables within cells) and text boxes.
|
|
@@ -21,9 +20,5 @@ function collectNoteRefs(blocks, idKey) {
|
|
|
21
20
|
walk(blocks);
|
|
22
21
|
return refs;
|
|
23
22
|
}
|
|
24
|
-
/** Whether captured run-child markup is a note story's `w:footnoteRef`/`w:endnoteRef`. */
|
|
25
|
-
function isNoteReferenceMarkXml(xml) {
|
|
26
|
-
return NOTE_REFERENCE_MARK_XML.test(xml);
|
|
27
|
-
}
|
|
28
23
|
//#endregion
|
|
29
|
-
export { collectNoteRefs
|
|
24
|
+
export { collectNoteRefs };
|
|
@@ -3,7 +3,6 @@ import { expectFieldAttrs, expectImageAttrs, expectMathAttrs, expectParagraphAtt
|
|
|
3
3
|
import { decodeOoxmlSymbolCharacter } from "../../utils/ooxmlSymbol.js";
|
|
4
4
|
import { tableOfContentsStyleLevel } from "../../utils/tableOfContentsStyle.js";
|
|
5
5
|
import { buildImageRun, constrainImageToPage, hasPaintableImageSource, hasRelationshipBackedImageBox } from "./imageConversion.js";
|
|
6
|
-
import { isNoteReferenceMarkXml } from "./noteReferences.js";
|
|
7
6
|
import { applyCharacterStyleToggleFormatting, markDefaultBlackTextColorSource, mergeRunFormatting } from "./runFormattingMerge.js";
|
|
8
7
|
import { extractRunFormatting } from "./runMarkFormatting.js";
|
|
9
8
|
import { paragraphRunDefaults } from "./textFormattingConversion.js";
|
|
@@ -135,9 +134,8 @@ function paragraphToRuns(node, startPos, _options, pageBreaks) {
|
|
|
135
134
|
});
|
|
136
135
|
return;
|
|
137
136
|
}
|
|
138
|
-
if (child.type.name === "preservedXml") {
|
|
139
|
-
const
|
|
140
|
-
const text = capturedText === "" && _options.noteReferenceMarkText !== void 0 && isNoteReferenceMarkXml(xml) ? _options.noteReferenceMarkText : capturedText;
|
|
137
|
+
if (child.type.name === "preservedXml" || child.type.name === "noteMarker") {
|
|
138
|
+
const text = child.type.name === "noteMarker" ? _options.noteReferenceMarkText ?? "" : expectPreservedXmlAttrs(child).text;
|
|
141
139
|
if (text === "") return;
|
|
142
140
|
const formatting = extractRunFormatting(effectiveMarks, theme, fontAlternates);
|
|
143
141
|
applyCharacterStyleToggleFormatting({
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FlowBlock } from "../../layout-engine/types.js";
|
|
2
2
|
import { formatCounter, resolveListTemplate } from "../../prosemirror/listMarker.js";
|
|
3
3
|
import { ToFlowBlocksOptions, resetBlockIdCounter } from "./flowConversionShared.js";
|
|
4
|
-
import { collectNoteRefs
|
|
4
|
+
import { collectNoteRefs } from "./noteReferences.js";
|
|
5
5
|
import { convertBorderSpecToLayout } from "./flowBorders.js";
|
|
6
6
|
import { Node } from "prosemirror-model";
|
|
7
7
|
//#region src/layout-bridge/convert/toFlowBlocks.d.ts
|
|
@@ -21,4 +21,4 @@ declare const WORD_UNSPECIFIED_FONT_SIZE = 10;
|
|
|
21
21
|
*/
|
|
22
22
|
declare function toFlowBlocks(doc: Node, options?: ToFlowBlocksOptions): FlowBlock[];
|
|
23
23
|
//#endregion
|
|
24
|
-
export { type ToFlowBlocksOptions, WORD_UNSPECIFIED_FONT_SIZE, collectNoteRefs, convertBorderSpecToLayout, formatCounter,
|
|
24
|
+
export { type ToFlowBlocksOptions, WORD_UNSPECIFIED_FONT_SIZE, collectNoteRefs, convertBorderSpecToLayout, formatCounter, resetBlockIdCounter, resolveListTemplate, toFlowBlocks };
|
|
@@ -12,7 +12,7 @@ import { mergeRunInParagraphs, reserveLeadingEmptyOutlineHeight, suppressFinalEm
|
|
|
12
12
|
import { convertBorderSpecToLayout } from "./flowBorders.js";
|
|
13
13
|
import { nextBlockId, resetBlockIdCounter, twipsToPixels } from "./flowConversionShared.js";
|
|
14
14
|
import { convertImage } from "./imageConversion.js";
|
|
15
|
-
import { collectNoteRefs
|
|
15
|
+
import { collectNoteRefs } from "./noteReferences.js";
|
|
16
16
|
import { splitParagraphAtPageBreaks } from "./pageBreakSplitting.js";
|
|
17
17
|
import { convertParagraph, drawsParagraphBorder } from "./paragraphConversion.js";
|
|
18
18
|
import { groupParagraphFrames } from "./paragraphFrames.js";
|
|
@@ -417,4 +417,4 @@ function toFlowBlocks(doc, options = {}) {
|
|
|
417
417
|
}), readFinalSectionStart(doc)), options.splitPageBreakAndParagraphMark === true, sectionBreaksWithoutMarker), nextBlockId);
|
|
418
418
|
}
|
|
419
419
|
//#endregion
|
|
420
|
-
export { WORD_UNSPECIFIED_FONT_SIZE, collectNoteRefs, convertBorderSpecToLayout, formatCounter,
|
|
420
|
+
export { WORD_UNSPECIFIED_FONT_SIZE, collectNoteRefs, convertBorderSpecToLayout, formatCounter, resetBlockIdCounter, resolveListTemplate, toFlowBlocks };
|
|
@@ -23,6 +23,7 @@ type DocumentLoaderHistory = {
|
|
|
23
23
|
type DocumentLoaderCallbacks = {
|
|
24
24
|
/** Editor history to reset/seed with the loaded document. */
|
|
25
25
|
history: DocumentLoaderHistory;
|
|
26
|
+
getExperimentalSession?: () => "canonical" | undefined;
|
|
26
27
|
/**
|
|
27
28
|
* Receives the identity of the document that just landed in history. Every
|
|
28
29
|
* load allocates a fresh identity, so the adapter can tell an external load
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { prepareCanonicalDocxInput } from "../docx/canonicalSessionInput.js";
|
|
1
2
|
import { inspectDocxCompatibility } from "../docx/compatibility.js";
|
|
2
3
|
import { parseDocx } from "../docx/parser.js";
|
|
3
4
|
import { recordDocumentLoadPhase } from "../layout-engine/layoutInstrumentation.js";
|
|
@@ -60,7 +61,13 @@ var DocumentLoaderManager = class {
|
|
|
60
61
|
const parseStartedAt = performance.now();
|
|
61
62
|
let doc;
|
|
62
63
|
try {
|
|
63
|
-
|
|
64
|
+
let input = buffer;
|
|
65
|
+
if (this.callbacks.getExperimentalSession?.() === "canonical") {
|
|
66
|
+
const prepared = await prepareCanonicalDocxInput(buffer);
|
|
67
|
+
if (prepared.isErr()) throw prepared.error;
|
|
68
|
+
input = prepared.value;
|
|
69
|
+
}
|
|
70
|
+
doc = await parseDocx(input, {
|
|
64
71
|
detectVariables: false,
|
|
65
72
|
preloadFonts: false,
|
|
66
73
|
password: options.password
|
|
@@ -129,6 +129,8 @@ const showsNothingOnAccept = (item) => {
|
|
|
129
129
|
/** Whether a paragraph keeps no visible content once every change is accepted. */
|
|
130
130
|
const holdsNothingOnAccept = (paragraph) => paragraph.content.every(showsNothingOnAccept);
|
|
131
131
|
function renderBlocks(ctx, pkg, blocks) {
|
|
132
|
+
const outerListIndentWidths = ctx.listIndentWidths;
|
|
133
|
+
ctx.listIndentWidths = [];
|
|
132
134
|
const out = [];
|
|
133
135
|
let prevWasListItem = false;
|
|
134
136
|
const ordered = ctx.opts.trackedChanges === "clean" ? mergeAcceptedParagraphBreaks(blocks) : blocks;
|
|
@@ -146,7 +148,9 @@ function renderBlocks(ctx, pkg, blocks) {
|
|
|
146
148
|
break;
|
|
147
149
|
}
|
|
148
150
|
case "table": {
|
|
151
|
+
ctx.listIndentWidths = [];
|
|
149
152
|
const md = renderTable(ctx, pkg, block);
|
|
153
|
+
ctx.listIndentWidths = [];
|
|
150
154
|
if (md) {
|
|
151
155
|
if (out.length) out.push("");
|
|
152
156
|
out.push(md);
|
|
@@ -156,22 +160,32 @@ function renderBlocks(ctx, pkg, blocks) {
|
|
|
156
160
|
}
|
|
157
161
|
case "blockSdt":
|
|
158
162
|
case "blockCustomXml": {
|
|
163
|
+
ctx.listIndentWidths = [];
|
|
159
164
|
const nested = renderBlocks(ctx, pkg, block.content);
|
|
160
165
|
if (nested) {
|
|
161
166
|
if (out.length) out.push("");
|
|
162
167
|
out.push(nested);
|
|
163
168
|
}
|
|
169
|
+
ctx.listIndentWidths = [];
|
|
170
|
+
prevWasListItem = false;
|
|
164
171
|
break;
|
|
165
172
|
}
|
|
166
|
-
case "preservedBlock":
|
|
173
|
+
case "preservedBlock": {
|
|
174
|
+
const previousLength = out.length;
|
|
167
175
|
if (isAltChunkMarkup(block.xml)) out.push(block.readerText === void 0 ? ALT_CHUNK_READER_DIAGNOSTIC : `${ALT_CHUNK_READER_DIAGNOSTIC}\n\n${block.readerText}`);
|
|
168
176
|
else if (opaqueRevisionCarrierName(block.xml) !== void 0) out.push(OPAQUE_REVISION_CARRIER_READER_DIAGNOSTIC);
|
|
169
177
|
else if (isOpaqueNestedRowMarkup(block.xml)) out.push("[Unsupported nested w:tr content]");
|
|
178
|
+
if (out.length !== previousLength) {
|
|
179
|
+
ctx.listIndentWidths = [];
|
|
180
|
+
prevWasListItem = false;
|
|
181
|
+
}
|
|
170
182
|
break;
|
|
183
|
+
}
|
|
171
184
|
case "bookmarkStart":
|
|
172
185
|
case "bookmarkEnd": break;
|
|
173
186
|
default: panic(`Unsupported block content in markdown: ${JSON.stringify(block)}`);
|
|
174
187
|
}
|
|
188
|
+
ctx.listIndentWidths = outerListIndentWidths;
|
|
175
189
|
return out.join("\n");
|
|
176
190
|
}
|
|
177
191
|
//#endregion
|
|
@@ -36,6 +36,7 @@ function renderParagraphBlock(ctx, pkg, para) {
|
|
|
36
36
|
const styleId = para.formatting?.styleId;
|
|
37
37
|
const headingLevel = markdownHeadingLevel(ctx, para);
|
|
38
38
|
if (headingLevel !== void 0) {
|
|
39
|
+
ctx.listIndentWidths = [];
|
|
39
40
|
if (!inline) return {
|
|
40
41
|
markdown: "",
|
|
41
42
|
isListItem: false
|
|
@@ -50,6 +51,7 @@ function renderParagraphBlock(ctx, pkg, para) {
|
|
|
50
51
|
markdown: renderListItem(ctx, para.listRendering, label, inline),
|
|
51
52
|
isListItem: true
|
|
52
53
|
};
|
|
54
|
+
ctx.listIndentWidths = [];
|
|
53
55
|
if (isQuoteStyle(styleId, ctx.builtInStyles)) return {
|
|
54
56
|
markdown: inline.split("\n").map((line) => `> ${line}`).join("\n"),
|
|
55
57
|
isListItem: false
|
|
@@ -86,21 +88,12 @@ function escapeLeadingBlockMarker(text) {
|
|
|
86
88
|
return text.replace(/^(?<ws>[ \t]*)(?<marker>[#>])/gmu, "$<ws>\\$<marker>").replace(/^(?<ws>[ \t]*)(?<marker>[-+*])(?<after>[ \t])/gmu, "$<ws>\\$<marker>$<after>").replace(/^(?<ws>[ \t]*)(?<num>\d{1,9})(?<marker>[.)])(?<after>[ \t])/gmu, "$<ws>$<num>\\$<marker>$<after>");
|
|
87
89
|
}
|
|
88
90
|
/**
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
* spaces is the old fixed-indent behaviour, kept as a fallback rather than a
|
|
92
|
-
* guess of zero.
|
|
93
|
-
*/
|
|
94
|
-
const DEFAULT_LIST_INDENT_WIDTH = 2;
|
|
95
|
-
/**
|
|
96
|
-
* The indent a level's item needs: the combined marker width of every
|
|
97
|
-
* shallower level's most recently rendered item (see
|
|
98
|
-
* `RenderContext.listIndentWidths`), so a child sits inside its parent's
|
|
99
|
-
* content column per CommonMark's list-nesting rule, not a fixed guess.
|
|
91
|
+
* Only emitted Markdown ancestors contribute columns. OOXML levels may skip
|
|
92
|
+
* ancestors or resume after prose; inventing those columns creates code blocks.
|
|
100
93
|
*/
|
|
101
94
|
function listIndentWidth(ctx, level) {
|
|
102
95
|
let width = 0;
|
|
103
|
-
for (let ancestor = 0; ancestor < level; ancestor++) width += ctx.listIndentWidths[ancestor] ??
|
|
96
|
+
for (let ancestor = 0; ancestor < level; ancestor++) width += ctx.listIndentWidths[ancestor] ?? 0;
|
|
104
97
|
return width;
|
|
105
98
|
}
|
|
106
99
|
/**
|
|
@@ -116,9 +109,12 @@ function listIndentWidth(ctx, level) {
|
|
|
116
109
|
* a following, deeper item can indent correctly under it.
|
|
117
110
|
*/
|
|
118
111
|
function renderListItem(ctx, list, label, inline) {
|
|
112
|
+
const nativeMarker = list.isBullet || /^\d{1,9}[.)]$/u.test(label);
|
|
113
|
+
if (!nativeMarker) ctx.listIndentWidths = [];
|
|
114
|
+
ctx.listIndentWidths.length = list.level;
|
|
119
115
|
const indent = " ".repeat(listIndentWidth(ctx, list.level));
|
|
120
116
|
const marker = list.isBullet ? "- " : `${label} `;
|
|
121
|
-
ctx.listIndentWidths[list.level] = marker.length;
|
|
117
|
+
if (nativeMarker) ctx.listIndentWidths[list.level] = marker.length;
|
|
122
118
|
return `${indent}${marker}${inline}`.trimEnd();
|
|
123
119
|
}
|
|
124
120
|
//#endregion
|
|
@@ -91,8 +91,8 @@ const punctuationFor = (mark) => (ch) => {
|
|
|
91
91
|
if (mark !== "strike" && ch === "*") return false;
|
|
92
92
|
return /[\p{P}\p{S}]/u.test(ch);
|
|
93
93
|
};
|
|
94
|
-
/**
|
|
95
|
-
const INLINE_UNIT = /\\[\s\S]|[\s\S]/gu;
|
|
94
|
+
/** Escape pairs and generated note references are indivisible inline units. */
|
|
95
|
+
const INLINE_UNIT = /\\[\s\S]|\[\^e?\d+\]|[\s\S]/gu;
|
|
96
96
|
/**
|
|
97
97
|
* Wrap `inner` in `mark` so a CommonMark reader reads it back. A delimiter
|
|
98
98
|
* opens only before a character that is not blank, and before punctuation
|
|
@@ -213,6 +213,7 @@ function renderRunContent(ctx, pkg, content, paraId) {
|
|
|
213
213
|
if (ctx.opts.footnotes === "strip") break;
|
|
214
214
|
out += numberNoteReference(ctx, item.type === "endnoteRef" ? "endnote" : "footnote", item.id).marker;
|
|
215
215
|
break;
|
|
216
|
+
case "noteMarker": break;
|
|
216
217
|
case "drawing": {
|
|
217
218
|
const ref = resolveRelationshipIdOfType(pkg?.relationships, item.image.rId, RELATIONSHIP_TYPES.image);
|
|
218
219
|
const media = ref.status === "resolved" ? pkg?.media?.get(ref.relationship.target) : void 0;
|
|
@@ -62,6 +62,7 @@ function renderGfmRow(ctx, pkg, row) {
|
|
|
62
62
|
return out;
|
|
63
63
|
}
|
|
64
64
|
function renderGfmCell(ctx, pkg, cell) {
|
|
65
|
+
ctx.listIndentWidths = [];
|
|
65
66
|
const blocks = [];
|
|
66
67
|
const renderBlocks = (content) => {
|
|
67
68
|
for (const item of content) switch (item.type) {
|
|
@@ -278,6 +279,7 @@ function renderHtmlRun(ctx, pkg, run, paraId) {
|
|
|
278
279
|
text += `<sup>[${token}]</sup>`;
|
|
279
280
|
break;
|
|
280
281
|
}
|
|
282
|
+
case "noteMarker": break;
|
|
281
283
|
default: break;
|
|
282
284
|
}
|
|
283
285
|
if (!text) return "";
|
package/dist/markdown/types.d.ts
CHANGED
|
@@ -141,15 +141,9 @@ type RenderContext = {
|
|
|
141
141
|
/** The document's styles indexed by the built-in they are; classifies headings and quotes. */
|
|
142
142
|
builtInStyles: BuiltInStyleIndex;
|
|
143
143
|
/**
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
* not a fixed two spaces: CommonMark only keeps a child nested under its
|
|
148
|
-
* parent when the child starts at or past the column where the parent's
|
|
149
|
-
* content begins, and a marker like `10. ` or `1. ` is wider than `- `.
|
|
150
|
-
* Document order visits a parent before its children, so by the time a
|
|
151
|
-
* level-N item renders, levels `0..N-1` already hold the current ancestor
|
|
152
|
-
* chain's widths.
|
|
144
|
+
* Active native Markdown ancestor marker widths, indexed by OOXML level.
|
|
145
|
+
* Missing levels contribute no columns. Prose, headings and container
|
|
146
|
+
* boundaries clear the chain; a shallower item truncates descendants.
|
|
153
147
|
*/
|
|
154
148
|
listIndentWidths: number[];
|
|
155
149
|
};
|
|
@@ -1,19 +1,9 @@
|
|
|
1
1
|
import { CharacterSpacingAttrs, CharacterStyleAttrs, CommentAttrs, EmphasisMarkAttrs, FontFamilyAttrs, FontSizeAttrs, FootnoteRefAttrs, HighlightAttrs, HyperlinkAttrs, InlineWrapperAttrs, InlineWrapperLayer, LanguageAttrs, RunFormattingOverrideAttrs, RunIdentityMarkAttrs, RunPropertyChangeMarkAttrs, RunShadingAttrs, StrikeAttrs, TextColorAttrs, TextEffectAttrs, TrackedChangeMarkAttrs, TrackedRevisionAncestor, UnderlineAttrs } from "../schema/marks.js";
|
|
2
2
|
import { BlockCustomXmlAttrs, BlockSdtAttrs, FieldAttrs, HardBreakAttrs, ImageAttrs, MathAttrs, PageBreakRunAttrs, ParagraphAttrs, PreservedBlockAttrs, PreservedXmlAttrs, SdtAttrs, ShapeAttrs, SymbolAttrs, TabAttrs, TableAttrs, TableCellAttrs, TableRowAttrs, TextBoxAttrs } from "../schema/nodes.js";
|
|
3
3
|
import "../schema/index.js";
|
|
4
|
+
import { ProseMirrorAttrIssue, ReadProseMirrorAttrsResult } from "../../internal/prosemirrorAttrBoundary.js";
|
|
4
5
|
import { Mark, Node } from "prosemirror-model";
|
|
5
6
|
//#region src/prosemirror/attrs/index.d.ts
|
|
6
|
-
type ProseMirrorAttrIssue = {
|
|
7
|
-
readonly path: string;
|
|
8
|
-
readonly message: string;
|
|
9
|
-
};
|
|
10
|
-
type ReadProseMirrorAttrsResult<T> = {
|
|
11
|
-
ok: true;
|
|
12
|
-
value: T;
|
|
13
|
-
} | {
|
|
14
|
-
ok: false;
|
|
15
|
-
issues: readonly ProseMirrorAttrIssue[];
|
|
16
|
-
};
|
|
17
7
|
declare const readParagraphAttrs: (node: Node) => ReadProseMirrorAttrsResult<Readonly<ParagraphAttrs>>;
|
|
18
8
|
declare const expectParagraphAttrs: (node: Node) => Readonly<ParagraphAttrs>;
|
|
19
9
|
declare const readHardBreakAttrs: (node: Node) => ReadProseMirrorAttrsResult<HardBreakAttrs>;
|
|
@@ -123,4 +113,4 @@ declare const mergeTableRowAttrs: (node: Node, patch: NodeAttrPatch<TableRowAttr
|
|
|
123
113
|
*/
|
|
124
114
|
declare const mergeTableCellAttrs: (node: Node, patch: NodeAttrPatch<TableCellAttrs>) => TableCellAttrs;
|
|
125
115
|
//#endregion
|
|
126
|
-
export { ProseMirrorAttrIssue, ReadProseMirrorAttrsResult, expectBlockCustomXmlAttrs, expectBlockSdtAttrs, expectCharacterSpacingMarkAttrs, expectCharacterStyleMarkAttrs, expectCommentMarkAttrs, expectEmphasisMarkAttrs, expectFieldAttrs, expectFontFamilyMarkAttrs, expectFontSizeMarkAttrs, expectFootnoteRefMarkAttrs, expectHardBreakAttrs, expectHighlightMarkAttrs, expectHyperlinkMarkAttrs, expectImageAttrs, expectInlineWrapperMarkAttrs, expectLanguageMarkAttrs, expectMathAttrs, expectPageBreakRunAttrs, expectParagraphAttrs, expectPreservedBlockAttrs, expectPreservedXmlAttrs, expectRunFormattingOverrideMarkAttrs, expectRunIdentityMarkAttrs, expectRunPropertyChangeMarkAttrs, expectRunShadingMarkAttrs, expectSdtAttrs, expectShapeAttrs, expectStrikeMarkAttrs, expectSymbolAttrs, expectTabAttrs, expectTableAttrs, expectTableCellAttrs, expectTableRowAttrs, expectTextBoxAttrs, expectTextColorMarkAttrs, expectTextEffectMarkAttrs, expectTrackedChangeMarkAttrs, expectUnderlineMarkAttrs, isTrackedRevisionAncestorArray, isValidEmptyFieldResultRuns, isValidFieldCode, mergeImageAttrs, mergeParagraphAttrs, mergeTableAttrs, mergeTableCellAttrs, mergeTableRowAttrs, readBlockCustomXmlAttrs, readBlockSdtAttrs, readCharacterSpacingMarkAttrs, readCharacterStyleMarkAttrs, readCommentMarkAttrs, readEmphasisMarkAttrs, readFieldAttrs, readFontFamilyMarkAttrs, readFontSizeMarkAttrs, readFootnoteRefMarkAttrs, readHardBreakAttrs, readHighlightMarkAttrs, readHyperlinkMarkAttrs, readImageAttrs, readInlineWrapperMarkAttrs, readInlineWrapperStack, readLanguageMarkAttrs, readMathAttrs, readPageBreakRunAttrs, readParagraphAttrs, readPreservedBlockAttrs, readPreservedXmlAttrs, readRunFormattingOverrideMarkAttrs, readRunIdentityMarkAttrs, readRunPropertyChangeMarkAttrs, readRunShadingMarkAttrs, readSdtAttrs, readShapeAttrs, readStrikeMarkAttrs, readSymbolAttrs, readTabAttrs, readTableAttrs, readTableCellAttrs, readTableRowAttrs, readTextBoxAttrs, readTextColorMarkAttrs, readTextEffectMarkAttrs, readTrackedChangeMarkAttrs, readUnderlineMarkAttrs };
|
|
116
|
+
export { type ProseMirrorAttrIssue, type ReadProseMirrorAttrsResult, expectBlockCustomXmlAttrs, expectBlockSdtAttrs, expectCharacterSpacingMarkAttrs, expectCharacterStyleMarkAttrs, expectCommentMarkAttrs, expectEmphasisMarkAttrs, expectFieldAttrs, expectFontFamilyMarkAttrs, expectFontSizeMarkAttrs, expectFootnoteRefMarkAttrs, expectHardBreakAttrs, expectHighlightMarkAttrs, expectHyperlinkMarkAttrs, expectImageAttrs, expectInlineWrapperMarkAttrs, expectLanguageMarkAttrs, expectMathAttrs, expectPageBreakRunAttrs, expectParagraphAttrs, expectPreservedBlockAttrs, expectPreservedXmlAttrs, expectRunFormattingOverrideMarkAttrs, expectRunIdentityMarkAttrs, expectRunPropertyChangeMarkAttrs, expectRunShadingMarkAttrs, expectSdtAttrs, expectShapeAttrs, expectStrikeMarkAttrs, expectSymbolAttrs, expectTabAttrs, expectTableAttrs, expectTableCellAttrs, expectTableRowAttrs, expectTextBoxAttrs, expectTextColorMarkAttrs, expectTextEffectMarkAttrs, expectTrackedChangeMarkAttrs, expectUnderlineMarkAttrs, isTrackedRevisionAncestorArray, isValidEmptyFieldResultRuns, isValidFieldCode, mergeImageAttrs, mergeParagraphAttrs, mergeTableAttrs, mergeTableCellAttrs, mergeTableRowAttrs, readBlockCustomXmlAttrs, readBlockSdtAttrs, readCharacterSpacingMarkAttrs, readCharacterStyleMarkAttrs, readCommentMarkAttrs, readEmphasisMarkAttrs, readFieldAttrs, readFontFamilyMarkAttrs, readFontSizeMarkAttrs, readFootnoteRefMarkAttrs, readHardBreakAttrs, readHighlightMarkAttrs, readHyperlinkMarkAttrs, readImageAttrs, readInlineWrapperMarkAttrs, readInlineWrapperStack, readLanguageMarkAttrs, readMathAttrs, readPageBreakRunAttrs, readParagraphAttrs, readPreservedBlockAttrs, readPreservedXmlAttrs, readRunFormattingOverrideMarkAttrs, readRunIdentityMarkAttrs, readRunPropertyChangeMarkAttrs, readRunShadingMarkAttrs, readSdtAttrs, readShapeAttrs, readStrikeMarkAttrs, readSymbolAttrs, readTabAttrs, readTableAttrs, readTableCellAttrs, readTableRowAttrs, readTextBoxAttrs, readTextColorMarkAttrs, readTextEffectMarkAttrs, readTrackedChangeMarkAttrs, readUnderlineMarkAttrs };
|