@stll/folio-core 0.58.5 → 0.60.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/README.md +10 -1
- package/dist/ai-edits/apply.d.ts +11 -12
- package/dist/ai-edits/apply.js +179 -168
- package/dist/ai-edits/headless.d.ts +15 -13
- package/dist/ai-edits/headless.js +40 -13
- package/dist/ai-edits/index.d.ts +3 -3
- package/dist/ai-edits/newListNumbering.d.ts +3 -9
- package/dist/ai-edits/newListNumbering.js +36 -41
- package/dist/ai-edits/referenceClassification.d.ts +22 -0
- package/dist/ai-edits/referenceClassification.js +21 -0
- package/dist/ai-edits/snapshot.js +39 -40
- package/dist/ai-edits/types.d.ts +24 -32
- package/dist/compare/column-alignment.d.ts +4 -4
- package/dist/compare/compare.d.ts +3 -7
- package/dist/compare/compare.js +25 -27
- package/dist/compare/content-alignment.d.ts +9 -9
- package/dist/compare/content-types.d.ts +23 -10
- package/dist/compare/content-types.js +14 -0
- package/dist/compare/content.d.ts +16 -17
- package/dist/compare/content.js +30 -7
- package/dist/compare/formatting.d.ts +3 -3
- package/dist/compare/import-style-closure.d.ts +22 -0
- package/dist/compare/import-style-closure.js +33 -0
- package/dist/compare/inserted-resource-snapshot.d.ts +15 -0
- package/dist/compare/inserted-resource-snapshot.js +63 -0
- package/dist/compare/plan.js +20 -13
- package/dist/compare/scenario.js +12 -2
- package/dist/compare/style-resources.d.ts +8 -2
- package/dist/compare/style-resources.js +63 -14
- package/dist/compare/verification.d.ts +15 -3
- package/dist/compare/verification.js +47 -8
- package/dist/compat/eigenpal.d.ts +5 -5
- package/dist/compat/eigenpal.js +2 -2
- package/dist/controller/canonicalListRendering.js +13 -22
- package/dist/controller/canonicalPublicOperations.js +1 -1
- package/dist/controller/canonicalSession.js +3 -2
- package/dist/controller/canonicalStructure.js +55 -28
- package/dist/controller/fontReadiness.js +1 -1
- package/dist/controller/layoutPipeline.js +7 -1
- package/dist/controller/layoutSession.d.ts +2 -0
- package/dist/display-list/build/fontTable.js +7 -5
- package/dist/display-list/build/furniture.d.ts +1 -0
- package/dist/display-list/build/furniture.js +1 -0
- package/dist/display-list/build/watermarkPrimitives.d.ts +2 -1
- package/dist/display-list/build/watermarkPrimitives.js +9 -3
- package/dist/display-list/editor/pageRenderer.js +1 -0
- package/dist/document-operations.d.ts +4 -9
- package/dist/document-operations.js +45 -41
- package/dist/docx/attributeRemainder.d.ts +1 -1
- package/dist/docx/bookmarkIdNormalization.d.ts +10 -0
- package/dist/docx/bookmarkIdNormalization.js +100 -0
- package/dist/docx/bookmarkParser.js +4 -2
- package/dist/docx/importedIdCollisions.d.ts +136 -0
- package/dist/docx/importedIdCollisions.js +215 -0
- package/dist/docx/index.d.ts +1 -1
- package/dist/docx/listMarkerComputation.js +9 -14
- package/dist/docx/listTemplate.d.ts +22 -0
- package/dist/docx/listTemplate.js +40 -0
- package/dist/docx/numberingParser.js +4 -4
- package/dist/docx/numberingReferenceNormalization.js +3 -3
- package/dist/docx/paragraphParser.js +3 -4
- package/dist/docx/paragraphPropertySource.js +1 -2
- package/dist/docx/parseContext.d.ts +2 -1
- package/dist/docx/parseContext.js +1 -0
- package/dist/docx/parseWarningMessage.js +1 -0
- package/dist/docx/parser.js +5 -1
- package/dist/docx/relsParser.js +1 -1
- package/dist/docx/rezip.js +4 -3
- package/dist/docx/selectedXmlIdentityScan.d.ts +10 -0
- package/dist/docx/selectedXmlIdentityScan.js +36 -0
- package/dist/docx/selectiveSave.js +5 -4
- package/dist/docx/selectiveXmlPatch.js +44 -52
- package/dist/docx/serializer/commentSerializer.d.ts +3 -1
- package/dist/docx/serializer/commentSerializer.js +11 -2
- package/dist/docx/serializer/runSerializer.js +2 -2
- package/dist/docx/serializer/trackedChangeAttributes.d.ts +1 -3
- package/dist/docx/serializer/trackedChangeAttributes.js +1 -11
- package/dist/docx/server/materializeYjsDocx.js +2 -2
- package/dist/docx/server/migrateYjsAttrSchema.js +5 -5
- package/dist/fonts/embeddedFontFingerprint.d.ts +5 -0
- package/dist/fonts/embeddedFontFingerprint.js +18 -0
- package/dist/fonts/embeddedFonts.d.ts +1 -1
- package/dist/fonts/embeddedFonts.js +1 -1
- package/dist/fonts/headlessMeasure.js +0 -0
- package/dist/generated/text_shaper.js +8 -4
- package/dist/generated/text_shaper_bg.wasm +0 -0
- package/dist/headless-layout.js +1 -0
- package/dist/index.d.ts +5 -5
- package/dist/index.js +2 -2
- package/dist/internal/paragraphFormattingSerialization.d.ts +1 -8
- package/dist/internal/paragraphFormattingSerialization.js +6 -20
- package/dist/layout-bridge/convert/flowConversionShared.d.ts +3 -1
- package/dist/layout-bridge/convert/footnoteLayout.d.ts +1 -1
- package/dist/layout-bridge/convert/footnoteLayout.js +3 -0
- package/dist/layout-bridge/convert/headerFooterLayout.d.ts +1 -0
- package/dist/layout-bridge/convert/headerFooterLayout.js +2 -0
- package/dist/layout-bridge/convert/listMarkers.d.ts +1 -2
- package/dist/layout-bridge/convert/listMarkers.js +3 -11
- package/dist/layout-bridge/convert/paragraphAttrs.d.ts +1 -1
- package/dist/layout-bridge/convert/paragraphAttrs.js +8 -4
- package/dist/layout-bridge/convert/paragraphConversion.js +8 -1
- package/dist/layout-bridge/convert/toFlowBlocks.d.ts +2 -1
- package/dist/layout-bridge/convert/toFlowBlocks.js +27 -2
- package/dist/layout-engine/measure/cache.js +39 -7
- package/dist/layout-engine/measure/lineTypography.js +1 -0
- package/dist/layout-engine/measure/listMarkerWidth.d.ts +1 -0
- package/dist/layout-engine/measure/listMarkerWidth.js +1 -0
- package/dist/layout-engine/measure/measureContainer.js +3 -4
- package/dist/layout-engine/measure/measureHelpers.d.ts +6 -9
- package/dist/layout-engine/measure/measureHelpers.js +21 -18
- package/dist/layout-engine/measure/measureParagraph.js +2 -0
- package/dist/layout-engine/measure/measureTypes.d.ts +2 -0
- package/dist/layout-engine/types.d.ts +4 -1
- package/dist/layout-painter/renderPage.d.ts +1 -0
- package/dist/layout-painter/renderPage.js +11 -3
- package/dist/layout-painter/renderParagraph.js +13 -3
- package/dist/layout-painter/renderWatermark.d.ts +1 -0
- package/dist/layout-painter/renderWatermark.js +7 -3
- package/dist/managers/editorShortcuts.d.ts +2 -1
- package/dist/managers/editorShortcuts.js +2 -1
- package/dist/markdown/renderParagraph.js +29 -3
- package/dist/prosemirror/canonicalSelectionRange.d.ts +4 -1
- package/dist/prosemirror/canonicalSelectionRange.js +9 -3
- package/dist/prosemirror/commands/comments.js +5 -32
- package/dist/prosemirror/commands/paragraphBookmarkJoin.d.ts +7 -1
- package/dist/prosemirror/commands/paragraphBookmarkJoin.js +35 -1
- package/dist/prosemirror/commands/propertyChangeScope.js +6 -0
- package/dist/prosemirror/commands/resolveParagraphProperties.js +10 -5
- package/dist/prosemirror/conversion/fromProseDoc.js +23 -9
- package/dist/prosemirror/conversion/toProseDoc.js +31 -7
- package/dist/prosemirror/extensions/core/ParagraphExtension.js +29 -14
- package/dist/prosemirror/extensions/features/AutoBidiDetectionExtension.d.ts +8 -2
- package/dist/prosemirror/extensions/features/AutoBidiDetectionExtension.js +39 -3
- package/dist/prosemirror/extensions/features/EmptyParagraphFormatExtension.d.ts +8 -2
- package/dist/prosemirror/extensions/features/EmptyParagraphFormatExtension.js +4 -3
- package/dist/prosemirror/extensions/features/ImageDragExtension.js +4 -3
- package/dist/prosemirror/extensions/features/JoinedRunStyleExtension.js +4 -3
- package/dist/prosemirror/extensions/features/ListExtension.js +51 -21
- package/dist/prosemirror/extensions/features/ParaIdAllocatorExtension.d.ts +9 -3
- package/dist/prosemirror/extensions/features/ParaIdAllocatorExtension.js +6 -5
- package/dist/prosemirror/extensions/features/ParagraphChangeTrackerExtension.d.ts +8 -2
- package/dist/prosemirror/extensions/features/ParagraphChangeTrackerExtension.js +11 -3
- package/dist/prosemirror/extensions/marks/RunIdentityExtension.js +4 -3
- package/dist/prosemirror/extensions/marks/markUtils.js +1 -1
- package/dist/prosemirror/listInstanceReferences.js +21 -15
- package/dist/prosemirror/listLabels.d.ts +4 -3
- package/dist/prosemirror/listLabels.js +18 -51
- package/dist/prosemirror/listMarker.d.ts +2 -19
- package/dist/prosemirror/listMarker.js +28 -57
- package/dist/prosemirror/listNumbering.js +16 -6
- package/dist/prosemirror/listRendering.d.ts +4 -3
- package/dist/prosemirror/listRendering.js +22 -3
- package/dist/prosemirror/listRenderingAttrs.d.ts +2 -1
- package/dist/prosemirror/listRenderingAttrs.js +6 -11
- package/dist/prosemirror/numberedRefFields.js +9 -5
- package/dist/prosemirror/numberingAttr.d.ts +19 -1
- package/dist/prosemirror/numberingAttr.js +16 -2
- package/dist/prosemirror/paragraphIndentation.js +5 -2
- package/dist/prosemirror/paragraphMarkJoin.js +17 -3
- package/dist/prosemirror/paragraphPropertyCarry.js +5 -6
- package/dist/prosemirror/pluginKeyOwner.d.ts +13 -0
- package/dist/prosemirror/pluginKeyOwner.js +35 -0
- package/dist/prosemirror/plugins/aiCitationDecorations.d.ts +11 -4
- package/dist/prosemirror/plugins/aiCitationDecorations.js +16 -3
- package/dist/prosemirror/plugins/aiSuggestionDecorations.d.ts +11 -4
- package/dist/prosemirror/plugins/aiSuggestionDecorations.js +18 -3
- package/dist/prosemirror/plugins/anonymizationDecorations.d.ts +11 -11
- package/dist/prosemirror/plugins/anonymizationDecorations.js +23 -13
- package/dist/prosemirror/plugins/autocompleteSuggestion.d.ts +8 -2
- package/dist/prosemirror/plugins/autocompleteSuggestion.js +27 -5
- package/dist/prosemirror/plugins/contentControlWidgets.d.ts +8 -2
- package/dist/prosemirror/plugins/contentControlWidgets.js +4 -3
- package/dist/prosemirror/plugins/createDocScanPlugin.d.ts +6 -5
- package/dist/prosemirror/plugins/createDocScanPlugin.js +1 -1
- package/dist/prosemirror/plugins/documentNumbering.js +5 -3
- package/dist/prosemirror/plugins/documentStyleState.d.ts +8 -2
- package/dist/prosemirror/plugins/documentStyleState.js +2 -2
- package/dist/prosemirror/plugins/documentStyles.js +1 -1
- package/dist/prosemirror/plugins/selectionTracker.d.ts +8 -2
- package/dist/prosemirror/plugins/selectionTracker.js +4 -3
- package/dist/prosemirror/plugins/suggestionMode.d.ts +8 -2
- package/dist/prosemirror/plugins/suggestionMode.js +4 -3
- package/dist/prosemirror/plugins/templateDirectives.d.ts +8 -2
- package/dist/prosemirror/plugins/templateDirectives.js +19 -4
- package/dist/prosemirror/plugins/templatePreviewValues.d.ts +8 -2
- package/dist/prosemirror/plugins/templatePreviewValues.js +27 -5
- package/dist/prosemirror/plugins/templateSlashMenu.d.ts +8 -2
- package/dist/prosemirror/plugins/templateSlashMenu.js +23 -5
- package/dist/prosemirror/plugins/transactionInvariants.js +29 -5
- package/dist/prosemirror/schema/nodes.d.ts +2 -1
- package/dist/prosemirror/selectionState.js +5 -1
- package/dist/prosemirror/storyListNumbering.js +11 -12
- package/dist/prosemirror/styles/paragraphStyleCascade.js +2 -6
- package/dist/prosemirror/styles/resolvedStyleAttrs.d.ts +11 -4
- package/dist/prosemirror/styles/resolvedStyleAttrs.js +28 -18
- package/dist/prosemirror/yjsDocumentMetadata.d.ts +9 -3
- package/dist/prosemirror/yjsDocumentMetadata.js +42 -10
- package/dist/redline.d.ts +17 -1
- package/dist/redline.js +118 -57
- package/dist/server.d.ts +3 -3
- package/dist/server.js +2 -2
- package/dist/utils/fontLoader.d.ts +2 -2
- package/dist/utils/fontLoader.js +2 -7
- package/dist/utils/fontResolver.d.ts +7 -3
- package/dist/utils/fontResolver.js +6 -8
- package/dist/version-comparison.d.ts +1 -2
- package/dist/version-comparison.js +1 -2
- package/package.json +26 -9
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { document_d_exports } from "../types/document.js";
|
|
2
|
-
import { FolioContentBlock, FolioContentContainerPathEntry, FolioContentFormatRange, FolioContentIdStability, FolioContentInlineBooleanProperty, FolioContentInlineComparisonResult, FolioContentInlineFormatting, FolioContentInlineFormattingPatch, FolioContentLineSpacingRule, FolioContentParagraphAlignment, FolioContentParagraphKind, FolioContentParagraphSpacing, FolioContentRun, FolioContentSnapshot, FolioContentTableLocation } from "../compare/content-types.js";
|
|
3
|
-
import { FolioAIBlock, FolioAIBlockAnchor, FolioAIBlockKind, FolioAIBlockPreviewRun, FolioAIBlockStructuralBoundary, FolioAIBlockTableLocation, FolioAIComment, FolioAIEditAppliedOperation, FolioAIEditApplyMode, FolioAIEditApplyResult, FolioAIEditNormalization, FolioAIEditNormalizationCode, FolioAIEditOperation, FolioAIEditPrecondition, FolioAIEditReviewMeta, FolioAIEditSeverity, FolioAIEditSkipReason, FolioAIEditSkippedOperation, FolioAIEditSnapshot, FolioAIInlineBooleanProperty, FolioAIInlineFormatting, FolioAIInlineFormattingPatch, FolioAIParagraphSpacing, FolioAISignatureParty } from "../ai-edits/types.js";
|
|
2
|
+
import { FolioContentBlock, FolioContentContainerPathEntry, FolioContentFormatRange, FolioContentIdStability, FolioContentInlineBooleanProperty, FolioContentInlineComparisonResult, FolioContentInlineFormatting, FolioContentInlineFormattingPatch, FolioContentLineSpacingRule, FolioContentParagraphAlignment, FolioContentParagraphKind, FolioContentParagraphSpacing, FolioContentRun, FolioContentSnapshot, FolioContentStatedNumbering, FolioContentTableLocation } from "../compare/content-types.js";
|
|
3
|
+
import { FolioAIBlock, FolioAIBlockAnchor, FolioAIBlockKind, FolioAIBlockPreviewRun, FolioAIBlockStructuralBoundary, FolioAIBlockTableLocation, FolioAIComment, FolioAIDiagnosticBlock, FolioAIEditAppliedOperation, FolioAIEditApplyMode, FolioAIEditApplyResult, FolioAIEditNormalization, FolioAIEditNormalizationCode, FolioAIEditOperation, FolioAIEditPrecondition, FolioAIEditReviewMeta, FolioAIEditSeverity, FolioAIEditSkipReason, FolioAIEditSkippedOperation, FolioAIEditSnapshot, FolioAIInlineBooleanProperty, FolioAIInlineFormatting, FolioAIInlineFormattingPatch, FolioAIParagraphBlock, FolioAIParagraphSpacing, FolioAISignatureParty } from "../ai-edits/types.js";
|
|
4
4
|
import { WORD_DIFF_GRANULARITIES, WordDiffGranularity, WordDiffNormalization, WordDiffOptions, WordDiffSegment, diffWordSegments } from "../ai-edits/word-diff.js";
|
|
5
|
-
import { FolioAIEditApplyOutcome, FolioRevisionStamp, FolioWordDiffOptions, applyFolioAIEditOperations } from "../ai-edits/apply.js";
|
|
5
|
+
import { FolioAIEditApplyOutcome, FolioRevisionStamp, FolioUndefinedReferencePolicy, FolioWordDiffOptions, applyFolioAIEditOperations } from "../ai-edits/apply.js";
|
|
6
6
|
import { ApplyFolioDocumentOperationsOptions, FOLIO_DOCUMENT_OPERATION_BATCH_MODES, FOLIO_DOCUMENT_OPERATION_CONTRACT_VERSION, FOLIO_DOCUMENT_OPERATION_MODES, FOLIO_DOCUMENT_OPERATION_MODES_BY_TYPE, FOLIO_DOCUMENT_OPERATION_PRECONDITIONS, FOLIO_DOCUMENT_OPERATION_STORIES, FOLIO_DOCUMENT_OPERATION_TYPES, FOLIO_LINE_SPACING_RULE_VALUES, FOLIO_PARAGRAPH_ALIGNMENT_VALUES, FolioDocumentOperation, FolioDocumentOperationAffectedTarget, FolioDocumentOperationBatch, FolioDocumentOperationCapabilities, FolioDocumentOperationIssue, FolioDocumentOperationMode, FolioDocumentOperationPrecondition, FolioDocumentOperationReceipt, FolioDocumentOperationRecovery, FolioDocumentOperationResult, FolioDocumentOperationResultBase, FolioDocumentOperationStatus, FolioDocumentOperationStory, FolioDocumentOperationType, FolioDocumentOperationUndoFailureReason, FolioDocumentOperationUndoHandle, FolioDocumentOperationUndoResult, InvalidFolioDocumentOperationBatchError, UnsupportedFolioDocumentOperationVersionError, applyFolioDocumentOperations, assertSupportedFolioDocumentOperationVersion, getFolioDocumentOperationCapabilities, getFolioDocumentOperationIssues, getFolioDocumentOperationReceipts, isFolioDocumentOperationModeSupported, isSupportedFolioDocumentOperationVersion, parseFolioDocumentOperationBatch } from "../document-operations.js";
|
|
7
7
|
import { createFolioAIEditSnapshot, hashFolioAIBlockText, isFolioAIContentBlock, normalizeFolioAIBlockText } from "../ai-edits/snapshot.js";
|
|
8
8
|
import { DeriveBlockIdInput, FolioBlockId, currentFolioBlockId, deriveBlockId, getFolioParaIdFromBlockId, isFolioBlockId, isSequentialFolioBlockId } from "../types/block-id.js";
|
|
@@ -37,9 +37,9 @@ import { ImageMeta, ImageRef, MarkdownOptions, MarkdownResult } from "../markdow
|
|
|
37
37
|
import { fromMarkdown } from "../markdown/fromMarkdown.js";
|
|
38
38
|
import { toMarkdown, toMarkdownResult } from "../markdown/index.js";
|
|
39
39
|
import { EmbeddedFont, EmbeddedFontParts, buildEmbeddedFontFamilyMap, extractEmbeddedFonts, getEmbeddedFontFaces, scopeEmbeddedFontFamily } from "../fonts/embeddedFonts.js";
|
|
40
|
-
import { getGoogleFontsEnabled,
|
|
40
|
+
import { getGoogleFontsEnabled, setGoogleFontsEnabled } from "../utils/fontResolver.js";
|
|
41
41
|
import { FOLIO_YJS_ATTR_SCHEMA_VERSION, FolioYjsAttrSchemaVersion, FolioYjsAttrSchemaVersionError } from "../prosemirror/yjsDocumentMetadata.js";
|
|
42
42
|
import { DOCX_CONFORMANCE_CLASSES } from "../index.js";
|
|
43
43
|
type Document = document_d_exports.Document;
|
|
44
44
|
type DocxConformanceClass = document_d_exports.DocxConformanceClass;
|
|
45
|
-
export { type AIBarStatus, type AIChatMode, type AICitation, type AICitationRange, type AICitationSource, type AIGenerateInput, type AISuggestion, type AISuggestionApplyMode, type AISuggestionPreset, type AISuggestionSeverity, type AISuggestionStatus, type AcceptAutocompleteResult, type AnonymizationMatch, type AnonymizationTerm, type ApplyFolioDocumentOperationsOptions, type ApplyResult, type AutocompleteSuggestionPluginOptions, type AutocompleteSuggestionState, type AutocompleteSuggestionStatus, type AutocompleteTriggerCheck, type AutocompleteTriggerOptions, type AutocompleteTriggerSkipReason, type BlockRect, COMPARE_REVISION_FORMATS, COMPARE_UNSUPPORTED_REASONS, COMPARE_VERIFICATION_CAUSES, COMPARE_VERIFICATION_INVARIANTS, type CompareChange, type CompareChangeLocation, type CompareCompatibility, type CompareContentOptions, CompareDocxApplyError, type CompareDocxError, CompareDocxFinalParagraphMarkError, CompareDocxOperationLimitError, type CompareDocxOptions, CompareDocxParseError, CompareDocxRoundTripError, CompareDocxSerializeError, type CompareFolioRequirement, type CompareResult, type CompareRevisionFormat, type CompareUnsupportedPart, type CompareUnsupportedReason, type CompareVerification, type CompareVerificationCause, type CompareVerificationFailure, type CompareVerificationInvariant, type CreateEmptyDocumentOptions, DEFAULT_AI_SUGGESTION_PRESETS, DEFAULT_AUTOCOMPLETE_DEAD_ZONE_NODES, DEFAULT_OUTLINE_DEPTH, DOCUMENT_PRESET_VERSION, DOCUMENT_STYLE_SET_VERSION, DOCX_CONFORMANCE_CLASSES, DRAWING_SAFETY_CLASSES, type DeriveBlockIdInput, type DirectiveKind, type DirectiveRange, type Document, type DocumentPreset, type DocumentPropertiesOptions, type DocumentStyleCatalog, type DocumentStyleCatalogEntry, type DocumentStyleSet, type DocxCompatibility, type DocxCompatibilityContext, type DocxCompatibilityIssue, type DocxCompatibilityLocation, type DocxCompatibilityPart, type DocxConformanceClass, type DocxDrawingClassification, type DrawingSafetyClass, type EmbeddedFont, type EmbeddedFontParts, type ExtractDocumentStyleSetOptions, FOLIO_CONTENT_COMPARISON_LIMITS, FOLIO_DOCUMENT_OPERATION_BATCH_MODES, FOLIO_DOCUMENT_OPERATION_CONTRACT_VERSION, FOLIO_DOCUMENT_OPERATION_MODES, FOLIO_DOCUMENT_OPERATION_MODES_BY_TYPE, FOLIO_DOCUMENT_OPERATION_PRECONDITIONS, FOLIO_DOCUMENT_OPERATION_STORIES, FOLIO_DOCUMENT_OPERATION_TYPES, FOLIO_LINE_SPACING_RULE_VALUES, FOLIO_PARAGRAPH_ALIGNMENT_VALUES, FOLIO_YJS_ATTR_SCHEMA_VERSION, type FinalParagraphMarkRevision, type FolioAIBlock, type FolioAIBlockAnchor, type FolioAIBlockKind, type FolioAIBlockPreviewRun, type FolioAIBlockStructuralBoundary, type FolioAIBlockTableLocation, type FolioAIComment, type FolioAIEditAppliedOperation, type FolioAIEditApplyMode, type FolioAIEditApplyOutcome, type FolioAIEditApplyResult, type FolioAIEditNormalization, type FolioAIEditNormalizationCode, type FolioAIEditOperation, type FolioAIEditPrecondition, type FolioAIEditReviewMeta, type FolioAIEditSeverity, type FolioAIEditSkipReason, type FolioAIEditSkippedOperation, type FolioAIEditSnapshot, type FolioAIInlineBooleanProperty, type FolioAIInlineFormatting, type FolioAIInlineFormattingPatch, type FolioAIParagraphSpacing, type FolioAISignatureParty, type FolioBlockId, type FolioContentBlock, type FolioContentBlockProperty, type FolioContentComparison, type FolioContentComparisonError, type FolioContentComparisonEvent, type FolioContentComparisonLimit, FolioContentComparisonLimitError, type FolioContentContainerPathEntry, type FolioContentFormatRange, type FolioContentFormattingChange, type FolioContentIdStability, type FolioContentInlineBooleanProperty, type FolioContentInlineComparisonResult, type FolioContentInlineFormatting, type FolioContentInlineFormattingPatch, FolioContentInlinePresentationProjectionError, type FolioContentLineSpacingRule, type FolioContentParagraphAlignment, type FolioContentParagraphFormattingPatch, type FolioContentParagraphKind, type FolioContentParagraphSpacing, type FolioContentRun, type FolioContentSnapshot, type FolioContentStructuralChange, type FolioContentTableLocation, type FolioContentTextSegment, type FolioDocumentOperation, type FolioDocumentOperationAffectedTarget, type FolioDocumentOperationBatch, type FolioDocumentOperationCapabilities, type FolioDocumentOperationIssue, type FolioDocumentOperationMode, type FolioDocumentOperationPrecondition, type FolioDocumentOperationReceipt, type FolioDocumentOperationRecovery, type FolioDocumentOperationResult, type FolioDocumentOperationResultBase, type FolioDocumentOperationStatus, type FolioDocumentOperationStory, type FolioDocumentOperationType, type FolioDocumentOperationUndoFailureReason, type FolioDocumentOperationUndoHandle, type FolioDocumentOperationUndoResult, type FolioDocxCompatibilityHost, type FolioDocxCompatibilityProfile, type FolioRevisionStamp, type FolioWordDiffOptions, type FolioYjsAttrSchemaVersion, FolioYjsAttrSchemaVersionError, type ImageMeta, type ImageRef, type InspectDocxCompatibilityOptions, InvalidCompareDocxOptionsError, InvalidFolioContentComparisonError, InvalidFolioDocumentOperationBatchError, MAX_COMPARE_OPERATIONS, type MarkdownOptions, type MarkdownResult, type OutlineDepth, type PositionalText, type ResolvedAnchor, STELLA_STYLE_SET_NAME, type TemplatePreviewHiddenRange, type TemplatePreviewSpan, type TemplatePreviewValue, type TemplatePreviewValues, type TemplateSlashMenuKeyAction, type TemplateSlashMenuState, UnsupportedFolioDocumentOperationVersionError, WORD_DIFF_GRANULARITIES, type WordDiffGranularity, type WordDiffNormalization, type WordDiffOptions, type WordDiffSegment, acceptAutocompleteSuggestion, acceptAutocompleteWord, anonymizationDecorationsKey, appendAutocompleteToken, applyFolioAIEditOperations, applyFolioDocumentOperations, applySuggestions, assertSupportedFolioDocumentOperationVersion, autocompleteSuggestionKey, autocompleteSuggestionPlugin, buildEmbeddedFontFamilyMap, buildPositionalText, clearAutocompleteSuggestion, clearTemplateSlashMenu, compareContent, compareDocx, consumeTemplateSlashQuery, createAICitationDecorationsPlugin, createDocx, createEmptyDocument, createFolioAIEditSnapshot, createStellaStyleDocumentPreset, createStellaStyleSet, currentFolioBlockId, deriveBlockId, diffWordSegments, extractDocumentStyleSet, extractDocumentStyleSetFromDocx, extractEmbeddedFonts, filterHeadingsByDepth, finishAutocompleteSuggestion, fromMarkdown, getAnonymizationMatches, getAutocompleteSuggestion, getEmbeddedFontFaces, getFolioCaretViewportRect, getFolioDocumentOperationCapabilities, getFolioDocumentOperationIssues, getFolioDocumentOperationReceipts, getFolioParaIdFromBlockId, getFolioSelectionViewportRect, getGoogleFontsEnabled, getTemplateDirectives, getTemplateSlashMenu, hashFolioAIBlockText, inspectDocumentStyles, inspectDocumentStylesFromDocx, inspectDocxCompatibility, isFolioAIContentBlock, isFolioBlockId, isFolioDocumentOperationModeSupported, isSequentialFolioBlockId, isSuggestionStale, isSupportedFolioDocumentOperationVersion, mergeDocumentContent, normalizeFolioAIBlockText, parseFolioDocumentOperationBatch, resetTemplateSlashQuery, resolveSuggestionAnchor, scanDirectives, scopeEmbeddedFontFamily, scrollFolioPositionIntoView, setAICitationsMeta, setAISuggestionsMeta, setActiveCitationMeta, setAnonymizationTermsMeta,
|
|
45
|
+
export { type AIBarStatus, type AIChatMode, type AICitation, type AICitationRange, type AICitationSource, type AIGenerateInput, type AISuggestion, type AISuggestionApplyMode, type AISuggestionPreset, type AISuggestionSeverity, type AISuggestionStatus, type AcceptAutocompleteResult, type AnonymizationMatch, type AnonymizationTerm, type ApplyFolioDocumentOperationsOptions, type ApplyResult, type AutocompleteSuggestionPluginOptions, type AutocompleteSuggestionState, type AutocompleteSuggestionStatus, type AutocompleteTriggerCheck, type AutocompleteTriggerOptions, type AutocompleteTriggerSkipReason, type BlockRect, COMPARE_REVISION_FORMATS, COMPARE_UNSUPPORTED_REASONS, COMPARE_VERIFICATION_CAUSES, COMPARE_VERIFICATION_INVARIANTS, type CompareChange, type CompareChangeLocation, type CompareCompatibility, type CompareContentOptions, CompareDocxApplyError, type CompareDocxError, CompareDocxFinalParagraphMarkError, CompareDocxOperationLimitError, type CompareDocxOptions, CompareDocxParseError, CompareDocxRoundTripError, CompareDocxSerializeError, type CompareFolioRequirement, type CompareResult, type CompareRevisionFormat, type CompareUnsupportedPart, type CompareUnsupportedReason, type CompareVerification, type CompareVerificationCause, type CompareVerificationFailure, type CompareVerificationInvariant, type CreateEmptyDocumentOptions, DEFAULT_AI_SUGGESTION_PRESETS, DEFAULT_AUTOCOMPLETE_DEAD_ZONE_NODES, DEFAULT_OUTLINE_DEPTH, DOCUMENT_PRESET_VERSION, DOCUMENT_STYLE_SET_VERSION, DOCX_CONFORMANCE_CLASSES, DRAWING_SAFETY_CLASSES, type DeriveBlockIdInput, type DirectiveKind, type DirectiveRange, type Document, type DocumentPreset, type DocumentPropertiesOptions, type DocumentStyleCatalog, type DocumentStyleCatalogEntry, type DocumentStyleSet, type DocxCompatibility, type DocxCompatibilityContext, type DocxCompatibilityIssue, type DocxCompatibilityLocation, type DocxCompatibilityPart, type DocxConformanceClass, type DocxDrawingClassification, type DrawingSafetyClass, type EmbeddedFont, type EmbeddedFontParts, type ExtractDocumentStyleSetOptions, FOLIO_CONTENT_COMPARISON_LIMITS, FOLIO_DOCUMENT_OPERATION_BATCH_MODES, FOLIO_DOCUMENT_OPERATION_CONTRACT_VERSION, FOLIO_DOCUMENT_OPERATION_MODES, FOLIO_DOCUMENT_OPERATION_MODES_BY_TYPE, FOLIO_DOCUMENT_OPERATION_PRECONDITIONS, FOLIO_DOCUMENT_OPERATION_STORIES, FOLIO_DOCUMENT_OPERATION_TYPES, FOLIO_LINE_SPACING_RULE_VALUES, FOLIO_PARAGRAPH_ALIGNMENT_VALUES, FOLIO_YJS_ATTR_SCHEMA_VERSION, type FinalParagraphMarkRevision, type FolioAIBlock, type FolioAIBlockAnchor, type FolioAIBlockKind, type FolioAIBlockPreviewRun, type FolioAIBlockStructuralBoundary, type FolioAIBlockTableLocation, type FolioAIComment, type FolioAIDiagnosticBlock, type FolioAIEditAppliedOperation, type FolioAIEditApplyMode, type FolioAIEditApplyOutcome, type FolioAIEditApplyResult, type FolioAIEditNormalization, type FolioAIEditNormalizationCode, type FolioAIEditOperation, type FolioAIEditPrecondition, type FolioAIEditReviewMeta, type FolioAIEditSeverity, type FolioAIEditSkipReason, type FolioAIEditSkippedOperation, type FolioAIEditSnapshot, type FolioAIInlineBooleanProperty, type FolioAIInlineFormatting, type FolioAIInlineFormattingPatch, type FolioAIParagraphBlock, type FolioAIParagraphSpacing, type FolioAISignatureParty, type FolioBlockId, type FolioContentBlock, type FolioContentBlockProperty, type FolioContentComparison, type FolioContentComparisonError, type FolioContentComparisonEvent, type FolioContentComparisonLimit, FolioContentComparisonLimitError, type FolioContentContainerPathEntry, type FolioContentFormatRange, type FolioContentFormattingChange, type FolioContentIdStability, type FolioContentInlineBooleanProperty, type FolioContentInlineComparisonResult, type FolioContentInlineFormatting, type FolioContentInlineFormattingPatch, FolioContentInlinePresentationProjectionError, type FolioContentLineSpacingRule, type FolioContentParagraphAlignment, type FolioContentParagraphFormattingPatch, type FolioContentParagraphKind, type FolioContentParagraphSpacing, type FolioContentRun, type FolioContentSnapshot, type FolioContentStatedNumbering, type FolioContentStructuralChange, type FolioContentTableLocation, type FolioContentTextSegment, type FolioDocumentOperation, type FolioDocumentOperationAffectedTarget, type FolioDocumentOperationBatch, type FolioDocumentOperationCapabilities, type FolioDocumentOperationIssue, type FolioDocumentOperationMode, type FolioDocumentOperationPrecondition, type FolioDocumentOperationReceipt, type FolioDocumentOperationRecovery, type FolioDocumentOperationResult, type FolioDocumentOperationResultBase, type FolioDocumentOperationStatus, type FolioDocumentOperationStory, type FolioDocumentOperationType, type FolioDocumentOperationUndoFailureReason, type FolioDocumentOperationUndoHandle, type FolioDocumentOperationUndoResult, type FolioDocxCompatibilityHost, type FolioDocxCompatibilityProfile, type FolioRevisionStamp, type FolioUndefinedReferencePolicy, type FolioWordDiffOptions, type FolioYjsAttrSchemaVersion, FolioYjsAttrSchemaVersionError, type ImageMeta, type ImageRef, type InspectDocxCompatibilityOptions, InvalidCompareDocxOptionsError, InvalidFolioContentComparisonError, InvalidFolioDocumentOperationBatchError, MAX_COMPARE_OPERATIONS, type MarkdownOptions, type MarkdownResult, type OutlineDepth, type PositionalText, type ResolvedAnchor, STELLA_STYLE_SET_NAME, type TemplatePreviewHiddenRange, type TemplatePreviewSpan, type TemplatePreviewValue, type TemplatePreviewValues, type TemplateSlashMenuKeyAction, type TemplateSlashMenuState, UnsupportedFolioDocumentOperationVersionError, WORD_DIFF_GRANULARITIES, type WordDiffGranularity, type WordDiffNormalization, type WordDiffOptions, type WordDiffSegment, acceptAutocompleteSuggestion, acceptAutocompleteWord, anonymizationDecorationsKey, appendAutocompleteToken, applyFolioAIEditOperations, applyFolioDocumentOperations, applySuggestions, assertSupportedFolioDocumentOperationVersion, autocompleteSuggestionKey, autocompleteSuggestionPlugin, buildEmbeddedFontFamilyMap, buildPositionalText, clearAutocompleteSuggestion, clearTemplateSlashMenu, compareContent, compareDocx, consumeTemplateSlashQuery, createAICitationDecorationsPlugin, createDocx, createEmptyDocument, createFolioAIEditSnapshot, createStellaStyleDocumentPreset, createStellaStyleSet, currentFolioBlockId, deriveBlockId, diffWordSegments, extractDocumentStyleSet, extractDocumentStyleSetFromDocx, extractEmbeddedFonts, filterHeadingsByDepth, finishAutocompleteSuggestion, fromMarkdown, getAnonymizationMatches, getAutocompleteSuggestion, getEmbeddedFontFaces, getFolioCaretViewportRect, getFolioDocumentOperationCapabilities, getFolioDocumentOperationIssues, getFolioDocumentOperationReceipts, getFolioParaIdFromBlockId, getFolioSelectionViewportRect, getGoogleFontsEnabled, getTemplateDirectives, getTemplateSlashMenu, hashFolioAIBlockText, inspectDocumentStyles, inspectDocumentStylesFromDocx, inspectDocxCompatibility, isFolioAIContentBlock, isFolioBlockId, isFolioDocumentOperationModeSupported, isSequentialFolioBlockId, isSuggestionStale, isSupportedFolioDocumentOperationVersion, mergeDocumentContent, normalizeFolioAIBlockText, parseFolioDocumentOperationBatch, resetTemplateSlashQuery, resolveSuggestionAnchor, scanDirectives, scopeEmbeddedFontFamily, scrollFolioPositionIntoView, setAICitationsMeta, setAISuggestionsMeta, setActiveCitationMeta, setAnonymizationTermsMeta, setFocusedSuggestionMeta, setGoogleFontsEnabled, setTemplatePreviewValues, shouldTriggerAutocomplete, startAutocompleteSuggestion, templateSlashMenuKey, toMarkdown, toMarkdownResult };
|
package/dist/compat/eigenpal.js
CHANGED
|
@@ -32,7 +32,7 @@ import { STELLA_STYLE_SET_NAME, createStellaStyleDocumentPreset, createStellaSty
|
|
|
32
32
|
import { DOCUMENT_PRESET_VERSION, DOCUMENT_STYLE_SET_VERSION } from "../style-sets/types.js";
|
|
33
33
|
import { currentFolioBlockId, deriveBlockId, getFolioParaIdFromBlockId, isFolioBlockId, isSequentialFolioBlockId } from "../types/block-id.js";
|
|
34
34
|
import { createEmptyDocument } from "../utils/createDocument.js";
|
|
35
|
-
import { getGoogleFontsEnabled,
|
|
35
|
+
import { getGoogleFontsEnabled, setGoogleFontsEnabled } from "../utils/fontResolver.js";
|
|
36
36
|
import { mergeDocumentContent } from "../utils/mergeDocumentContent.js";
|
|
37
37
|
import { DEFAULT_OUTLINE_DEPTH, filterHeadingsByDepth } from "../utils/outlineDepth.js";
|
|
38
|
-
export { COMPARE_REVISION_FORMATS, COMPARE_UNSUPPORTED_REASONS, COMPARE_VERIFICATION_CAUSES, COMPARE_VERIFICATION_INVARIANTS, CompareDocxApplyError, CompareDocxFinalParagraphMarkError, CompareDocxOperationLimitError, CompareDocxParseError, CompareDocxRoundTripError, CompareDocxSerializeError, DEFAULT_AI_SUGGESTION_PRESETS, DEFAULT_AUTOCOMPLETE_DEAD_ZONE_NODES, DEFAULT_OUTLINE_DEPTH, DOCUMENT_PRESET_VERSION, DOCUMENT_STYLE_SET_VERSION, DOCX_CONFORMANCE_CLASSES, DRAWING_SAFETY_CLASSES, FOLIO_CONTENT_COMPARISON_LIMITS, FOLIO_DOCUMENT_OPERATION_BATCH_MODES, FOLIO_DOCUMENT_OPERATION_CONTRACT_VERSION, FOLIO_DOCUMENT_OPERATION_MODES, FOLIO_DOCUMENT_OPERATION_MODES_BY_TYPE, FOLIO_DOCUMENT_OPERATION_PRECONDITIONS, FOLIO_DOCUMENT_OPERATION_STORIES, FOLIO_DOCUMENT_OPERATION_TYPES, FOLIO_LINE_SPACING_RULE_VALUES, FOLIO_PARAGRAPH_ALIGNMENT_VALUES, FOLIO_YJS_ATTR_SCHEMA_VERSION, FolioContentComparisonLimitError, FolioContentInlinePresentationProjectionError, FolioYjsAttrSchemaVersionError, InvalidCompareDocxOptionsError, InvalidFolioContentComparisonError, InvalidFolioDocumentOperationBatchError, MAX_COMPARE_OPERATIONS, STELLA_STYLE_SET_NAME, UnsupportedFolioDocumentOperationVersionError, WORD_DIFF_GRANULARITIES, acceptAutocompleteSuggestion, acceptAutocompleteWord, anonymizationDecorationsKey, appendAutocompleteToken, applyFolioAIEditOperations, applyFolioDocumentOperations, applySuggestions, assertSupportedFolioDocumentOperationVersion, autocompleteSuggestionKey, autocompleteSuggestionPlugin, buildEmbeddedFontFamilyMap, buildPositionalText, clearAutocompleteSuggestion, clearTemplateSlashMenu, compareContent, compareDocx, consumeTemplateSlashQuery, createAICitationDecorationsPlugin, createDocx, createEmptyDocument, createFolioAIEditSnapshot, createStellaStyleDocumentPreset, createStellaStyleSet, currentFolioBlockId, deriveBlockId, diffWordSegments, extractDocumentStyleSet, extractDocumentStyleSetFromDocx, extractEmbeddedFonts, filterHeadingsByDepth, finishAutocompleteSuggestion, fromMarkdown, getAnonymizationMatches, getAutocompleteSuggestion, getEmbeddedFontFaces, getFolioCaretViewportRect, getFolioDocumentOperationCapabilities, getFolioDocumentOperationIssues, getFolioDocumentOperationReceipts, getFolioParaIdFromBlockId, getFolioSelectionViewportRect, getGoogleFontsEnabled, getTemplateDirectives, getTemplateSlashMenu, hashFolioAIBlockText, inspectDocumentStyles, inspectDocumentStylesFromDocx, inspectDocxCompatibility, isFolioAIContentBlock, isFolioBlockId, isFolioDocumentOperationModeSupported, isSequentialFolioBlockId, isSuggestionStale, isSupportedFolioDocumentOperationVersion, mergeDocumentContent, normalizeFolioAIBlockText, parseFolioDocumentOperationBatch, resetTemplateSlashQuery, resolveSuggestionAnchor, scanDirectives, scopeEmbeddedFontFamily, scrollFolioPositionIntoView, setAICitationsMeta, setAISuggestionsMeta, setActiveCitationMeta, setAnonymizationTermsMeta,
|
|
38
|
+
export { COMPARE_REVISION_FORMATS, COMPARE_UNSUPPORTED_REASONS, COMPARE_VERIFICATION_CAUSES, COMPARE_VERIFICATION_INVARIANTS, CompareDocxApplyError, CompareDocxFinalParagraphMarkError, CompareDocxOperationLimitError, CompareDocxParseError, CompareDocxRoundTripError, CompareDocxSerializeError, DEFAULT_AI_SUGGESTION_PRESETS, DEFAULT_AUTOCOMPLETE_DEAD_ZONE_NODES, DEFAULT_OUTLINE_DEPTH, DOCUMENT_PRESET_VERSION, DOCUMENT_STYLE_SET_VERSION, DOCX_CONFORMANCE_CLASSES, DRAWING_SAFETY_CLASSES, FOLIO_CONTENT_COMPARISON_LIMITS, FOLIO_DOCUMENT_OPERATION_BATCH_MODES, FOLIO_DOCUMENT_OPERATION_CONTRACT_VERSION, FOLIO_DOCUMENT_OPERATION_MODES, FOLIO_DOCUMENT_OPERATION_MODES_BY_TYPE, FOLIO_DOCUMENT_OPERATION_PRECONDITIONS, FOLIO_DOCUMENT_OPERATION_STORIES, FOLIO_DOCUMENT_OPERATION_TYPES, FOLIO_LINE_SPACING_RULE_VALUES, FOLIO_PARAGRAPH_ALIGNMENT_VALUES, FOLIO_YJS_ATTR_SCHEMA_VERSION, FolioContentComparisonLimitError, FolioContentInlinePresentationProjectionError, FolioYjsAttrSchemaVersionError, InvalidCompareDocxOptionsError, InvalidFolioContentComparisonError, InvalidFolioDocumentOperationBatchError, MAX_COMPARE_OPERATIONS, STELLA_STYLE_SET_NAME, UnsupportedFolioDocumentOperationVersionError, WORD_DIFF_GRANULARITIES, acceptAutocompleteSuggestion, acceptAutocompleteWord, anonymizationDecorationsKey, appendAutocompleteToken, applyFolioAIEditOperations, applyFolioDocumentOperations, applySuggestions, assertSupportedFolioDocumentOperationVersion, autocompleteSuggestionKey, autocompleteSuggestionPlugin, buildEmbeddedFontFamilyMap, buildPositionalText, clearAutocompleteSuggestion, clearTemplateSlashMenu, compareContent, compareDocx, consumeTemplateSlashQuery, createAICitationDecorationsPlugin, createDocx, createEmptyDocument, createFolioAIEditSnapshot, createStellaStyleDocumentPreset, createStellaStyleSet, currentFolioBlockId, deriveBlockId, diffWordSegments, extractDocumentStyleSet, extractDocumentStyleSetFromDocx, extractEmbeddedFonts, filterHeadingsByDepth, finishAutocompleteSuggestion, fromMarkdown, getAnonymizationMatches, getAutocompleteSuggestion, getEmbeddedFontFaces, getFolioCaretViewportRect, getFolioDocumentOperationCapabilities, getFolioDocumentOperationIssues, getFolioDocumentOperationReceipts, getFolioParaIdFromBlockId, getFolioSelectionViewportRect, getGoogleFontsEnabled, getTemplateDirectives, getTemplateSlashMenu, hashFolioAIBlockText, inspectDocumentStyles, inspectDocumentStylesFromDocx, inspectDocxCompatibility, isFolioAIContentBlock, isFolioBlockId, isFolioDocumentOperationModeSupported, isSequentialFolioBlockId, isSuggestionStale, isSupportedFolioDocumentOperationVersion, mergeDocumentContent, normalizeFolioAIBlockText, parseFolioDocumentOperationBatch, resetTemplateSlashQuery, resolveSuggestionAnchor, scanDirectives, scopeEmbeddedFontFamily, scrollFolioPositionIntoView, setAICitationsMeta, setAISuggestionsMeta, setActiveCitationMeta, setAnonymizationTermsMeta, setFocusedSuggestionMeta, setGoogleFontsEnabled, setTemplatePreviewValues, shouldTriggerAutocomplete, startAutocompleteSuggestion, templateSlashMenuKey, toMarkdown, toMarkdownResult };
|
|
@@ -2,8 +2,8 @@ import { foldListNumberFields, planParagraphListNumberFold, unfoldedListNumberCo
|
|
|
2
2
|
import { computeListMarker } from "../docx/listMarkerComputation.js";
|
|
3
3
|
import { listRenderingDefinitionsMatch } from "../docx/listRendering.js";
|
|
4
4
|
import { computeListRendering, getCachedNumberingMap } from "../docx/numberingParser.js";
|
|
5
|
-
import { mergeParagraphNumbering, paragraphNumberingReferenceId, sameStatedParagraphNumbering } from "../docx/numberingReference.js";
|
|
6
5
|
import { assignParagraphIndentationProjection, cloneParagraphWithPropertySource, paragraphFormattingWithAuthoredIndentation, sameParagraphIndentationProjection } from "../docx/paragraphPropertySource.js";
|
|
6
|
+
import { effectiveParagraphNumberingReference, paragraphNumberingSourcesFromBoundary } from "../prosemirror/numberingAttr.js";
|
|
7
7
|
import { paragraphIndentationFromFormatting } from "../prosemirror/paragraphIndentation.js";
|
|
8
8
|
import { listIndentationProvenancePatch } from "../prosemirror/styles/resolvedStyleAttrs.js";
|
|
9
9
|
import { createStyleResolver } from "../prosemirror/styles/styleResolver.js";
|
|
@@ -35,16 +35,8 @@ const normalizeCanonicalListRendering = (document) => {
|
|
|
35
35
|
snapshot: paragraphFormattingWithAuthoredIndentation(paragraph)
|
|
36
36
|
});
|
|
37
37
|
const formatting = paragraph.formatting;
|
|
38
|
-
const numPr = mergeParagraphNumbering(formatting?.numPrFromStyle, formatting?.numPr);
|
|
39
|
-
if (paragraph.listRendering === void 0 && formatting?.numPrFromStyle === void 0 && (numPr?.kind !== "reference" || numbering === null)) {
|
|
40
|
-
computeListMarker(paragraph, counters);
|
|
41
|
-
return paragraph;
|
|
42
|
-
}
|
|
43
|
-
const definition = numPr?.kind === "reference" && numbering !== null ? computeListRendering(numPr, numbering) : null;
|
|
44
|
-
const cached = paragraph.listRendering;
|
|
45
|
-
const rendering = definition !== null && cached !== void 0 && listRenderingDefinitionsMatch(cached, definition) ? { ...cached } : definition;
|
|
46
38
|
const next = cloneParagraphWithPropertySource(paragraph, {});
|
|
47
|
-
if (formatting?.numPrFromStyle !== void 0 && formatting.numPr
|
|
39
|
+
if (formatting?.numPrFromStyle !== void 0 && (formatting.numPr?.kind === "reference" || formatting.numPr?.kind === "none")) {
|
|
48
40
|
next.formatting = { ...formatting };
|
|
49
41
|
delete next.formatting.numPrFromStyle;
|
|
50
42
|
inverse.push({
|
|
@@ -54,18 +46,17 @@ const normalizeCanonicalListRendering = (document) => {
|
|
|
54
46
|
patch: { numPrFromStyle: formatting.numPrFromStyle }
|
|
55
47
|
});
|
|
56
48
|
}
|
|
57
|
-
|
|
58
|
-
next.formatting
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
story,
|
|
65
|
-
blockId: paragraph.paraId ?? panic("Canonical numbering normalization requires paragraph identities."),
|
|
66
|
-
patch: { numPr: formatting.numPr ?? null }
|
|
67
|
-
});
|
|
49
|
+
const numPr = effectiveParagraphNumberingReference(paragraphNumberingSourcesFromBoundary({
|
|
50
|
+
numPr: next.formatting?.numPr,
|
|
51
|
+
numPrFromStyle: next.formatting?.numPrFromStyle
|
|
52
|
+
}));
|
|
53
|
+
if (paragraph.listRendering === void 0 && formatting?.numPrFromStyle === void 0 && (numPr?.kind !== "reference" || numbering === null)) {
|
|
54
|
+
computeListMarker(paragraph, counters);
|
|
55
|
+
return paragraph;
|
|
68
56
|
}
|
|
57
|
+
const definition = numPr?.kind === "reference" && numbering !== null ? computeListRendering(numPr, numbering) : null;
|
|
58
|
+
const cached = paragraph.listRendering;
|
|
59
|
+
const rendering = definition !== null && cached !== void 0 && listRenderingDefinitionsMatch(cached, definition) ? { ...cached } : definition;
|
|
69
60
|
const authoredFormatting = paragraphFormattingWithAuthoredIndentation(next);
|
|
70
61
|
assignParagraphIndentationProjection({
|
|
71
62
|
paragraph: next,
|
|
@@ -73,7 +64,7 @@ const normalizeCanonicalListRendering = (document) => {
|
|
|
73
64
|
inherited: paragraphIndentationFromFormatting(listIndentationProvenancePatch({
|
|
74
65
|
direct: paragraphIndentationFromFormatting(authoredFormatting),
|
|
75
66
|
styleFormatting: styles.resolveParagraphStyle(next.formatting?.styleId).paragraphFormatting,
|
|
76
|
-
numberingSource: next.formatting?.numPrFromStyle === void 0 ? "paragraph" : "style",
|
|
67
|
+
numberingSource: next.formatting?.numPr?.kind === "reference" || next.formatting?.numPrFromStyle === void 0 ? "paragraph" : "style",
|
|
77
68
|
numPr: numPr?.kind === "reference" ? {
|
|
78
69
|
numId: numPr.numId,
|
|
79
70
|
ilvl: numPr.ilvl ?? 0
|
|
@@ -193,7 +193,7 @@ var CanonicalPublicOperations = class {
|
|
|
193
193
|
skip(operation.id, "unsupportedMode", "Canonical pending suggestions are unavailable.");
|
|
194
194
|
continue;
|
|
195
195
|
}
|
|
196
|
-
if (options.tableTemplates !== void 0 || options.
|
|
196
|
+
if (options.tableTemplates !== void 0 || options.undefinedReferences === "keep") {
|
|
197
197
|
refusals.set(operation.id, { gap: CANONICAL_GAP.publicUnsupportedInline });
|
|
198
198
|
skip(operation.id, "unsupportedBlock", "This canonical compiler does not support the supplied execution options.");
|
|
199
199
|
continue;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { splitsGraphemeCluster, splitsSurrogatePair } from "../ai-edits/character-boundaries.js";
|
|
2
2
|
import { rangedCommentIds, visitCommentMarkers } from "../docx/commentAnchorIndex.js";
|
|
3
3
|
import { cloneDocumentWithParagraphPropertySources, copyDocumentParagraphPropertySourceContract, copyParagraphPropertySource, restoreParagraphIndentationProjection } from "../docx/paragraphPropertySource.js";
|
|
4
|
-
import { canonicalSelectionRange } from "../prosemirror/canonicalSelectionRange.js";
|
|
4
|
+
import { canonicalContentPosition, canonicalSelectionRange } from "../prosemirror/canonicalSelectionRange.js";
|
|
5
5
|
import { collectPairedBookmarkIds, footnoteToProseDoc, headerFooterToProseDoc, toProseDoc } from "../prosemirror/conversion/toProseDoc.js";
|
|
6
6
|
import { markPackageChange } from "../prosemirror/extensions/features/ParagraphChangeTrackerExtension.js";
|
|
7
7
|
import { runFormattingPatchFromMarks } from "../prosemirror/runFormattingFromMarks.js";
|
|
@@ -147,6 +147,7 @@ var CanonicalProjection = class {
|
|
|
147
147
|
}
|
|
148
148
|
addressAt(position) {
|
|
149
149
|
if (!Number.isInteger(position)) return refuse("The input position is not an integer.");
|
|
150
|
+
position = canonicalContentPosition(this.doc, position);
|
|
150
151
|
const paragraph = this.paragraphs.find(({ start, node }) => position >= start && position <= start + node.content.size);
|
|
151
152
|
if (paragraph === void 0) return refuse("The input is outside a plain paragraph.");
|
|
152
153
|
const relative = position - paragraph.start;
|
|
@@ -169,7 +170,7 @@ var CanonicalProjection = class {
|
|
|
169
170
|
if (paragraph === void 0) panic("Input lost its paragraph.");
|
|
170
171
|
let destination = position;
|
|
171
172
|
paragraph.node.forEach((node, start) => {
|
|
172
|
-
if (node.marks.some((mark) => mark.type.name === "deletion") &&
|
|
173
|
+
if (node.marks.some((mark) => mark.type.name === "deletion") && destination >= paragraph.start + start && destination < paragraph.start + start + node.nodeSize) destination = paragraph.start + start + node.nodeSize;
|
|
173
174
|
});
|
|
174
175
|
return destination === position ? address : this.addressAt(destination);
|
|
175
176
|
}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { BUILT_IN_STYLE_NAME, createBuiltInStyleIndex } from "../docx/builtInStyles.js";
|
|
2
2
|
import { getCachedNumberingMap, numberingLevelUsesBulletMarker } from "../docx/numberingParser.js";
|
|
3
3
|
import { listRequestsForMarker } from "../prosemirror/listAutoformatMarkers.js";
|
|
4
|
+
import { effectiveParagraphNumbering, paragraphNumberingSourcesFromBoundary } from "../prosemirror/numberingAttr.js";
|
|
4
5
|
import { CANONICAL_GAP } from "../types/canonicalCapabilities.js";
|
|
5
6
|
import { collectHeadings } from "../utils/headingCollector.js";
|
|
6
7
|
import { CanonicalSessionError } from "./canonicalSession.js";
|
|
7
|
-
import { Result } from "better-result";
|
|
8
|
+
import { Result, panic } from "better-result";
|
|
8
9
|
import { headingOutlineLevel, paragraphNumberingReference } from "@stll/docx-core/model";
|
|
9
|
-
import { OP_STORIES } from "@stll/docx-core/ops";
|
|
10
|
+
import { OP_STORIES, editorParagraphGroups, editorPositionAtPhysicalPosition, physicalPositionAtEditorOffset } from "@stll/docx-core/ops";
|
|
10
11
|
//#region src/controller/canonicalStructure.ts
|
|
11
12
|
const DEFAULT_TOC_PAGE_WIDTH_TWIPS = 12240;
|
|
12
13
|
const DEFAULT_TOC_MARGIN_TWIPS = 1440;
|
|
@@ -27,6 +28,10 @@ const selectedParagraphs = (session, state) => {
|
|
|
27
28
|
});
|
|
28
29
|
return session.document.package.document.content.filter((paragraph) => paragraph.type === "paragraph" && ids.has(paragraph.paraId ?? ""));
|
|
29
30
|
};
|
|
31
|
+
const effectiveNumbering = (paragraph) => effectiveParagraphNumbering(paragraphNumberingSourcesFromBoundary({
|
|
32
|
+
numPr: paragraph?.formatting?.numPr,
|
|
33
|
+
numPrFromStyle: paragraph?.formatting?.numPrFromStyle
|
|
34
|
+
}));
|
|
30
35
|
const numberingIntent = (session, paragraphs, request) => {
|
|
31
36
|
const definitions = session.document.package.numbering;
|
|
32
37
|
const map = definitions === void 0 ? void 0 : getCachedNumberingMap(definitions);
|
|
@@ -184,8 +189,8 @@ const prepareCanonicalCommands = (session, state, commands) => {
|
|
|
184
189
|
case "toggleList": {
|
|
185
190
|
const definitions = session.document.package.numbering;
|
|
186
191
|
const map = definitions === void 0 ? void 0 : getCachedNumberingMap(definitions);
|
|
187
|
-
if (!(paragraphs.length > 0 && paragraphs.every((
|
|
188
|
-
const numPr =
|
|
192
|
+
if (!(paragraphs.length > 0 && paragraphs.every((paragraph) => {
|
|
193
|
+
const numPr = effectiveNumbering(paragraph);
|
|
189
194
|
return numPr?.kind === "reference" && numberingLevelUsesBulletMarker(map?.getLevel(numPr.numId, numPr.ilvl ?? 0)) === (command.kind === "bullet");
|
|
190
195
|
}))) {
|
|
191
196
|
intents.push(numberingIntent(session, paragraphs, { kind: command.kind === "bullet" ? "bullet" : "numbered" }));
|
|
@@ -215,7 +220,7 @@ const prepareCanonicalCommands = (session, state, commands) => {
|
|
|
215
220
|
break;
|
|
216
221
|
case "changeListLevel":
|
|
217
222
|
for (const paragraph of paragraphs) {
|
|
218
|
-
const numPr = paragraph
|
|
223
|
+
const numPr = effectiveNumbering(paragraph);
|
|
219
224
|
if (numPr?.kind !== "reference") continue;
|
|
220
225
|
const at = {
|
|
221
226
|
story: OP_STORIES.MAIN,
|
|
@@ -227,30 +232,46 @@ const prepareCanonicalCommands = (session, state, commands) => {
|
|
|
227
232
|
intents.push({
|
|
228
233
|
type: "formatParagraph",
|
|
229
234
|
at,
|
|
230
|
-
patch: { numPr:
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
235
|
+
patch: { numPr: (() => {
|
|
236
|
+
if (level < 0) return { kind: "none" };
|
|
237
|
+
if (paragraph.formatting?.numPr?.kind !== "reference" && paragraph.formatting?.numPrFromStyle?.kind === "reference") return {
|
|
238
|
+
kind: "levelOnly",
|
|
239
|
+
ilvl: level
|
|
240
|
+
};
|
|
241
|
+
return paragraphNumberingReference({
|
|
242
|
+
numId: numPr.numId,
|
|
243
|
+
ilvl: level
|
|
244
|
+
});
|
|
245
|
+
})() }
|
|
234
246
|
});
|
|
235
247
|
}
|
|
236
248
|
break;
|
|
237
249
|
case "restartNumbering":
|
|
238
250
|
case "continueNumbering": {
|
|
239
251
|
const source = paragraphs.at(0);
|
|
240
|
-
const numPr = source
|
|
252
|
+
const numPr = effectiveNumbering(source);
|
|
241
253
|
const definitions = session.document.package.numbering;
|
|
242
254
|
if (source === void 0 || numPr?.kind !== "reference" || definitions === void 0) return noChange("Numbering changes require a list paragraph.");
|
|
243
255
|
const body = session.document.package.document.content;
|
|
244
256
|
const index = body.findIndex((item) => item === source);
|
|
245
|
-
const affected = body.slice(index).filter((item) =>
|
|
257
|
+
const affected = body.slice(index).filter((item) => {
|
|
258
|
+
if (item.type !== "paragraph") return false;
|
|
259
|
+
const effective = effectiveNumbering(item);
|
|
260
|
+
return effective?.kind === "reference" && effective.numId === numPr.numId;
|
|
261
|
+
});
|
|
246
262
|
let targetId;
|
|
247
263
|
let target;
|
|
248
264
|
if (command.type === "continueNumbering") {
|
|
249
265
|
const map = getCachedNumberingMap(definitions);
|
|
250
266
|
const bullet = numberingLevelUsesBulletMarker(map.getLevel(numPr.numId, numPr.ilvl ?? 0));
|
|
251
|
-
const earlier = body.slice(0, index).findLast((item) =>
|
|
252
|
-
|
|
253
|
-
|
|
267
|
+
const earlier = body.slice(0, index).findLast((item) => {
|
|
268
|
+
if (item.type !== "paragraph") return false;
|
|
269
|
+
const effective = effectiveNumbering(item);
|
|
270
|
+
return effective?.kind === "reference" && effective.numId !== numPr.numId && numberingLevelUsesBulletMarker(map.getLevel(effective.numId, effective.ilvl ?? 0)) === bullet;
|
|
271
|
+
});
|
|
272
|
+
const earlierNumbering = earlier?.type === "paragraph" ? effectiveNumbering(earlier) : void 0;
|
|
273
|
+
if (earlierNumbering?.kind !== "reference") return noChange("There is no preceding compatible list.");
|
|
274
|
+
targetId = earlierNumbering.numId;
|
|
254
275
|
target = {
|
|
255
276
|
type: "existing",
|
|
256
277
|
numId: targetId
|
|
@@ -278,14 +299,17 @@ const prepareCanonicalCommands = (session, state, commands) => {
|
|
|
278
299
|
intents.push({
|
|
279
300
|
type: "setList",
|
|
280
301
|
target,
|
|
281
|
-
items: affected.map((paragraph) =>
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
302
|
+
items: affected.map((paragraph) => {
|
|
303
|
+
const effective = effectiveNumbering(paragraph);
|
|
304
|
+
return {
|
|
305
|
+
at: {
|
|
306
|
+
story: OP_STORIES.MAIN,
|
|
307
|
+
blockId: paragraph.paraId ?? "",
|
|
308
|
+
offset: 0
|
|
309
|
+
},
|
|
310
|
+
ilvl: effective?.kind === "reference" ? effective.ilvl ?? 0 : 0
|
|
311
|
+
};
|
|
312
|
+
})
|
|
289
313
|
});
|
|
290
314
|
break;
|
|
291
315
|
}
|
|
@@ -298,17 +322,20 @@ const prepareCanonicalAutoformat = (session, state, { from, to, text }) => {
|
|
|
298
322
|
if (text !== " " || from !== to) return void 0;
|
|
299
323
|
const at = session.projection.addressAt(from);
|
|
300
324
|
if (at.isErr()) return void 0;
|
|
301
|
-
const
|
|
302
|
-
|
|
325
|
+
const logical = editorPositionAtPhysicalPosition(session.document, at.value);
|
|
326
|
+
const address = session.projection.paragraph(logical.blockId);
|
|
327
|
+
if (address === void 0 || effectiveNumbering(address.source)?.kind === "reference") return void 0;
|
|
328
|
+
const group = editorParagraphGroups(session.document, logical.story).find(({ blockId }) => blockId === logical.blockId);
|
|
329
|
+
if (group === void 0) panic("Autoformat lost its logical paragraph");
|
|
303
330
|
const source = address.source;
|
|
304
|
-
const prefix =
|
|
331
|
+
const prefix = group.text.slice(0, logical.offset) + text;
|
|
305
332
|
const requests = listRequestsForMarker(prefix);
|
|
306
333
|
const heading = /^(?<hashes>#{1,6}) $/u.exec(prefix)?.groups?.["hashes"];
|
|
307
334
|
if (requests === null && heading === void 0) return void 0;
|
|
308
|
-
const start = {
|
|
309
|
-
...
|
|
335
|
+
const start = physicalPositionAtEditorOffset(session.document, {
|
|
336
|
+
...logical,
|
|
310
337
|
offset: 0
|
|
311
|
-
};
|
|
338
|
+
});
|
|
312
339
|
const request = requests?.at(0);
|
|
313
340
|
const styleId = `Heading${heading?.length ?? 1}`;
|
|
314
341
|
if (request === void 0 && !session.hasStyle(styleId)) return void 0;
|
|
@@ -227,7 +227,7 @@ function addLayoutFontFamilyNameFace(faces, family, descriptor, fontAlternates)
|
|
|
227
227
|
* the painter and the measurer put in `ctx.font` and `style.fontFamily`.
|
|
228
228
|
*/
|
|
229
229
|
function resolvedStackFamilies(family, alternate) {
|
|
230
|
-
const { cssFallback } = resolveFontFamily(family, alternate);
|
|
230
|
+
const { cssFallback } = resolveFontFamily(family, { alternateFontName: alternate });
|
|
231
231
|
return parseFontFamilyList(cssFallback).filter((name) => !CSS_GENERIC_FONT_FAMILIES.has(name));
|
|
232
232
|
}
|
|
233
233
|
function addLayoutFontFace(faces, family, descriptor) {
|
|
@@ -42,7 +42,7 @@ const formatEndnoteTexts = (numbers, formatNumber) => {
|
|
|
42
42
|
for (const [id, displayNumber] of numbers) texts.set(id, formatNumber(displayNumber));
|
|
43
43
|
return texts;
|
|
44
44
|
};
|
|
45
|
-
const sameMeasureInputs = (left, right) => left.styles === right.styles && left.theme === right.theme && left.defaultTabStop === right.defaultTabStop && left.pageContentHeight === right.pageContentHeight && left.fontSet === right.fontSet && left.fontAlternates.size === right.fontAlternates.size && [...left.fontAlternates].every(([name, alternate]) => right.fontAlternates.get(name) === alternate) && left.markupView === right.markupView;
|
|
45
|
+
const sameMeasureInputs = (left, right) => left.embeddedFontFamilyMap === right.embeddedFontFamilyMap && left.styles === right.styles && left.theme === right.theme && left.defaultTabStop === right.defaultTabStop && left.pageContentHeight === right.pageContentHeight && left.fontSet === right.fontSet && left.fontAlternates.size === right.fontAlternates.size && [...left.fontAlternates].every(([name, alternate]) => right.fontAlternates.get(name) === alternate) && left.markupView === right.markupView;
|
|
46
46
|
/**
|
|
47
47
|
* The range an incremental pass re-measures, or `null` for a full measure: the
|
|
48
48
|
* committed measures must come from the same measure inputs, and the range is
|
|
@@ -154,7 +154,9 @@ function runLayoutPipelineMeasured(deps, state, options) {
|
|
|
154
154
|
let phaseStartedAt = performance.now();
|
|
155
155
|
const pageContentHeight = pageSize.h - margins.top - margins.bottom;
|
|
156
156
|
const fontAlternates = buildFontAlternates(document?.package.fontTable);
|
|
157
|
+
const embeddedFontFamilies = session.embeddedFontFamilyMap ? { embeddedFontFamilyMap: session.embeddedFontFamilyMap } : {};
|
|
157
158
|
const measureInputs = {
|
|
159
|
+
...embeddedFontFamilies,
|
|
158
160
|
styles,
|
|
159
161
|
theme: _theme,
|
|
160
162
|
defaultTabStop,
|
|
@@ -164,6 +166,7 @@ function runLayoutPipelineMeasured(deps, state, options) {
|
|
|
164
166
|
markupView
|
|
165
167
|
};
|
|
166
168
|
const flowOpts = {
|
|
169
|
+
...embeddedFontFamilies,
|
|
167
170
|
pageContentHeight,
|
|
168
171
|
fontAlternates,
|
|
169
172
|
...styles ? { styles } : {},
|
|
@@ -248,6 +251,7 @@ function runLayoutPipelineMeasured(deps, state, options) {
|
|
|
248
251
|
...flowOpts.defaultSize === void 0 ? {} : { defaultSize: flowOpts.defaultSize },
|
|
249
252
|
..._theme !== void 0 ? { theme: _theme } : {},
|
|
250
253
|
fontAlternates,
|
|
254
|
+
...embeddedFontFamilies,
|
|
251
255
|
measureBlocks: hfMeasureBlocks,
|
|
252
256
|
...defaultTabStop !== void 0 ? { defaultTabStopTwips: defaultTabStop } : {},
|
|
253
257
|
...flowOpts.lineBreakRules ? { lineBreakRules: flowOpts.lineBreakRules } : {},
|
|
@@ -380,6 +384,7 @@ function runLayoutPipelineMeasured(deps, state, options) {
|
|
|
380
384
|
if (_theme !== void 0) noteOptions.theme = _theme;
|
|
381
385
|
if (document?.package.numbering !== void 0) noteOptions.numbering = document.package.numbering;
|
|
382
386
|
noteOptions.fontAlternates = fontAlternates;
|
|
387
|
+
if (session.embeddedFontFamilyMap) noteOptions.embeddedFontFamilyMap = session.embeddedFontFamilyMap;
|
|
383
388
|
if (defaultTabStop !== void 0) noteOptions.defaultTabStopTwips = defaultTabStop;
|
|
384
389
|
if (flowOpts.lineBreakRules) noteOptions.lineBreakRules = flowOpts.lineBreakRules;
|
|
385
390
|
if (flowOpts.justificationCompatibility) noteOptions.justificationCompatibility = flowOpts.justificationCompatibility;
|
|
@@ -579,6 +584,7 @@ function runLayoutPipelineMeasured(deps, state, options) {
|
|
|
579
584
|
outcome.blockLookup = blockLookup;
|
|
580
585
|
const footnotesByPage = hasFootnotes ? buildFootnoteRenderItems(pageFootnoteMap, footnoteContentMap, document) : void 0;
|
|
581
586
|
const renderOpts = {
|
|
587
|
+
...embeddedFontFamilies,
|
|
582
588
|
pageGap,
|
|
583
589
|
showShadow: true,
|
|
584
590
|
blockLookup,
|
|
@@ -23,6 +23,7 @@ type LayoutTemplatePreview = {
|
|
|
23
23
|
* that changes how text measures brings new styles or font alternates.
|
|
24
24
|
*/
|
|
25
25
|
type LayoutMeasureInputs = {
|
|
26
|
+
embeddedFontFamilyMap?: ReadonlyMap<string, string>;
|
|
26
27
|
styles: document_d_exports.StyleDefinitions | null | undefined;
|
|
27
28
|
theme: document_d_exports.Theme | null | undefined;
|
|
28
29
|
defaultTabStop: number | undefined;
|
|
@@ -37,6 +38,7 @@ type LayoutMeasureInputs = {
|
|
|
37
38
|
markupView: DisplayMode;
|
|
38
39
|
};
|
|
39
40
|
type LayoutSession = {
|
|
41
|
+
embeddedFontFamilyMap?: ReadonlyMap<string, string>;
|
|
40
42
|
artifacts: LayoutArtifacts | null;
|
|
41
43
|
lastEditorState: EditorState | null;
|
|
42
44
|
lastPmDoc: EditorState["doc"] | null;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ptToPx } from "../../layout-engine/measure/measureHelpers.js";
|
|
2
2
|
import { getFontMetrics } from "../../layout-engine/measure/measureProvider.js";
|
|
3
|
-
import { resolveFontFamily } from "../../utils/fontResolver.js";
|
|
3
|
+
import { parseFontFamilyList, resolveFontFamily } from "../../utils/fontResolver.js";
|
|
4
4
|
//#region src/display-list/build/fontTable.ts
|
|
5
5
|
const CSS_NORMAL_WEIGHT = 400;
|
|
6
6
|
const CSS_BOLD_WEIGHT = 700;
|
|
@@ -12,7 +12,6 @@ const GENERIC_FAMILIES = {
|
|
|
12
12
|
fantasy: "fantasy"
|
|
13
13
|
};
|
|
14
14
|
const DEFAULT_GENERIC = "sans-serif";
|
|
15
|
-
const splitFallbackStack = (cssFallback) => cssFallback.split(",").map((entry) => entry.trim().replace(/^["']|["']$/gu, ""));
|
|
16
15
|
/**
|
|
17
16
|
* The category `resolveFontFamily` chose. It is the last CSS generic in the
|
|
18
17
|
* stack it built, which is where `detectFontCategory` puts it; reading it back
|
|
@@ -30,8 +29,8 @@ const faceKey = (family, weight, italic) => `${family.toLowerCase()} ${weight} $
|
|
|
30
29
|
* Package faces keyed by every family name a run can resolve to.
|
|
31
30
|
*
|
|
32
31
|
* `resolveFontFamily` substitutes the scoped `folio-embedded-{nonce}-{name}`
|
|
33
|
-
* family
|
|
34
|
-
* that
|
|
32
|
+
* family when the run carries its document-owned embedded-family map; a build
|
|
33
|
+
* without that context resolves the same run to the authored name. Both
|
|
35
34
|
* names therefore key the same face, and the bytes are interned by id so one
|
|
36
35
|
* face's binary appears once however many names reach it.
|
|
37
36
|
*/
|
|
@@ -64,7 +63,10 @@ var FontTable = class {
|
|
|
64
63
|
this.embeddedByKey = indexEmbeddedFonts(embeddedFonts);
|
|
65
64
|
}
|
|
66
65
|
intern({ fontFamily, alternateFontFamily, bold, italic, measureStyle }) {
|
|
67
|
-
const stack =
|
|
66
|
+
const stack = parseFontFamilyList(resolveFontFamily(fontFamily, {
|
|
67
|
+
alternateFontName: alternateFontFamily,
|
|
68
|
+
embeddedFontFamilyMap: measureStyle.embeddedFontFamilyMap
|
|
69
|
+
}).cssFallback);
|
|
68
70
|
const family = stack.at(0) ?? fontFamily;
|
|
69
71
|
const weight = bold ? CSS_BOLD_WEIGHT : CSS_NORMAL_WEIGHT;
|
|
70
72
|
const isItalic = italic === true;
|
|
@@ -12,6 +12,7 @@ import { PageComposer } from "./regions.js";
|
|
|
12
12
|
* caller's `documentFeatures` shows the document had one.
|
|
13
13
|
*/
|
|
14
14
|
type PageFurnitureInputs = {
|
|
15
|
+
embeddedFontFamilyMap?: ReadonlyMap<string, string>;
|
|
15
16
|
/**
|
|
16
17
|
* `w:pgBorders` for the section. Absent: no border is painted, and the gap is
|
|
17
18
|
* reported unless `documentFeatures` says the document has none.
|
|
@@ -61,6 +61,7 @@ const paintPageFurniture = ({ page, furniture, context }) => {
|
|
|
61
61
|
const watermark = !suppliesWatermark(furniture) || selected.watermark === void 0 ? [] : paintWatermark({
|
|
62
62
|
page,
|
|
63
63
|
watermark: selected.watermark,
|
|
64
|
+
...furniture.embeddedFontFamilyMap ? { embeddedFontFamilyMap: furniture.embeddedFontFamilyMap } : {},
|
|
64
65
|
...furniture.watermarkImageSrc === void 0 ? {} : { imageSrc: furniture.watermarkImageSrc },
|
|
65
66
|
context
|
|
66
67
|
});
|
|
@@ -4,12 +4,13 @@ import { DisplayPrimitive } from "../types.js";
|
|
|
4
4
|
import { BuildContext } from "./buildContext.js";
|
|
5
5
|
//#region src/display-list/build/watermarkPrimitives.d.ts
|
|
6
6
|
type WatermarkPaintOptions = {
|
|
7
|
+
embeddedFontFamilyMap?: ReadonlyMap<string, string> | undefined;
|
|
7
8
|
readonly page: Page;
|
|
8
9
|
readonly watermark: document_d_exports.Watermark;
|
|
9
10
|
/** Resolved `data:` source for a picture watermark; absent means unresolved. */
|
|
10
11
|
readonly imageSrc?: string;
|
|
11
12
|
readonly context: BuildContext;
|
|
12
13
|
};
|
|
13
|
-
declare const paintWatermark: ({ page, watermark, imageSrc, context }: WatermarkPaintOptions) => readonly DisplayPrimitive[];
|
|
14
|
+
declare const paintWatermark: ({ page, watermark, imageSrc, context, embeddedFontFamilyMap }: WatermarkPaintOptions) => readonly DisplayPrimitive[];
|
|
14
15
|
//#endregion
|
|
15
16
|
export { WatermarkPaintOptions, paintWatermark };
|
|
@@ -29,9 +29,10 @@ const TEXT_DEFAULT_OPACITY = .5;
|
|
|
29
29
|
const TEXT_DIAGONAL_DEGREES = -45;
|
|
30
30
|
const PICTURE_NATIVE_SCALE = 1;
|
|
31
31
|
const PICTURE_WASHOUT_OPACITY = .18;
|
|
32
|
-
const paintTextWatermark = (watermark, page, context) => {
|
|
32
|
+
const paintTextWatermark = ({ watermark, page, context, embeddedFontFamilyMap }) => {
|
|
33
33
|
if (watermark.text.length === 0) return [];
|
|
34
34
|
const style = {
|
|
35
|
+
...embeddedFontFamilyMap ? { embeddedFontFamilyMap } : {},
|
|
35
36
|
fontFamily: watermark.font ?? TEXT_DEFAULT_FONT,
|
|
36
37
|
fontSize: pxToPt(TEXT_FONT_SIZE_PX),
|
|
37
38
|
bold: true
|
|
@@ -129,9 +130,14 @@ const paintPictureWatermark = (watermark, page, imageSrc, context) => {
|
|
|
129
130
|
opacity: watermark.washout === false ? 1 : PICTURE_WASHOUT_OPACITY
|
|
130
131
|
}];
|
|
131
132
|
};
|
|
132
|
-
const paintWatermark = ({ page, watermark, imageSrc, context }) => {
|
|
133
|
+
const paintWatermark = ({ page, watermark, imageSrc, context, embeddedFontFamilyMap }) => {
|
|
133
134
|
switch (watermark.kind) {
|
|
134
|
-
case "text": return paintTextWatermark(
|
|
135
|
+
case "text": return paintTextWatermark({
|
|
136
|
+
watermark,
|
|
137
|
+
page,
|
|
138
|
+
context,
|
|
139
|
+
embeddedFontFamilyMap
|
|
140
|
+
});
|
|
135
141
|
case "picture": return paintPictureWatermark(watermark, page, imageSrc, context);
|
|
136
142
|
default: return [];
|
|
137
143
|
}
|
|
@@ -17,6 +17,7 @@ const isPageRendererName = (value) => value === PAGE_RENDERER.legacy || value ==
|
|
|
17
17
|
* which header a page carries.
|
|
18
18
|
*/
|
|
19
19
|
const displayListFurnitureFrom = (options) => ({
|
|
20
|
+
...options.embeddedFontFamilyMap ? { embeddedFontFamilyMap: options.embeddedFontFamilyMap } : {},
|
|
20
21
|
...options.pageBorders === void 0 ? {} : { pageBorders: options.pageBorders },
|
|
21
22
|
...options.theme === void 0 ? {} : { theme: options.theme },
|
|
22
23
|
...options.watermark === void 0 ? {} : { watermark: options.watermark },
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { document_d_exports } from "./types/document.js";
|
|
2
2
|
import { FolioTableTemplates } from "./ai-edits/table-template.js";
|
|
3
3
|
import { FolioAIEditAppliedOperation, FolioAIEditApplyMode, FolioAIEditNormalization, FolioAIEditOperation, FolioAIEditPrecondition, FolioAIEditSkippedOperation, FolioAIEditSnapshot, FolioAITextRangeHandle } from "./ai-edits/types.js";
|
|
4
|
-
import { FolioAIEditView, FolioReplacementBackground, FolioRevisionStamp,
|
|
4
|
+
import { FolioAIEditView, FolioReplacementBackground, FolioRevisionStamp, FolioUndefinedReferencePolicy, FolioWordDiffOptions } from "./ai-edits/apply.js";
|
|
5
5
|
//#region src/document-operations.d.ts
|
|
6
6
|
declare const FOLIO_DOCUMENT_OPERATION_CONTRACT_VERSION: 1;
|
|
7
7
|
/** Direct paragraph-alignment values accepted by the operation contract. */
|
|
@@ -298,14 +298,9 @@ type ApplyFolioDocumentOperationsOptions = {
|
|
|
298
298
|
* revised document — keeps them instead.
|
|
299
299
|
*/
|
|
300
300
|
replacementBackground?: FolioReplacementBackground;
|
|
301
|
-
/**
|
|
302
|
-
|
|
303
|
-
* does. Refusing it (`missingStyle`) is the default; a caller copying the
|
|
304
|
-
* style references of another document — a comparison reproducing the
|
|
305
|
-
* revised one — keeps them instead.
|
|
306
|
-
*/
|
|
307
|
-
undefinedStyles?: FolioUndefinedStylePolicy;
|
|
301
|
+
/** Required policy for undefined style and numbering references. */
|
|
302
|
+
undefinedReferences: FolioUndefinedReferencePolicy;
|
|
308
303
|
};
|
|
309
|
-
declare const applyFolioDocumentOperations: ({ view, snapshot, batch, story, author, createCommentId, createUndoHandle, revisionStamp, wordDiff, tableTemplates, replacementBackground,
|
|
304
|
+
declare const applyFolioDocumentOperations: ({ view, snapshot, batch, story, author, createCommentId, createUndoHandle, revisionStamp, wordDiff, tableTemplates, replacementBackground, undefinedReferences }: ApplyFolioDocumentOperationsOptions) => FolioDocumentOperationResult;
|
|
310
305
|
//#endregion
|
|
311
306
|
export { ApplyFolioDocumentOperationsOptions, FOLIO_DOCUMENT_OPERATION_BATCH_MODES, FOLIO_DOCUMENT_OPERATION_BATCH_PRECONDITIONS, FOLIO_DOCUMENT_OPERATION_CONTRACT_VERSION, FOLIO_DOCUMENT_OPERATION_KEYS_BY_TYPE, FOLIO_DOCUMENT_OPERATION_MODES, FOLIO_DOCUMENT_OPERATION_MODES_BY_TYPE, FOLIO_DOCUMENT_OPERATION_PRECONDITIONS, FOLIO_DOCUMENT_OPERATION_STORIES, FOLIO_DOCUMENT_OPERATION_TYPES, FOLIO_LINE_SPACING_RULE_VALUES, FOLIO_PAGE_BREAK_CLEAR_VALUES, FOLIO_PARAGRAPH_ALIGNMENT_VALUES, FolioDocumentOperation, FolioDocumentOperationAffectedTarget, FolioDocumentOperationBatch, FolioDocumentOperationBatchPrecondition, FolioDocumentOperationCapabilities, FolioDocumentOperationIssue, FolioDocumentOperationMode, FolioDocumentOperationPrecondition, FolioDocumentOperationQueuedOperation, FolioDocumentOperationReceipt, FolioDocumentOperationRecovery, FolioDocumentOperationResult, FolioDocumentOperationResultBase, FolioDocumentOperationStatus, FolioDocumentOperationStory, FolioDocumentOperationType, FolioDocumentOperationUndoFailureReason, FolioDocumentOperationUndoHandle, FolioDocumentOperationUndoResult, InvalidFolioDocumentOperationBatchError, UnsupportedFolioDocumentOperationVersionError, applyFolioDocumentOperations, assertSupportedFolioDocumentOperationVersion, getFolioDocumentOperationCapabilities, getFolioDocumentOperationIssues, getFolioDocumentOperationReceipts, getFolioDocumentOperationReceiptsForStory, isFolioDocumentOperationModeSupported, isSupportedFolioDocumentOperationVersion, parseFolioDocumentOperationBatch };
|