UNPKG

@dark-engine/platform-desktop

Version:

Dark renderer to desktop platforms like Windows, Linux, macOS via Nodegui and Qt

45 lines (44 loc) 1.62 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); exports.inject = exports.render = void 0; const core_1 = require('@dark-engine/core'); const native_element_1 = require('../native-element'); const dom_1 = require('../dom'); const raf = setTimeout.bind(this); const caf = clearTimeout.bind(this); const spawn = raf; let isInjected = false; function inject() { core_1.platform.createElement = dom_1.createNativeElement; core_1.platform.toggle = dom_1.toggle; core_1.platform.raf = raf; core_1.platform.caf = caf; core_1.platform.spawn = spawn; core_1.platform.commit = dom_1.commit; core_1.platform.finishCommit = dom_1.finishCommit; core_1.platform.detectIsDynamic = core_1.trueFn; isInjected = true; } exports.inject = inject; function render(element) { !isInjected && inject(); const callback = () => { (0, core_1.setRootId)(0); const $scope = (0, core_1.$$scope)(); const root = $scope.getRoot(); const isUpdate = Boolean(root); const fiber = new core_1.Fiber().mutate({ el: isUpdate ? root.el : new native_element_1.TagNativeElement(core_1.ROOT), inst: new core_1.TagVirtualNode(core_1.ROOT, {}, (0, core_1.flatten)([element || (0, core_1.createReplacer)()])), alt: root, tag: isUpdate ? core_1.UPDATE_EFFECT_TAG : core_1.CREATE_EFFECT_TAG, }); $scope.resetMount(); $scope.setWorkInProgress(fiber); $scope.setUnitOfWork(fiber); }; core_1.scheduler.schedule(callback, { priority: core_1.TaskPriority.NORMAL }); } exports.render = render; globalThis._DARK_ = core_1.Fiber; //# sourceMappingURL=render.js.map