2 var GeneralUse
= require("./general-use");
3 var Classical
= require("./classical");
4 var Beleriand
= require("./beleriand");
5 var TengwarAnnatar
= require("./tengwar-annatar");
6 var TengwarParmaite
= require("./tengwar-parmaite");
7 var modes
= require("./modes");
8 var detectWebFont
= require("./detect-web-font");
10 var array_
= Array
.prototype;
12 if (typeof document
!== "undefined") {
13 if (document
.readyState
=== "complete") {
16 document
.addEventListener("DOMContentLoaded", onload
, true);
18 detectWebFont(onfontcheck
);
28 function onfontcheck(detected
) {
30 webfontDetected
= true;
37 function onnowebfont() {
38 if (!supportedBrowser())
40 var elements
= document
.querySelectorAll(".tengwar");
41 array_
.forEach
.call(elements
, function (element
) {
42 element
.classList
.add("error");
43 element
.innerHTML
= "Cannot render because WebFonts are not available in this browser.";
47 function supportedBrowser() {
48 if (!document
.body
.classList
|| !document
.querySelectorAll
|| !array_
.forEach
) {
54 function onoldbrowser() {
55 if (!document
.body
.classList
|| !document
.querySelectorAll
|| !array_
.forEach
)
60 if (loaded
=== void 0 || webfontDetected
=== void 0)
62 if (!supportedBrowser())
64 var elements
= document
.querySelectorAll(".tengwar");
65 array_
.forEach
.call(elements
, function (element
) {
66 setTimeout(function () {
67 var data
= element
.dataset
;
68 var tengwar
, mode
, font
, encoding
, block
;
69 block
= element
.tagName
.toLowerCase() !== "span";
71 tengwar
= data
.tengwar
;
73 encoding
= data
.encoding
;
75 tengwar
= element
.getAttribute("data-tengwar");
76 mode
= element
.getAttribute("data-mode");
77 encoding
= element
.getAttribute("data-encoding");
80 element
.innerText
= TengwarAnnatar
.transcribe(encoding
, {block
: block
});
81 element
.classList
.add("rendered");
83 font
= element
.classList
.contains("parmaite") ? TengwarParmaite
: TengwarAnnatar
;
84 var flags
= mode
.split(/\s+/);
85 var mode
= flags
.shift();
86 var Mode
= modes
[mode
] || GeneralUse
;
87 var options
= Mode
.makeOptions();
88 flags
.forEach(function (flag
) {
89 flag
= flag
.replace(/\-(\w)/g, function ($, $1) {
90 return $1.toUpperCase();
94 options
.block
= block
;
96 element
.innerHTML
= Mode
.transcribe(tengwar
, options
);
97 element
.classList
.add("rendered");