CETEIcean 1.5.0 → 1.7.1
Sign up to get free protection for your applications and to get access to all the features.
- package/.vscode/settings.json +6 -0
- package/package.json +5 -5
- package/src/CETEI.js +16 -5
- package/src/behaviors.js +5 -9
- package/src/defaultBehaviors.js +0 -5
- package/src/utilities.js +0 -1
- package/test/EEBOTest.html +0 -1
- package/test/registerElements.html +0 -31
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "CETEIcean",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.7.1",
|
4
4
|
"description": "JavaScript library to load a TEI XML document and register it as HTML5 custom elements.",
|
5
5
|
"main": "src/CETEI.js",
|
6
6
|
"keywords": [
|
@@ -18,13 +18,13 @@
|
|
18
18
|
"devDependencies": {
|
19
19
|
"@babel/core": "^7.15.5",
|
20
20
|
"@babel/preset-env": "7.15.6",
|
21
|
+
"@rollup/plugin-babel": "^5.3.0",
|
21
22
|
"babel-preset-env": "^1.7.0",
|
22
|
-
"http-server": "^
|
23
|
+
"http-server": "^14.1.1",
|
23
24
|
"onchange": "^6.1.1",
|
24
25
|
"rollup": "^2.57.0",
|
25
|
-
"
|
26
|
-
"
|
27
|
-
"terser": "^3.17.0"
|
26
|
+
"rollup-plugin-terser": "^7.0.2",
|
27
|
+
"terser": "^5.14.2"
|
28
28
|
},
|
29
29
|
"scripts": {
|
30
30
|
"build": "rollup -c rollup.config.js",
|
package/src/CETEI.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import defaultBehaviors from './defaultBehaviors';
|
2
2
|
import * as utilities from './utilities';
|
3
|
-
import {addBehaviors, addBehavior,
|
3
|
+
import {addBehaviors, addBehavior, removeBehavior} from './behaviors';
|
4
4
|
import {learnElementNames, learnCustomElementNames} from './dom';
|
5
5
|
|
6
6
|
class CETEI {
|
@@ -10,7 +10,6 @@ class CETEI {
|
|
10
10
|
// Bind methods
|
11
11
|
this.addBehaviors = addBehaviors.bind(this);
|
12
12
|
this.addBehavior = addBehavior.bind(this);
|
13
|
-
this.applyBehaviors = applyBehaviors.bind(this);
|
14
13
|
this.removeBehavior = removeBehavior.bind(this);
|
15
14
|
|
16
15
|
// Bind selected utilities
|
@@ -304,11 +303,14 @@ childExists(elt, name) {
|
|
304
303
|
strings or an object with CSS selector keys and either functions
|
305
304
|
or arrays as described above. Returns a closure around a function
|
306
305
|
that can be called in the element constructor or applied to an
|
307
|
-
individual element.
|
306
|
+
individual element. An empty array is considered a no-op.
|
308
307
|
|
309
308
|
Called by the getHandler() and getFallback() methods
|
310
309
|
*/
|
311
310
|
decorator(template) {
|
311
|
+
if (Array.isArray(template) && template.length == 0) {
|
312
|
+
return function(e) {};
|
313
|
+
}
|
312
314
|
if (Array.isArray(template) && !Array.isArray(template[0])) {
|
313
315
|
return this.applyDecorator(template)
|
314
316
|
}
|
@@ -435,6 +437,15 @@ template(str, elt) {
|
|
435
437
|
return result;
|
436
438
|
}
|
437
439
|
|
440
|
+
// Define or apply behaviors for the document
|
441
|
+
applyBehaviors() {
|
442
|
+
if (window.customElements) {
|
443
|
+
this.define.call(this, this.els);
|
444
|
+
} else {
|
445
|
+
this.fallback.call(this, this.els);
|
446
|
+
}
|
447
|
+
}
|
448
|
+
|
438
449
|
/*
|
439
450
|
Registers the list of elements provided with the browser.
|
440
451
|
Called by makeHTML5(), but can be called independently if, for example,
|
@@ -443,7 +454,7 @@ template(str, elt) {
|
|
443
454
|
define(names) {
|
444
455
|
for (let name of names) {
|
445
456
|
try {
|
446
|
-
|
457
|
+
const fn = this.getHandler(this.behaviors, name);
|
447
458
|
window.customElements.define(this.tagName(name), class extends HTMLElement {
|
448
459
|
constructor() {
|
449
460
|
super();
|
@@ -469,7 +480,7 @@ define(names) {
|
|
469
480
|
// When using the same CETEIcean instance for multiple TEI files, this error becomes very common.
|
470
481
|
// It's muted by default unless the debug option is set.
|
471
482
|
if (this.debug) {
|
472
|
-
console.log(tagName(name) + " couldn't be registered or is already registered.");
|
483
|
+
console.log(this.tagName(name) + " couldn't be registered or is already registered.");
|
473
484
|
console.log(error);
|
474
485
|
}
|
475
486
|
}
|
package/src/behaviors.js
CHANGED
@@ -19,6 +19,11 @@ export function addBehaviors(bhvs) {
|
|
19
19
|
}
|
20
20
|
}
|
21
21
|
}
|
22
|
+
if (bhvs["functions"]) {
|
23
|
+
for (let fn of Object.keys(bhvs["functions"])) {
|
24
|
+
this.utilities[fn] = bhvs["functions"][fn];
|
25
|
+
}
|
26
|
+
}
|
22
27
|
if (bhvs["handlers"]) {
|
23
28
|
console.log("Behavior handlers are no longer used.")
|
24
29
|
}
|
@@ -66,12 +71,3 @@ export function removeBehavior(ns, element) {
|
|
66
71
|
}
|
67
72
|
delete this.behaviors[`${p}:${element}`];
|
68
73
|
}
|
69
|
-
|
70
|
-
// Define or apply behaviors for the document
|
71
|
-
export function applyBehaviors() {
|
72
|
-
if (window.customElements) {
|
73
|
-
this.define.call(this, this.els);
|
74
|
-
} else {
|
75
|
-
this.fallback.call(this, this.els);
|
76
|
-
}
|
77
|
-
}
|
package/src/defaultBehaviors.js
CHANGED
@@ -84,11 +84,6 @@ export default {
|
|
84
84
|
document.querySelector("head").appendChild(title);
|
85
85
|
}]
|
86
86
|
],
|
87
|
-
"cell": [
|
88
|
-
["[cols]", function(elt) {
|
89
|
-
elt.setAttribute("style", "grid-column: " + this.getOrdinality(elt) + " / span " + elt.getAttribute("cols") + ";");
|
90
|
-
}]
|
91
|
-
]
|
92
87
|
},
|
93
88
|
"teieg": {
|
94
89
|
"egXML": function(elt) {
|
package/src/utilities.js
CHANGED
package/test/EEBOTest.html
CHANGED
@@ -75,7 +75,6 @@
|
|
75
75
|
CETEIcean.getHTML5('https://raw.githubusercontent.com/textcreationpartnership/A00689/master/A00689.xml', function(data) {
|
76
76
|
document.getElementById("TEI").innerHTML = "";
|
77
77
|
document.getElementById("TEI").appendChild(data);
|
78
|
-
CETEIcean.addStyle(document, data);
|
79
78
|
// Fix combining abbreviation marker in Chrome
|
80
79
|
if (!!window.chrome) {
|
81
80
|
var gs = document.getElementsByTagName("tei-g");
|
@@ -1,31 +0,0 @@
|
|
1
|
-
<html>
|
2
|
-
<head>
|
3
|
-
<meta charset="utf-8">
|
4
|
-
<link rel="stylesheet" href="CETEIcean.css" media="screen" charset="utf-8">
|
5
|
-
</head>
|
6
|
-
<body>
|
7
|
-
<div id="TEI"></div>
|
8
|
-
<script src="../dist/CETEI.js"></script>
|
9
|
-
<script>
|
10
|
-
|
11
|
-
/* Testing the functions for registering elements. All these should work */
|
12
|
-
|
13
|
-
// Repeated elements should be skipped
|
14
|
-
var els = ["TEI", "TEI", "teiHeader"];
|
15
|
-
|
16
|
-
var CETEIcean = new CETEI();
|
17
|
-
|
18
|
-
if (document.registerElement) {
|
19
|
-
CETEIcean.registerAll(els);
|
20
|
-
if (document.createElement("tei-TEI") instanceof HTMLElement) {
|
21
|
-
console.log("tei-TEI correctly registered without conflict");
|
22
|
-
}
|
23
|
-
}
|
24
|
-
else {
|
25
|
-
console.log("HTML CE not supported. Fallback used.")
|
26
|
-
}
|
27
|
-
|
28
|
-
|
29
|
-
</script>
|
30
|
-
</body>
|
31
|
-
</html>
|