@web-ppt/edit-core 0.5.0-beta.1

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.
Files changed (179) hide show
  1. package/CHANGELOG.md +274 -0
  2. package/LICENSE +21 -0
  3. package/README.md +474 -0
  4. package/dist/animation-catalog.d.ts +21 -0
  5. package/dist/body-properties.d.ts +8 -0
  6. package/dist/body-property-schema.d.ts +3 -0
  7. package/dist/change-classification.d.ts +10 -0
  8. package/dist/clipboard-binary.d.ts +4 -0
  9. package/dist/clipboard-links.d.ts +11 -0
  10. package/dist/clipboard-source.d.ts +23 -0
  11. package/dist/clipboard.d.ts +4 -0
  12. package/dist/commands/add-image.d.ts +4 -0
  13. package/dist/commands/add-shape.d.ts +4 -0
  14. package/dist/commands/add-slide-identity.d.ts +8 -0
  15. package/dist/commands/add-slide-template.d.ts +9 -0
  16. package/dist/commands/add-slide.d.ts +3 -0
  17. package/dist/commands/add-table.d.ts +4 -0
  18. package/dist/commands/align-elements.d.ts +4 -0
  19. package/dist/commands/apply-format.d.ts +4 -0
  20. package/dist/commands/clipboard-types.d.ts +91 -0
  21. package/dist/commands/direct-format-patches.d.ts +8 -0
  22. package/dist/commands/dispatch.d.ts +7 -0
  23. package/dist/commands/duplicate-slide.d.ts +3 -0
  24. package/dist/commands/edit-text.d.ts +3 -0
  25. package/dist/commands/element-effects.d.ts +5 -0
  26. package/dist/commands/element-fill.d.ts +5 -0
  27. package/dist/commands/element-image-content.d.ts +17 -0
  28. package/dist/commands/element-interaction.d.ts +11 -0
  29. package/dist/commands/element-link.d.ts +5 -0
  30. package/dist/commands/element-name.d.ts +8 -0
  31. package/dist/commands/element-order.d.ts +7 -0
  32. package/dist/commands/element-stroke.d.ts +5 -0
  33. package/dist/commands/element-text.d.ts +6 -0
  34. package/dist/commands/element-transform.d.ts +5 -0
  35. package/dist/commands/element-tree.d.ts +8 -0
  36. package/dist/commands/fit-text-shape.d.ts +3 -0
  37. package/dist/commands/format-painter-types.d.ts +17 -0
  38. package/dist/commands/image-format.d.ts +7 -0
  39. package/dist/commands/image-resource.d.ts +4 -0
  40. package/dist/commands/insert-row.d.ts +3 -0
  41. package/dist/commands/insertion-rect.d.ts +9 -0
  42. package/dist/commands/paste-elements.d.ts +4 -0
  43. package/dist/commands/paste-resources.d.ts +18 -0
  44. package/dist/commands/patch.d.ts +6 -0
  45. package/dist/commands/remove-slide.d.ts +3 -0
  46. package/dist/commands/replace-image.d.ts +3 -0
  47. package/dist/commands/replace-text.d.ts +5 -0
  48. package/dist/commands/set-animations.d.ts +3 -0
  49. package/dist/commands/set-body-props.d.ts +3 -0
  50. package/dist/commands/set-crop.d.ts +3 -0
  51. package/dist/commands/set-effects.d.ts +3 -0
  52. package/dist/commands/set-fill.d.ts +3 -0
  53. package/dist/commands/set-flip.d.ts +4 -0
  54. package/dist/commands/set-link.d.ts +3 -0
  55. package/dist/commands/set-para-props.d.ts +3 -0
  56. package/dist/commands/set-run-props.d.ts +3 -0
  57. package/dist/commands/set-slide-properties.d.ts +7 -0
  58. package/dist/commands/set-stroke.d.ts +3 -0
  59. package/dist/commands/set-xfrm.d.ts +3 -0
  60. package/dist/commands/set-z.d.ts +5 -0
  61. package/dist/commands/slide-image.d.ts +4 -0
  62. package/dist/commands/slide-layout.d.ts +8 -0
  63. package/dist/commands/slide-notes.d.ts +8 -0
  64. package/dist/commands/slide-order.d.ts +7 -0
  65. package/dist/commands/slide-property-types.d.ts +135 -0
  66. package/dist/commands/slide-property.d.ts +20 -0
  67. package/dist/commands/slide-tree.d.ts +6 -0
  68. package/dist/commands/spid.d.ts +4 -0
  69. package/dist/commands/table-row.d.ts +5 -0
  70. package/dist/commands/text-target.d.ts +25 -0
  71. package/dist/commands/types.d.ts +509 -0
  72. package/dist/commands/xfrm.d.ts +8 -0
  73. package/dist/data-validation.d.ts +7 -0
  74. package/dist/document.d.ts +17 -0
  75. package/dist/dynamic-slide-fields.d.ts +6 -0
  76. package/dist/edit-core.js +5321 -0
  77. package/dist/editor.d.ts +38 -0
  78. package/dist/element-ancestry.d.ts +3 -0
  79. package/dist/element-name.d.ts +4 -0
  80. package/dist/element-order.d.ts +7 -0
  81. package/dist/field-text.d.ts +3 -0
  82. package/dist/fractional-index.d.ts +10 -0
  83. package/dist/history.d.ts +50 -0
  84. package/dist/hyperlink.d.ts +10 -0
  85. package/dist/image-content.d.ts +7 -0
  86. package/dist/image-resource-history.d.ts +6 -0
  87. package/dist/index-D4ZTaYOa.js +706 -0
  88. package/dist/index.d.ts +46 -0
  89. package/dist/insertion-DabLme_U.js +5471 -0
  90. package/dist/insertion-invariants.d.ts +5 -0
  91. package/dist/layout-assets.d.ts +10 -0
  92. package/dist/layout-projection.d.ts +24 -0
  93. package/dist/layout-text-rebase.d.ts +3 -0
  94. package/dist/model-invariants.d.ts +5 -0
  95. package/dist/notes-part.d.ts +2 -0
  96. package/dist/opc/bytes.d.ts +1 -0
  97. package/dist/opc/crc32.d.ts +1 -0
  98. package/dist/opc/index.d.ts +3 -0
  99. package/dist/opc/package-owner.d.ts +4 -0
  100. package/dist/opc/patch.d.ts +6 -0
  101. package/dist/opc/types.d.ts +12 -0
  102. package/dist/opc/zip.d.ts +28 -0
  103. package/dist/opc-owner-protocol.d.ts +5 -0
  104. package/dist/opc.js +5 -0
  105. package/dist/paragraph-properties.d.ts +4 -0
  106. package/dist/paragraph-property-schema.d.ts +4 -0
  107. package/dist/patch-DO8497wO.js +322 -0
  108. package/dist/projection.d.ts +19 -0
  109. package/dist/recovery-identity.d.ts +35 -0
  110. package/dist/recovery-types.d.ts +30 -0
  111. package/dist/recovery.d.ts +28 -0
  112. package/dist/run-links.d.ts +3 -0
  113. package/dist/run-properties.d.ts +4 -0
  114. package/dist/run-property-schema.d.ts +3 -0
  115. package/dist/save/animation.d.ts +6 -0
  116. package/dist/save/background-image.d.ts +8 -0
  117. package/dist/save/clipboard-parts.d.ts +11 -0
  118. package/dist/save/drawing-color.d.ts +2 -0
  119. package/dist/save/duplicate-slide-parts.d.ts +15 -0
  120. package/dist/save/effects.d.ts +6 -0
  121. package/dist/save/hyperlink.d.ts +18 -0
  122. package/dist/save/image-content.d.ts +4 -0
  123. package/dist/save/index.d.ts +5 -0
  124. package/dist/save/insertion.d.ts +14 -0
  125. package/dist/save/layout-fallback-source.d.ts +4 -0
  126. package/dist/save/layout-fallback.d.ts +7 -0
  127. package/dist/save/materialize.d.ts +5 -0
  128. package/dist/save/name.d.ts +5 -0
  129. package/dist/save/notes.d.ts +12 -0
  130. package/dist/save/order.d.ts +5 -0
  131. package/dist/save/remove-element.d.ts +4 -0
  132. package/dist/save/remove-slide-parts.d.ts +11 -0
  133. package/dist/save/shape-format.d.ts +14 -0
  134. package/dist/save/slide-parts.d.ts +11 -0
  135. package/dist/save/slide-properties.d.ts +4 -0
  136. package/dist/save/table.d.ts +7 -0
  137. package/dist/save/text-body.d.ts +4 -0
  138. package/dist/save/text.d.ts +6 -0
  139. package/dist/save/transition.d.ts +4 -0
  140. package/dist/save/xfrm.d.ts +22 -0
  141. package/dist/save/xml-element.d.ts +3 -0
  142. package/dist/save.js +1559 -0
  143. package/dist/selection-pane.d.ts +18 -0
  144. package/dist/selection.d.ts +11 -0
  145. package/dist/session-assets.d.ts +20 -0
  146. package/dist/shape-effects.d.ts +6 -0
  147. package/dist/shape-fill.d.ts +12 -0
  148. package/dist/shape-stroke.d.ts +9 -0
  149. package/dist/slide-animation.d.ts +15 -0
  150. package/dist/slide-background-source.d.ts +13 -0
  151. package/dist/slide-notes.d.ts +2 -0
  152. package/dist/slide-properties.d.ts +4 -0
  153. package/dist/slide-transition.d.ts +19 -0
  154. package/dist/space.d.ts +47 -0
  155. package/dist/table-cell.d.ts +10 -0
  156. package/dist/table-direct-markup.d.ts +3 -0
  157. package/dist/table-insertion-policy.d.ts +5 -0
  158. package/dist/table-row-append-validation.d.ts +3 -0
  159. package/dist/table-rows.d.ts +12 -0
  160. package/dist/text-model.d.ts +28 -0
  161. package/dist/text-override-projection.d.ts +8 -0
  162. package/dist/text-override-validation.d.ts +7 -0
  163. package/dist/text-position.d.ts +8 -0
  164. package/dist/text-search-types.d.ts +46 -0
  165. package/dist/text-search.d.ts +5 -0
  166. package/dist/transaction-validation.d.ts +5 -0
  167. package/dist/types.d.ts +519 -0
  168. package/dist/xml/index.d.ts +9 -0
  169. package/dist/xml/mutate.d.ts +7 -0
  170. package/dist/xml/namespace.d.ts +5 -0
  171. package/dist/xml/nodes.d.ts +22 -0
  172. package/dist/xml/order.d.ts +15 -0
  173. package/dist/xml/qname.d.ts +15 -0
  174. package/dist/xml/query.d.ts +10 -0
  175. package/dist/xml/state.d.ts +30 -0
  176. package/dist/xml/tree.d.ts +8 -0
  177. package/dist/xml/types.d.ts +46 -0
  178. package/dist/xml.js +19 -0
  179. package/package.json +67 -0
