@codedoc/core
Version:
Create beautiful modern documentation websites.
90 lines • 4.15 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.reloadOnChange$ = exports.reloadOnChange = exports.Toast = void 0;
var html_1 = require("@connectv/html");
var rxjs_1 = require("rxjs");
var ajax_1 = require("rxjs/ajax");
var webSocket_1 = require("rxjs/webSocket");
var operators_1 = require("rxjs/operators");
var transport_1 = require("@connectv/sdh/transport");
var ansi_up_1 = __importDefault(require("ansi_up"));
var config_1 = require("./config");
var renderer_1 = require("../transport/renderer");
var loading_1 = require("../components/util/loading");
var overlay_1 = require("../components/util/overlay");
function Toast(_, renderer) {
var holder = html_1.ref();
this.track({
bind: function () {
setTimeout(function () { return holder.$.style.transform = ''; }, 10);
}
});
return renderer.create("div", { _ref: holder, style: "\n position: fixed;\n bottom: 32px; right: 32px;\n z-index: 10000;\n background: rgba(64, 64, 64, .65);\n color: white;\n padding: 24px;\n border-radius: 8px;\n transform: translateY(200px);\n backdrop-filter: blur(12px);\n -webkit-backdrop-filter: blur(12px);\n transition: transform .3s;\n " },
renderer.create(loading_1.Loading, null),
" \u2002Rebuilding documents ...");
}
exports.Toast = Toast;
function reloadOnChange() {
var building = false;
var error = false;
var errorMsg;
var renderer = renderer_1.getRenderer();
var toast;
var overlay;
var ansiUp = new ansi_up_1.default();
var buildingMode = function () {
if (!building) {
building = true;
error = false;
errorMsg = '';
if (toast)
toast.remove();
if (overlay)
overlay.remove();
toast = renderer.render(renderer.create(Toast, null)).on(document.body);
}
};
var showError = function (err) {
console.log(error);
if (!error || errorMsg !== err) {
error = true;
errorMsg = err;
building = false;
if (toast)
toast.remove();
if (overlay)
overlay.remove();
var html = ansiUp.ansi_to_html(errorMsg)
.replace(/(https:\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/igm, '<a href="$1" target="_blank" style="color: #40a8c4 !important">$1</a>');
overlay = renderer.render(renderer.create(overlay_1.Overlay, { sticky: true },
renderer.create("pre", { style: "text-align: left; font-size: 14px; background: rgba(0, 0, 0, .35); padding: 8px; border-radius: 8px;", _innerHTML: html }))).on(document.body);
}
};
rxjs_1.merge(webSocket_1.webSocket({
url: (window.location.protocol === 'https') ? 'wss://' : 'ws://'
+ window.location.host
+ config_1.StatusCheckURL,
closeObserver: { next: function () { return buildingMode(); } }
}).pipe(operators_1.catchError(function () { return rxjs_1.of(); })), rxjs_1.interval(500).pipe(operators_1.switchMap(function () { return ajax_1.ajax({
url: config_1.StatusCheckURL,
responseType: 'json',
timeout: 200,
})
.pipe(operators_1.catchError(function () { return rxjs_1.of(buildingMode()); })); }), operators_1.map(function (result) { return result ? result.response : undefined; }))).subscribe(function (state) {
if (state) {
if (state.status === config_1.StatusBuildingResponse)
buildingMode();
else if (state.status === config_1.StatusErrorResponse)
showError(state.error);
else if (state.status === config_1.StatusReadyResponse && building) {
location.reload();
}
}
});
}
exports.reloadOnChange = reloadOnChange;
exports.reloadOnChange$ = transport_1.funcTransport(reloadOnChange);
//# sourceMappingURL=reload.js.map