UNPKG

@codedoc/core

Version:

Create beautiful modern documentation websites.

90 lines 4.15 kB
"use strict"; 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