r2-navigator-js
Version:
Readium 2 'navigator' for NodeJS (TypeScript)
666 lines • 32.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.setKeyUpEventHandler = exports.setKeyDownEventHandler = exports.installNavigatorDOM = exports.readiumCssUpdate = exports.readiumCssOnOff = exports.fixedLayoutZoomPercent = void 0;
var tslib_1 = require("tslib");
var IS_DEV = (process.env.NODE_ENV === "development" || process.env.NODE_ENV === "dev");
var debug_ = require("debug");
var electron_1 = require("electron");
var media_overlays_1 = require("./media-overlays");
var context_menu_1 = require("../common/context-menu");
var events_1 = require("../common/events");
var readium_css_settings_1 = require("../common/readium-css-settings");
var sessions_1 = require("../common/sessions");
var styles_1 = require("../common/styles");
var url_params_1 = require("./common/url-params");
var highlight_1 = require("./highlight");
var location_1 = require("./location");
var media_overlays_2 = require("./media-overlays");
var readaloud_1 = require("./readaloud");
var readium_css_1 = require("./readium-css");
var soundtrack_1 = require("./soundtrack");
var ELEMENT_ID_SLIDING_VIEWPORT = "r2_navigator_sliding_viewport";
var ELEMENT_ID_CAPTIONS = "r2_navigator_captions_overlay";
var ELEMENT_ID_READIUM_CSS_STYLE = "r2_navigator_readium_css";
var captionsOverlayCssStyles = "\n overflow: hidden;\n overflow-y: auto;\n display: flex;\n justify-content: center;\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n box-sizing: border-box;\n border: 0;\n margin: 0;\n padding: 2em;\n line-height: initial;\n user-select: none;\n".replace(/\n/g, " ").replace(/\s\s+/g, " ").trim();
var captionsOverlayParaCssStyles = "\n margin: 0;\n margin-top: auto;\n margin-bottom: auto;\n padding: 0;\n max-width: 900px;\n font-weight: bolder;\n text-align: center;\n".replace(/\n/g, " ").replace(/\s\s+/g, " ").trim();
var readiumCssStyle = "\n@font-face {\nfont-family: AccessibleDfA;\nfont-style: normal;\nfont-weight: normal;\nsrc: local(\"AccessibleDfA\"),\nurl(\"{RCSS_BASE_URL}fonts/AccessibleDfA.otf\") format(\"opentype\");\n}\n\n@font-face {\nfont-family: \"IA Writer Duospace\";\nfont-style: normal;\nfont-weight: normal;\nsrc: local(\"iAWriterDuospace-Regular\"),\nurl(\"{RCSS_BASE_URL}fonts/iAWriterDuospace-Regular.ttf\") format(\"truetype\");\n}\n";
var debug = debug_("r2:navigator#electron/renderer/index");
var win = global.window;
var _resizeSkip = 0;
var _resizeWebviewsNeedReset = true;
var _resizeTimeout;
win.addEventListener("resize", function () {
var e_1, _a;
var _b, _c, _d;
if (!win.READIUM2) {
return;
}
if (((_d = (_c = (_b = win.READIUM2.publication) === null || _b === void 0 ? void 0 : _b.Metadata) === null || _c === void 0 ? void 0 : _c.Rendition) === null || _d === void 0 ? void 0 : _d.Layout) !== "fixed") {
return;
}
if (_resizeSkip > 0) {
debug("Window resize (TOP), SKIP ...", _resizeSkip);
return;
}
if (_resizeWebviewsNeedReset) {
_resizeWebviewsNeedReset = false;
debug("Window resize (TOP), IMMEDIATE");
var activeWebViews = win.READIUM2.getActiveWebViews();
try {
for (var activeWebViews_1 = tslib_1.__values(activeWebViews), activeWebViews_1_1 = activeWebViews_1.next(); !activeWebViews_1_1.done; activeWebViews_1_1 = activeWebViews_1.next()) {
var activeWebView = activeWebViews_1_1.value;
var wvSlot = activeWebView.getAttribute("data-wv-slot");
if (wvSlot) {
debug("Window resize (TOP), IMMEDIATE ... setWebViewStyle");
(0, location_1.setWebViewStyle)(activeWebView, wvSlot);
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (activeWebViews_1_1 && !activeWebViews_1_1.done && (_a = activeWebViews_1.return)) _a.call(activeWebViews_1);
}
finally { if (e_1) throw e_1.error; }
}
}
if (_resizeTimeout) {
clearTimeout(_resizeTimeout);
}
_resizeTimeout = win.setTimeout(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
var activeWebViews, activeWebViews_2, activeWebViews_2_1, activeWebView, wvSlot, e_2, e_3_1;
var e_3, _a;
var _b;
return tslib_1.__generator(this, function (_c) {
switch (_c.label) {
case 0:
debug("Window resize (TOP), DEFERRED");
_resizeTimeout = undefined;
_resizeWebviewsNeedReset = true;
activeWebViews = win.READIUM2.getActiveWebViews();
_resizeSkip = activeWebViews.length;
_c.label = 1;
case 1:
_c.trys.push([1, 9, 10, 11]);
activeWebViews_2 = tslib_1.__values(activeWebViews), activeWebViews_2_1 = activeWebViews_2.next();
_c.label = 2;
case 2:
if (!!activeWebViews_2_1.done) return [3, 8];
activeWebView = activeWebViews_2_1.value;
wvSlot = activeWebView.getAttribute("data-wv-slot");
if (!wvSlot) return [3, 7];
_c.label = 3;
case 3:
_c.trys.push([3, 6, , 7]);
if (!((_b = activeWebView.READIUM2) === null || _b === void 0 ? void 0 : _b.DOMisReady)) return [3, 5];
return [4, activeWebView.send("R2_EVENT_WINDOW_RESIZE", win.READIUM2.fixedLayoutZoomPercent)];
case 4:
_c.sent();
_c.label = 5;
case 5: return [3, 7];
case 6:
e_2 = _c.sent();
debug(e_2);
return [3, 7];
case 7:
activeWebViews_2_1 = activeWebViews_2.next();
return [3, 2];
case 8: return [3, 11];
case 9:
e_3_1 = _c.sent();
e_3 = { error: e_3_1 };
return [3, 11];
case 10:
try {
if (activeWebViews_2_1 && !activeWebViews_2_1.done && (_a = activeWebViews_2.return)) _a.call(activeWebViews_2);
}
finally { if (e_3) throw e_3.error; }
return [7];
case 11: return [2];
}
});
}); }, 1000);
});
electron_1.ipcRenderer.on("accessibility-support-changed", function (_e, accessibilitySupportEnabled) {
if (!win.READIUM2) {
return;
}
debug("accessibility-support-changed event received in WebView ", accessibilitySupportEnabled);
win.READIUM2.isScreenReaderMounted = accessibilitySupportEnabled;
});
function readiumCssApplyToWebview(loc, activeWebView, rcss) {
var _this = this;
var _a;
var actualReadiumCss = (0, readium_css_1.obtainReadiumCss)(rcss);
activeWebView.READIUM2.readiumCss = actualReadiumCss;
var payloadRcss = (0, readium_css_1.adjustReadiumCssJsonMessageForFixedLayout)(activeWebView, actualReadiumCss);
if (activeWebView.style.transform &&
activeWebView.style.transform !== "none" &&
!activeWebView.hasAttribute("data-wv-fxl")) {
activeWebView.style.opacity = "0";
setTimeout(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var _a;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
(0, location_1.shiftWebview)(activeWebView, 0, undefined);
if (!((_a = activeWebView.READIUM2) === null || _a === void 0 ? void 0 : _a.DOMisReady)) return [3, 2];
return [4, activeWebView.send(events_1.R2_EVENT_READIUMCSS, payloadRcss)];
case 1:
_b.sent();
_b.label = 2;
case 2: return [2];
}
});
}); }, 10);
}
else {
setTimeout(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var _a;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
if (!((_a = activeWebView.READIUM2) === null || _a === void 0 ? void 0 : _a.DOMisReady)) return [3, 2];
return [4, activeWebView.send(events_1.R2_EVENT_READIUMCSS, payloadRcss)];
case 1:
_b.sent();
_b.label = 2;
case 2: return [2];
}
});
}); }, 0);
}
if (loc && loc.locator.href === ((_a = activeWebView.READIUM2.link) === null || _a === void 0 ? void 0 : _a.Href)) {
setTimeout(function () {
debug("readiumCssOnOff -> handleLinkLocator");
(0, location_1.handleLinkLocator)(loc.locator, actualReadiumCss);
}, 60);
}
}
var _fixedLayoutZoomPercentTimers = {};
function fixedLayoutZoomPercent(zoomPercent) {
var e_4, _a;
var _this = this;
win.READIUM2.domSlidingViewport.style.overflow = zoomPercent === 0 ? "hidden" : "auto";
if (win.READIUM2) {
win.READIUM2.fixedLayoutZoomPercent = zoomPercent;
}
var activeWebViews = win.READIUM2.getActiveWebViews();
var _loop_1 = function (activeWebView) {
if (_fixedLayoutZoomPercentTimers[activeWebView.id]) {
win.clearTimeout(_fixedLayoutZoomPercentTimers[activeWebView.id]);
_fixedLayoutZoomPercentTimers[activeWebView.id] = undefined;
}
var wvSlot = activeWebView.getAttribute("data-wv-slot");
if (wvSlot) {
debug("fixedLayoutZoomPercent ... setWebViewStyle");
(0, location_1.setWebViewStyle)(activeWebView, wvSlot);
_fixedLayoutZoomPercentTimers[activeWebView.id] = win.setTimeout(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var e_5;
var _a;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
_b.trys.push([0, 3, , 4]);
_fixedLayoutZoomPercentTimers[activeWebView.id] = undefined;
if (!((_a = activeWebView.READIUM2) === null || _a === void 0 ? void 0 : _a.DOMisReady)) return [3, 2];
return [4, activeWebView.send("R2_EVENT_WINDOW_RESIZE", zoomPercent)];
case 1:
_b.sent();
_b.label = 2;
case 2: return [3, 4];
case 3:
e_5 = _b.sent();
debug(e_5);
return [3, 4];
case 4: return [2];
}
});
}); }, 500);
}
};
try {
for (var activeWebViews_3 = tslib_1.__values(activeWebViews), activeWebViews_3_1 = activeWebViews_3.next(); !activeWebViews_3_1.done; activeWebViews_3_1 = activeWebViews_3.next()) {
var activeWebView = activeWebViews_3_1.value;
_loop_1(activeWebView);
}
}
catch (e_4_1) { e_4 = { error: e_4_1 }; }
finally {
try {
if (activeWebViews_3_1 && !activeWebViews_3_1.done && (_a = activeWebViews_3.return)) _a.call(activeWebViews_3);
}
finally { if (e_4) throw e_4.error; }
}
}
exports.fixedLayoutZoomPercent = fixedLayoutZoomPercent;
function readiumCssOnOff(rcss) {
var e_6, _a;
var loc = (0, location_1.getCurrentReadingLocation)();
var activeWebViews = win.READIUM2.getActiveWebViews();
try {
for (var activeWebViews_4 = tslib_1.__values(activeWebViews), activeWebViews_4_1 = activeWebViews_4.next(); !activeWebViews_4_1.done; activeWebViews_4_1 = activeWebViews_4.next()) {
var activeWebView = activeWebViews_4_1.value;
readiumCssApplyToWebview(loc, activeWebView, rcss);
}
}
catch (e_6_1) { e_6 = { error: e_6_1 }; }
finally {
try {
if (activeWebViews_4_1 && !activeWebViews_4_1.done && (_a = activeWebViews_4.return)) _a.call(activeWebViews_4);
}
finally { if (e_6) throw e_6.error; }
}
}
exports.readiumCssOnOff = readiumCssOnOff;
function readiumCssUpdate(rcss) {
return readiumCssOnOff(rcss);
}
exports.readiumCssUpdate = readiumCssUpdate;
var _webview1;
var _webview2;
function createWebViewInternal(preloadScriptPath) {
var wv = document.createElement("webview");
wv.setAttribute("webpreferences", "enableRemoteModule=0, allowRunningInsecureContent=0, backgroundThrottling=0, nodeIntegration=0, contextIsolation=0, nodeIntegrationInWorker=0, sandbox=0, webSecurity=1, webviewTag=0, partition=".concat(sessions_1.R2_SESSION_WEBVIEW));
wv.setAttribute("partition", sessions_1.R2_SESSION_WEBVIEW);
var publicationURL_ = win.READIUM2.publicationURL;
if (publicationURL_) {
wv.setAttribute("httpreferrer", publicationURL_);
}
debug("createWebViewInternal ... setWebViewStyle");
(0, location_1.setWebViewStyle)(wv, styles_1.WebViewSlotEnum.center);
wv.setAttribute("preload", preloadScriptPath);
wv.addEventListener("did-start-loading", function () {
debug("DOMisReady... did-start-loading => false");
wv.READIUM2.DOMisReady = false;
});
wv.addEventListener("did-navigate-in-page", function () {
debug("DOMisReady... did-navigate-in-page => true");
wv.READIUM2.DOMisReady = true;
});
wv.addEventListener("dom-ready", function () {
debug("DOMisReady... dom-ready => true");
wv.READIUM2.DOMisReady = true;
wv.clearHistory();
if (IS_DEV) {
electron_1.ipcRenderer.send(context_menu_1.CONTEXT_MENU_SETUP, wv.getWebContentsId());
}
if (win.READIUM2) {
(0, readaloud_1.ttsVoice)(win.READIUM2.ttsVoice);
(0, readaloud_1.ttsPlaybackRate)(win.READIUM2.ttsPlaybackRate);
(0, readaloud_1.ttsClickEnable)(win.READIUM2.ttsClickEnabled);
(0, readaloud_1.ttsSentenceDetectionEnable)(win.READIUM2.ttsSentenceDetectionEnabled);
(0, readaloud_1.ttsSkippabilityEnable)(win.READIUM2.ttsSkippabilityEnabled);
(0, readaloud_1.ttsOverlayEnable)(win.READIUM2.ttsOverlayEnabled);
}
(0, readaloud_1.checkTtsState)(wv);
});
wv.addEventListener("ipc-message", function (event) {
var _a, _b;
var webview = event.currentTarget;
if (webview !== wv) {
debug("Wrong navigator webview?!");
return;
}
if (event.channel === events_1.R2_EVENT_MEDIA_OVERLAY_INTERRUPT) {
(0, media_overlays_1.mediaOverlaysInterrupt)();
}
else if (event.channel === events_1.R2_EVENT_KEYBOARD_FOCUS_REQUEST) {
debug("KEYBOARD FOCUS REQUEST (2) ", webview.id, (_a = win.document.activeElement) === null || _a === void 0 ? void 0 : _a.id);
if (win.document.activeElement && win.document.activeElement.blur) {
win.document.activeElement.blur();
}
var iframe = (_b = webview.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector("iframe");
if (iframe) {
iframe.focus();
}
else {
webview.focus();
}
}
else if (event.channel === events_1.R2_EVENT_SHOW) {
webview.style.opacity = "1";
}
else if (event.channel === events_1.R2_EVENT_FXL_CONFIGURE) {
var payload = event.args[0];
debug("R2_EVENT_FXL_CONFIGURE ... setWebViewStyle");
if (payload.fxl) {
(0, location_1.setWebViewStyle)(webview, styles_1.WebViewSlotEnum.center, payload.fxl);
}
else {
(0, location_1.setWebViewStyle)(webview, styles_1.WebViewSlotEnum.center, null);
}
_resizeSkip--;
}
else if (event.channel === events_1.R2_EVENT_WEBVIEW_KEYDOWN) {
var payload = event.args[0];
if (_keyDownEventHandler) {
_keyDownEventHandler(payload, payload.elementName, payload.elementAttributes);
}
}
else if (event.channel === events_1.R2_EVENT_WEBVIEW_KEYUP) {
var payload = event.args[0];
if (_keyUpEventHandler) {
_keyUpEventHandler(payload, payload.elementName, payload.elementAttributes);
}
}
else if (event.channel === events_1.R2_EVENT_CAPTIONS) {
var payload = event.args[0];
var captionElement = win.document.getElementById(ELEMENT_ID_CAPTIONS);
var rssStyleElement = win.document.getElementById(ELEMENT_ID_READIUM_CSS_STYLE);
var rootElement = win.document.getElementById(ELEMENT_ID_SLIDING_VIEWPORT);
if (payload.text && rootElement) {
if (!rssStyleElement) {
var urlStr = win.READIUM2.publicationURL.startsWith(sessions_1.READIUM2_ELECTRON_HTTP_PROTOCOL) ?
(0, sessions_1.convertCustomSchemeToHttpUrl)(win.READIUM2.publicationURL) :
win.READIUM2.publicationURL;
var rcssUrl = new URL(urlStr);
rcssUrl.pathname = "".concat(readium_css_settings_1.READIUM_CSS_URL_PATH, "/");
rssStyleElement = win.document.createElement("style");
rssStyleElement.setAttribute("id", ELEMENT_ID_READIUM_CSS_STYLE);
var styleTxtNode = win.document.createTextNode(readiumCssStyle.replace(/{RCSS_BASE_URL}/g, rcssUrl.toString()));
rssStyleElement.appendChild(styleTxtNode);
win.document.head.appendChild(rssStyleElement);
}
if (!captionElement) {
captionElement = win.document.createElement("div");
captionElement.setAttribute("id", ELEMENT_ID_CAPTIONS);
var para = win.document.createElement("p");
captionElement.appendChild(para);
rootElement.appendChild(captionElement);
}
captionElement.setAttribute("style", captionsOverlayCssStyles +
(payload.containerStyle ? " ".concat(payload.containerStyle) : " "));
var p = captionElement.firstElementChild;
if (p) {
p.setAttribute("style", captionsOverlayParaCssStyles +
(payload.textStyle ? " ".concat(payload.textStyle) : " "));
p.textContent = payload.text;
}
}
else {
if (captionElement && captionElement.parentNode) {
captionElement.parentNode.removeChild(captionElement);
}
}
}
else if (event.channel === events_1.R2_EVENT_CLIPBOARD_COPY) {
var clipboardInterceptor = win.READIUM2.clipboardInterceptor;
if (clipboardInterceptor) {
var payload = event.args[0];
clipboardInterceptor(payload);
}
}
else if (event.channel === events_1.R2_EVENT_PAGE_TURN_RES &&
event.args[0].go === "" &&
event.args[0].direction === "") {
(0, readaloud_1.checkTtsState)(wv);
}
else if (!(0, highlight_1.highlightsHandleIpcMessage)(event.channel, event.args, webview) &&
!(0, readaloud_1.ttsHandleIpcMessage)(event.channel, event.args, webview) &&
!(0, location_1.locationHandleIpcMessage)(event.channel, event.args, webview) &&
!(0, media_overlays_2.mediaOverlaysHandleIpcMessage)(event.channel, event.args, webview) &&
!(0, soundtrack_1.soundtrackHandleIpcMessage)(event.channel, event.args, webview)) {
debug("webview ipc-message");
debug(event.channel);
}
});
return wv;
}
function createWebView(second) {
var preloadScriptPath = win.READIUM2.preloadScriptPath;
var domSlidingViewport = win.READIUM2.domSlidingViewport;
if (second) {
if (_webview2) {
destroyWebView(true);
}
_webview2 = createWebViewInternal(preloadScriptPath);
_webview2.READIUM2 = {
id: 2,
link: undefined,
readiumCss: undefined,
};
_webview2.setAttribute("id", "r2_webview2");
domSlidingViewport.appendChild(_webview2);
}
else {
if (_webview1) {
destroyWebView(false);
}
_webview1 = createWebViewInternal(preloadScriptPath);
_webview1.READIUM2 = {
id: 1,
link: undefined,
readiumCss: undefined,
};
_webview1.setAttribute("id", "r2_webview1");
domSlidingViewport.appendChild(_webview1);
}
}
function destroyWebView(second) {
var domSlidingViewport = win.READIUM2.domSlidingViewport;
if (second) {
if (_webview2) {
domSlidingViewport.removeChild(_webview2);
_webview2.READIUM2 = undefined;
_webview2 = undefined;
}
}
else {
if (_webview1) {
domSlidingViewport.removeChild(_webview1);
_webview1.READIUM2 = undefined;
_webview1 = undefined;
}
}
}
function installNavigatorDOM(publication, publicationURL, rootHtmlElementID, preloadScriptPath, location, enableScreenReaderAccessibilityWebViewHardRefresh, clipboardInterceptor, sessionInfo, rcss) {
var _this = this;
var domRootElement = document.getElementById(rootHtmlElementID);
if (!domRootElement) {
debug("!rootHtmlElementID ???");
return;
}
var domSlidingViewport = document.createElement("div");
domSlidingViewport.setAttribute("id", ELEMENT_ID_SLIDING_VIEWPORT);
domSlidingViewport.setAttribute("style", "display: block; position: relative; width: 100%; height: 100%; " +
"margin: 0; padding: 0; box-sizing: border-box; background: white; overflow: hidden;");
win.READIUM2 = {
DEBUG_VISUALS: false,
clipboardInterceptor: clipboardInterceptor,
createFirstWebView: createWebView,
createSecondWebView: function () {
createWebView(true);
},
destroyFirstWebView: destroyWebView,
destroySecondWebView: function () {
destroyWebView(true);
},
domRootElement: domRootElement,
domSlidingViewport: domSlidingViewport,
enableScreenReaderAccessibilityWebViewHardRefresh: enableScreenReaderAccessibilityWebViewHardRefresh ? false : false,
fixedLayoutZoomPercent: 0,
getActiveWebViews: function () {
var arr = [];
if (_webview1) {
arr.push(_webview1);
}
if (_webview2) {
arr.push(_webview2);
}
return arr;
},
getFirstOrSecondWebView: function () {
return _webview1 ? _webview1 : _webview2;
},
getFirstWebView: function () {
return _webview1;
},
getSecondWebView: function (create) {
if (!_webview2 && create) {
createWebView(true);
}
return _webview2;
},
isScreenReaderMounted: false,
preloadScriptPath: preloadScriptPath,
publication: publication,
publicationURL: publicationURL,
sessionInfo: sessionInfo,
ttsClickEnabled: false,
ttsOverlayEnabled: false,
ttsPlaybackRate: 1,
ttsSkippabilityEnabled: false,
ttsSentenceDetectionEnabled: true,
ttsVoice: null,
};
electron_1.ipcRenderer.send("accessibility-support-changed");
if (IS_DEV) {
debug("||||||++||||| installNavigatorDOM: ", JSON.stringify(location));
var debugVisualz = (win.localStorage &&
win.localStorage.getItem(url_params_1.URL_PARAM_DEBUG_VISUALS) === "true") ? true : false;
debug("debugVisuals GET: ", debugVisualz);
win.READIUM2.DEBUG_VISUALS = debugVisualz;
win.READIUM2.debug = function (debugVisuals) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var loc, activeWebViews, _loop_2, activeWebViews_5, activeWebViews_5_1, activeWebView, e_7_1;
var e_7, _a;
var _this = this;
var _b;
return tslib_1.__generator(this, function (_c) {
switch (_c.label) {
case 0:
debug("debugVisuals SET: ", debugVisuals);
win.READIUM2.DEBUG_VISUALS = debugVisuals;
if (win.localStorage) {
win.localStorage.setItem(url_params_1.URL_PARAM_DEBUG_VISUALS, debugVisuals ? "true" : "false");
}
loc = (0, location_1.getCurrentReadingLocation)();
activeWebViews = win.READIUM2.getActiveWebViews();
_loop_2 = function (activeWebView) {
var payload;
return tslib_1.__generator(this, function (_d) {
switch (_d.label) {
case 0:
payload = { debugVisuals: debugVisuals };
setTimeout(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var _a;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
if (!((_a = activeWebView.READIUM2) === null || _a === void 0 ? void 0 : _a.DOMisReady)) return [3, 2];
return [4, activeWebView.send(events_1.R2_EVENT_DEBUG_VISUALS, payload)];
case 1:
_b.sent();
_b.label = 2;
case 2: return [2];
}
});
}); }, 0);
if (!(loc && loc.locator.href === ((_b = activeWebView.READIUM2.link) === null || _b === void 0 ? void 0 : _b.Href))) return [3, 2];
return [4, new Promise(function (res, _rej) {
setTimeout(function () {
debug("READIUM2.debug -> handleLinkLocator");
(0, location_1.handleLinkLocator)(loc.locator, activeWebView.READIUM2.readiumCss);
res();
}, 100);
})];
case 1:
_d.sent();
_d.label = 2;
case 2: return [2];
}
});
};
_c.label = 1;
case 1:
_c.trys.push([1, 6, 7, 8]);
activeWebViews_5 = tslib_1.__values(activeWebViews), activeWebViews_5_1 = activeWebViews_5.next();
_c.label = 2;
case 2:
if (!!activeWebViews_5_1.done) return [3, 5];
activeWebView = activeWebViews_5_1.value;
return [5, _loop_2(activeWebView)];
case 3:
_c.sent();
_c.label = 4;
case 4:
activeWebViews_5_1 = activeWebViews_5.next();
return [3, 2];
case 5: return [3, 8];
case 6:
e_7_1 = _c.sent();
e_7 = { error: e_7_1 };
return [3, 8];
case 7:
try {
if (activeWebViews_5_1 && !activeWebViews_5_1.done && (_a = activeWebViews_5.return)) _a.call(activeWebViews_5);
}
finally { if (e_7) throw e_7.error; }
return [7];
case 8: return [2];
}
});
}); };
win.READIUM2.debugItems =
function (href, cssSelector, cssClass, cssStyles) {
var e_8, _a;
var _b;
if (cssStyles) {
debug("debugVisuals ITEMS: ", "".concat(cssSelector, " --- ").concat(cssClass, " --- ").concat(cssStyles));
}
var activeWebViews = win.READIUM2.getActiveWebViews();
var _loop_3 = function (activeWebView) {
if (((_b = activeWebView.READIUM2.link) === null || _b === void 0 ? void 0 : _b.Href) !== href) {
return "continue";
}
var d = win.READIUM2.DEBUG_VISUALS;
var payload = { debugVisuals: d, cssSelector: cssSelector, cssClass: cssClass, cssStyles: cssStyles };
setTimeout(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var _a;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
if (!((_a = activeWebView.READIUM2) === null || _a === void 0 ? void 0 : _a.DOMisReady)) return [3, 2];
return [4, activeWebView.send(events_1.R2_EVENT_DEBUG_VISUALS, payload)];
case 1:
_b.sent();
_b.label = 2;
case 2: return [2];
}
});
}); }, 0);
};
try {
for (var activeWebViews_6 = tslib_1.__values(activeWebViews), activeWebViews_6_1 = activeWebViews_6.next(); !activeWebViews_6_1.done; activeWebViews_6_1 = activeWebViews_6.next()) {
var activeWebView = activeWebViews_6_1.value;
_loop_3(activeWebView);
}
}
catch (e_8_1) { e_8 = { error: e_8_1 }; }
finally {
try {
if (activeWebViews_6_1 && !activeWebViews_6_1.done && (_a = activeWebViews_6.return)) _a.call(activeWebViews_6);
}
finally { if (e_8) throw e_8.error; }
}
};
}
domRootElement.appendChild(domSlidingViewport);
createWebView();
setTimeout(function () {
debug("installNavigatorDOM -> handleLinkLocator");
(0, location_1.handleLinkLocator)(location, rcss);
}, 100);
}
exports.installNavigatorDOM = installNavigatorDOM;
var _keyDownEventHandler;
function setKeyDownEventHandler(func) {
_keyDownEventHandler = func;
}
exports.setKeyDownEventHandler = setKeyDownEventHandler;
var _keyUpEventHandler;
function setKeyUpEventHandler(func) {
_keyUpEventHandler = func;
}
exports.setKeyUpEventHandler = setKeyUpEventHandler;
//# sourceMappingURL=dom.js.map