UNPKG

enketo-transformer

Version:

Library that transforms ODK-compliant XForms into a format that Enketo can consume

1 lines 4.92 kB
{"version":3,"file":"Element.cjs","sources":["../../../../src/dom/node/Element.ts"],"sourcesContent":["import type { Node } from 'libxmljs';\nimport { libxmljs } from 'libxslt';\nimport type { DOM } from '../abstract';\nimport { NodeTypes } from '../shared';\n\nconst { Element, parseXml } = libxmljs;\n\n/** @package */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\nexport interface DOMExtendedElement extends DOM.Node {\n remove(): void;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\nexport class DOMExtendedElement implements DOM.Element {\n readonly nodeType = NodeTypes.DOCUMENT_NODE;\n\n get attributes() {\n return (this as unknown as DOMExtendedElement & Element)\n .attrs()\n .map((attr) => ({\n name: attr.name(),\n namespaceURI: null,\n value: attr.value() ?? '',\n }));\n }\n\n get firstChild() {\n return (\n (this as unknown as DOMExtendedElement & Element).child(0) ?? null\n );\n }\n\n get firstElementChild(): Element | null {\n return (\n (this as unknown as DOMExtendedElement & Element).get('*') ?? null\n );\n }\n\n get localName() {\n const prefix = (this as unknown as Element).namespace()?.prefix();\n\n if (prefix == null) {\n return this.nodeName;\n }\n\n return this.nodeName.replace(`${prefix}:`, '');\n }\n\n get nodeName() {\n return (this as unknown as Element).name();\n }\n\n get outerHTML() {\n return (this as unknown as Element).toString(false);\n }\n\n append(this: DOMExtendedElement & Element, ...nodes: Node[]) {\n nodes.forEach((node) => {\n this.addChild(node);\n });\n }\n\n getAttribute(this: DOMExtendedElement & Element, name: string) {\n return this.attr(name)?.value() ?? null;\n }\n\n hasAttribute(this: Element & DOMExtendedElement, name: string) {\n return this.attr(name) != null;\n }\n\n insertAdjacentHTML(\n this: Element & DOMExtendedElement,\n _position: 'afterend',\n html: string\n ) {\n const childNodes = parseXml(`<root>${html}</root>`).find('/root/*');\n\n childNodes.forEach((node) => {\n this.addNextSibling(node);\n });\n }\n\n replaceWith(this: Element & DOMExtendedElement, ...nodes: Node[]) {\n nodes.forEach((node) => {\n this.addPrevSibling(node);\n });\n\n this.remove();\n }\n\n removeAttribute(this: DOMExtendedElement & Element, name: string): void {\n this.attr(name)?.remove();\n }\n\n setAttribute(\n this: DOMExtendedElement & Element,\n name: string,\n value: string\n ) {\n this.attr(name, value);\n }\n\n setAttributeNS(\n this: DOMExtendedElement & Element,\n _namespaceURI: string | null,\n name: string,\n value: string\n ) {\n this.attr(name, value);\n }\n}\n\n/* eslint-disable @typescript-eslint/no-redeclare */\ntype Element = InstanceType<typeof Element>;\n/* eslint-enable @typescript-eslint/no-redeclare */\n\nconst { constructor: _, ...descriptors } = Object.getOwnPropertyDescriptors(\n DOMExtendedElement.prototype\n);\n\nObject.defineProperties(Element.prototype, descriptors);\n"],"names":["libxmljs","NodeTypes"],"mappings":";;;;AAKA,MAAM,EAAE,SAAS,SAAa,IAAAA;AASvB,MAAM,mBAA0C;AAAA,EAAhD,cAAA;AACH,SAAS,WAAWC,OAAU,UAAA;AAAA,EAAA;AAAA,EAE9B,IAAI,aAAa;AACb,WAAQ,KACH,MAAA,EACA,IAAI,CAAC,UAAU;AAAA,MACZ,MAAM,KAAK,KAAK;AAAA,MAChB,cAAc;AAAA,MACd,OAAO,KAAK,MAAA,KAAW;AAAA,IACzB,EAAA;AAAA,EACV;AAAA,EAEA,IAAI,aAAa;AAER,WAAA,KAAiD,MAAM,CAAC,KAAK;AAAA,EAEtE;AAAA,EAEA,IAAI,oBAAoC;AAE/B,WAAA,KAAiD,IAAI,GAAG,KAAK;AAAA,EAEtE;AAAA,EAEA,IAAI,YAAY;;AACZ,UAAM,UAAU,UAA4B,UAAU,MAAtC,mBAAyC;AAEzD,QAAI,UAAU,MAAM;AAChB,aAAO,KAAK;AAAA,IAChB;AAEA,WAAO,KAAK,SAAS,QAAQ,GAAG,MAAM,KAAK,EAAE;AAAA,EACjD;AAAA,EAEA,IAAI,WAAW;AACX,WAAQ,KAA4B;EACxC;AAAA,EAEA,IAAI,YAAY;AACJ,WAAA,KAA4B,SAAS,KAAK;AAAA,EACtD;AAAA,EAEA,UAA8C,OAAe;AACnD,UAAA,QAAQ,CAAC,SAAS;AACpB,WAAK,SAAS,IAAI;AAAA,IAAA,CACrB;AAAA,EACL;AAAA,EAEA,aAAiD,MAAc;;AAC3D,aAAO,UAAK,KAAK,IAAI,MAAd,mBAAiB,YAAW;AAAA,EACvC;AAAA,EAEA,aAAiD,MAAc;AACpD,WAAA,KAAK,KAAK,IAAI,KAAK;AAAA,EAC9B;AAAA,EAEA,mBAEI,WACA,MACF;AACE,UAAM,aAAa,SAAS,SAAS,IAAI,SAAS,EAAE,KAAK,SAAS;AAEvD,eAAA,QAAQ,CAAC,SAAS;AACzB,WAAK,eAAe,IAAI;AAAA,IAAA,CAC3B;AAAA,EACL;AAAA,EAEA,eAAmD,OAAe;AACxD,UAAA,QAAQ,CAAC,SAAS;AACpB,WAAK,eAAe,IAAI;AAAA,IAAA,CAC3B;AAED,SAAK,OAAO;AAAA,EAChB;AAAA,EAEA,gBAAoD,MAAoB;;AAC/D,eAAA,KAAK,IAAI,MAAT,mBAAY;AAAA,EACrB;AAAA,EAEA,aAEI,MACA,OACF;AACO,SAAA,KAAK,MAAM,KAAK;AAAA,EACzB;AAAA,EAEA,eAEI,eACA,MACA,OACF;AACO,SAAA,KAAK,MAAM,KAAK;AAAA,EACzB;AACJ;AAMA,MAAM,EAAE,aAAa,GAAG,GAAG,gBAAgB,OAAO;AAAA,EAC9C,mBAAmB;AACvB;AAEA,OAAO,iBAAiB,QAAQ,WAAW,WAAW;;"}