@dark-engine/platform-server
Version:
Dark renderer for server
32 lines (31 loc) • 1.06 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
exports.hydrateRoot = void 0;
const core_1 = require('@dark-engine/core');
const render_1 = require('../render');
const create_root_1 = require('../create-root');
const utils_1 = require('../utils');
function hydrateRoot(container, element) {
const tag = container;
(0, render_1.render)(element, tag, hydrate);
return {
unmount: () => (0, create_root_1.unmount)(tag),
};
}
exports.hydrateRoot = hydrateRoot;
function hydrate() {
const element = document.querySelector(`script[type="${core_1.STATE_SCRIPT_TYPE}"]`);
if (!element) return;
try {
const resources = parse(element.textContent);
const $scope = (0, core_1.$$scope)();
for (const key of Object.keys(resources)) {
$scope.setResource(Number(key), resources[key]);
}
element.remove();
} catch (error) {
(0, utils_1.illegal)(`Can't hydrate app state from the server!`);
}
}
const parse = x => JSON.parse(window.atob(x.replaceAll('"', '')));
//# sourceMappingURL=hydrate-root.js.map