diff --git a/README.md b/README.md index 6f85686b..a8ebef99 100644 --- a/README.md +++ b/README.md @@ -739,6 +739,8 @@ type. Doesn't log types that have not been defined (using
y.get(string, Y.Map)
.getText(string):Y.Text
y.get(string, Y.Text)
.getXmlElement(string, string):Y.XmlElement
+ y.get(string, Y.XmlElement)
.getXmlFragment(string):Y.XmlFragment
y.get(string, Y.XmlFragment)
.on(string, function)
diff --git a/src/utils/Doc.js b/src/utils/Doc.js
index ddde1d54..e809e7ec 100644
--- a/src/utils/Doc.js
+++ b/src/utils/Doc.js
@@ -8,6 +8,7 @@ import {
YArray,
YText,
YMap,
+ YXmlElement,
YXmlFragment,
transact,
ContentDoc, Item, Transaction, YEvent // eslint-disable-line
@@ -262,6 +263,17 @@ export class Doc extends Observable {
return this.get(name, YMap)
}
+ /**
+ * @param {string} [name]
+ * @return {YXmlElement}
+ *
+ * @public
+ */
+ getXmlElement (name = '') {
+ // @ts-ignore
+ return this.get(name, YXmlElement)
+ }
+
/**
* @param {string} [name]
* @return {YXmlFragment}
diff --git a/tests/y-xml.tests.js b/tests/y-xml.tests.js
index 1ae2c813..22f12be9 100644
--- a/tests/y-xml.tests.js
+++ b/tests/y-xml.tests.js
@@ -210,3 +210,16 @@ export const testFormattingBug = _tc => {
yxml.applyDelta(delta)
t.compare(yxml.toDelta(), delta)
}
+
+/**
+ * @param {t.TestCase} _tc
+ */
+export const testElement = _tc => {
+ const ydoc = new Y.Doc()
+ const yxmlel = ydoc.getXmlElement()
+
+ const text1 = new Y.XmlText('text1')
+ const text2 = new Y.XmlText('text2')
+ yxmlel.insert(0, [text1, text2])
+ t.compareArrays(yxmlel.toArray(), [text1, text2])
+}