@soomo/react-text-annotator 3.0.0-staging.16 → 3.0.0-staging.17

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 (48) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/react-text-annotator.es.js +2 -0
  4. package/dist/react-text-annotator.es.js.map +1 -1
  5. package/dist/react-text-annotator.es10.js +210 -562
  6. package/dist/react-text-annotator.es10.js.map +1 -1
  7. package/dist/react-text-annotator.es11.js +535 -444
  8. package/dist/react-text-annotator.es11.js.map +1 -1
  9. package/dist/react-text-annotator.es12.js +488 -2
  10. package/dist/react-text-annotator.es12.js.map +1 -1
  11. package/dist/react-text-annotator.es13.js +2 -35
  12. package/dist/react-text-annotator.es13.js.map +1 -1
  13. package/dist/react-text-annotator.es14.js +24 -888
  14. package/dist/react-text-annotator.es14.js.map +1 -1
  15. package/dist/react-text-annotator.es15.js +891 -220
  16. package/dist/react-text-annotator.es15.js.map +1 -1
  17. package/dist/react-text-annotator.es16.js +218 -126
  18. package/dist/react-text-annotator.es16.js.map +1 -1
  19. package/dist/react-text-annotator.es17.js +136 -2
  20. package/dist/react-text-annotator.es17.js.map +1 -1
  21. package/dist/react-text-annotator.es18.js +2 -2
  22. package/dist/react-text-annotator.es19.js +2 -114
  23. package/dist/react-text-annotator.es19.js.map +1 -1
  24. package/dist/react-text-annotator.es2.js +2 -2
  25. package/dist/react-text-annotator.es20.js +107 -302
  26. package/dist/react-text-annotator.es20.js.map +1 -1
  27. package/dist/react-text-annotator.es21.js +290 -39
  28. package/dist/react-text-annotator.es21.js.map +1 -1
  29. package/dist/react-text-annotator.es22.js +55 -17
  30. package/dist/react-text-annotator.es22.js.map +1 -1
  31. package/dist/react-text-annotator.es23.js +17 -118
  32. package/dist/react-text-annotator.es23.js.map +1 -1
  33. package/dist/react-text-annotator.es24.js +107 -538
  34. package/dist/react-text-annotator.es24.js.map +1 -1
  35. package/dist/react-text-annotator.es25.js +555 -0
  36. package/dist/react-text-annotator.es25.js.map +1 -0
  37. package/dist/react-text-annotator.es3.js +2 -2
  38. package/dist/react-text-annotator.es4.js +2 -2
  39. package/dist/react-text-annotator.es5.js +4 -4
  40. package/dist/react-text-annotator.es6.js +178 -9
  41. package/dist/react-text-annotator.es6.js.map +1 -1
  42. package/dist/react-text-annotator.es7.js +12 -1
  43. package/dist/react-text-annotator.es7.js.map +1 -1
  44. package/dist/react-text-annotator.es9.js +20 -223
  45. package/dist/react-text-annotator.es9.js.map +1 -1
  46. package/package.json +13 -7
  47. package/dist/react-text-annotator.es8.js +0 -27
  48. package/dist/react-text-annotator.es8.js.map +0 -1
@@ -1,61 +1,312 @@
1
- function addBehaviors(bhvs) {
2
- if (bhvs.namespaces) {
3
- for (let prefix of Object.keys(bhvs.namespaces)) {
4
- if (!this.namespaces.has(bhvs.namespaces[prefix]) && !Array.from(this.namespaces.values()).includes(prefix)) {
5
- this.namespaces.set(bhvs.namespaces[prefix], prefix);
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
+ }
10
+ }
11
+ return pos;
12
+ }
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);
58
+ }
59
+ function first(urls) {
60
+ return urls.replace(/ .*$/, "");
61
+ }
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));
6
78
  }
