#1699 Allow images to work with Hyperlink

Add stack to IContext for prepForXml
This commit is contained in:
Dolan Miu
2022-12-26 15:12:44 +00:00
parent abcfd79f2f
commit fe8b0a6b2b
16 changed files with 506 additions and 26 deletions

View File

@ -1,6 +1,21 @@
import { XmlComponent } from "@file/xml-components";
import { IContext, IXmlableObject, XmlComponent } from "@file/xml-components";
import { createHyperlinkClick } from "@file/drawing/doc-properties/doc-properties-children";
import { ConcreteHyperlink } from "@file/paragraph";
import { NonVisualPropertiesAttributes } from "./non-visual-properties-attributes";
// <complexType name="CT_NonVisualDrawingProps">
// <sequence>
// <element name="hlinkClick" type="CT_Hyperlink" minOccurs="0" maxOccurs="1" />
// <element name="hlinkHover" type="CT_Hyperlink" minOccurs="0" maxOccurs="1" />
// <element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1" />
// </sequence>
// <attribute name="id" type="ST_DrawingElementId" use="required" />
// <attribute name="name" type="xsd:string" use="required" />
// <attribute name="descr" type="xsd:string" use="optional" default="" />
// <attribute name="hidden" type="xsd:boolean" use="optional" default="false" />
// </complexType>
export class NonVisualProperties extends XmlComponent {
public constructor() {
super("pic:cNvPr");
@ -13,4 +28,19 @@ export class NonVisualProperties extends XmlComponent {
}),
);
}
public prepForXml(context: IContext): IXmlableObject | undefined {
for (let i = context.stack.length - 1; i >= 0; i--) {
const element = context.stack[i];
if (!(element instanceof ConcreteHyperlink)) {
continue;
}
this.root.push(createHyperlinkClick(element.linkId, false));
break;
}
return super.prepForXml(context);
}
}