UNPKG

dockview-solid

Version:

Zero dependency layout manager supporting tabs, grids and splitviews

56 lines (55 loc) 2.04 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SolidPart = void 0; var web_1 = require("solid-js/web"); var store_1 = require("solid-js/store"); var solid_js_1 = require("solid-js"); /** * SolidJS replacement for ReactPart: mounts a Solid component into a DOM node and allows imperative prop updates. */ var SolidPart = /** @class */ (function () { function SolidPart(parent, component, parameters) { this.parent = parent; this.component = component; this.parameters = parameters; this.disposed = false; this.createPortal(); } SolidPart.prototype.createPortal = function () { var _this = this; var initialProps = __assign({}, this.parameters); var setStateLocal; // Mount Solid component into parent element this.disposeRoot = (0, web_1.render)(function () { var _a = (0, store_1.createStore)(initialProps), state = _a[0], setState = _a[1]; setStateLocal = setState; return (0, solid_js_1.createComponent)(_this.component, state); }, this.parent); this.setState = function (props) { setStateLocal(function (prev) { return Object.assign({}, prev, props); }); }; }; SolidPart.prototype.update = function (props) { if (this.disposed) { throw new Error('invalid operation: resource is already disposed'); } this.setState(props); }; SolidPart.prototype.dispose = function () { this.disposeRoot(); this.disposed = true; }; return SolidPart; }()); exports.SolidPart = SolidPart;