7
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
+ }
88
+ }
89
+ }
90
+ function normalizeURI(urls) {
91
+ return this.rw(this.first(urls));
92
+ }
93
+ function repeat(str, times) {
94
+ let result = "";
95
+ for (let i = 0; i < times; i++) {
96
+ result += str;
97
+ }
98
+ return result;
99
+ }
100
+ function resolveURI(uri) {
101
+ let prefixdef = this.prefixDefs[uri.substring(0, uri.indexOf(":"))];
102
+ return uri.replace(new RegExp(prefixdef["matchPattern"]), prefixdef["replacementPattern"]);
103
+ }
104
+ function getPrefixDef(prefix) {
105
+ return this.prefixDefs[prefix];
106
+ }
107
+ function rw(url) {
108
+ if (!url.match(/^(?:http|mailto|file|\/|#).*$/)) {
109
+ return this.base + first(url);
110
+ } else {
111
+ return url;
8
112
  }
9
- for (let prefix of this.namespaces.values()) {
10
- if (bhvs[prefix]) {
11
- for (let b of Object.keys(bhvs[prefix])) {
12
- this.behaviors[`${prefix}:${b}`] = bhvs[prefix][b];
113
+ }
114
+ function resetAndSerialize(el, stripElt, ws) {
115
+ return serialize(copyAndReset(el), stripElt, ws);
116
+ }
117
+ function serialize(el, stripElt, ws) {
118
+ let str = "";
119
+ const ignorable = (txt) => {
120
+ return !/[^\t\n\r ]/.test(txt);
121
+ };
122
+ if (el.nodeType === 9 || el.nodeType === 11) {
123
+ str += '<?xml version="1.0" encoding="UTF-8"?>\n';
124
+ }
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 + '"';
13
141
  }
14
142
  }
143
+ if (el.childNodes.length > 0) {
144
+ str += ">";
145
+ } else {
146
+ str += "/>";
147
+ }
15
148
  }
16
- if (bhvs["functions"]) {
17
- for (let fn of Object.keys(bhvs["functions"])) {
18
- this.utilities[fn] = bhvs["functions"][fn].bind(this.utilities);
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;
19
178
  }
20
179
  }
21
- if (bhvs["handlers"]) {
22
- console.log("Behavior handlers are no longer used.");
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") + ">";
23
187
  }
24
- if (bhvs["fallbacks"]) {
25
- console.log("Fallback behaviors are no longer used.");
188
+ if (el.nodeType === 9 || el.nodeType === 11) {
189
+ str += "\n";
26
190
  }
191
+ return str;
27
192
  }
28
- function addBehavior(ns, element, b) {
29
- let p;
30
- if (ns === Object(ns)) {
31
- for (let prefix of Object.keys(ns)) {
32
- if (!this.namespaces.has(ns[prefix])) {
33
- this.namespaces.set(ns[prefix], prefix);
34
- p = prefix;
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 += ">";
210
+ }
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 += "</";
35
249
  }
250
+ str += `${el.nodeName}>`;
36
251
  }
37
- } else {
38
- p = ns;
39
252
  }
40
- this.behaviors[`${p}:${element}`] = b;
253
+ if (el.nodeType === 9 || el.nodeType === 11) {
254
+ str += "\n";
255
+ }
256
+ return str;
257
+ }
258
+ function unEscapeEntities(str) {
259
+ return str.replace(/&gt;/, ">").replace(/&quot;/, '"').replace(/&apos;/, "'").replace(/&amp;/, "&");
41
260
  }
42
- function removeBehavior(ns, element) {
43
- let p;
44
- if (ns === Object(ns)) {
45
- for (let prefix of Object.keys(ns)) {
46
- if (!this.namespaces.has(ns[prefix])) {
47
- this.namespaces.set(ns[prefix], prefix);
48
- p = prefix;
261
+ function tagName(name) {
262
+ if (name.includes(":"), 1) {
263
+ return name.replace(/:/, "-").toLowerCase();
264
+ }
265
+ }
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
+ }
49
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);
50
292
  }
51
- } else {
52
- p = ns;
53
293
  }
54
- delete this.behaviors[`${p}:${element}`];
55
294
  }
56
295
  export {
57
- addBehavior,
58
- addBehaviors,
59
- removeBehavior
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
60
311
  };
61
312
  //# sourceMappingURL=react-text-annotator.es21.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"react-text-annotator.es21.js","sources":["../../../node_modules/CETEIcean/src/behaviors.js"],"sourcesContent":["\n/* \n Add a user-defined set of behaviors to CETEIcean's processing\n workflow. Added behaviors will override predefined behaviors with the\n same name.\n*/\nexport function addBehaviors(bhvs) {\n if (bhvs.namespaces) {\n for (let prefix of Object.keys(bhvs.namespaces)) {\n if (!this.namespaces.has(bhvs.namespaces[prefix]) && !Array.from(this.namespaces.values()).includes(prefix)) {\n this.namespaces.set(bhvs.namespaces[prefix], prefix);\n }\n }\n }\n for (let prefix of this.namespaces.values()) {\n if (bhvs[prefix]) {\n for (let b of Object.keys(bhvs[prefix])) {\n this.behaviors[`${prefix}:${b}`] = bhvs[prefix][b];\n }\n }\n }\n if (bhvs[\"functions\"]) {\n for (let fn of Object.keys(bhvs[\"functions\"])) {\n this.utilities[fn] = bhvs[\"functions\"][fn].bind(this.utilities);\n }\n }\n if (bhvs[\"handlers\"]) {\n console.log(\"Behavior handlers are no longer used.\")\n }\n if (bhvs[\"fallbacks\"]) {\n console.log(\"Fallback behaviors are no longer used.\")\n }\n}\n\n/* \n Adds or replaces an individual behavior. Takes a namespace prefix or namespace definition,\n the element name, and the behavior. E.g.\n addBehavior(\"tei\", \"add\", [\"`\",\"`\"]) for an already-declared namespace or\n addBehavior({\"doc\": \"http://docbook.org/ns/docbook\"}, \"note\", [\"[\",\"]\"]) for a new one\n*/\nexport function addBehavior(ns, element, b) {\n let p;\n if (ns === Object(ns)) {\n for (let prefix of Object.keys(ns)) {\n if (!this.namespaces.has(ns[prefix])) {\n this.namespaces.set(ns[prefix], prefix);\n p = prefix;\n }\n }\n } else {\n p = ns;\n }\n this.behaviors[`${p}:${element}`] = b;\n}\n\n/*\n Removes a previously-defined or default behavior. Takes a namespace prefix or namespace definition\n and the element name.\n*/\nexport function removeBehavior(ns, element) {\n let p;\n if (ns === Object(ns)) {\n for (let prefix of Object.keys(ns)) {\n if (!this.namespaces.has(ns[prefix])) {\n this.namespaces.set(ns[prefix], prefix);\n p = prefix;\n }\n }\n } else {\n p = ns;\n }\n delete this.behaviors[`${p}:${element}`];\n}\n"],"names":[],"mappings":"AAMO,SAAS,aAAa,MAAM;AACjC,MAAI,KAAK,YAAY;AACnB,aAAS,UAAU,OAAO,KAAK,KAAK,UAAU,GAAG;AAC/C,UAAI,CAAC,KAAK,WAAW,IAAI,KAAK,WAAW,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,WAAW,OAAM,CAAE,EAAE,SAAS,MAAM,GAAG;AAC3G,aAAK,WAAW,IAAI,KAAK,WAAW,MAAM,GAAG,MAAM;AAAA,MACpD;AAAA,IACF;AAAA,EACF;AACD,WAAS,UAAU,KAAK,WAAW,OAAM,GAAI;AAC3C,QAAI,KAAK,MAAM,GAAG;AAChB,eAAS,KAAK,OAAO,KAAK,KAAK,MAAM,CAAC,GAAG;AACvC,aAAK,UAAU,GAAG,MAAM,IAAI,CAAC,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;AAAA,MAClD;AAAA,IACF;AAAA,EACF;AACD,MAAI,KAAK,WAAW,GAAG;AACrB,aAAS,MAAM,OAAO,KAAK,KAAK,WAAW,CAAC,GAAG;AAC7C,WAAK,UAAU,EAAE,IAAI,KAAK,WAAW,EAAE,EAAE,EAAE,KAAK,KAAK,SAAS;AAAA,IAC/D;AAAA,EACF;AACD,MAAI,KAAK,UAAU,GAAG;AACpB,YAAQ,IAAI,uCAAuC;AAAA,EACpD;AACD,MAAI,KAAK,WAAW,GAAG;AACrB,YAAQ,IAAI,wCAAwC;AAAA,EACrD;AACH;AAQO,SAAS,YAAY,IAAI,SAAS,GAAG;AAC1C,MAAI;AACJ,MAAI,OAAO,OAAO,EAAE,GAAG;AACrB,aAAS,UAAU,OAAO,KAAK,EAAE,GAAG;AAClC,UAAI,CAAC,KAAK,WAAW,IAAI,GAAG,MAAM,CAAC,GAAG;AACpC,aAAK,WAAW,IAAI,GAAG,MAAM,GAAG,MAAM;AACtC,YAAI;AAAA,MACL;AAAA,IACF;AAAA,EACL,OAAS;AACL,QAAI;AAAA,EACL;AACD,OAAK,UAAU,GAAG,CAAC,IAAI,OAAO,EAAE,IAAI;AACtC;AAMO,SAAS,eAAe,IAAI,SAAS;AAC1C,MAAI;AACJ,MAAI,OAAO,OAAO,EAAE,GAAG;AACrB,aAAS,UAAU,OAAO,KAAK,EAAE,GAAG;AAClC,UAAI,CAAC,KAAK,WAAW,IAAI,GAAG,MAAM,CAAC,GAAG;AACpC,aAAK,WAAW,IAAI,GAAG,MAAM,GAAG,MAAM;AACtC,YAAI;AAAA,MACL;AAAA,IACF;AAAA,EACL,OAAS;AACL,QAAI;AAAA,EACL;AACD,SAAO,KAAK,UAAU,GAAG,CAAC,IAAI,OAAO,EAAE;AACzC;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"react-text-annotator.es21.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]}
@@ -1,23 +1,61 @@
1
- function learnElementNames(XML_dom, namespaces) {
2
- const root = XML_dom.documentElement;
3
- let i = 1;
4
- let qname = function(e) {
5
- if (!namespaces.has(e.namespaceURI ? e.namespaceURI : "")) {
6
- namespaces.set(e.namespaceURI, "ns" + i++);
1
+ function addBehaviors(bhvs) {
2
+ if (bhvs.namespaces) {
3
+ for (let prefix of Object.keys(bhvs.namespaces)) {
4
+ if (!this.namespaces.has(bhvs.namespaces[prefix]) && !Array.from(this.namespaces.values()).includes(prefix)) {
5
+ this.namespaces.set(bhvs.namespaces[prefix], prefix);
6
+ }
7
7
  }
8
- return namespaces.get(e.namespaceURI ? e.namespaceURI : "") + ":" + e.localName;
9
- };
10
- const els = new Set(
11
- Array.from(root.querySelectorAll("*"), qname)
12
- );
13
- els.add(qname(root));
14
- return els;
8
+ }
9
+ for (let prefix of this.namespaces.values()) {
10
+ if (bhvs[prefix]) {
11
+ for (let b of Object.keys(bhvs[prefix])) {
12
+ this.behaviors[`${prefix}:${b}`] = bhvs[prefix][b];
13
+ }
14
+ }
15
+ }
16
+ if (bhvs["functions"]) {
17
+ for (let fn of Object.keys(bhvs["functions"])) {
18
+ this.utilities[fn] = bhvs["functions"][fn].bind(this.utilities);
19
+ }
20
+ }
21
+ if (bhvs["handlers"]) {
22
+ console.log("Behavior handlers are no longer used.");
23
+ }
24
+ if (bhvs["fallbacks"]) {
25
+ console.log("Fallback behaviors are no longer used.");
26
+ }
15
27
  }
16
- function learnCustomElementNames(HTML_dom) {
17
- return new Set(Array.from(HTML_dom.querySelectorAll("*[data-origname]"), (e) => e.localName.replace(/(\w+)-.+/, "$1:") + e.getAttribute("data-origname")));
28
+ function addBehavior(ns, element, b) {
29
+ let p;
30
+ if (ns === Object(ns)) {
31
+ for (let prefix of Object.keys(ns)) {
32
+ if (!this.namespaces.has(ns[prefix])) {
33
+ this.namespaces.set(ns[prefix], prefix);
34
+ p = prefix;
35
+ }
36
+ }
37
+ } else {
38
+ p = ns;
39
+ }
40
+ this.behaviors[`${p}:${element}`] = b;
41
+ }
42
+ function removeBehavior(ns, element) {
43
+ let p;
44
+ if (ns === Object(ns)) {
45
+ for (let prefix of Object.keys(ns)) {
46
+ if (!this.namespaces.has(ns[prefix])) {
47
+ this.namespaces.set(ns[prefix], prefix);
48
+ p = prefix;
49
+ }
50
+ }
51
+ } else {
52
+ p = ns;
53
+ }
54
+ delete this.behaviors[`${p}:${element}`];
18
55
  }
19
56
  export {
20
- learnCustomElementNames,
21
- learnElementNames
57
+ addBehavior,
58
+ addBehaviors,
59
+ removeBehavior
22
60
  };
23
61
  //# sourceMappingURL=react-text-annotator.es22.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"react-text-annotator.es22.js","sources":["../../../node_modules/CETEIcean/src/dom.js"],"sourcesContent":["export function learnElementNames(XML_dom, namespaces) {\n const root = XML_dom.documentElement;\n let i = 1;\n let qname = function(e) { \n if (!namespaces.has(e.namespaceURI ? e.namespaceURI : \"\")) {\n namespaces.set(e.namespaceURI, \"ns\" + i++);\n } \n return namespaces.get(e.namespaceURI ? e.namespaceURI : \"\") + \":\" + e.localName;\n };\n const els = new Set(\n Array.from(root.querySelectorAll(\"*\"), qname));\n \n // Add the root element to the array\n els.add(qname(root));\n return els\n}\n\nexport function learnCustomElementNames(HTML_dom) {\n return new Set(Array.from(HTML_dom.querySelectorAll(\"*[data-origname]\"), e => e.localName.replace(/(\\w+)-.+/,\"$1:\") + e.getAttribute(\"data-origname\")));\n}"],"names":[],"mappings":"AAAO,SAAS,kBAAkB,SAAS,YAAY;AACrD,QAAM,OAAO,QAAQ;AACrB,MAAI,IAAI;AACR,MAAI,QAAQ,SAAS,GAAG;AACtB,QAAI,CAAC,WAAW,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG;AACzD,iBAAW,IAAI,EAAE,cAAc,OAAO,GAAG;AAAA,IAC1C;AACD,WAAO,WAAW,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,IAAI,MAAM,EAAE;AAAA,EAC1E;AACE,QAAM,MAAM,IAAI;AAAA,IACd,MAAM,KAAK,KAAK,iBAAiB,GAAG,GAAG,KAAK;AAAA,EAAC;AAG/C,MAAI,IAAI,MAAM,IAAI,CAAC;AACnB,SAAO;AACT;AAEO,SAAS,wBAAwB,UAAU;AAChD,SAAO,IAAI,IAAI,MAAM,KAAK,SAAS,iBAAiB,kBAAkB,GAAG,OAAK,EAAE,UAAU,QAAQ,YAAW,KAAK,IAAI,EAAE,aAAa,eAAe,CAAC,CAAC;AACxJ;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"react-text-annotator.es22.js","sources":["../../../node_modules/CETEIcean/src/behaviors.js"],"sourcesContent":["\n/* \n Add a user-defined set of behaviors to CETEIcean's processing\n workflow. Added behaviors will override predefined behaviors with the\n same name.\n*/\nexport function addBehaviors(bhvs) {\n if (bhvs.namespaces) {\n for (let prefix of Object.keys(bhvs.namespaces)) {\n if (!this.namespaces.has(bhvs.namespaces[prefix]) && !Array.from(this.namespaces.values()).includes(prefix)) {\n this.namespaces.set(bhvs.namespaces[prefix], prefix);\n }\n }\n }\n for (let prefix of this.namespaces.values()) {\n if (bhvs[prefix]) {\n for (let b of Object.keys(bhvs[prefix])) {\n this.behaviors[`${prefix}:${b}`] = bhvs[prefix][b];\n }\n }\n }\n if (bhvs[\"functions\"]) {\n for (let fn of Object.keys(bhvs[\"functions\"])) {\n this.utilities[fn] = bhvs[\"functions\"][fn].bind(this.utilities);\n }\n }\n if (bhvs[\"handlers\"]) {\n console.log(\"Behavior handlers are no longer used.\")\n }\n if (bhvs[\"fallbacks\"]) {\n console.log(\"Fallback behaviors are no longer used.\")\n }\n}\n\n/* \n Adds or replaces an individual behavior. Takes a namespace prefix or namespace definition,\n the element name, and the behavior. E.g.\n addBehavior(\"tei\", \"add\", [\"`\",\"`\"]) for an already-declared namespace or\n addBehavior({\"doc\": \"http://docbook.org/ns/docbook\"}, \"note\", [\"[\",\"]\"]) for a new one\n*/\nexport function addBehavior(ns, element, b) {\n let p;\n if (ns === Object(ns)) {\n for (let prefix of Object.keys(ns)) {\n if (!this.namespaces.has(ns[prefix])) {\n this.namespaces.set(ns[prefix], prefix);\n p = prefix;\n }\n }\n } else {\n p = ns;\n }\n this.behaviors[`${p}:${element}`] = b;\n}\n\n/*\n Removes a previously-defined or default behavior. Takes a namespace prefix or namespace definition\n and the element name.\n*/\nexport function removeBehavior(ns, element) {\n let p;\n if (ns === Object(ns)) {\n for (let prefix of Object.keys(ns)) {\n if (!this.namespaces.has(ns[prefix])) {\n this.namespaces.set(ns[prefix], prefix);\n p = prefix;\n }\n }\n } else {\n p = ns;\n }\n delete this.behaviors[`${p}:${element}`];\n}\n"],"names":[],"mappings":"AAMO,SAAS,aAAa,MAAM;AACjC,MAAI,KAAK,YAAY;AACnB,aAAS,UAAU,OAAO,KAAK,KAAK,UAAU,GAAG;AAC/C,UAAI,CAAC,KAAK,WAAW,IAAI,KAAK,WAAW,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,WAAW,OAAM,CAAE,EAAE,SAAS,MAAM,GAAG;AAC3G,aAAK,WAAW,IAAI,KAAK,WAAW,MAAM,GAAG,MAAM;AAAA,MACpD;AAAA,IACF;AAAA,EACF;AACD,WAAS,UAAU,KAAK,WAAW,OAAM,GAAI;AAC3C,QAAI,KAAK,MAAM,GAAG;AAChB,eAAS,KAAK,OAAO,KAAK,KAAK,MAAM,CAAC,GAAG;AACvC,aAAK,UAAU,GAAG,MAAM,IAAI,CAAC,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;AAAA,MAClD;AAAA,IACF;AAAA,EACF;AACD,MAAI,KAAK,WAAW,GAAG;AACrB,aAAS,MAAM,OAAO,KAAK,KAAK,WAAW,CAAC,GAAG;AAC7C,WAAK,UAAU,EAAE,IAAI,KAAK,WAAW,EAAE,EAAE,EAAE,KAAK,KAAK,SAAS;AAAA,IAC/D;AAAA,EACF;AACD,MAAI,KAAK,UAAU,GAAG;AACpB,YAAQ,IAAI,uCAAuC;AAAA,EACpD;AACD,MAAI,KAAK,WAAW,GAAG;AACrB,YAAQ,IAAI,wCAAwC;AAAA,EACrD;AACH;AAQO,SAAS,YAAY,IAAI,SAAS,GAAG;AAC1C,MAAI;AACJ,MAAI,OAAO,OAAO,EAAE,GAAG;AACrB,aAAS,UAAU,OAAO,KAAK,EAAE,GAAG;AAClC,UAAI,CAAC,KAAK,WAAW,IAAI,GAAG,MAAM,CAAC,GAAG;AACpC,aAAK,WAAW,IAAI,GAAG,MAAM,GAAG,MAAM;AACtC,YAAI;AAAA,MACL;AAAA,IACF;AAAA,EACL,OAAS;AACL,QAAI;AAAA,EACL;AACD,OAAK,UAAU,GAAG,CAAC,IAAI,OAAO,EAAE,IAAI;AACtC;AAMO,SAAS,eAAe,IAAI,SAAS;AAC1C,MAAI;AACJ,MAAI,OAAO,OAAO,EAAE,GAAG;AACrB,aAAS,UAAU,OAAO,KAAK,EAAE,GAAG;AAClC,UAAI,CAAC,KAAK,WAAW,IAAI,GAAG,MAAM,CAAC,GAAG;AACpC,aAAK,WAAW,IAAI,GAAG,MAAM,GAAG,MAAM;AACtC,YAAI;AAAA,MACL;AAAA,IACF;AAAA,EACL,OAAS;AACL,QAAI;AAAA,EACL;AACD,SAAO,KAAK,UAAU,GAAG,CAAC,IAAI,OAAO,EAAE;AACzC;","x_google_ignoreList":[0]}
@@ -1,124 +1,23 @@
1
- const sides = ["top", "right", "bottom", "left"];
2
- const alignments = ["start", "end"];
3
- const placements = /* @__PURE__ */ sides.reduce((acc, side) => acc.concat(side, side + "-" + alignments[0], side + "-" + alignments[1]), []);
4
- const min = Math.min;
5
- const max = Math.max;
6
- const round = Math.round;
7
- const floor = Math.floor;
8
- const createCoords = (v) => ({
9
- x: v,
10
- y: v
11
- });
12
- const oppositeSideMap = {
13
- left: "right",
14
- right: "left",
15
- bottom: "top",
16
- top: "bottom"
17
- };
18
- const oppositeAlignmentMap = {
19
- start: "end",
20
- end: "start"
21
- };
22
- function clamp(start, value, end) {
23
- return max(start, min(value, end));
24
- }
25
- function evaluate(value, param) {
26
- return typeof value === "function" ? value(param) : value;
27
- }
28
- function getSide(placement) {
29
- return placement.split("-")[0];
30
- }
31
- function getAlignment(placement) {
32
- return placement.split("-")[1];
33
- }
34
- function getOppositeAxis(axis) {
35
- return axis === "x" ? "y" : "x";
36
- }
37
- function getAxisLength(axis) {
38
- return axis === "y" ? "height" : "width";
39
- }
40
- function getSideAxis(placement) {
41
- return ["top", "bottom"].includes(getSide(placement)) ? "y" : "x";
42
- }
43
- function getAlignmentAxis(placement) {
44
- return getOppositeAxis(getSideAxis(placement));
45
- }
46
- function getAlignmentSides(placement, rects, rtl) {
47
- if (rtl === void 0) {
48
- rtl = false;
49
- }
50
- const alignment = getAlignment(placement);
51
- const alignmentAxis = getAlignmentAxis(placement);
52
- const length = getAxisLength(alignmentAxis);
53
- let mainAlignmentSide = alignmentAxis === "x" ? alignment === (rtl ? "end" : "start") ? "right" : "left" : alignment === "start" ? "bottom" : "top";
54
- if (rects.reference[length] > rects.floating[length]) {
55
- mainAlignmentSide = getOppositePlacement(mainAlignmentSide);
56
- }
57
- return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];
58
- }
59
- function getOppositeAlignmentPlacement(placement) {
60
- return placement.replace(/start|end/g, (alignment) => oppositeAlignmentMap[alignment]);
61
- }
62
- function getOppositePlacement(placement) {
63
- return placement.replace(/left|right|bottom|top/g, (side) => oppositeSideMap[side]);
64
- }
65
- function expandPaddingObject(padding) {
66
- return {
67
- top: 0,
68
- right: 0,
69
- bottom: 0,
70
- left: 0,
71
- ...padding
72
- };
73
- }
74
- function getPaddingObject(padding) {
75
- return typeof padding !== "number" ? expandPaddingObject(padding) : {
76
- top: padding,
77
- right: padding,
78
- bottom: padding,
79
- left: padding
1
+ function learnElementNames(XML_dom, namespaces) {
2
+ const root = XML_dom.documentElement;
3
+ let i = 1;
4
+ let qname = function(e) {
5
+ if (!namespaces.has(e.namespaceURI ? e.namespaceURI : "")) {
6
+ namespaces.set(e.namespaceURI, "ns" + i++);
7
+ }
8
+ return namespaces.get(e.namespaceURI ? e.namespaceURI : "") + ":" + e.localName;
80
9
  };
10
+ const els = new Set(
11
+ Array.from(root.querySelectorAll("*"), qname)
12
+ );
13
+ els.add(qname(root));
14
+ return els;
81
15
  }
82
- function rectToClientRect(rect) {
83
- const {
84
- x,
85
- y,
86
- width,
87
- height
88
- } = rect;
89
- return {
90
- width,
91
- height,
92
- top: y,
93
- left: x,
94
- right: x + width,
95
- bottom: y + height,
96
- x,
97
- y
98
- };
16
+ function learnCustomElementNames(HTML_dom) {
17
+ return new Set(Array.from(HTML_dom.querySelectorAll("*[data-origname]"), (e) => e.localName.replace(/(\w+)-.+/, "$1:") + e.getAttribute("data-origname")));
99
18
  }
100
19
  export {
101
- alignments,
102
- clamp,
103
- createCoords,
104
- evaluate,
105
- expandPaddingObject,
106
- floor,
107
- getAlignment,
108
- getAlignmentAxis,
109
- getAlignmentSides,
110
- getAxisLength,
111
- getOppositeAlignmentPlacement,
112
- getOppositeAxis,
113
- getOppositePlacement,
114
- getPaddingObject,
115
- getSide,
116
- getSideAxis,
117
- max,
118
- min,
119
- placements,
120
- rectToClientRect,
121
- round,
122
- sides
20
+ learnCustomElementNames,
21
+ learnElementNames
123
22
  };
124
23
  //# sourceMappingURL=react-text-annotator.es23.js.map