@soomo/react-text-annotator 3.0.0-staging.41 → 3.0.0-staging.43

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 (35) hide show
  1. package/dist/TextAnnotatorPopup/TextAnnotatorPopup.d.ts.map +1 -1
  2. package/dist/react-text-annotator.es11.js +417 -1381
  3. package/dist/react-text-annotator.es11.js.map +1 -1
  4. package/dist/react-text-annotator.es12.js +1454 -0
  5. package/dist/react-text-annotator.es12.js.map +1 -0
  6. package/dist/react-text-annotator.es14.js +210 -538
  7. package/dist/react-text-annotator.es14.js.map +1 -1
  8. package/dist/react-text-annotator.es15.js +527 -445
  9. package/dist/react-text-annotator.es15.js.map +1 -1
  10. package/dist/react-text-annotator.es19.js +1 -1
  11. package/dist/react-text-annotator.es2.js +1 -1
  12. package/dist/react-text-annotator.es20.js +1 -1
  13. package/dist/react-text-annotator.es21.js +111 -124
  14. package/dist/react-text-annotator.es21.js.map +1 -1
  15. package/dist/react-text-annotator.es22.js +286 -129
  16. package/dist/react-text-annotator.es22.js.map +1 -1
  17. package/dist/react-text-annotator.es23.js +43 -296
  18. package/dist/react-text-annotator.es23.js.map +1 -1
  19. package/dist/react-text-annotator.es24.js +19 -113
  20. package/dist/react-text-annotator.es24.js.map +1 -1
  21. package/dist/react-text-annotator.es25.js +2 -309
  22. package/dist/react-text-annotator.es25.js.map +1 -1
  23. package/dist/react-text-annotator.es26.js +2 -58
  24. package/dist/react-text-annotator.es26.js.map +1 -1
  25. package/dist/react-text-annotator.es27.js +124 -17
  26. package/dist/react-text-annotator.es27.js.map +1 -1
  27. package/dist/react-text-annotator.es28.js +152 -2
  28. package/dist/react-text-annotator.es28.js.map +1 -1
  29. package/dist/react-text-annotator.es29.js +311 -2
  30. package/dist/react-text-annotator.es29.js.map +1 -1
  31. package/dist/react-text-annotator.es7.js +22 -18
  32. package/dist/react-text-annotator.es7.js.map +1 -1
  33. package/package.json +2 -2
  34. package/dist/react-text-annotator.es13.js +0 -244
  35. package/dist/react-text-annotator.es13.js.map +0 -1