@@ -0,0 +1,15 @@
1
+ import type { EditDoc, RemovedElementRecord, SlideRecord } from '../types';
2
+ export interface DuplicateNotesParts {
3
+ readonly slidePart: string;
4
+ readonly sourcePart: string;
5
+ readonly targetPart: string;
6
+ }
7
+ export declare function duplicateSlideSource(doc: EditDoc, slide: SlideRecord, baselines: Readonly<Record<string, Uint8Array>>): Uint8Array | undefined;
8
+ export declare function duplicateRelationshipSource(doc: EditDoc, slide: SlideRecord, baselines: Readonly<Record<string, Uint8Array>>): Uint8Array | undefined;
9
+ export declare function duplicateSlideRemovals(slide: SlideRecord): RemovedElementRecord[];
10
+ export declare function duplicateNotesParts(slides: readonly SlideRecord[]): DuplicateNotesParts[];
11
+ export declare function patchDuplicateSlideRelationships(source: Uint8Array, notes: DuplicateNotesParts | undefined): Uint8Array;
12
+ export declare function cloneDuplicateNotesParts(doc: EditDoc, baselines: Readonly<Record<string, Uint8Array>>, notes: DuplicateNotesParts): {
13
+ notes: Uint8Array;
14
+ relationships: Uint8Array;
15
+ };
@@ -0,0 +1,6 @@
1
+ import type { Effects } from '@web-ppt/core';
2
+ import type { ElementRecord } from '../types';
3
+ import type { XmlDocument } from '../xml/types';
4
+ export declare function hasEffectsOverride(record: ElementRecord): boolean;
5
+ export declare function materializeElementEffects(document: XmlDocument, record: ElementRecord, effects: Effects): void;
6
+ export declare function patchElementEffects(document: XmlDocument, record: ElementRecord): void;
@@ -0,0 +1,18 @@
1
+ import type { EditDoc, ElementInsertionRelationship, ElementRecord, LinkOverride, LinkTarget } from '../types';
2
+ import type { XmlDocument, XmlElement } from '../xml/types';
3
+ export declare const HYPERLINK_RELATIONSHIP = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink";
4
+ export declare const SLIDE_RELATIONSHIP = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide";
5
+ export interface HyperlinkSaveContext {
6
+ readonly sourcePart: string;
7
+ relationId(target: LinkTarget): string | null;
8
+ retireRelationship(id: string): void;
9
+ retiredRelationshipIds(): ReadonlySet<string>;
10
+ removeDanglingHyperlinks(document: XmlDocument): void;
11
+ generatedRelationships(): readonly ElementInsertionRelationship[];
12
+ }
13
+ export declare function hasDanglingSlideRelationships(doc: EditDoc, sourcePart: string, source: Uint8Array | undefined): boolean;
14
+ export declare function createHyperlinkSaveContext(doc: EditDoc, sourcePart: string, source: Uint8Array | undefined, additions: readonly ElementInsertionRelationship[]): HyperlinkSaveContext;
15
+ export declare function hasHyperlinkOverrides(record: ElementRecord): boolean;
16
+ export declare function patchHyperlinkNode(parent: XmlElement, override: LinkOverride, context: HyperlinkSaveContext): void;
17
+ export declare function patchElementHyperlink(document: XmlDocument, record: ElementRecord, context: HyperlinkSaveContext): void;
18
+ export declare function patchHyperlinkRelationshipPart(source: Uint8Array | undefined, additions: readonly ElementInsertionRelationship[], context: HyperlinkSaveContext, slideBytes: Uint8Array): Uint8Array;
@@ -0,0 +1,4 @@
1
+ import type { ElementRecord } from '../types';
2
+ import type { XmlDocument } from '../xml/types';
3
+ export declare function hasImageContentOverrides(record: ElementRecord): boolean;
4
+ export declare function patchElementImageContent(document: XmlDocument, record: ElementRecord): void;
@@ -0,0 +1,5 @@
1
+ import type { OpcPatchResult } from '../opc/types';
2
+ import type { EditDoc } from '../types';
3
+ /** 始终从首次触碰的基线重建 part,避免连续保存把旧覆盖烘进源树而破坏撤销。 */
4
+ export declare function saveEditDoc(doc: EditDoc): OpcPatchResult;
5
+ export type { OpcFallbackReason, OpcPatchResult, OpcSaveMode } from '../opc/types';
@@ -0,0 +1,14 @@
1
+ import type { XmlDocument } from '../xml/types';
2
+ import type { EditDoc, ElementRecord, RemovedElementRecord } from '../types';
3
+ import type { HyperlinkSaveContext } from './hyperlink';
4
+ /** 删除、插入、覆盖的先后顺序与整页保存一致;复制片段也复用这一条物化路径。 */
5
+ export declare function materializeElementTreeState(document: XmlDocument, doc: EditDoc, part: string, records: readonly ElementRecord[], removals: readonly RemovedElementRecord[], options?: {
6
+ skipInsertions?: ReadonlySet<string>;
7
+ scope?: ReadonlySet<string>;
8
+ links?: HyperlinkSaveContext;
9
+ }): void;
10
+ /** 从来源基线构造当前有效元素树,供复制原始宿主及其所有后代。 */
11
+ export declare function materializeElementRoots(doc: EditDoc, roots: readonly ElementRecord[], source: Uint8Array): XmlDocument;
12
+ export declare function materializeInsertionFragment(doc: EditDoc, record: ElementRecord): XmlDocument;
13
+ /** 新宿主先进入目标树,后续变换与层级补丁才能继续复用统一的 spid 定位。 */
14
+ export declare function patchInsertedElements(document: XmlDocument, doc: EditDoc, records: readonly ElementRecord[], skip?: ReadonlySet<string>): Set<string>;
@@ -0,0 +1,4 @@
1
+ import type { EditDoc, ElementRecord, SlideRecord } from '../types';
2
+ import type { XmlElement } from '../xml/types';
3
+ /** 保存期间按 part 缓存保留型 XML;继承 custGeom 复制公式树,而不是从烘焙 path 反推。 */
4
+ export declare function createLayoutFallbackGeometryResolver(doc: EditDoc): (slide: SlideRecord, record: ElementRecord) => XmlElement | undefined;
@@ -0,0 +1,7 @@
1
+ import type { GeomSpec, SlideElement } from '@web-ppt/core';
2
+ import type { XmlDocument, XmlElement } from '../xml/types';
3
+ import type { ElementRecord } from '../types';
4
+ /**
5
+ * 目标版式没有对应占位符时,只固定原来由旧版式继承的字段;页面本来直设的 XML 必须逐字保留。
6
+ */
7
+ export declare function materializeLayoutFallback(document: XmlDocument, record: ElementRecord, effective: SlideElement, geom: GeomSpec | undefined, sourceGeometry?: XmlElement): void;
@@ -0,0 +1,5 @@
1
+ import type { EditDoc, ElementRecord } from '../types';
2
+ import type { XmlDocument } from '../xml/types';
3
+ import type { HyperlinkSaveContext } from './hyperlink';
4
+ /** 插入片段与整页保存必须经过同一条覆盖物化管线,避免二次复制丢失编辑。 */
5
+ export declare function materializeElementOverrides(document: XmlDocument, doc: EditDoc, part: string, records: readonly ElementRecord[], scope?: ReadonlySet<string>, structuralContentAlreadyMaterialized?: ReadonlySet<string>, links?: HyperlinkSaveContext): void;
@@ -0,0 +1,5 @@
1
+ import type { ElementRecord } from '../types';
2
+ import type { XmlDocument } from '../xml/types';
3
+ export declare function hasNameOverride(record: ElementRecord): boolean;
4
+ /** 名称只落在宿主 cNvPr;不重建 non-visual 树,避免碰未知扩展与锁定节点。 */
5
+ export declare function patchElementName(document: XmlDocument, record: ElementRecord): void;
@@ -0,0 +1,12 @@
1
+ import type { EditDoc, SlideRecord } from '../types';
2
+ /** 只替换 body 占位符段落;其它形状、关系、扩展和文本格式保持原树。 */
3
+ export declare function patchNotesText(source: Uint8Array, value: string): Uint8Array;
4
+ /** 备注关系属于页面元数据;只重定向指定 rId,不能重建整个关系 part。 */
5
+ export declare function patchSlideNotesRelationship(slide: SlideRecord, source?: Uint8Array): Uint8Array;
6
+ export interface NotesSavePlan {
7
+ readonly relationshipSlides: Map<string, SlideRecord>;
8
+ readonly trackedParts: Set<string>;
9
+ }
10
+ /** 捕获第一次触碰的基线,并把会话创建的 notes part 纳入可撤销生命周期。 */
11
+ export declare function prepareNotesSave(doc: EditDoc, baselines: Record<string, Uint8Array>, createdParts: Set<string>): NotesSavePlan;
12
+ export declare function materializeNotesParts(doc: EditDoc, baselines: Readonly<Record<string, Uint8Array>>, plan: NotesSavePlan, changes: Record<string, Uint8Array | null>): void;
@@ -0,0 +1,5 @@
1
+ import type { EditDoc, ElementRecord } from '../types';
2
+ import type { XmlDocument } from '../xml/types';
3
+ export declare function hasOrderOverride(record: ElementRecord): boolean;
4
+ /** 同一父级只执行一次宿主重排;未知节点与只读投影占据的 XML 槽位不会被搬动。 */
5
+ export declare function patchElementOrders(document: XmlDocument, doc: EditDoc, part: string, scope?: ReadonlySet<string>): void;
@@ -0,0 +1,4 @@
1
+ import type { RemovedElementRecord } from '../types';
2
+ import type { XmlDocument } from '../xml/types';
3
+ /** 删除宿主节点但不碰 rels 或媒体;共享资源只能在保存期可达性分析后回收。 */
4
+ export declare function patchRemovedElement(document: XmlDocument, record: RemovedElementRecord): void;
@@ -0,0 +1,11 @@
1
+ import type { EditDoc } from '../types';
2
+ export interface RemovedSlidePackageParts {
3
+ readonly slideParts: ReadonlySet<string>;
4
+ readonly packageParts: ReadonlySet<string>;
5
+ readonly contentTypeParts: ReadonlySet<string>;
6
+ }
7
+ export declare function removedSlidePartNames(doc: EditDoc, knownCreatedParts?: ReadonlySet<string>): Set<string>;
8
+ /** 保存后撤销尚未写回时,只有缺失来源页及其 notes 闭包可由基线暂时托管。 */
9
+ export declare function detachedSlideBaselineParts(doc: EditDoc): Set<string>;
10
+ /** 只清理页面拥有的 OPC 身份;关系目标默认保留,notes 仅在没有活动页引用时删除。 */
11
+ export declare function removedSlidePackageParts(doc: EditDoc, knownCreatedParts: ReadonlySet<string>): RemovedSlidePackageParts;
@@ -0,0 +1,14 @@
1
+ import type { Fill, Stroke } from '@web-ppt/core';
2
+ import type { ElementRecord } from '../types';
3
+ import type { XmlDocument, XmlElement } from '../xml/types';
4
+ export declare function appendVectorFill(properties: XmlElement, fill: Exclude<Fill, {
5
+ type: 'image';
6
+ }>): void;
7
+ export declare function removeDrawingFillChildren(properties: XmlElement): void;
8
+ /** 目标版式不再提供占位符时,把旧版式的有效矢量填充固定到页面宿主。 */
9
+ export declare function materializeElementFill(document: XmlDocument, record: ElementRecord, fill: Exclude<Fill, {
10
+ type: 'image';
11
+ }> | null): void;
12
+ export declare function materializeElementStroke(document: XmlDocument, record: ElementRecord, stroke: Stroke | null): void;
13
+ export declare function hasShapeFormatOverrides(record: ElementRecord): boolean;
14
+ export declare function patchElementShapeFormat(document: XmlDocument, record: ElementRecord): void;
@@ -0,0 +1,11 @@
1
+ import type { EditDoc, SlideRecord } from '../types';
2
+ export declare function createdSlides(doc: EditDoc): SlideRecord[];
3
+ export declare function emptySlideXml(): Uint8Array;
4
+ export declare function createdSlideRelationships(slide: SlideRecord, source?: Uint8Array): Uint8Array;
5
+ /** 复用既有 rId,只改内部 Target;未知关系、属性与顺序均留在原树。 */
6
+ export declare function patchSlideLayoutRelationship(slide: SlideRecord, source?: Uint8Array): Uint8Array;
7
+ /** PowerPoint 会重算字段,LibreOffice 不一定;只刷新 a:fld 的缓存文字,不降级成普通 run。 */
8
+ export declare function patchSlideNumberFields(source: Uint8Array, slideNumber: number): Uint8Array;
9
+ export declare function patchPresentationSlides(source: Uint8Array, relationships: Uint8Array, doc: EditDoc): Uint8Array;
10
+ export declare function patchPresentationRelationships(source: Uint8Array, doc: EditDoc): Uint8Array;
11
+ export declare function patchSlideContentTypes(source: Uint8Array, doc: EditDoc, removedParts?: ReadonlySet<string>): Uint8Array;
@@ -0,0 +1,4 @@
1
+ import type { EditDoc, SlideRecord } from '../types';
2
+ import type { XmlDocument } from '../xml/types';
3
+ export declare function hasSlidePropertyOverrides(record: SlideRecord): boolean;
4
+ export declare function patchSlideProperties(document: XmlDocument, doc: EditDoc, record: SlideRecord): void;
@@ -0,0 +1,7 @@
1
+ import type { ElementRecord } from '../types';
2
+ import type { XmlDocument } from '../xml/types';
3
+ export declare function hasTableRowOverrides(record: ElementRecord): boolean;
4
+ /** 从首次触碰基线重建,连续保存不会重复烘入相同行。 */
5
+ export declare function patchTableRows(document: XmlDocument, record: ElementRecord): void;
6
+ /** frame 与内部网格必须同生共变;Office 不会替编辑模型猜测各行列的新整数尺寸。 */
7
+ export declare function patchTableGeometry(document: XmlDocument, record: ElementRecord): void;
@@ -0,0 +1,4 @@
1
+ import type { TextBodyPropertyOverrides } from '../types';
2
+ import type { XmlElement } from '../xml/types';
3
+ /** 只改用户触碰的 bodyPr 字段;null 删除本层声明,让 OOXML 继承链重新生效。 */
4
+ export declare function patchTextBodyProperties(bodyPr: XmlElement, overrides: TextBodyPropertyOverrides | undefined): void;
@@ -0,0 +1,6 @@
1
+ import type { ElementRecord } from '../types';
2
+ import type { XmlDocument } from '../xml/types';
3
+ import type { HyperlinkSaveContext } from './hyperlink';
4
+ export declare function hasTextOverrides(record: ElementRecord): boolean;
5
+ /** 形状与表格只在宿主定位上不同,段落保留算法必须共用。 */
6
+ export declare function patchElementText(document: XmlDocument, record: ElementRecord, links?: HyperlinkSaveContext): void;
@@ -0,0 +1,4 @@
1
+ import type { Transition } from '@web-ppt/core';
2
+ import type { XmlDocument } from '../xml/types';
3
+ /** 只替换 transition 自己占据的 schema 槽位;无关 MCE、timing 与扩展原地保留。 */
4
+ export declare function patchSlideTransition(document: XmlDocument, value: Transition, blockInherited?: boolean): void;
@@ -0,0 +1,22 @@
1
+ import type { SlideElement } from '@web-ppt/core';
2
+ import type { ElementRecord } from '../types';
3
+ import type { XmlDocument, XmlElement } from '../xml/types';
4
+ export interface HostSpec {
5
+ readonly namespaceUri: string;
6
+ readonly nonVisual: string;
7
+ readonly properties: string | null;
8
+ readonly frame: boolean;
9
+ }
10
+ export interface LocatedHost {
11
+ host: XmlElement;
12
+ parent: XmlElement;
13
+ spec: HostSpec;
14
+ }
15
+ /** 批量定位同一 part 的宿主只遍历 XML 一次,避免大页层级保存退化为节点数平方。 */
16
+ export declare function locateElementHosts(document: XmlDocument, records: readonly Pick<ElementRecord, 'id' | 'meta'>[]): Map<string, LocatedHost>;
17
+ export declare function locateElementHost(document: XmlDocument, record: Pick<ElementRecord, 'id' | 'meta'>): LocatedHost;
18
+ export declare function hasXfrmOverrides(record: ElementRecord): boolean;
19
+ /** 把一个元素的显式覆盖写到自己的宿主变换节点,不读取或改写框架内部内容。 */
20
+ export declare function patchElementXfrm(document: XmlDocument, record: ElementRecord): void;
21
+ /** 版式目标缺失时写入完整有效 frame,使 Office 重开不再依赖已经断开的旧版式宿主。 */
22
+ export declare function materializeElementXfrm(document: XmlDocument, record: ElementRecord, effective: SlideElement): void;
@@ -0,0 +1,3 @@
1
+ import type { XmlElement } from '../xml/types';
2
+ /** 沿用源 part 已绑定的前缀;没有绑定时才为新命名空间声明稳定前缀。 */
3
+ export declare function namespacedElement(parent: XmlElement, namespaceUri: string, localName: string): XmlElement;