@@ -1,155 +1,312 @@
1
- function getNodeName(node) {
2
- if (isNode(node)) {
3
- return (node.nodeName || "").toLowerCase();
1
+ function getOrdinality(elt, name) {
2
+ let pos = 1;
3
+ let e = elt;
4
+ while (e && e.previousElementSibling !== null && (name ? e.previousElementSibling.localName == name : true)) {
5
+ pos++;
6
+ e = e.previousElementSibling;
7
+ if (!e.previousElementSibling) {
8
+ break;
9
+ }
4
10
  }
5
- return "#document";
6
- }
7
- function getWindow(node) {
8
- var _node$ownerDocument;
9
- return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;
10
- }
11
- function getDocumentElement(node) {
12
- var _ref;
13
- return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;
11
+ return pos;
14
12
  }
15
- function isNode(value) {
16
- return value instanceof Node || value instanceof getWindow(value).Node;
17
- }
18
- function isElement(value) {
19
- return value instanceof Element || value instanceof getWindow(value).Element;
13
+ function copyAndReset(node) {
14
+ const doc = node.ownerDocument;
15
+ let clone = (n) => {
16
+ let result;
17
+ switch (n.nodeType) {
18
+ case 1:
19
+ result = doc.createElement(n.nodeName);
20
+ break;
21
+ case 9:
22
+ result = doc.implementation.createDocument();
23
+ break;
24
+ case 11:
25
+ result = doc.createDocumentFragment();
26
+ break;
27
+ default:
28
+ result = n.cloneNode(true);
29
+ }
30
+ if (n.attributes) {
31
+ for (let att of Array.from(n.attributes)) {
32
+ if (att.name !== "data-processed") {
33
+ result.setAttribute(att.name, att.value);
34
+ }
35
+ }
36
+ }
37
+ for (let nd of Array.from(n.childNodes)) {
38
+ if (nd.nodeType == 1) {
39
+ if (nd.hasAttribute("data-original")) {
40
+ for (let childNode of Array.from(nd.childNodes)) {
41
+ let child = result.appendChild(clone(childNode));
42
+ if (child.nodeType === 1 && child.hasAttribute("data-origid")) {
43
+ child.setAttribute("id", child.getAttribute("data-origid"));
44
+ child.removeAttribute("data-origid");
45
+ }
46
+ }
47
+ return result;
48
+ } else if (nd.hasAttribute("data-origname")) {
49
+ result.appendChild(clone(nd));
50
+ }
51
+ } else {
52
+ result.appendChild(nd.cloneNode());
53
+ }
54
+ }
55
+ return result;
56
+ };
57
+ return clone(node);
20
58
  }
21
- function isHTMLElement(value) {
22
- return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;
59
+ function first(urls) {
60
+ return urls.replace(/ .*$/, "");
23
61
  }
24
- function isShadowRoot(value) {
25
- if (typeof ShadowRoot === "undefined") {
26
- return false;
62
+ function hideContent(elt, rewriteIds = true) {
63
+ const doc = elt.ownerDocument;
64
+ if (elt.childNodes.length > 0) {
65
+ let hidden = doc.createElement("cetei-original");
66
+ elt.appendChild(hidden);
67
+ hidden.setAttribute("hidden", "");
68
+ hidden.setAttribute("data-original", "");
69
+ for (let node of Array.from(elt.childNodes)) {
70
+ if (node !== hidden) {
71
+ if (node.nodeType === 1) {
72
+ node.setAttribute("data-processed", "");
73
+ for (let e of node.querySelectorAll("*")) {
74
+ e.setAttribute("data-processed", "");
75
+ }
76
+ }
77
+ hidden.appendChild(elt.removeChild(node));
78
+ }
79
+ }
80
+ if (rewriteIds) {
81
+ for (let e of Array.from(hidden.querySelectorAll("*"))) {
82
+ if (e.hasAttribute("id")) {
83
+ e.setAttribute("data-origid", e.getAttribute("id"));
84
+ e.removeAttribute("id");
85
+ }
86
+ }
87
+ }
27
88
  }
28
- return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
29
89
  }
30
- function isOverflowElement(element) {
31
- const {
32
- overflow,
33
- overflowX,
34
- overflowY,
35
- display
36
- } = getComputedStyle(element);
37
- return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !["inline", "contents"].includes(display);
90
+ function normalizeURI(urls) {
91
+ return this.rw(this.first(urls));
38
92
  }
39
- function isTableElement(element) {
40
- return ["table", "td", "th"].includes(getNodeName(element));
93
+ function repeat(str, times) {
94
+ let result = "";
95
+ for (let i = 0; i < times; i++) {
96
+ result += str;
97
+ }
98
+ return result;
41
99
  }
42
- function isTopLayer(element) {
43
- return [":popover-open", ":modal"].some((selector) => {
44
- try {
45
- return element.matches(selector);
46
- } catch (e) {
47
- return false;
48
- }
49
- });
100
+ function resolveURI(uri) {
101
+ let prefixdef = this.prefixDefs[uri.substring(0, uri.indexOf(":"))];
102
+ return uri.replace(new RegExp(prefixdef["matchPattern"]), prefixdef["replacementPattern"]);
50
103
  }
51
- function isContainingBlock(elementOrCss) {
52
- const webkit = isWebKit();
53
- const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;
54
- return css.transform !== "none" || css.perspective !== "none" || (css.containerType ? css.containerType !== "normal" : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== "none" : false) || !webkit && (css.filter ? css.filter !== "none" : false) || ["transform", "perspective", "filter"].some((value) => (css.willChange || "").includes(value)) || ["paint", "layout", "strict", "content"].some((value) => (css.contain || "").includes(value));
104
+ function getPrefixDef(prefix) {
105
+ return this.prefixDefs[prefix];
55
106
  }
56
- function getContainingBlock(element) {
57
- let currentNode = getParentNode(element);
58
- while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {
59
- if (isContainingBlock(currentNode)) {
60
- return currentNode;
61
- } else if (isTopLayer(currentNode)) {
62
- return null;
63
- }
64
- currentNode = getParentNode(currentNode);
107
+ function rw(url) {
108
+ if (!url.match(/^(?:http|mailto|file|\/|#).*$/)) {
109
+ return this.base + first(url);
110
+ } else {
111
+ return url;
65
112
  }
66
- return null;
67
- }
68
- function isWebKit() {
69
- if (typeof CSS === "undefined" || !CSS.supports) return false;
70
- return CSS.supports("-webkit-backdrop-filter", "none");
71
- }
72
- function isLastTraversableNode(node) {
73
- return ["html", "body", "#document"].includes(getNodeName(node));
74
113
  }
75
- function getComputedStyle(element) {
76
- return getWindow(element).getComputedStyle(element);
114
+ function resetAndSerialize(el, stripElt, ws) {
115
+ return serialize(copyAndReset(el), stripElt, ws);
77
116
  }
78
- function getNodeScroll(element) {
79
- if (isElement(element)) {
80
- return {
81
- scrollLeft: element.scrollLeft,
82
- scrollTop: element.scrollTop
83
- };
84
- }
85
- return {
86
- scrollLeft: element.scrollX,
87
- scrollTop: element.scrollY
117
+ function serialize(el, stripElt, ws) {
118
+ let str = "";
119
+ const ignorable = (txt) => {
120
+ return !/[^\t\n\r ]/.test(txt);
88
121
  };
89
- }
90
- function getParentNode(node) {
91
- if (getNodeName(node) === "html") {
92
- return node;
122
+ if (el.nodeType === 9 || el.nodeType === 11) {
123
+ str += '<?xml version="1.0" encoding="UTF-8"?>\n';
93
124
  }
94
- const result = (
95
- // Step into the shadow DOM of the parent of a slotted node.
96
- node.assignedSlot || // DOM Element detected.
97
- node.parentNode || // ShadowRoot detected.
98
- isShadowRoot(node) && node.host || // Fallback.
99
- getDocumentElement(node)
100
- );
101
- return isShadowRoot(result) ? result.host : result;
102
- }
103
- function getNearestOverflowAncestor(node) {
104
- const parentNode = getParentNode(node);
105
- if (isLastTraversableNode(parentNode)) {
106
- return node.ownerDocument ? node.ownerDocument.body : node.body;
125
+ if (!stripElt && el.nodeType == 1) {
126
+ if (typeof ws === "string" && ws !== "") {
127
+ str += "\n" + ws + "<";
128
+ } else {
129
+ str += "<";
130
+ }
131
+ str += el.getAttribute("data-origname");
132
+ let attrNames = el.hasAttribute("data-origatts") ? el.getAttribute("data-origatts").split(" ") : [];
133
+ for (let attr of Array.from(el.attributes)) {
134
+ if (!attr.name.startsWith("data-") && !["id", "lang", "class"].includes(attr.name)) {
135
+ str += " " + attrNames.find(function(e) {
136
+ return e.toLowerCase() == attr.name;
137
+ }) + '="' + attr.value + '"';
138
+ }
139
+ if (attr.name == "data-xmlns") {
140
+ str += ' xmlns="' + attr.value + '"';
141
+ }
142
+ }
143
+ if (el.childNodes.length > 0) {
144
+ str += ">";
145
+ } else {
146
+ str += "/>";
147
+ }
107
148
  }
108
- if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {
109
- return parentNode;
149
+ for (let node of Array.from(el.childNodes)) {
150
+ switch (node.nodeType) {
151
+ case 1:
152
+ if (typeof ws === "string") {
153
+ str += serialize(node, false, ws + " ");
154
+ } else {
155
+ str += serialize(node, false, ws);
156
+ }
157
+ break;
158
+ case 7:
159
+ str += `<?${node.nodeName} ${node.nodeValue}?>`;
160
+ if (el.nodeType === 9 || el.nodeType === 11) {
161
+ str += "\n";
162
+ }
163
+ break;
164
+ case 8:
165
+ str += `<!--${node.nodeValue}-->`;
166
+ if (el.nodeType === 9 || el.nodeType === 11) {
167
+ str += "\n";
168
+ }
169
+ break;
170
+ default:
171
+ if (stripElt && ignorable(node.nodeValue)) {
172
+ str += node.nodeValue.replace(/^\s*\n/, "");
173
+ }
174
+ if (typeof ws === "string" && ignorable(node.nodeValue)) {
175
+ break;
176
+ }
177
+ str += node.nodeValue;
178
+ }
179
+ }
180
+ if (!stripElt && el.nodeType == 1 && el.childNodes.length > 0) {
181
+ if (typeof ws === "string") {
182
+ str += "\n" + ws + "</";
183
+ } else {
184
+ str += "</";
185
+ }
186
+ str += el.getAttribute("data-origname") + ">";
110
187
  }
111
- return getNearestOverflowAncestor(parentNode);
188
+ if (el.nodeType === 9 || el.nodeType === 11) {
189
+ str += "\n";
190
+ }
191
+ return str;
112
192
  }
113
- function getOverflowAncestors(node, list, traverseIframes) {
114
- var _node$ownerDocument2;
115
- if (list === void 0) {
116
- list = [];
193
+ function serializeHTML(el, stripElt, ws) {
194
+ const EMPTY_ELEMENTS = ["area", "base", "br", "col", "embed", "hr", "img", "input", "link", "meta", "param", "source", "track", "wbr"];
195
+ let str = "";
196
+ const ignorable = (txt) => {
197
+ return !/[^\t\n\r ]/.test(txt);
198
+ };
199
+ if (!stripElt && el.nodeType == 1) {
200
+ if (typeof ws === "string" && ws !== "") {
201
+ str += "\n" + ws + "<";
202
+ } else {
203
+ str += "<";
204
+ }
205
+ str += el.nodeName;
206
+ for (let attr of Array.from(el.attributes)) {
207
+ str += " " + attr.name + '="' + attr.value + '"';
208
+ }
209
+ str += ">";
117
210
  }
118
- if (traverseIframes === void 0) {
119
- traverseIframes = true;
211
+ for (let node of Array.from(el.childNodes)) {
212
+ switch (node.nodeType) {
213
+ case 1:
214
+ if (typeof ws === "string") {
215
+ str += serializeHTML(node, false, ws + " ");
216
+ } else {
217
+ str += serializeHTML(node, false, ws);
218
+ }
219
+ break;
220
+ case 7:
221
+ str += `<?${node.nodeName} ${node.nodeValue}?>`;
222
+ if (el.nodeType === 9 || el.nodeType === 11) {
223
+ str += "\n";
224
+ }
225
+ break;
226
+ case 8:
227
+ str += `<!--${node.nodeValue}-->`;
228
+ if (el.nodeType === 9 || el.nodeType === 11) {
229
+ str += "\n";
230
+ }
231
+ break;
232
+ default:
233
+ if (stripElt && ignorable(node.nodeValue)) {
234
+ str += node.nodeValue.replace(/^\s*\n/, "");
235
+ }
236
+ if (typeof ws === "string" && ignorable(node.nodeValue)) {
237
+ break;
238
+ }
239
+ str += node.nodeValue.replace(/</g, "&lt;");
240
+ }
241
+ }
242
+ if (!EMPTY_ELEMENTS.includes(el.nodeName)) {
243
+ if (!stripElt && el.nodeType == 1) {
244
+ if (typeof ws === "string") {
245
+ str += `
246
+ ${ws}</`;
247
+ } else {
248
+ str += "</";
249
+ }
250
+ str += `${el.nodeName}>`;
251
+ }
252
+ }
253
+ if (el.nodeType === 9 || el.nodeType === 11) {
254
+ str += "\n";
120
255
  }
121
- const scrollableAncestor = getNearestOverflowAncestor(node);
122
- const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);
123
- const win = getWindow(scrollableAncestor);
124
- if (isBody) {
125
- const frameElement = getFrameElement(win);
126
- return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);
256
+ return str;
257
+ }
258
+ function unEscapeEntities(str) {
259
+ return str.replace(/&gt;/, ">").replace(/&quot;/, '"').replace(/&apos;/, "'").replace(/&amp;/, "&");
260
+ }
261
+ function tagName(name) {
262
+ if (name.includes(":"), 1) {
263
+ return name.replace(/:/, "-").toLowerCase();
127
264
  }
128
- return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
129
265
  }
130
- function getFrameElement(win) {
131
- return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;
266
+ function defineCustomElement(name, behavior = null, debug = false) {
267
+ try {
268
+ window.customElements.define(tagName(name), class extends HTMLElement {
269
+ constructor() {
270
+ super();
271
+ if (!this.matches(":defined")) {
272
+ if (behavior) {
273
+ behavior.call(this);
274
+ this.setAttribute("data-processed", "");
275
+ }
276
+ }
277
+ }
278
+ // Process new elements when they are connected to the browser DOM
279
+ connectedCallback() {
280
+ if (!this.hasAttribute("data-processed")) {
281
+ if (behavior) {
282
+ behavior.call(this);
283
+ this.setAttribute("data-processed", "");
284
+ }
285
+ }
286
+ }
287
+ });
288
+ } catch (error) {
289
+ if (debug) {
290
+ console.log(tagName(name) + " couldn't be registered or is already registered.");
291
+ console.log(error);
292
+ }
293
+ }
132
294
  }
133
295
  export {
134
- getComputedStyle,
135
- getContainingBlock,
136
- getDocumentElement,
137
- getFrameElement,
138
- getNearestOverflowAncestor,
139
- getNodeName,
140
- getNodeScroll,
141
- getOverflowAncestors,
142
- getParentNode,
143
- getWindow,
144
- isContainingBlock,
145
- isElement,
146
- isHTMLElement,
147
- isLastTraversableNode,
148
- isNode,
149
- isOverflowElement,
150
- isShadowRoot,
151
- isTableElement,
152
- isTopLayer,
153
- isWebKit
296
+ copyAndReset,
297
+ defineCustomElement,
298
+ first,
299
+ getOrdinality,
300
+ getPrefixDef,
301
+ hideContent,
302
+ normalizeURI,
303
+ repeat,
304
+ resetAndSerialize,
305
+ resolveURI,
306
+ rw,
307
+ serialize,
308
+ serializeHTML,
309
+ tagName,
310
+ unEscapeEntities
154
311
  };
155
312
  //# sourceMappingURL=react-text-annotator.es22.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"react-text-annotator.es22.js","sources":["../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs"],"sourcesContent":["function getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isTopLayer(element) {\n return [':popover-open', ':modal'].some(selector => {\n try {\n return element.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"react-text-annotator.es22.js","sources":["../../../node_modules/CETEIcean/src/utilities.js"],"sourcesContent":["export function getOrdinality(elt, name) {\n let pos = 1;\n let e = elt;\n while (e && e.previousElementSibling !== null && (name ? e.previousElementSibling.localName == name : true)) {\n pos++;\n e = e.previousElementSibling;\n if (!e.previousElementSibling) {\n break;\n }\n }\n return pos;\n}\n\n/* \n Performs a deep copy operation of the input node while stripping\n out child elements introduced by CETEIcean.\n*/ \nexport function copyAndReset(node) {\n const doc = node.ownerDocument;\n let clone = (n) => { \n let result;\n switch (n.nodeType) {\n case 1: // nodeType 1 is Node.ELEMENT_NODE\n result = doc.createElement(n.nodeName);\n break;\n case 9: // nodeType 9 is Node.DOCUMENT_NODE\n result = doc.implementation.createDocument();\n break;\n case 11: // nodeType 11 is Node.DOCUMENT_FRAGMENT_NODE\n result = doc.createDocumentFragment();\n break;\n default:\n result = n.cloneNode(true);\n }\n if (n.attributes) {\n for (let att of Array.from(n.attributes)) {\n if (att.name !== \"data-processed\") {\n result.setAttribute(att.name,att.value);\n }\n }\n }\n for (let nd of Array.from(n.childNodes)){\n // nodeType 1 is Node.ELEMENT_NODE\n if (nd.nodeType == 1) {\n if (nd.hasAttribute(\"data-original\")) {\n for (let childNode of Array.from(nd.childNodes)) {\n let child = result.appendChild(clone(childNode));\n // nodeType 1 is Node.ELEMENT_NODE\n if (child.nodeType === 1 && child.hasAttribute(\"data-origid\")) {\n child.setAttribute(\"id\", child.getAttribute(\"data-origid\"));\n child.removeAttribute(\"data-origid\");\n }\n }\n return result;\n } else if (nd.hasAttribute(\"data-origname\")) {\n result.appendChild(clone(nd));\n }\n } else {\n result.appendChild(nd.cloneNode());\n }\n }\n return result;\n }\n return clone(node);\n}\n\n/* \n Given a space-separated list of URLs (e.g. in a ref with multiple\n targets), returns just the first one.\n*/\nexport function first(urls) {\n return urls.replace(/ .*$/, \"\");\n}\n\n/* \n Wraps the content of the element parameter in a hidden <cetei-original data-original>\n*/\nexport function hideContent(elt, rewriteIds = true) {\n const doc = elt.ownerDocument;\n if (elt.childNodes.length > 0) {\n let hidden = doc.createElement(\"cetei-original\");\n elt.appendChild(hidden);\n hidden.setAttribute(\"hidden\", \"\");\n hidden.setAttribute(\"data-original\", \"\");\n for (let node of Array.from(elt.childNodes)) {\n if (node !== hidden) {\n // nodeType 1 is Node.ELEMENT_NODE\n if (node.nodeType === 1) {\n node.setAttribute(\"data-processed\", \"\");\n for (let e of node.querySelectorAll(\"*\")) {\n e.setAttribute(\"data-processed\", \"\");\n }\n }\n hidden.appendChild(elt.removeChild(node));\n }\n }\n if (rewriteIds) {\n for (let e of Array.from(hidden.querySelectorAll(\"*\"))) {\n if (e.hasAttribute(\"id\")) {\n e.setAttribute(\"data-origid\", e.getAttribute(\"id\"));\n e.removeAttribute(\"id\");\n }\n }\n }\n }\n}\n\nexport function normalizeURI(urls) {\n return this.rw(this.first(urls))\n}\n\n/* \n Takes a string and a number and returns the original string\n printed that number of times.\n*/\nexport function repeat(str, times) {\n let result = \"\";\n for (let i = 0; i < times; i++) {\n result += str;\n }\n return result;\n}\n\n/* \n Resolves URIs that use TEI prefixDefs into full URIs.\n See https://www.tei-c.org/release/doc/tei-p5-doc/en/html/ref-prefixDef.html\n*/\nexport function resolveURI(uri) {\n let prefixdef = this.prefixDefs[uri.substring(0,uri.indexOf(\":\"))];\n return uri.replace(new RegExp(prefixdef[\"matchPattern\"]), prefixdef[\"replacementPattern\"]);\n}\n\n/*\n Convenience function for getting prefix definitions, Takes a prefix\n and returns an object with \"matchPattern\" and \"replacementPattern\"\n keys.\n*/\nexport function getPrefixDef(prefix) {\n return this.prefixDefs[prefix];\n}\n\n/* \n Takes a relative URL and rewrites it based on the base URL of the\n HTML document\n*/\nexport function rw(url) {\n if (!url.match(/^(?:http|mailto|file|\\/|#).*$/)) {\n return this.base + first(url);\n } else {\n return url;\n }\n}\n\n/*\n Combines the functionality of copyAndReset() and serialize() to return\n a \"clean\" version of the XML markup.\n */\nexport function resetAndSerialize(el, stripElt, ws) {\n return serialize(copyAndReset(el), stripElt, ws);\n}\n\n/* \n Takes an element and serializes it to an XML string or, if the stripElt\n parameter is set, serializes the element's content. The ws parameter, if\n set, will switch on minimal \"pretty-printing\" and indenting of the serialized\n result.\n*/\nexport function serialize(el, stripElt, ws) {\n let str = \"\";\n const ignorable = (txt) => {\n return !(/[^\\t\\n\\r ]/.test(txt));\n }\n if (el.nodeType === 9 || el.nodeType === 11) { // nodeType 9 is Node.DOCUMENT_NODE; nodeType 11 is Node.DOCUMENT_FRAGMENT_NODE\n str += \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\n\";\n }\n // nodeType 1 is Node.ELEMENT_NODE\n if (!stripElt && el.nodeType == 1) {\n if ((typeof ws === \"string\") && ws !== \"\") {\n str += \"\\n\" + ws + \"<\";\n } else {\n str += \"<\";\n }\n str += el.getAttribute(\"data-origname\");\n // HTML5 lowercases all attribute names; @data-origatts contains the original names\n let attrNames = el.hasAttribute(\"data-origatts\") ? el.getAttribute(\"data-origatts\").split(\" \") : [];\n for (let attr of Array.from(el.attributes)) {\n if (!attr.name.startsWith(\"data-\") && !([\"id\", \"lang\", \"class\"].includes(attr.name))) {\n str += \" \" + attrNames.find(function(e) {return e.toLowerCase() == attr.name}) + \"=\\\"\" + attr.value + \"\\\"\";\n }\n if (attr.name == \"data-xmlns\") {\n str += \" xmlns=\\\"\" + attr.value +\"\\\"\";\n }\n }\n if (el.childNodes.length > 0) {\n str += \">\";\n } else {\n str += \"/>\";\n }\n }\n for (let node of Array.from(el.childNodes)) {\n // nodeType 1 is Node.ELEMENT_NODE\n // nodeType 7 is Node.PROCESSING_INSTRUCTION_NODE\n // nodeType 8 is Node.COMMENT_NODE\n switch (node.nodeType) {\n case 1:\n if (typeof ws === \"string\") {\n str += serialize(node, false, ws + \" \");\n } else {\n str += serialize(node, false, ws);\n }\n break;\n case 7:\n str += `<?${node.nodeName} ${node.nodeValue}?>`;\n if (el.nodeType === 9 || el.nodeType === 11) {\n str += \"\\n\";\n }\n break;\n case 8:\n str += `<!--${node.nodeValue}-->`;\n if (el.nodeType === 9 || el.nodeType === 11) {\n str += \"\\n\";\n }\n break;\n default:\n if (stripElt && ignorable(node.nodeValue)) {\n str += node.nodeValue.replace(/^\\s*\\n/, \"\");\n }\n if ((typeof ws === \"string\") && ignorable(node.nodeValue)) {\n break;\n }\n str += node.nodeValue;\n }\n }\n if (!stripElt && el.nodeType == 1 && el.childNodes.length > 0) {\n if (typeof ws === \"string\") {\n str += \"\\n\" + ws + \"</\";\n } else {\n str += \"</\";\n }\n str += el.getAttribute(\"data-origname\") + \">\";\n }\n if (el.nodeType === 9 || el.nodeType === 11) {\n str += \"\\n\";\n }\n return str;\n}\n\n/* \n Write out the HTML markup to a string, using HTML conventions.\n */\nexport function serializeHTML(el, stripElt, ws) {\n const EMPTY_ELEMENTS = ['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wbr'];\n let str = \"\";\n const ignorable = (txt) => {\n return !(/[^\\t\\n\\r ]/.test(txt));\n }\n // nodeType 1 is Node.ELEMENT_NODE\n if (!stripElt && el.nodeType == 1) {\n if ((typeof ws === \"string\") && ws !== \"\") {\n str += \"\\n\" + ws + \"<\";\n } else {\n str += \"<\";\n }\n str += el.nodeName;\n for (let attr of Array.from(el.attributes)) {\n str += \" \" + attr.name + \"=\\\"\" + attr.value + \"\\\"\";\n }\n str += \">\";\n }\n for (let node of Array.from(el.childNodes)) {\n // nodeType 1 is Node.ELEMENT_NODE\n // nodeType 7 is Node.PROCESSING_INSTRUCTION_NODE\n // nodeType 8 is Node.COMMENT_NODE\n switch (node.nodeType) {\n case 1:\n if (typeof ws === \"string\") {\n str += serializeHTML(node, false, ws + \" \");\n } else {\n str += serializeHTML(node, false, ws);\n }\n break;\n case 7:\n str += `<?${node.nodeName} ${node.nodeValue}?>`;\n if (el.nodeType === 9 || el.nodeType === 11) {\n str += \"\\n\";\n }\n break;\n case 8:\n str += `<!--${node.nodeValue}-->`;\n if (el.nodeType === 9 || el.nodeType === 11) {\n str += \"\\n\";\n }\n break;\n default:\n if (stripElt && ignorable(node.nodeValue)) {\n str += node.nodeValue.replace(/^\\s*\\n/, \"\");\n }\n if ((typeof ws === \"string\") && ignorable(node.nodeValue)) {\n break;\n }\n str += node.nodeValue.replace(/</g, \"&lt;\");\n }\n }\n if (!EMPTY_ELEMENTS.includes(el.nodeName)) {\n if (!stripElt && el.nodeType == 1) {\n if (typeof ws === \"string\") {\n str += `\\n${ws}</`;\n } else {\n str += \"</\";\n }\n str += `${el.nodeName}>`;\n }\n }\n if (el.nodeType === 9 || el.nodeType === 11) {\n str += \"\\n\";\n }\n return str;\n}\n\nexport function unEscapeEntities(str) {\n return str.replace(/&gt;/, \">\")\n .replace(/&quot;/, \"\\\"\")\n .replace(/&apos;/, \"'\")\n .replace(/&amp;/, \"&\");\n}\n\n// Given a qualified name (e.g. tei:text), return the element name\nexport function tagName(name) {\n if (name.includes(\":\"), 1) {\n return name.replace(/:/,\"-\").toLowerCase();\n } else {\n return \"ceteicean-\" + name.toLowerCase();\n }\n}\n\nexport function defineCustomElement(name, behavior = null, debug = false) {\n /* \n Registers the list of elements provided with the browser.\n Called by makeHTML5(), but can be called independently if, for example,\n you've created Custom Elements via an XSLT transformation instead.\n */\n try {\n window.customElements.define(tagName(name), class extends HTMLElement {\n constructor() {\n super(); \n if (!this.matches(\":defined\")) { // \"Upgraded\" undefined elements can have attributes & children; new elements can't\n if (behavior) {\n behavior.call(this);\n // We don't want to double-process elements, so add a flag\n this.setAttribute(\"data-processed\", \"\");\n }\n }\n }\n // Process new elements when they are connected to the browser DOM\n connectedCallback() {\n if (!this.hasAttribute(\"data-processed\")) {\n if (behavior) {\n behavior.call(this);\n this.setAttribute(\"data-processed\", \"\");\n }\n }\n };\n });\n } catch (error) {\n // When using the same CETEIcean instance for multiple TEI files, this error becomes very common. \n // It's muted by default unless the debug option is set.\n if (debug) {\n console.log(tagName(name) + \" couldn't be registered or is already registered.\");\n console.log(error);\n }\n }\n}\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}