@opentui/solid 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.bun.js
CHANGED
|
@@ -564,7 +564,7 @@ function _insertNode(parent, node, anchor) {
|
|
|
564
564
|
return;
|
|
565
565
|
}
|
|
566
566
|
const children = getNodeChildren(parent);
|
|
567
|
-
const anchorIndex = children.
|
|
567
|
+
const anchorIndex = children.indexOf(anchor);
|
|
568
568
|
if (anchorIndex === -1) {
|
|
569
569
|
log("[INSERT]", "Could not find anchor", logId(parent), logId(anchor), "[children]", ...children.map((c) => c.id));
|
|
570
570
|
}
|
|
@@ -584,7 +584,7 @@ function _removeNode(parent, node) {
|
|
|
584
584
|
}
|
|
585
585
|
node = slotChild;
|
|
586
586
|
}
|
|
587
|
-
parent.remove(node
|
|
587
|
+
parent.remove(node);
|
|
588
588
|
slotParent?.didRemoveSlotChild(parent, node);
|
|
589
589
|
process.nextTick(() => {
|
|
590
590
|
if (node instanceof BaseRenderable && !node.parent) {
|
|
@@ -831,7 +831,7 @@ function Portal(props) {
|
|
|
831
831
|
insert(renderRoot, content);
|
|
832
832
|
el.add(container);
|
|
833
833
|
props.ref && props.ref(container);
|
|
834
|
-
onCleanup2(() => el.remove(container
|
|
834
|
+
onCleanup2(() => el.remove(container));
|
|
835
835
|
}, undefined, { render: true });
|
|
836
836
|
return marker;
|
|
837
837
|
}
|
|
@@ -877,7 +877,7 @@ class SlotBaseRenderable extends BaseRenderable2 {
|
|
|
877
877
|
getChildren() {
|
|
878
878
|
return [];
|
|
879
879
|
}
|
|
880
|
-
remove(
|
|
880
|
+
remove(child) {}
|
|
881
881
|
insertBefore(obj, anchor) {
|
|
882
882
|
throw new Error("Can't add children on an Slot renderable");
|
|
883
883
|
}
|
|
@@ -1232,7 +1232,7 @@ function measureSnapshotHeight(renderContext, root) {
|
|
|
1232
1232
|
return Math.max(1, Math.trunc(root.getLayoutNode().getComputedLayout().height));
|
|
1233
1233
|
} finally {
|
|
1234
1234
|
if (root.parent === measureRoot) {
|
|
1235
|
-
measureRoot.remove(root
|
|
1235
|
+
measureRoot.remove(root);
|
|
1236
1236
|
}
|
|
1237
1237
|
measureRoot.destroyRecursively();
|
|
1238
1238
|
}
|
|
@@ -1606,4 +1606,4 @@ export {
|
|
|
1606
1606
|
BoldSpanRenderable
|
|
1607
1607
|
};
|
|
1608
1608
|
|
|
1609
|
-
//# debugId=
|
|
1609
|
+
//# debugId=DED9BF605D7B1CA764756E2164756E21
|
package/index.bun.js.map
CHANGED
|
@@ -5,18 +5,18 @@
|
|
|
5
5
|
"import { CliRenderer, createCliRenderer, engine, type CliRendererConfig } from \"@opentui/core\"\nimport { createTestRenderer, type TestRendererOptions } from \"@opentui/core/testing\"\nimport type { JSX } from \"./jsx-runtime.js\"\nimport { RendererContext } from \"./src/elements/index.js\"\nimport { _render as renderInternal, createComponent } from \"./src/reconciler.js\"\n\ntype DisposeFn = () => void\n\nconst mountSolidRoot = (renderer: CliRenderer, node: () => JSX.Element) => {\n let dispose: DisposeFn | undefined\n let disposeRequested = false\n let disposed = false\n let mounting = true\n let destroyRequested = false\n\n const originalDestroy = renderer.destroy.bind(renderer)\n\n const runDispose = () => {\n if (disposed) {\n return\n }\n\n if (!dispose) {\n disposeRequested = true\n return\n }\n\n disposed = true\n dispose()\n }\n\n renderer.once(\"destroy\", runDispose)\n\n renderer.destroy = () => {\n if (mounting) {\n destroyRequested = true\n return\n }\n\n originalDestroy()\n }\n\n try {\n dispose = renderInternal(\n () =>\n createComponent(RendererContext.Provider, {\n get value() {\n return renderer\n },\n get children() {\n return (createComponent as any)(node, {})\n },\n }),\n renderer.root,\n )\n } finally {\n mounting = false\n renderer.destroy = originalDestroy\n }\n\n if (disposeRequested) {\n runDispose()\n }\n\n if (destroyRequested) {\n originalDestroy()\n }\n}\n\nexport const render = async (node: () => JSX.Element, rendererOrConfig: CliRenderer | CliRendererConfig = {}) => {\n const renderer =\n rendererOrConfig instanceof CliRenderer\n ? rendererOrConfig\n : await createCliRenderer({\n ...rendererOrConfig,\n onDestroy: () => {\n rendererOrConfig.onDestroy?.()\n },\n })\n\n engine.attach(renderer)\n mountSolidRoot(renderer, node)\n}\n\nexport const testRender = async (node: () => JSX.Element, renderConfig: TestRendererOptions = {}) => {\n const testSetup = await createTestRenderer({\n ...renderConfig,\n onDestroy: () => {\n renderConfig.onDestroy?.()\n },\n })\n\n engine.attach(testSetup.renderer)\n mountSolidRoot(testSetup.renderer, node)\n\n return testSetup\n}\n\nexport * from \"./src/reconciler.js\"\nexport * from \"./src/elements/index.js\"\nexport * from \"./src/scrollback.js\"\nexport * from \"./src/time-to-first-draw.js\"\nexport * from \"./src/plugins/slot.js\"\nexport * from \"./src/types/elements.js\"\nexport { type JSX }\n",
|
|
6
6
|
"import {\n ASCIIFontRenderable,\n BoxRenderable,\n CodeRenderable,\n DiffRenderable,\n InputRenderable,\n LineNumberRenderable,\n MarkdownRenderable,\n ScrollBoxRenderable,\n SelectRenderable,\n TabSelectRenderable,\n TextareaRenderable,\n TextAttributes,\n TextNodeRenderable,\n TextRenderable,\n type RenderContext,\n type TextNodeOptions,\n} from \"@opentui/core\"\nimport type { RenderableConstructor } from \"../types/elements.js\"\n\nclass SpanRenderable extends TextNodeRenderable {\n constructor(\n private readonly _ctx: RenderContext | null,\n options: TextNodeOptions,\n ) {\n super(options)\n }\n}\n\nexport const textNodeKeys = [\"span\", \"b\", \"strong\", \"i\", \"em\", \"u\", \"a\"] as const\nexport type TextNodeKey = (typeof textNodeKeys)[number]\n\nclass TextModifierRenderable extends SpanRenderable {\n constructor(options: any, modifier?: TextNodeKey) {\n super(null, options)\n\n // Set appropriate attributes based on modifier type\n if (modifier === \"b\" || modifier === \"strong\") {\n this.attributes = (this.attributes || 0) | TextAttributes.BOLD\n } else if (modifier === \"i\" || modifier === \"em\") {\n this.attributes = (this.attributes || 0) | TextAttributes.ITALIC\n } else if (modifier === \"u\") {\n this.attributes = (this.attributes || 0) | TextAttributes.UNDERLINE\n }\n }\n}\n\nexport class BoldSpanRenderable extends TextModifierRenderable {\n constructor(options: any) {\n super(options, \"b\")\n }\n}\n\nexport class ItalicSpanRenderable extends TextModifierRenderable {\n constructor(options: any) {\n super(options, \"i\")\n }\n}\n\nexport class UnderlineSpanRenderable extends TextModifierRenderable {\n constructor(options: any) {\n super(options, \"u\")\n }\n}\n\nexport class LineBreakRenderable extends SpanRenderable {\n constructor(_ctx: RenderContext | null, options: TextNodeOptions) {\n super(null, options)\n this.add()\n }\n\n public override add(): number {\n return super.add(\"\\n\")\n }\n}\n\nexport interface LinkOptions extends TextNodeOptions {\n href: string\n}\n\nexport class LinkRenderable extends SpanRenderable {\n constructor(_ctx: RenderContext | null, options: LinkOptions) {\n const linkOptions: TextNodeOptions = {\n ...options,\n link: { url: options.href },\n }\n super(null, linkOptions)\n }\n}\n\nexport const baseComponents = {\n box: BoxRenderable,\n text: TextRenderable,\n input: InputRenderable,\n select: SelectRenderable,\n textarea: TextareaRenderable,\n ascii_font: ASCIIFontRenderable,\n tab_select: TabSelectRenderable,\n scrollbox: ScrollBoxRenderable,\n code: CodeRenderable,\n diff: DiffRenderable,\n line_number: LineNumberRenderable,\n markdown: MarkdownRenderable,\n\n span: SpanRenderable,\n strong: BoldSpanRenderable,\n b: BoldSpanRenderable,\n em: ItalicSpanRenderable,\n i: ItalicSpanRenderable,\n u: UnderlineSpanRenderable,\n br: LineBreakRenderable,\n a: LinkRenderable,\n}\n\ntype ComponentCatalogue = Record<string, RenderableConstructor>\n\nexport const componentCatalogue: ComponentCatalogue = { ...baseComponents }\n\n/**\n * Extend the component catalogue with new renderable components\n *\n * @example\n * ```tsx\n * // Extend with an object of components\n * extend({\n * consoleButton: ButtonRenderable,\n * customBox: CustomBoxRenderable\n * })\n * ```\n */\nexport function extend<T extends ComponentCatalogue>(objects: T): void {\n Object.assign(componentCatalogue, objects)\n}\n\nexport function getComponentCatalogue(): ComponentCatalogue {\n return componentCatalogue\n}\n\nexport type { ExtendedComponentProps, ExtendedIntrinsicElements, RenderableConstructor } from \"../types/elements.js\"\n",
|
|
7
7
|
"import {\n engine,\n PasteEvent,\n Selection,\n Timeline,\n type CliRenderer,\n type KeyEvent,\n type TimelineOptions,\n} from \"@opentui/core\"\nimport { createContext, createSignal, onCleanup, onMount, useContext } from \"solid-js\"\n\nexport const RendererContext = createContext<CliRenderer>()\n\nexport const useRenderer = () => {\n const renderer = useContext(RendererContext)\n\n if (!renderer) {\n throw new Error(\"No renderer found\")\n }\n\n return renderer\n}\n\nexport const onResize = (callback: (width: number, height: number) => void) => {\n const renderer = useRenderer()\n\n onMount(() => {\n renderer.on(\"resize\", callback)\n })\n\n onCleanup(() => {\n renderer.off(\"resize\", callback)\n })\n}\n\nexport const useTerminalDimensions = () => {\n const renderer = useRenderer()\n const [terminalDimensions, setTerminalDimensions] = createSignal<{\n width: number\n height: number\n }>({ width: renderer.width, height: renderer.height })\n\n const callback = (width: number, height: number) => {\n setTerminalDimensions({ width, height })\n }\n\n onResize(callback)\n\n return terminalDimensions\n}\n\nexport interface UseKeyboardOptions {\n /** Include release events - callback receives events with eventType: \"release\" */\n release?: boolean\n}\n\n/**\n * Subscribe to keyboard events.\n *\n * By default, only receives press events (including key repeats with `repeated: true`).\n * Use `options.release` to also receive release events.\n *\n * @example\n * // Basic press handling (includes repeats)\n * useKeyboard((e) => console.log(e.name, e.repeated ? \"(repeat)\" : \"\"))\n *\n * // With release events\n * useKeyboard((e) => {\n * if (e.eventType === \"release\") keys.delete(e.name)\n * else keys.add(e.name)\n * }, { release: true })\n */\nexport const useKeyboard = (callback: (key: KeyEvent) => void, options?: UseKeyboardOptions) => {\n const renderer = useRenderer()\n const keyHandler = renderer.keyInput\n onMount(() => {\n keyHandler.on(\"keypress\", callback)\n if (options?.release) {\n keyHandler.on(\"keyrelease\", callback)\n }\n })\n\n onCleanup(() => {\n keyHandler.off(\"keypress\", callback)\n if (options?.release) {\n keyHandler.off(\"keyrelease\", callback)\n }\n })\n}\n\nexport const usePaste = (callback: (event: PasteEvent) => void) => {\n const renderer = useRenderer()\n const keyHandler = renderer.keyInput\n onMount(() => {\n keyHandler.on(\"paste\", callback)\n })\n\n onCleanup(() => {\n keyHandler.off(\"paste\", callback)\n })\n}\n\n/**\n * @deprecated renamed to useKeyboard\n */\nexport const useKeyHandler = useKeyboard\n\nexport const onFocus = (callback: () => void) => {\n const renderer = useRenderer()\n\n onMount(() => {\n renderer.on(\"focus\", callback)\n })\n\n onCleanup(() => {\n renderer.off(\"focus\", callback)\n })\n}\n\nexport const onBlur = (callback: () => void) => {\n const renderer = useRenderer()\n\n onMount(() => {\n renderer.on(\"blur\", callback)\n })\n\n onCleanup(() => {\n renderer.off(\"blur\", callback)\n })\n}\n\nexport const useSelectionHandler = (callback: (selection: Selection) => void) => {\n const renderer = useRenderer()\n\n onMount(() => {\n renderer.on(\"selection\", callback)\n })\n\n onCleanup(() => {\n renderer.off(\"selection\", callback)\n })\n}\n\nexport const useTimeline = (options: TimelineOptions = {}): Timeline => {\n const timeline = new Timeline(options)\n\n onMount(() => {\n if (options.autoplay !== false) {\n timeline.play()\n }\n engine.register(timeline)\n })\n\n onCleanup(() => {\n timeline.pause()\n engine.unregister(timeline)\n })\n\n return timeline\n}\n",
|
|
8
|
-
"import { createEffect, createMemo, getOwner, onCleanup, runWithOwner, splitProps, untrack } from \"solid-js\"\nimport { createSlotNode, createElement, insert, spread, type DomNode } from \"../reconciler.js\"\nimport type { JSX } from \"../../jsx-runtime.js\"\nimport type { ValidComponent, ComponentProps } from \"solid-js\"\nimport { useRenderer } from \"./hooks.js\"\n\n/**\n * Renders components somewhere else in the DOM\n *\n * Useful for inserting modals and tooltips outside of an cropping layout. If no mount point is given, the portal is inserted on the root renderable; it is wrapped in a `<box>`\n *\n * @description https://docs.solidjs.com/reference/components/portal\n */\nexport function Portal(props: { mount?: DomNode; ref?: (el: {}) => void; children: JSX.Element }): JSX.Element {\n const renderer = useRenderer()\n\n const marker = createSlotNode(),\n mount = () => props.mount || renderer.root,\n owner = getOwner()\n let content: undefined | (() => JSX.Element)\n\n createEffect(\n () => {\n // basically we backdoor into a sort of renderEffect here\n content || (content = runWithOwner(owner, () => createMemo(() => props.children)))\n const el = mount()\n const container = createElement(\"box\"),\n renderRoot = container\n\n Object.defineProperty(container, \"_$host\", {\n get() {\n return marker.parent\n },\n configurable: true,\n })\n insert(renderRoot, content)\n el.add(container)\n props.ref && (props as any).ref(container)\n onCleanup(() => el.remove(container
|
|
9
|
-
"/* @refresh skip */\nimport {\n BaseRenderable,\n createTextAttributes,\n InputRenderable,\n InputRenderableEvents,\n isTextNodeRenderable,\n parseColor,\n Renderable,\n RootTextNodeRenderable,\n ScrollBoxRenderable,\n SelectRenderable,\n SelectRenderableEvents,\n TabSelectRenderable,\n TabSelectRenderableEvents,\n TextNodeRenderable,\n TextRenderable,\n type TextNodeOptions,\n} from \"@opentui/core\"\nimport { decodeHTML } from \"entities\"\nimport { useContext } from \"solid-js\"\nimport { createRenderer } from \"./renderer/index.js\"\nimport { getComponentCatalogue, RendererContext, SlotRenderable } from \"./elements/index.js\"\nimport { getNextId } from \"./utils/id-counter.js\"\nimport { log } from \"./utils/log.js\"\n\nclass TextNode extends TextNodeRenderable {\n public static override fromString(text: string, options: Partial<TextNodeOptions> = {}): TextNode {\n const node = new TextNode(options)\n node.add(text)\n return node\n }\n}\n\nexport type DomNode = BaseRenderable\n\n/**\n * Gets the id of a node, or content if it's a text chunk.\n * Intended for use in logging.\n * @param node The node to get the id of.\n * @returns Log-friendly id of the node.\n */\nconst logId = (node?: DomNode): string | undefined => {\n if (!node) return undefined\n return node.id\n}\n\nconst getNodeChildren = (node: DomNode) => {\n let children\n if (node instanceof TextRenderable) {\n children = node.getTextChildren()\n } else {\n children = node.getChildren()\n }\n return children\n}\n\nfunction _insertNode(parent: DomNode, node: DomNode, anchor?: DomNode): void {\n log(\n \"Inserting node:\",\n logId(node),\n \"into parent:\",\n logId(parent),\n \"with anchor:\",\n logId(anchor),\n node instanceof TextNode,\n )\n\n if (node instanceof SlotRenderable) {\n node.parent = parent\n node = node.getSlotChild(parent)\n }\n\n if (anchor && anchor instanceof SlotRenderable) {\n anchor = anchor.getSlotChild(parent)\n }\n\n if (isTextNodeRenderable(node)) {\n if (!(parent instanceof TextRenderable) && !isTextNodeRenderable(parent)) {\n throw new Error(\n `Orphan text error: \"${node\n .toChunks()\n .map((c) => c.text)\n .join(\"\")}\" must have a <text> as a parent: ${parent.id} above ${node.id}`,\n )\n }\n }\n\n // Renderable nodes\n if (!(parent instanceof BaseRenderable)) {\n console.error(\"[INSERT]\", \"Tried to mount a non base renderable\")\n // Can't be a noop, have to panic\n throw new Error(\"Tried to mount a non base renderable\")\n }\n\n if (!anchor) {\n parent.add(node)\n return\n }\n\n const children = getNodeChildren(parent)\n\n const anchorIndex = children.findIndex((el) => el.id === anchor.id)\n if (anchorIndex === -1) {\n log(\"[INSERT]\", \"Could not find anchor\", logId(parent), logId(anchor), \"[children]\", ...children.map((c) => c.id))\n }\n\n parent.add(node, anchorIndex)\n}\n\nfunction _removeNode(parent: DomNode, node: DomNode): void {\n log(\"Removing node:\", logId(node), \"from parent:\", logId(parent))\n\n let slotParent: SlotRenderable | undefined\n\n if (node instanceof SlotRenderable) {\n slotParent = node\n const slotChild = slotParent.getSlotChildForRemoval(parent)\n if (!slotChild) {\n if (slotParent.parent === parent) {\n slotParent.parent = null\n }\n return\n }\n\n node = slotChild\n }\n\n parent.remove(node.id)\n\n slotParent?.didRemoveSlotChild(parent, node)\n\n process.nextTick(() => {\n if (node instanceof BaseRenderable && !node.parent) {\n node.destroyRecursively()\n return\n }\n })\n}\n\nfunction _createTextNode(value: string | number): TextNode {\n log(\"Creating text node:\", value)\n\n const id = getNextId(\"text-node\")\n\n if (typeof value === \"number\") {\n value = value.toString()\n }\n\n return TextNode.fromString(decodeHTML(value), { id })\n}\n\nexport function createSlotNode(): SlotRenderable {\n const id = getNextId(\"slot-node\")\n log(\"Creating slot node\", id)\n return new SlotRenderable(id)\n}\n\nfunction _getParentNode(childNode: DomNode): DomNode | undefined {\n log(\"Getting parent of node:\", logId(childNode))\n\n let parent = childNode.parent ?? undefined\n if (parent instanceof RootTextNodeRenderable) {\n parent = parent.textParent ?? undefined\n }\n // ScrollBox delegates add/remove to its internal `content` wrapper\n // (scrollbox → wrapper → viewport → content), so children report\n // `content` as their parent. Return the ScrollBox so the identity\n // check in cleanChildren (getParentNode(el) === parent) succeeds.\n const scrollBoxCandidate = parent?.parent?.parent?.parent\n if (scrollBoxCandidate instanceof ScrollBoxRenderable && scrollBoxCandidate.content === parent) {\n parent = scrollBoxCandidate\n }\n return parent\n}\n\nexport const {\n render: _render,\n effect,\n memo,\n createComponent,\n createElement,\n createTextNode,\n insertNode,\n insert,\n spread,\n setProp,\n mergeProps,\n use,\n} = createRenderer<DomNode>({\n createElement(tagName: string): DomNode {\n log(\"Creating element:\", tagName)\n const id = getNextId(tagName)\n const solidRenderer = useContext(RendererContext)\n if (!solidRenderer) {\n throw new Error(\"No renderer found\")\n }\n const elements = getComponentCatalogue()\n\n if (!elements[tagName]) {\n throw new Error(`[Reconciler] Unknown component type: ${tagName}`)\n }\n\n const element = new elements[tagName](solidRenderer, { id })\n log(\"Element created with id:\", id)\n return element\n },\n\n createTextNode: _createTextNode,\n\n createSlotNode,\n\n replaceText(textNode: TextNode, value: string): void {\n log(\"Replacing text:\", value, \"in node:\", logId(textNode))\n\n if (!(textNode instanceof TextNode)) return\n textNode.replace(decodeHTML(value), 0)\n },\n\n setProperty(node: DomNode, name: string, value: any, prev: any): void {\n if (name.startsWith(\"on:\")) {\n const eventName = name.slice(3)\n if (value) {\n node.on(eventName, value)\n }\n if (prev) {\n node.off(eventName, prev)\n }\n\n return\n }\n\n if (isTextNodeRenderable(node)) {\n if (name === \"href\") {\n node.link = { url: value }\n return\n }\n\n if (name === \"style\") {\n node.attributes |= createTextAttributes(value)\n node.fg = value.fg ? parseColor(value.fg) : node.fg\n node.bg = value.bg ? parseColor(value.bg) : node.bg\n return\n }\n\n return\n }\n\n switch (name) {\n case \"id\":\n log(\"Id mapped\", node.id, \"=\", value)\n node[name] = value\n break\n case \"focused\":\n if (!(node instanceof Renderable)) return\n if (value) {\n node.focus()\n } else {\n node.blur()\n }\n break\n case \"onChange\":\n let event: string | undefined = undefined\n if (node instanceof SelectRenderable) {\n event = SelectRenderableEvents.SELECTION_CHANGED\n } else if (node instanceof TabSelectRenderable) {\n event = TabSelectRenderableEvents.SELECTION_CHANGED\n } else if (node instanceof InputRenderable) {\n event = InputRenderableEvents.CHANGE\n }\n if (!event) break\n\n if (value) {\n node.on(event, value)\n }\n if (prev) {\n node.off(event, prev)\n }\n break\n case \"onInput\":\n if (node instanceof InputRenderable) {\n if (value) {\n node.on(InputRenderableEvents.INPUT, value)\n }\n\n if (prev) {\n node.off(InputRenderableEvents.INPUT, prev)\n }\n }\n\n break\n case \"onSubmit\":\n if (node instanceof InputRenderable) {\n if (value) {\n node.on(InputRenderableEvents.ENTER, value)\n }\n\n if (prev) {\n node.off(InputRenderableEvents.ENTER, prev)\n }\n } else {\n // @ts-expect-error todo validate if prop is actually settable\n node[name] = value\n }\n break\n case \"onSelect\":\n if (node instanceof SelectRenderable) {\n if (value) {\n node.on(SelectRenderableEvents.ITEM_SELECTED, value)\n }\n\n if (prev) {\n node.off(SelectRenderableEvents.ITEM_SELECTED, prev)\n }\n } else if (node instanceof TabSelectRenderable) {\n if (value) {\n node.on(TabSelectRenderableEvents.ITEM_SELECTED, value)\n }\n\n if (prev) {\n node.off(TabSelectRenderableEvents.ITEM_SELECTED, prev)\n }\n }\n break\n case \"style\":\n for (const prop in value) {\n const propVal = value[prop]\n if (prev !== undefined && propVal === prev[prop]) continue\n // @ts-expect-error todo validate if prop is actually settable\n node[prop] = propVal\n }\n break\n case \"text\":\n case \"content\": {\n const textValue = typeof value === \"string\" ? value : Array.isArray(value) ? value.join(\"\") : `${value}`\n // @ts-expect-error todo validate if prop is actually settable\n node[name] = decodeHTML(textValue)\n break\n }\n\n default:\n // @ts-expect-error todo validate if prop is actually settable\n node[name] = value\n }\n },\n\n isTextNode(node: DomNode): boolean {\n return node instanceof TextNode\n },\n\n insertNode: _insertNode,\n\n removeNode: _removeNode,\n\n getParentNode: _getParentNode,\n\n getFirstChild(node: DomNode): DomNode | undefined {\n log(\"Getting first child of node:\", logId(node))\n\n const firstChild = getNodeChildren(node)[0]\n\n if (!firstChild) {\n log(\"No first child found for node:\", logId(node))\n return undefined\n }\n\n log(\"First child found:\", logId(firstChild), \"for node:\", logId(node))\n return firstChild\n },\n\n getNextSibling(node: DomNode): DomNode | undefined {\n log(\"Getting next sibling of node:\", logId(node))\n\n const parent = _getParentNode(node)\n if (!parent) {\n log(\"No parent found for node:\", logId(node))\n return undefined\n }\n\n if (node instanceof SlotRenderable) {\n const layoutSlotNode = node.getSlotChildForRemoval(parent)\n if (layoutSlotNode) {\n node = layoutSlotNode\n }\n }\n\n const siblings = getNodeChildren(parent)\n const index = siblings.indexOf(node)\n\n if (index === -1 || index === siblings.length - 1) {\n log(\"No next sibling found for node:\", logId(node))\n return undefined\n }\n\n const nextSibling = siblings[index + 1]\n\n if (!nextSibling) {\n log(\"Next sibling is null for node:\", logId(node))\n return undefined\n }\n\n log(\"Next sibling found:\", logId(nextSibling), \"for node:\", logId(node))\n return nextSibling\n },\n})\n",
|
|
8
|
+
"import { createEffect, createMemo, getOwner, onCleanup, runWithOwner, splitProps, untrack } from \"solid-js\"\nimport { createSlotNode, createElement, insert, spread, type DomNode } from \"../reconciler.js\"\nimport type { JSX } from \"../../jsx-runtime.js\"\nimport type { ValidComponent, ComponentProps } from \"solid-js\"\nimport { useRenderer } from \"./hooks.js\"\n\n/**\n * Renders components somewhere else in the DOM\n *\n * Useful for inserting modals and tooltips outside of an cropping layout. If no mount point is given, the portal is inserted on the root renderable; it is wrapped in a `<box>`\n *\n * @description https://docs.solidjs.com/reference/components/portal\n */\nexport function Portal(props: { mount?: DomNode; ref?: (el: {}) => void; children: JSX.Element }): JSX.Element {\n const renderer = useRenderer()\n\n const marker = createSlotNode(),\n mount = () => props.mount || renderer.root,\n owner = getOwner()\n let content: undefined | (() => JSX.Element)\n\n createEffect(\n () => {\n // basically we backdoor into a sort of renderEffect here\n content || (content = runWithOwner(owner, () => createMemo(() => props.children)))\n const el = mount()\n const container = createElement(\"box\"),\n renderRoot = container\n\n Object.defineProperty(container, \"_$host\", {\n get() {\n return marker.parent\n },\n configurable: true,\n })\n insert(renderRoot, content)\n el.add(container)\n props.ref && (props as any).ref(container)\n onCleanup(() => el.remove(container))\n },\n undefined,\n { render: true },\n )\n // The reconciler consumes this marker as the runtime representation of the portal JSX node.\n return marker as unknown as JSX.Element\n}\n\nexport type DynamicProps<T extends ValidComponent, P = ComponentProps<T>> = {\n [K in keyof P]: P[K]\n} & {\n component: T | undefined\n}\n\n/**\n * Renders an arbitrary component or element with the given props\n *\n * This is a lower level version of the `Dynamic` component, useful for\n * performance optimizations in libraries. Do not use this unless you know\n * what you are doing.\n * ```typescript\n * const element = () => multiline() ? 'textarea' : 'input';\n * createDynamic(element, { value: value() });\n * ```\n * @description https://docs.solidjs.com/reference/components/dynamic\n */\nexport function createDynamic<T extends ValidComponent>(\n component: () => T | undefined,\n props: ComponentProps<T>,\n): JSX.Element {\n const cached = createMemo<Function | string | undefined>(component)\n return createMemo(() => {\n const component = cached()\n switch (typeof component) {\n case \"function\":\n // if (isDev) Object.assign(component, { [$DEVCOMP]: true })\n return untrack(() => component(props))\n\n case \"string\":\n const el = createElement(component)\n spread(el, props)\n return el\n\n default:\n break\n }\n }) as unknown as JSX.Element\n}\n\n/**\n * Renders an arbitrary custom or native component and passes the other props\n * ```typescript\n * <Dynamic component={multiline() ? 'textarea' : 'input'} value={value()} />\n * ```\n * @description https://docs.solidjs.com/reference/components/dynamic\n */\nexport function Dynamic<T extends ValidComponent>(props: DynamicProps<T>): JSX.Element {\n const [, others] = splitProps(props, [\"component\"])\n return createDynamic(() => props.component, others as ComponentProps<T>)\n}\n",
|
|
9
|
+
"/* @refresh skip */\nimport {\n BaseRenderable,\n createTextAttributes,\n InputRenderable,\n InputRenderableEvents,\n isTextNodeRenderable,\n parseColor,\n Renderable,\n RootTextNodeRenderable,\n ScrollBoxRenderable,\n SelectRenderable,\n SelectRenderableEvents,\n TabSelectRenderable,\n TabSelectRenderableEvents,\n TextNodeRenderable,\n TextRenderable,\n type TextNodeOptions,\n} from \"@opentui/core\"\nimport { decodeHTML } from \"entities\"\nimport { useContext } from \"solid-js\"\nimport { createRenderer } from \"./renderer/index.js\"\nimport { getComponentCatalogue, RendererContext, SlotRenderable } from \"./elements/index.js\"\nimport { getNextId } from \"./utils/id-counter.js\"\nimport { log } from \"./utils/log.js\"\n\nclass TextNode extends TextNodeRenderable {\n public static override fromString(text: string, options: Partial<TextNodeOptions> = {}): TextNode {\n const node = new TextNode(options)\n node.add(text)\n return node\n }\n}\n\nexport type DomNode = BaseRenderable\n\n/**\n * Gets the id of a node, or content if it's a text chunk.\n * Intended for use in logging.\n * @param node The node to get the id of.\n * @returns Log-friendly id of the node.\n */\nconst logId = (node?: DomNode): string | undefined => {\n if (!node) return undefined\n return node.id\n}\n\nconst getNodeChildren = (node: DomNode) => {\n let children\n if (node instanceof TextRenderable) {\n children = node.getTextChildren()\n } else {\n children = node.getChildren()\n }\n return children\n}\n\nfunction _insertNode(parent: DomNode, node: DomNode, anchor?: DomNode): void {\n log(\n \"Inserting node:\",\n logId(node),\n \"into parent:\",\n logId(parent),\n \"with anchor:\",\n logId(anchor),\n node instanceof TextNode,\n )\n\n if (node instanceof SlotRenderable) {\n node.parent = parent\n node = node.getSlotChild(parent)\n }\n\n if (anchor && anchor instanceof SlotRenderable) {\n anchor = anchor.getSlotChild(parent)\n }\n\n if (isTextNodeRenderable(node)) {\n if (!(parent instanceof TextRenderable) && !isTextNodeRenderable(parent)) {\n throw new Error(\n `Orphan text error: \"${node\n .toChunks()\n .map((c) => c.text)\n .join(\"\")}\" must have a <text> as a parent: ${parent.id} above ${node.id}`,\n )\n }\n }\n\n // Renderable nodes\n if (!(parent instanceof BaseRenderable)) {\n console.error(\"[INSERT]\", \"Tried to mount a non base renderable\")\n // Can't be a noop, have to panic\n throw new Error(\"Tried to mount a non base renderable\")\n }\n\n if (!anchor) {\n parent.add(node)\n return\n }\n\n const children = getNodeChildren(parent)\n\n const anchorIndex = children.indexOf(anchor)\n if (anchorIndex === -1) {\n log(\"[INSERT]\", \"Could not find anchor\", logId(parent), logId(anchor), \"[children]\", ...children.map((c) => c.id))\n }\n\n parent.add(node, anchorIndex)\n}\n\nfunction _removeNode(parent: DomNode, node: DomNode): void {\n log(\"Removing node:\", logId(node), \"from parent:\", logId(parent))\n\n let slotParent: SlotRenderable | undefined\n\n if (node instanceof SlotRenderable) {\n slotParent = node\n const slotChild = slotParent.getSlotChildForRemoval(parent)\n if (!slotChild) {\n if (slotParent.parent === parent) {\n slotParent.parent = null\n }\n return\n }\n\n node = slotChild\n }\n\n parent.remove(node)\n\n slotParent?.didRemoveSlotChild(parent, node)\n\n process.nextTick(() => {\n if (node instanceof BaseRenderable && !node.parent) {\n node.destroyRecursively()\n return\n }\n })\n}\n\nfunction _createTextNode(value: string | number): TextNode {\n log(\"Creating text node:\", value)\n\n const id = getNextId(\"text-node\")\n\n if (typeof value === \"number\") {\n value = value.toString()\n }\n\n return TextNode.fromString(decodeHTML(value), { id })\n}\n\nexport function createSlotNode(): SlotRenderable {\n const id = getNextId(\"slot-node\")\n log(\"Creating slot node\", id)\n return new SlotRenderable(id)\n}\n\nfunction _getParentNode(childNode: DomNode): DomNode | undefined {\n log(\"Getting parent of node:\", logId(childNode))\n\n let parent = childNode.parent ?? undefined\n if (parent instanceof RootTextNodeRenderable) {\n parent = parent.textParent ?? undefined\n }\n // ScrollBox delegates add/remove to its internal `content` wrapper\n // (scrollbox → wrapper → viewport → content), so children report\n // `content` as their parent. Return the ScrollBox so the identity\n // check in cleanChildren (getParentNode(el) === parent) succeeds.\n const scrollBoxCandidate = parent?.parent?.parent?.parent\n if (scrollBoxCandidate instanceof ScrollBoxRenderable && scrollBoxCandidate.content === parent) {\n parent = scrollBoxCandidate\n }\n return parent\n}\n\nexport const {\n render: _render,\n effect,\n memo,\n createComponent,\n createElement,\n createTextNode,\n insertNode,\n insert,\n spread,\n setProp,\n mergeProps,\n use,\n} = createRenderer<DomNode>({\n createElement(tagName: string): DomNode {\n log(\"Creating element:\", tagName)\n const id = getNextId(tagName)\n const solidRenderer = useContext(RendererContext)\n if (!solidRenderer) {\n throw new Error(\"No renderer found\")\n }\n const elements = getComponentCatalogue()\n\n if (!elements[tagName]) {\n throw new Error(`[Reconciler] Unknown component type: ${tagName}`)\n }\n\n const element = new elements[tagName](solidRenderer, { id })\n log(\"Element created with id:\", id)\n return element\n },\n\n createTextNode: _createTextNode,\n\n createSlotNode,\n\n replaceText(textNode: TextNode, value: string): void {\n log(\"Replacing text:\", value, \"in node:\", logId(textNode))\n\n if (!(textNode instanceof TextNode)) return\n textNode.replace(decodeHTML(value), 0)\n },\n\n setProperty(node: DomNode, name: string, value: any, prev: any): void {\n if (name.startsWith(\"on:\")) {\n const eventName = name.slice(3)\n if (value) {\n node.on(eventName, value)\n }\n if (prev) {\n node.off(eventName, prev)\n }\n\n return\n }\n\n if (isTextNodeRenderable(node)) {\n if (name === \"href\") {\n node.link = { url: value }\n return\n }\n\n if (name === \"style\") {\n node.attributes |= createTextAttributes(value)\n node.fg = value.fg ? parseColor(value.fg) : node.fg\n node.bg = value.bg ? parseColor(value.bg) : node.bg\n return\n }\n\n return\n }\n\n switch (name) {\n case \"id\":\n log(\"Id mapped\", node.id, \"=\", value)\n node[name] = value\n break\n case \"focused\":\n if (!(node instanceof Renderable)) return\n if (value) {\n node.focus()\n } else {\n node.blur()\n }\n break\n case \"onChange\":\n let event: string | undefined = undefined\n if (node instanceof SelectRenderable) {\n event = SelectRenderableEvents.SELECTION_CHANGED\n } else if (node instanceof TabSelectRenderable) {\n event = TabSelectRenderableEvents.SELECTION_CHANGED\n } else if (node instanceof InputRenderable) {\n event = InputRenderableEvents.CHANGE\n }\n if (!event) break\n\n if (value) {\n node.on(event, value)\n }\n if (prev) {\n node.off(event, prev)\n }\n break\n case \"onInput\":\n if (node instanceof InputRenderable) {\n if (value) {\n node.on(InputRenderableEvents.INPUT, value)\n }\n\n if (prev) {\n node.off(InputRenderableEvents.INPUT, prev)\n }\n }\n\n break\n case \"onSubmit\":\n if (node instanceof InputRenderable) {\n if (value) {\n node.on(InputRenderableEvents.ENTER, value)\n }\n\n if (prev) {\n node.off(InputRenderableEvents.ENTER, prev)\n }\n } else {\n // @ts-expect-error todo validate if prop is actually settable\n node[name] = value\n }\n break\n case \"onSelect\":\n if (node instanceof SelectRenderable) {\n if (value) {\n node.on(SelectRenderableEvents.ITEM_SELECTED, value)\n }\n\n if (prev) {\n node.off(SelectRenderableEvents.ITEM_SELECTED, prev)\n }\n } else if (node instanceof TabSelectRenderable) {\n if (value) {\n node.on(TabSelectRenderableEvents.ITEM_SELECTED, value)\n }\n\n if (prev) {\n node.off(TabSelectRenderableEvents.ITEM_SELECTED, prev)\n }\n }\n break\n case \"style\":\n for (const prop in value) {\n const propVal = value[prop]\n if (prev !== undefined && propVal === prev[prop]) continue\n // @ts-expect-error todo validate if prop is actually settable\n node[prop] = propVal\n }\n break\n case \"text\":\n case \"content\": {\n const textValue = typeof value === \"string\" ? value : Array.isArray(value) ? value.join(\"\") : `${value}`\n // @ts-expect-error todo validate if prop is actually settable\n node[name] = decodeHTML(textValue)\n break\n }\n\n default:\n // @ts-expect-error todo validate if prop is actually settable\n node[name] = value\n }\n },\n\n isTextNode(node: DomNode): boolean {\n return node instanceof TextNode\n },\n\n insertNode: _insertNode,\n\n removeNode: _removeNode,\n\n getParentNode: _getParentNode,\n\n getFirstChild(node: DomNode): DomNode | undefined {\n log(\"Getting first child of node:\", logId(node))\n\n const firstChild = getNodeChildren(node)[0]\n\n if (!firstChild) {\n log(\"No first child found for node:\", logId(node))\n return undefined\n }\n\n log(\"First child found:\", logId(firstChild), \"for node:\", logId(node))\n return firstChild\n },\n\n getNextSibling(node: DomNode): DomNode | undefined {\n log(\"Getting next sibling of node:\", logId(node))\n\n const parent = _getParentNode(node)\n if (!parent) {\n log(\"No parent found for node:\", logId(node))\n return undefined\n }\n\n if (node instanceof SlotRenderable) {\n const layoutSlotNode = node.getSlotChildForRemoval(parent)\n if (layoutSlotNode) {\n node = layoutSlotNode\n }\n }\n\n const siblings = getNodeChildren(parent)\n const index = siblings.indexOf(node)\n\n if (index === -1 || index === siblings.length - 1) {\n log(\"No next sibling found for node:\", logId(node))\n return undefined\n }\n\n const nextSibling = siblings[index + 1]\n\n if (!nextSibling) {\n log(\"Next sibling is null for node:\", logId(node))\n return undefined\n }\n\n log(\"Next sibling found:\", logId(nextSibling), \"for node:\", logId(node))\n return nextSibling\n },\n})\n",
|
|
10
10
|
"import { createRoot, createRenderEffect, createMemo, createComponent, untrack, mergeProps } from \"solid-js\"\n\nconst memo = (fn) => createMemo(() => fn())\n\nexport function createRenderer({\n createElement,\n createTextNode,\n createSlotNode,\n isTextNode,\n replaceText,\n insertNode,\n removeNode,\n setProperty,\n getParentNode,\n getFirstChild,\n getNextSibling,\n}) {\n function insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial) initial = []\n if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker)\n createRenderEffect((current) => insertExpression(parent, accessor(), current, marker), initial)\n }\n function insertExpression(parent, value, current, marker, unwrapArray) {\n while (typeof current === \"function\") current = current()\n if (value === current) return current\n const t = typeof value,\n multi = marker !== undefined\n if (t === \"string\" || t === \"number\") {\n if (t === \"number\") value = value.toString()\n if (multi) {\n let node = current[0]\n if (node && isTextNode(node)) {\n replaceText(node, value)\n } else node = createTextNode(value)\n current = cleanChildren(parent, current, marker, node)\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n replaceText(getFirstChild(parent), (current = value))\n } else {\n cleanChildren(parent, current, marker, createTextNode(value))\n current = value\n }\n }\n } else if (value == null || t === \"boolean\") {\n current = cleanChildren(parent, current, marker)\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value()\n while (typeof v === \"function\") v = v()\n current = insertExpression(parent, v, current, marker)\n })\n return () => current\n } else if (Array.isArray(value)) {\n const array = []\n if (normalizeIncomingArray(array, value, unwrapArray)) {\n createRenderEffect(() => (current = insertExpression(parent, array, current, marker, true)))\n return () => current\n }\n if (array.length === 0) {\n const replacement = cleanChildren(parent, current, marker)\n if (multi) return (current = replacement)\n } else {\n if (Array.isArray(current)) {\n if (current.length === 0) {\n appendNodes(parent, array, marker)\n } else reconcileArrays(parent, current, array)\n } else if (current == null || current === \"\") {\n appendNodes(parent, array)\n } else {\n reconcileArrays(parent, (multi && current) || [getFirstChild(parent)], array)\n }\n }\n current = array\n } else {\n if (Array.isArray(current)) {\n if (multi) return (current = cleanChildren(parent, current, marker, value))\n cleanChildren(parent, current, null, value)\n } else if (current == null || current === \"\" || !getFirstChild(parent)) {\n insertNode(parent, value)\n } else replaceNode(parent, value, getFirstChild(parent))\n current = value\n }\n return current\n }\n function normalizeIncomingArray(normalized, array, unwrap) {\n let dynamic = false\n for (let i = 0, len = array.length; i < len; i++) {\n let item = array[i],\n t\n if (item == null || item === true || item === false);\n else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item) || dynamic\n } else if ((t = typeof item) === \"string\" || t === \"number\") {\n normalized.push(createTextNode(item))\n } else if (t === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\") item = item()\n dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item]) || dynamic\n } else {\n normalized.push(item)\n dynamic = true\n }\n } else normalized.push(item)\n }\n return dynamic\n }\n function reconcileArrays(parentNode, a, b) {\n let bLength = b.length,\n aEnd = a.length,\n bEnd = bLength,\n aStart = 0,\n bStart = 0,\n after = getNextSibling(a[aEnd - 1]),\n map = null\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++\n bStart++\n continue\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--\n bEnd--\n }\n if (aEnd === aStart) {\n const node = bEnd < bLength ? (bStart ? getNextSibling(b[bStart - 1]) : b[bEnd - bStart]) : after\n while (bStart < bEnd) insertNode(parentNode, b[bStart++], node)\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart])) removeNode(parentNode, a[aStart])\n aStart++\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = getNextSibling(a[--aEnd])\n insertNode(parentNode, b[bStart++], getNextSibling(a[aStart++]))\n insertNode(parentNode, b[--bEnd], node)\n a[aEnd] = b[bEnd]\n } else {\n if (!map) {\n map = new Map()\n let i = bStart\n while (i < bEnd) map.set(b[i], i++)\n }\n const index = map.get(a[aStart])\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart,\n sequence = 1,\n t\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence) break\n sequence++\n }\n if (sequence > index - bStart) {\n const node = a[aStart]\n while (bStart < index) insertNode(parentNode, b[bStart++], node)\n } else replaceNode(parentNode, b[bStart++], a[aStart++])\n } else aStart++\n } else removeNode(parentNode, a[aStart++])\n }\n }\n }\n function cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) {\n let removed\n while ((removed = getFirstChild(parent))) removeNode(parent, removed)\n replacement && insertNode(parent, replacement)\n return replacement ?? \"\"\n }\n const node = replacement || createSlotNode()\n if (current.length) {\n let inserted = false\n for (let i = current.length - 1; i >= 0; i--) {\n const el = current[i]\n if (node !== el) {\n const isParent = getParentNode(el) === parent\n if (!inserted && !i) isParent ? replaceNode(parent, node, el) : insertNode(parent, node, marker)\n else isParent && removeNode(parent, el)\n } else inserted = true\n }\n } else insertNode(parent, node, marker)\n return [node]\n }\n function appendNodes(parent, array, marker) {\n for (let i = 0, len = array.length; i < len; i++) insertNode(parent, array[i], marker)\n }\n function replaceNode(parent, newNode, oldNode) {\n insertNode(parent, newNode, oldNode)\n removeNode(parent, oldNode)\n }\n function spreadExpression(node, props, prevProps = {}, skipChildren) {\n props || (props = {})\n if (!skipChildren) {\n createRenderEffect(() => (prevProps.children = insertExpression(node, props.children, prevProps.children)))\n }\n createRenderEffect(() => props.ref && props.ref(node))\n createRenderEffect(() => {\n for (const prop in props) {\n if (prop === \"children\" || prop === \"ref\") continue\n const value = props[prop]\n if (value === prevProps[prop]) continue\n setProperty(node, prop, value, prevProps[prop])\n prevProps[prop] = value\n }\n })\n return prevProps\n }\n return {\n render(code, element) {\n let disposer\n createRoot((dispose) => {\n disposer = dispose\n insert(element, code())\n })\n return disposer\n },\n insert,\n spread(node, accessor, skipChildren) {\n if (typeof accessor === \"function\") {\n createRenderEffect((current) => spreadExpression(node, accessor(), current, skipChildren))\n } else spreadExpression(node, accessor, undefined, skipChildren)\n },\n createElement,\n createTextNode,\n insertNode,\n setProp(node, name, value, prev) {\n setProperty(node, name, value, prev)\n return value\n },\n mergeProps,\n effect: createRenderEffect,\n memo,\n createComponent,\n use(fn, element, arg) {\n return untrack(() => fn(element, arg))\n },\n }\n}\n",
|
|
11
11
|
"import { createRenderer as createRendererDX } from \"./universal.js\"\nimport type { RendererOptions, Renderer } from \"./universal.js\"\nimport { mergeProps } from \"solid-js\"\n\nexport type { RendererOptions, Renderer } from \"./universal.js\"\n\nexport function createRenderer<NodeType>(options: RendererOptions<NodeType>): Renderer<NodeType> {\n const renderer = createRendererDX(options)\n renderer.mergeProps = mergeProps\n return renderer\n}\n",
|
|
12
12
|
"const idCounter = new Map<string, number>()\n\nexport function getNextId(elementType: string): string {\n if (!idCounter.has(elementType)) {\n idCounter.set(elementType, 0)\n }\n\n const value = idCounter.get(elementType)! + 1\n idCounter.set(elementType, value)\n return `${elementType}-${value}`\n}\n",
|
|
13
13
|
"export const log = (...args: any[]) => {\n if (process.env.DEBUG) {\n console.log(\"[Reconciler]\", ...args)\n }\n}\n",
|
|
14
|
-
"import { BaseRenderable, isTextNodeRenderable, TextNodeRenderable, TextRenderable, Yoga } from \"@opentui/core\"\n\ntype LayoutNodeProvider = {\n getLayoutNode?: () => Yoga.Node\n}\n\ntype LayoutNodeConstructor = { create?: () => Yoga.Node } | undefined\n\nfunction getLayoutNodeConstructor(parent?: BaseRenderable): LayoutNodeConstructor {\n const parentLayoutNode = (parent as LayoutNodeProvider | undefined)?.getLayoutNode?.()\n return parentLayoutNode?.constructor as LayoutNodeConstructor\n}\n\nfunction createLayoutSlotYogaNode(parentNodeConstructor?: LayoutNodeConstructor): Yoga.Node {\n return parentNodeConstructor?.create?.() ?? Yoga.default.Node.create()\n}\n\nclass SlotBaseRenderable extends BaseRenderable {\n constructor(id: string) {\n super({\n id,\n })\n }\n\n public add(obj: BaseRenderable | unknown, index?: number): number {\n throw new Error(\"Can't add children on an Slot renderable\")\n }\n\n public getChildren(): BaseRenderable[] {\n return []\n }\n\n public remove(id: string): void {}\n\n public insertBefore(obj: BaseRenderable | unknown, anchor: BaseRenderable | unknown): void {\n throw new Error(\"Can't add children on an Slot renderable\")\n }\n\n public getRenderable(id: string): BaseRenderable | undefined {\n return undefined\n }\n\n public getChildrenCount(): number {\n return 0\n }\n\n public requestRender(): void {}\n\n public findDescendantById(id: string): BaseRenderable | undefined {\n return undefined\n }\n}\n\nexport class TextSlotRenderable extends TextNodeRenderable {\n protected slotParent?: SlotRenderable\n protected destroyed: boolean = false\n\n constructor(id: string, parent?: SlotRenderable) {\n super({ id: id })\n this._visible = false\n this.slotParent = parent\n }\n\n public detachFromSlot(): void {\n this.slotParent = undefined\n }\n\n public disposeWithoutSlotCascade(): void {\n if (this.destroyed) {\n return\n }\n\n this.destroyed = true\n this.detachFromSlot()\n }\n\n public override destroy(): void {\n if (this.destroyed) {\n return\n }\n this.destroyed = true\n\n const slotParent = this.slotParent\n this.slotParent = undefined\n\n slotParent?.destroy()\n super.destroy()\n }\n}\n\nexport class LayoutSlotRenderable extends SlotBaseRenderable {\n protected yogaNode: Yoga.Node\n protected slotParent?: SlotRenderable\n protected destroyed: boolean = false\n private yogaNodeConstructor: LayoutNodeConstructor\n private yogaNodeFreed: boolean = false\n\n constructor(id: string, parent?: SlotRenderable, layoutParent?: BaseRenderable) {\n super(id)\n\n this._visible = false\n this.slotParent = parent\n this.yogaNodeConstructor = getLayoutNodeConstructor(layoutParent)\n this.yogaNode = createLayoutSlotYogaNode(this.yogaNodeConstructor)\n this.yogaNode.setDisplay(Yoga.Display.None)\n }\n\n public getLayoutNode(): Yoga.Node {\n return this.yogaNode\n }\n\n public updateFromLayout() {}\n\n public updateLayout() {}\n\n public onRemove() {}\n\n public isCompatibleWith(layoutParent?: BaseRenderable): boolean {\n return this.yogaNodeConstructor === getLayoutNodeConstructor(layoutParent)\n }\n\n public detachFromSlot(): void {\n this.slotParent = undefined\n }\n\n private freeYogaNode(): void {\n if (this.yogaNodeFreed) {\n return\n }\n\n this.yogaNodeFreed = true\n\n try {\n this.yogaNode.free()\n } catch {}\n }\n\n public disposeWithoutSlotCascade(): void {\n if (this.destroyed) {\n return\n }\n\n this.destroyed = true\n this.detachFromSlot()\n this.freeYogaNode()\n }\n\n public override destroy(): void {\n if (this.destroyed) {\n return\n }\n this.destroyed = true\n\n const slotParent = this.slotParent\n this.slotParent = undefined\n\n this.freeYogaNode()\n slotParent?.destroy()\n }\n}\n\nexport class SlotRenderable extends SlotBaseRenderable {\n protected destroyed: boolean = false\n private readonly layoutNodesByParent = new Map<BaseRenderable, LayoutSlotRenderable>()\n private readonly textNodesByParent = new Map<BaseRenderable, TextSlotRenderable>()\n private layoutNodeCount: number = 0\n private textNodeCount: number = 0\n\n constructor(id: string) {\n super(id)\n\n this._visible = false\n }\n\n public get layoutNode(): LayoutSlotRenderable | undefined {\n return this.getCurrentSlotChild(this.layoutNodesByParent)\n }\n\n public get textNode(): TextSlotRenderable | undefined {\n return this.getCurrentSlotChild(this.textNodesByParent)\n }\n\n private isTextSlotParent(parent: BaseRenderable): boolean {\n return isTextNodeRenderable(parent) || parent instanceof TextRenderable\n }\n\n private getCurrentSlotChild<T extends BaseRenderable>(nodesByParent: Map<BaseRenderable, T>): T | undefined {\n for (const node of nodesByParent.values()) {\n if (node.parent) {\n return node\n }\n }\n\n return nodesByParent.values().next().value\n }\n\n private getTextNodeForParent(parent: BaseRenderable): TextSlotRenderable | undefined {\n const mappedNode = this.textNodesByParent.get(parent)\n if (mappedNode) {\n return mappedNode\n }\n\n for (const [mappedParent, textNode] of this.textNodesByParent) {\n if (textNode.parent !== parent) {\n continue\n }\n\n this.textNodesByParent.delete(mappedParent)\n this.textNodesByParent.set(parent, textNode)\n return textNode\n }\n }\n\n private getLayoutNodeForParent(parent: BaseRenderable): LayoutSlotRenderable | undefined {\n const mappedNode = this.layoutNodesByParent.get(parent)\n if (mappedNode) {\n return mappedNode\n }\n\n for (const [mappedParent, layoutNode] of this.layoutNodesByParent) {\n if (layoutNode.parent !== parent) {\n continue\n }\n\n this.layoutNodesByParent.delete(mappedParent)\n this.layoutNodesByParent.set(parent, layoutNode)\n return layoutNode\n }\n }\n\n private takeReusableTextNode(parent: BaseRenderable): TextSlotRenderable | undefined {\n for (const [mappedParent, textNode] of this.textNodesByParent) {\n if (textNode.parent) {\n continue\n }\n\n this.textNodesByParent.delete(mappedParent)\n this.textNodesByParent.set(parent, textNode)\n return textNode\n }\n }\n\n private takeReusableLayoutNode(parent: BaseRenderable): LayoutSlotRenderable | undefined {\n for (const [mappedParent, layoutNode] of this.layoutNodesByParent) {\n if (layoutNode.parent) {\n continue\n }\n\n if (!layoutNode.isCompatibleWith(parent)) {\n continue\n }\n\n this.layoutNodesByParent.delete(mappedParent)\n this.layoutNodesByParent.set(parent, layoutNode)\n return layoutNode\n }\n }\n\n private disposeDetachedTextNodes(): void {\n for (const [parent, textNode] of this.textNodesByParent) {\n if (textNode.parent) {\n continue\n }\n\n this.textNodesByParent.delete(parent)\n textNode.disposeWithoutSlotCascade()\n }\n }\n\n private disposeDetachedIncompatibleLayoutNodes(parent: BaseRenderable): void {\n for (const [mappedParent, layoutNode] of this.layoutNodesByParent) {\n if (layoutNode.parent || layoutNode.isCompatibleWith(parent)) {\n continue\n }\n\n this.layoutNodesByParent.delete(mappedParent)\n layoutNode.disposeWithoutSlotCascade()\n }\n }\n\n // A slot can have multiple placeholder children attached transiently while a\n // move is in flight. Portal host tracking relies on `slot.parent` pointing at\n // one of the still-live hosts, not necessarily the most recently inserted one.\n private getAttachedSlotParent(excludedNode?: BaseRenderable): BaseRenderable | null {\n for (const textNode of this.textNodesByParent.values()) {\n if (textNode !== excludedNode && textNode.parent) {\n return textNode.parent\n }\n }\n\n for (const layoutNode of this.layoutNodesByParent.values()) {\n if (layoutNode !== excludedNode && layoutNode.parent) {\n return layoutNode.parent\n }\n }\n\n return null\n }\n\n private hasOtherAttachedSlotChildren(excludedNode: BaseRenderable): boolean {\n return this.getAttachedSlotParent(excludedNode) !== null\n }\n\n getSlotChild(parent: BaseRenderable) {\n if (this.isTextSlotParent(parent)) {\n const existingTextNode = this.getTextNodeForParent(parent)\n if (existingTextNode) {\n return existingTextNode\n }\n\n const reusableTextNode = this.takeReusableTextNode(parent)\n if (reusableTextNode) {\n return reusableTextNode\n }\n\n this.disposeDetachedIncompatibleLayoutNodes(parent)\n\n const textNode = new TextSlotRenderable(`slot-text-${this.id}-${++this.textNodeCount}`, this)\n this.textNodesByParent.set(parent, textNode)\n return textNode\n }\n\n const existingLayoutNode = this.getLayoutNodeForParent(parent)\n if (existingLayoutNode) {\n return existingLayoutNode\n }\n\n const reusableLayoutNode = this.takeReusableLayoutNode(parent)\n if (reusableLayoutNode) {\n return reusableLayoutNode\n }\n\n this.disposeDetachedTextNodes()\n this.disposeDetachedIncompatibleLayoutNodes(parent)\n\n const layoutNode = new LayoutSlotRenderable(`slot-layout-${this.id}-${++this.layoutNodeCount}`, this, parent)\n this.layoutNodesByParent.set(parent, layoutNode)\n return layoutNode\n }\n\n getSlotChildForRemoval(parent: BaseRenderable): BaseRenderable | undefined {\n if (this.isTextSlotParent(parent)) {\n return this.getTextNodeForParent(parent)\n }\n\n return this.getLayoutNodeForParent(parent)\n }\n\n didRemoveSlotChild(parent: BaseRenderable, child: BaseRenderable): void {\n const hasOtherAttachedSlotChildren = this.hasOtherAttachedSlotChildren(child)\n\n if (\n hasOtherAttachedSlotChildren &&\n child instanceof TextSlotRenderable &&\n this.getTextNodeForParent(parent) === child\n ) {\n this.textNodesByParent.delete(parent)\n child.disposeWithoutSlotCascade()\n }\n\n if (\n hasOtherAttachedSlotChildren &&\n child instanceof LayoutSlotRenderable &&\n this.getLayoutNodeForParent(parent) === child\n ) {\n this.layoutNodesByParent.delete(parent)\n child.disposeWithoutSlotCascade()\n }\n\n if (this.parent === parent) {\n this.parent = this.getAttachedSlotParent(child)\n }\n }\n\n public override destroy(): void {\n if (this.destroyed) {\n return\n }\n this.destroyed = true\n\n const layoutNodes = new Set(this.layoutNodesByParent.values())\n this.layoutNodesByParent.clear()\n for (const layoutNode of layoutNodes) {\n layoutNode.destroy()\n }\n\n const textNodes = new Set(this.textNodesByParent.values())\n this.textNodesByParent.clear()\n for (const textNode of textNodes) {\n textNode.destroy()\n }\n }\n}\n",
|
|
15
|
-
"import {\n BoxRenderable,\n RootRenderable,\n type CliRenderer,\n type Renderable,\n type ScrollbackRenderContext,\n type ScrollbackSnapshot,\n type ScrollbackWriter,\n} from \"@opentui/core\"\nimport { createSignal, type JSX } from \"solid-js\"\nimport { RendererContext } from \"./elements/index.js\"\nimport { _render as renderInternal, createComponent } from \"./reconciler.js\"\n\ntype DisposeFn = () => void\n\ninterface SnapshotRendererBinding {\n renderer: CliRenderer\n getHeight: () => number\n setHeight: (height: number) => void\n}\n\nlet solidScrollbackRootCounter = 0\nconst MAX_AUTO_HEIGHT_PASSES = 4\n\nexport interface SolidScrollbackWriterOptions {\n width?: number\n height?: number\n rowColumns?: number\n startOnNewLine?: boolean\n trailingNewline?: boolean\n}\n\nexport type SolidScrollbackNode = (ctx: ScrollbackRenderContext) => JSX.Element\n\nfunction normalizeSnapshotDimension(value: number | undefined, axis: \"width\" | \"height\"): number | undefined {\n if (value === undefined) {\n return undefined\n }\n\n if (!Number.isFinite(value)) {\n throw new Error(`createScrollbackWriter requires a finite ${axis}`)\n }\n\n return Math.max(1, Math.trunc(value))\n}\n\nfunction createSnapshotRendererValue(\n renderContext: ScrollbackRenderContext[\"renderContext\"],\n root: BoxRenderable,\n width: number,\n height: number,\n firstLineOffset: number,\n): SnapshotRendererBinding {\n const [snapshotWidth] = createSignal(width)\n const [snapshotHeight, setSnapshotHeight] = createSignal(height)\n const renderer = Object.create(renderContext) as CliRenderer\n let offset = firstLineOffset\n\n Object.defineProperties(renderer, {\n root: {\n value: root,\n enumerable: true,\n configurable: true,\n },\n width: {\n get: snapshotWidth,\n enumerable: true,\n configurable: true,\n },\n height: {\n get: snapshotHeight,\n enumerable: true,\n configurable: true,\n },\n claimFirstLineOffset: {\n value: () => {\n const out = offset\n offset = 0\n return out\n },\n enumerable: true,\n configurable: true,\n },\n })\n\n return {\n renderer,\n getHeight: snapshotHeight,\n setHeight(nextHeight: number): void {\n setSnapshotHeight(nextHeight)\n renderer.emit(\"resize\", snapshotWidth(), nextHeight)\n },\n }\n}\n\nfunction runLifecyclePasses(renderContext: ScrollbackRenderContext[\"renderContext\"]): void {\n for (const renderable of renderContext.getLifecyclePasses()) {\n renderable.onLifecyclePass?.call(renderable)\n }\n}\n\nfunction clearLifecyclePasses(renderContext: ScrollbackRenderContext[\"renderContext\"]): void {\n for (const renderable of [...renderContext.getLifecyclePasses()]) {\n renderContext.unregisterLifecyclePass(renderable)\n }\n}\n\nfunction measureSnapshotHeight(renderContext: ScrollbackRenderContext[\"renderContext\"], root: Renderable): number {\n const measureRoot = new RootRenderable(renderContext)\n\n try {\n measureRoot.add(root)\n runLifecyclePasses(renderContext)\n measureRoot.calculateLayout()\n return Math.max(1, Math.trunc(root.getLayoutNode().getComputedLayout().height))\n } finally {\n if (root.parent === measureRoot) {\n measureRoot.remove(root
|
|
14
|
+
"import { BaseRenderable, isTextNodeRenderable, TextNodeRenderable, TextRenderable, Yoga } from \"@opentui/core\"\n\ntype LayoutNodeProvider = {\n getLayoutNode?: () => Yoga.Node\n}\n\ntype LayoutNodeConstructor = { create?: () => Yoga.Node } | undefined\n\nfunction getLayoutNodeConstructor(parent?: BaseRenderable): LayoutNodeConstructor {\n const parentLayoutNode = (parent as LayoutNodeProvider | undefined)?.getLayoutNode?.()\n return parentLayoutNode?.constructor as LayoutNodeConstructor\n}\n\nfunction createLayoutSlotYogaNode(parentNodeConstructor?: LayoutNodeConstructor): Yoga.Node {\n return parentNodeConstructor?.create?.() ?? Yoga.default.Node.create()\n}\n\nclass SlotBaseRenderable extends BaseRenderable {\n constructor(id: string) {\n super({\n id,\n })\n }\n\n public add(obj: BaseRenderable | unknown, index?: number): number {\n throw new Error(\"Can't add children on an Slot renderable\")\n }\n\n public getChildren(): BaseRenderable[] {\n return []\n }\n\n public remove(child: BaseRenderable): void {}\n\n public insertBefore(obj: BaseRenderable | unknown, anchor: BaseRenderable | unknown): void {\n throw new Error(\"Can't add children on an Slot renderable\")\n }\n\n public getRenderable(id: string): BaseRenderable | undefined {\n return undefined\n }\n\n public getChildrenCount(): number {\n return 0\n }\n\n public requestRender(): void {}\n\n public findDescendantById(id: string): BaseRenderable | undefined {\n return undefined\n }\n}\n\nexport class TextSlotRenderable extends TextNodeRenderable {\n protected slotParent?: SlotRenderable\n protected destroyed: boolean = false\n\n constructor(id: string, parent?: SlotRenderable) {\n super({ id: id })\n this._visible = false\n this.slotParent = parent\n }\n\n public detachFromSlot(): void {\n this.slotParent = undefined\n }\n\n public disposeWithoutSlotCascade(): void {\n if (this.destroyed) {\n return\n }\n\n this.destroyed = true\n this.detachFromSlot()\n }\n\n public override destroy(): void {\n if (this.destroyed) {\n return\n }\n this.destroyed = true\n\n const slotParent = this.slotParent\n this.slotParent = undefined\n\n slotParent?.destroy()\n super.destroy()\n }\n}\n\nexport class LayoutSlotRenderable extends SlotBaseRenderable {\n protected yogaNode: Yoga.Node\n protected slotParent?: SlotRenderable\n protected destroyed: boolean = false\n private yogaNodeConstructor: LayoutNodeConstructor\n private yogaNodeFreed: boolean = false\n\n constructor(id: string, parent?: SlotRenderable, layoutParent?: BaseRenderable) {\n super(id)\n\n this._visible = false\n this.slotParent = parent\n this.yogaNodeConstructor = getLayoutNodeConstructor(layoutParent)\n this.yogaNode = createLayoutSlotYogaNode(this.yogaNodeConstructor)\n this.yogaNode.setDisplay(Yoga.Display.None)\n }\n\n public getLayoutNode(): Yoga.Node {\n return this.yogaNode\n }\n\n public updateFromLayout() {}\n\n public updateLayout() {}\n\n public onRemove() {}\n\n public isCompatibleWith(layoutParent?: BaseRenderable): boolean {\n return this.yogaNodeConstructor === getLayoutNodeConstructor(layoutParent)\n }\n\n public detachFromSlot(): void {\n this.slotParent = undefined\n }\n\n private freeYogaNode(): void {\n if (this.yogaNodeFreed) {\n return\n }\n\n this.yogaNodeFreed = true\n\n try {\n this.yogaNode.free()\n } catch {}\n }\n\n public disposeWithoutSlotCascade(): void {\n if (this.destroyed) {\n return\n }\n\n this.destroyed = true\n this.detachFromSlot()\n this.freeYogaNode()\n }\n\n public override destroy(): void {\n if (this.destroyed) {\n return\n }\n this.destroyed = true\n\n const slotParent = this.slotParent\n this.slotParent = undefined\n\n this.freeYogaNode()\n slotParent?.destroy()\n }\n}\n\nexport class SlotRenderable extends SlotBaseRenderable {\n protected destroyed: boolean = false\n private readonly layoutNodesByParent = new Map<BaseRenderable, LayoutSlotRenderable>()\n private readonly textNodesByParent = new Map<BaseRenderable, TextSlotRenderable>()\n private layoutNodeCount: number = 0\n private textNodeCount: number = 0\n\n constructor(id: string) {\n super(id)\n\n this._visible = false\n }\n\n public get layoutNode(): LayoutSlotRenderable | undefined {\n return this.getCurrentSlotChild(this.layoutNodesByParent)\n }\n\n public get textNode(): TextSlotRenderable | undefined {\n return this.getCurrentSlotChild(this.textNodesByParent)\n }\n\n private isTextSlotParent(parent: BaseRenderable): boolean {\n return isTextNodeRenderable(parent) || parent instanceof TextRenderable\n }\n\n private getCurrentSlotChild<T extends BaseRenderable>(nodesByParent: Map<BaseRenderable, T>): T | undefined {\n for (const node of nodesByParent.values()) {\n if (node.parent) {\n return node\n }\n }\n\n return nodesByParent.values().next().value\n }\n\n private getTextNodeForParent(parent: BaseRenderable): TextSlotRenderable | undefined {\n const mappedNode = this.textNodesByParent.get(parent)\n if (mappedNode) {\n return mappedNode\n }\n\n for (const [mappedParent, textNode] of this.textNodesByParent) {\n if (textNode.parent !== parent) {\n continue\n }\n\n this.textNodesByParent.delete(mappedParent)\n this.textNodesByParent.set(parent, textNode)\n return textNode\n }\n }\n\n private getLayoutNodeForParent(parent: BaseRenderable): LayoutSlotRenderable | undefined {\n const mappedNode = this.layoutNodesByParent.get(parent)\n if (mappedNode) {\n return mappedNode\n }\n\n for (const [mappedParent, layoutNode] of this.layoutNodesByParent) {\n if (layoutNode.parent !== parent) {\n continue\n }\n\n this.layoutNodesByParent.delete(mappedParent)\n this.layoutNodesByParent.set(parent, layoutNode)\n return layoutNode\n }\n }\n\n private takeReusableTextNode(parent: BaseRenderable): TextSlotRenderable | undefined {\n for (const [mappedParent, textNode] of this.textNodesByParent) {\n if (textNode.parent) {\n continue\n }\n\n this.textNodesByParent.delete(mappedParent)\n this.textNodesByParent.set(parent, textNode)\n return textNode\n }\n }\n\n private takeReusableLayoutNode(parent: BaseRenderable): LayoutSlotRenderable | undefined {\n for (const [mappedParent, layoutNode] of this.layoutNodesByParent) {\n if (layoutNode.parent) {\n continue\n }\n\n if (!layoutNode.isCompatibleWith(parent)) {\n continue\n }\n\n this.layoutNodesByParent.delete(mappedParent)\n this.layoutNodesByParent.set(parent, layoutNode)\n return layoutNode\n }\n }\n\n private disposeDetachedTextNodes(): void {\n for (const [parent, textNode] of this.textNodesByParent) {\n if (textNode.parent) {\n continue\n }\n\n this.textNodesByParent.delete(parent)\n textNode.disposeWithoutSlotCascade()\n }\n }\n\n private disposeDetachedIncompatibleLayoutNodes(parent: BaseRenderable): void {\n for (const [mappedParent, layoutNode] of this.layoutNodesByParent) {\n if (layoutNode.parent || layoutNode.isCompatibleWith(parent)) {\n continue\n }\n\n this.layoutNodesByParent.delete(mappedParent)\n layoutNode.disposeWithoutSlotCascade()\n }\n }\n\n // A slot can have multiple placeholder children attached transiently while a\n // move is in flight. Portal host tracking relies on `slot.parent` pointing at\n // one of the still-live hosts, not necessarily the most recently inserted one.\n private getAttachedSlotParent(excludedNode?: BaseRenderable): BaseRenderable | null {\n for (const textNode of this.textNodesByParent.values()) {\n if (textNode !== excludedNode && textNode.parent) {\n return textNode.parent\n }\n }\n\n for (const layoutNode of this.layoutNodesByParent.values()) {\n if (layoutNode !== excludedNode && layoutNode.parent) {\n return layoutNode.parent\n }\n }\n\n return null\n }\n\n private hasOtherAttachedSlotChildren(excludedNode: BaseRenderable): boolean {\n return this.getAttachedSlotParent(excludedNode) !== null\n }\n\n getSlotChild(parent: BaseRenderable) {\n if (this.isTextSlotParent(parent)) {\n const existingTextNode = this.getTextNodeForParent(parent)\n if (existingTextNode) {\n return existingTextNode\n }\n\n const reusableTextNode = this.takeReusableTextNode(parent)\n if (reusableTextNode) {\n return reusableTextNode\n }\n\n this.disposeDetachedIncompatibleLayoutNodes(parent)\n\n const textNode = new TextSlotRenderable(`slot-text-${this.id}-${++this.textNodeCount}`, this)\n this.textNodesByParent.set(parent, textNode)\n return textNode\n }\n\n const existingLayoutNode = this.getLayoutNodeForParent(parent)\n if (existingLayoutNode) {\n return existingLayoutNode\n }\n\n const reusableLayoutNode = this.takeReusableLayoutNode(parent)\n if (reusableLayoutNode) {\n return reusableLayoutNode\n }\n\n this.disposeDetachedTextNodes()\n this.disposeDetachedIncompatibleLayoutNodes(parent)\n\n const layoutNode = new LayoutSlotRenderable(`slot-layout-${this.id}-${++this.layoutNodeCount}`, this, parent)\n this.layoutNodesByParent.set(parent, layoutNode)\n return layoutNode\n }\n\n getSlotChildForRemoval(parent: BaseRenderable): BaseRenderable | undefined {\n if (this.isTextSlotParent(parent)) {\n return this.getTextNodeForParent(parent)\n }\n\n return this.getLayoutNodeForParent(parent)\n }\n\n didRemoveSlotChild(parent: BaseRenderable, child: BaseRenderable): void {\n const hasOtherAttachedSlotChildren = this.hasOtherAttachedSlotChildren(child)\n\n if (\n hasOtherAttachedSlotChildren &&\n child instanceof TextSlotRenderable &&\n this.getTextNodeForParent(parent) === child\n ) {\n this.textNodesByParent.delete(parent)\n child.disposeWithoutSlotCascade()\n }\n\n if (\n hasOtherAttachedSlotChildren &&\n child instanceof LayoutSlotRenderable &&\n this.getLayoutNodeForParent(parent) === child\n ) {\n this.layoutNodesByParent.delete(parent)\n child.disposeWithoutSlotCascade()\n }\n\n if (this.parent === parent) {\n this.parent = this.getAttachedSlotParent(child)\n }\n }\n\n public override destroy(): void {\n if (this.destroyed) {\n return\n }\n this.destroyed = true\n\n const layoutNodes = new Set(this.layoutNodesByParent.values())\n this.layoutNodesByParent.clear()\n for (const layoutNode of layoutNodes) {\n layoutNode.destroy()\n }\n\n const textNodes = new Set(this.textNodesByParent.values())\n this.textNodesByParent.clear()\n for (const textNode of textNodes) {\n textNode.destroy()\n }\n }\n}\n",
|
|
15
|
+
"import {\n BoxRenderable,\n RootRenderable,\n type CliRenderer,\n type Renderable,\n type ScrollbackRenderContext,\n type ScrollbackSnapshot,\n type ScrollbackWriter,\n} from \"@opentui/core\"\nimport { createSignal, type JSX } from \"solid-js\"\nimport { RendererContext } from \"./elements/index.js\"\nimport { _render as renderInternal, createComponent } from \"./reconciler.js\"\n\ntype DisposeFn = () => void\n\ninterface SnapshotRendererBinding {\n renderer: CliRenderer\n getHeight: () => number\n setHeight: (height: number) => void\n}\n\nlet solidScrollbackRootCounter = 0\nconst MAX_AUTO_HEIGHT_PASSES = 4\n\nexport interface SolidScrollbackWriterOptions {\n width?: number\n height?: number\n rowColumns?: number\n startOnNewLine?: boolean\n trailingNewline?: boolean\n}\n\nexport type SolidScrollbackNode = (ctx: ScrollbackRenderContext) => JSX.Element\n\nfunction normalizeSnapshotDimension(value: number | undefined, axis: \"width\" | \"height\"): number | undefined {\n if (value === undefined) {\n return undefined\n }\n\n if (!Number.isFinite(value)) {\n throw new Error(`createScrollbackWriter requires a finite ${axis}`)\n }\n\n return Math.max(1, Math.trunc(value))\n}\n\nfunction createSnapshotRendererValue(\n renderContext: ScrollbackRenderContext[\"renderContext\"],\n root: BoxRenderable,\n width: number,\n height: number,\n firstLineOffset: number,\n): SnapshotRendererBinding {\n const [snapshotWidth] = createSignal(width)\n const [snapshotHeight, setSnapshotHeight] = createSignal(height)\n const renderer = Object.create(renderContext) as CliRenderer\n let offset = firstLineOffset\n\n Object.defineProperties(renderer, {\n root: {\n value: root,\n enumerable: true,\n configurable: true,\n },\n width: {\n get: snapshotWidth,\n enumerable: true,\n configurable: true,\n },\n height: {\n get: snapshotHeight,\n enumerable: true,\n configurable: true,\n },\n claimFirstLineOffset: {\n value: () => {\n const out = offset\n offset = 0\n return out\n },\n enumerable: true,\n configurable: true,\n },\n })\n\n return {\n renderer,\n getHeight: snapshotHeight,\n setHeight(nextHeight: number): void {\n setSnapshotHeight(nextHeight)\n renderer.emit(\"resize\", snapshotWidth(), nextHeight)\n },\n }\n}\n\nfunction runLifecyclePasses(renderContext: ScrollbackRenderContext[\"renderContext\"]): void {\n for (const renderable of renderContext.getLifecyclePasses()) {\n renderable.onLifecyclePass?.call(renderable)\n }\n}\n\nfunction clearLifecyclePasses(renderContext: ScrollbackRenderContext[\"renderContext\"]): void {\n for (const renderable of [...renderContext.getLifecyclePasses()]) {\n renderContext.unregisterLifecyclePass(renderable)\n }\n}\n\nfunction measureSnapshotHeight(renderContext: ScrollbackRenderContext[\"renderContext\"], root: Renderable): number {\n const measureRoot = new RootRenderable(renderContext)\n\n try {\n measureRoot.add(root)\n runLifecyclePasses(renderContext)\n measureRoot.calculateLayout()\n return Math.max(1, Math.trunc(root.getLayoutNode().getComputedLayout().height))\n } finally {\n if (root.parent === measureRoot) {\n measureRoot.remove(root)\n }\n measureRoot.destroyRecursively()\n }\n}\n\nfunction resolveSnapshotHeight(\n renderContext: ScrollbackRenderContext[\"renderContext\"],\n root: Renderable,\n snapshotRenderer: SnapshotRendererBinding,\n): number {\n for (let pass = 0; pass < MAX_AUTO_HEIGHT_PASSES; pass++) {\n const measuredHeight = measureSnapshotHeight(renderContext, root)\n\n if (measuredHeight === snapshotRenderer.getHeight()) {\n clearLifecyclePasses(renderContext)\n return measuredHeight\n }\n\n snapshotRenderer.setHeight(measuredHeight)\n }\n\n // Give up on converging the synthetic height and let the final render rerun\n // lifecycle passes against the last consistent tree state.\n return measureSnapshotHeight(renderContext, root)\n}\n\nexport function createScrollbackWriter(\n node: SolidScrollbackNode,\n options: SolidScrollbackWriterOptions = {},\n): ScrollbackWriter {\n return (ctx: ScrollbackRenderContext): ScrollbackSnapshot => {\n const width = normalizeSnapshotDimension(options.width, \"width\") ?? Math.max(1, Math.trunc(ctx.width))\n const height = normalizeSnapshotDimension(options.height, \"height\")\n const startOnNewLine = options.startOnNewLine ?? true\n const firstLineWidth =\n !startOnNewLine && ctx.tailColumn > 0 && ctx.tailColumn < ctx.width\n ? Math.min(width, ctx.width - ctx.tailColumn)\n : width\n const firstLineOffset = width - firstLineWidth\n const root = new BoxRenderable(ctx.renderContext, {\n id: `solid-scrollback-root-${solidScrollbackRootCounter++}`,\n position: \"absolute\",\n left: 0,\n top: 0,\n width,\n height: height ?? \"auto\",\n border: false,\n backgroundColor: \"transparent\",\n shouldFill: false,\n flexDirection: \"column\",\n })\n const snapshotRenderer = createSnapshotRendererValue(\n ctx.renderContext,\n root,\n width,\n height ?? Math.max(1, ctx.renderContext.height),\n firstLineOffset,\n )\n\n let dispose: DisposeFn | undefined\n let disposed = false\n\n const teardown = () => {\n if (disposed) {\n return\n }\n\n disposed = true\n dispose?.()\n }\n\n try {\n dispose = renderInternal(\n () =>\n createComponent(RendererContext.Provider, {\n get value() {\n return snapshotRenderer.renderer\n },\n get children() {\n return node(ctx)\n },\n }),\n root,\n )\n\n return {\n root,\n width,\n height: height ?? resolveSnapshotHeight(ctx.renderContext, root, snapshotRenderer),\n rowColumns: options.rowColumns,\n startOnNewLine,\n trailingNewline: options.trailingNewline,\n teardown,\n }\n } catch (error) {\n teardown()\n root.destroyRecursively()\n throw error\n }\n }\n}\n\nexport function writeSolidToScrollback(\n renderer: CliRenderer,\n node: SolidScrollbackNode,\n options: SolidScrollbackWriterOptions = {},\n): void {\n renderer.writeToScrollback(createScrollbackWriter(node, options))\n}\n",
|
|
16
16
|
"import { spread as _$spread } from \"@opentui/solid\";\nimport { createElement as _$createElement } from \"@opentui/solid\";\nimport { TimeToFirstDrawRenderable } from \"@opentui/core\";\nimport { extend } from \"./elements/index.js\";\nextend({\n time_to_first_draw: TimeToFirstDrawRenderable\n});\nexport const TimeToFirstDraw = props => {\n return (() => {\n var _el$ = _$createElement(\"time_to_first_draw\");\n _$spread(_el$, props, false);\n return _el$;\n })();\n};",
|
|
17
17
|
"import { memo as _$memo } from \"@opentui/solid\";\nimport { createComponent as _$createComponent } from \"@opentui/solid\";\nimport { mergeProps as _$mergeProps } from \"@opentui/solid\";\nimport { createSlotRegistry } from \"@opentui/core\";\nimport { children, createMemo, createSignal, ErrorBoundary, For, onCleanup, splitProps } from \"solid-js\";\nconst EMPTY_ENTRY_IDS = [];\nexport function createSolidSlotRegistry(renderer, context, options = {}) {\n // Solid slots intentionally use one registry key per renderer instance.\n // Use createSlotRegistry from @opentui/core with a custom key for independent registries.\n return createSlotRegistry(renderer, \"solid:slot-registry\", context, options);\n}\nexport function createSlot(registry, options = {}) {\n return function BoundSlot(props) {\n return _$createComponent(Slot, _$mergeProps(props, {\n registry: registry,\n get pluginFailurePlaceholder() {\n return options.pluginFailurePlaceholder;\n }\n }));\n };\n}\nexport function Slot(props) {\n const [local, slotProps] = splitProps(props, [\"registry\", \"name\", \"mode\", \"children\", \"pluginFailurePlaceholder\"]);\n const registry = () => local.registry;\n const pluginFailurePlaceholder = () => local.pluginFailurePlaceholder;\n const [version, setVersion] = createSignal(0);\n let queued = false;\n let disposed = false;\n const unsubscribe = registry().subscribe(() => {\n if (queued) return;\n queued = true;\n setVersion(current => current + 1);\n queueMicrotask(() => {\n queued = false;\n if (disposed) return;\n });\n });\n onCleanup(() => {\n disposed = true;\n unsubscribe();\n });\n const entries = createMemo((previousEntries = []) => {\n version();\n const resolvedEntries = registry().resolveEntries(local.name);\n if (resolvedEntries.length === 0) {\n if (previousEntries.length === 0) return previousEntries;\n return [];\n }\n const previousById = new Map(previousEntries.map(entry => [entry.id, entry]));\n const nextEntries = resolvedEntries.map(entry => {\n const previousEntry = previousById.get(entry.id);\n if (previousEntry && previousEntry.renderer === entry.renderer) {\n return previousEntry;\n }\n return entry;\n });\n const unchanged = nextEntries.length === previousEntries.length && nextEntries.every((entry, index) => entry === previousEntries[index]);\n if (unchanged) return previousEntries;\n return nextEntries;\n });\n const entryIds = createMemo(() => entries().map(entry => entry.id));\n const entriesById = createMemo(() => new Map(entries().map(entry => [entry.id, entry])));\n const slotName = () => String(local.name);\n const renderFallback = () => {\n const value = children(() => local.children)();\n return value ?? null;\n };\n const resolveFallback = fallbackValue => fallbackValue?.() ?? null;\n const renderPluginFailurePlaceholder = (failure, fallbackValue) => {\n if (!pluginFailurePlaceholder()) {\n return resolveFallback(fallbackValue);\n }\n try {\n return pluginFailurePlaceholder()(failure);\n } catch (error) {\n registry().reportPluginError({\n pluginId: failure.pluginId,\n slot: failure.slot ?? slotName(),\n phase: \"error_placeholder\",\n source: \"solid\",\n error\n });\n return resolveFallback(fallbackValue);\n }\n };\n const renderEntry = (entry, fallbackOnError) => {\n let initialRender;\n try {\n initialRender = entry.renderer(registry().context, slotProps);\n } catch (error) {\n const failure = registry().reportPluginError({\n pluginId: entry.id,\n slot: slotName(),\n phase: \"render\",\n source: \"solid\",\n error\n });\n return renderPluginFailurePlaceholder(failure, fallbackOnError);\n }\n const resolvedInitialRender = children(() => initialRender);\n const hasInitialOutput = resolvedInitialRender.toArray().some(node => node !== null && node !== undefined && node !== false);\n if (!hasInitialOutput) {\n return resolveFallback(fallbackOnError);\n }\n return _$createComponent(ErrorBoundary, {\n fallback: error => {\n const failure = registry().reportPluginError({\n pluginId: entry.id,\n slot: slotName(),\n phase: \"render\",\n source: \"solid\",\n error\n });\n return renderPluginFailurePlaceholder(failure, fallbackOnError);\n },\n get children() {\n return resolvedInitialRender();\n }\n });\n };\n const AppendEntry = appendProps => {\n const entry = createMemo(() => entriesById().get(appendProps.entryId));\n return _$memo(() => {\n const resolvedEntry = entry();\n if (!resolvedEntry) {\n return null;\n }\n return renderEntry(resolvedEntry);\n });\n };\n const appendEntryIds = createMemo(() => {\n const mode = local.mode ?? \"append\";\n if (mode !== \"append\") {\n return EMPTY_ENTRY_IDS;\n }\n return entryIds();\n });\n const appendView = [renderFallback, _$createComponent(For, {\n get each() {\n return appendEntryIds();\n },\n children: entryId => _$createComponent(AppendEntry, {\n entryId: entryId\n })\n })];\n return _$memo(() => {\n const resolvedEntries = entries();\n const mode = local.mode ?? \"append\";\n if (resolvedEntries.length === 0) {\n return renderFallback();\n }\n if (mode === \"single_winner\") {\n const winner = resolvedEntries[0];\n if (!winner) {\n return renderFallback();\n }\n return renderEntry(winner, renderFallback);\n }\n if (mode === \"replace\") {\n const renderedEntries = resolvedEntries.map(entry => renderEntry(entry));\n const hasPluginOutput = renderedEntries.some(entry => entry !== null && entry !== undefined && entry !== false);\n if (!hasPluginOutput) {\n return renderFallback();\n }\n return renderedEntries;\n }\n return appendView;\n });\n}"
|
|
18
18
|
],
|
|
19
|
-
"mappings": "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",
|
|
20
|
-
"debugId": "
|
|
19
|
+
"mappings": "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",
|
|
20
|
+
"debugId": "DED9BF605D7B1CA764756E2164756E21",
|
|
21
21
|
"names": []
|
|
22
22
|
}
|
package/index.js
CHANGED
|
@@ -538,7 +538,7 @@ function _insertNode(parent, node, anchor) {
|
|
|
538
538
|
return;
|
|
539
539
|
}
|
|
540
540
|
const children = getNodeChildren(parent);
|
|
541
|
-
const anchorIndex = children.
|
|
541
|
+
const anchorIndex = children.indexOf(anchor);
|
|
542
542
|
if (anchorIndex === -1) {
|
|
543
543
|
log("[INSERT]", "Could not find anchor", logId(parent), logId(anchor), "[children]", ...children.map((c) => c.id));
|
|
544
544
|
}
|
|
@@ -558,7 +558,7 @@ function _removeNode(parent, node) {
|
|
|
558
558
|
}
|
|
559
559
|
node = slotChild;
|
|
560
560
|
}
|
|
561
|
-
parent.remove(node
|
|
561
|
+
parent.remove(node);
|
|
562
562
|
slotParent?.didRemoveSlotChild(parent, node);
|
|
563
563
|
process.nextTick(() => {
|
|
564
564
|
if (node instanceof BaseRenderable && !node.parent) {
|
|
@@ -811,7 +811,7 @@ function Portal(props) {
|
|
|
811
811
|
insert(renderRoot, content);
|
|
812
812
|
el.add(container);
|
|
813
813
|
props.ref && props.ref(container);
|
|
814
|
-
onCleanup2(() => el.remove(container
|
|
814
|
+
onCleanup2(() => el.remove(container));
|
|
815
815
|
}, undefined, {
|
|
816
816
|
render: true
|
|
817
817
|
});
|
|
@@ -859,7 +859,7 @@ class SlotBaseRenderable extends BaseRenderable2 {
|
|
|
859
859
|
getChildren() {
|
|
860
860
|
return [];
|
|
861
861
|
}
|
|
862
|
-
remove(
|
|
862
|
+
remove(child) {}
|
|
863
863
|
insertBefore(obj, anchor) {
|
|
864
864
|
throw new Error("Can't add children on an Slot renderable");
|
|
865
865
|
}
|
|
@@ -1209,7 +1209,7 @@ function measureSnapshotHeight(renderContext, root) {
|
|
|
1209
1209
|
return Math.max(1, Math.trunc(root.getLayoutNode().getComputedLayout().height));
|
|
1210
1210
|
} finally {
|
|
1211
1211
|
if (root.parent === measureRoot) {
|
|
1212
|
-
measureRoot.remove(root
|
|
1212
|
+
measureRoot.remove(root);
|
|
1213
1213
|
}
|
|
1214
1214
|
measureRoot.destroyRecursively();
|
|
1215
1215
|
}
|
|
@@ -1583,4 +1583,4 @@ export {
|
|
|
1583
1583
|
BoldSpanRenderable
|
|
1584
1584
|
};
|
|
1585
1585
|
|
|
1586
|
-
//# debugId=
|
|
1586
|
+
//# debugId=2356702E45FD426164756E2164756E21
|
package/index.js.map
CHANGED
|
@@ -5,18 +5,18 @@
|
|
|
5
5
|
"import { CliRenderer, createCliRenderer, engine } from \"@opentui/core\";\nimport { createTestRenderer } from \"@opentui/core/testing\";\nimport { RendererContext } from \"./src/elements/index.js\";\nimport { _render as renderInternal, createComponent } from \"./src/reconciler.js\";\nconst mountSolidRoot = (renderer, node) => {\n let dispose;\n let disposeRequested = false;\n let disposed = false;\n let mounting = true;\n let destroyRequested = false;\n const originalDestroy = renderer.destroy.bind(renderer);\n const runDispose = () => {\n if (disposed) {\n return;\n }\n if (!dispose) {\n disposeRequested = true;\n return;\n }\n disposed = true;\n dispose();\n };\n renderer.once(\"destroy\", runDispose);\n renderer.destroy = () => {\n if (mounting) {\n destroyRequested = true;\n return;\n }\n originalDestroy();\n };\n try {\n dispose = renderInternal(() => createComponent(RendererContext.Provider, {\n get value() {\n return renderer;\n },\n get children() {\n return createComponent(node, {});\n }\n }), renderer.root);\n } finally {\n mounting = false;\n renderer.destroy = originalDestroy;\n }\n if (disposeRequested) {\n runDispose();\n }\n if (destroyRequested) {\n originalDestroy();\n }\n};\nexport const render = async (node, rendererOrConfig = {}) => {\n const renderer = rendererOrConfig instanceof CliRenderer ? rendererOrConfig : await createCliRenderer({\n ...rendererOrConfig,\n onDestroy: () => {\n rendererOrConfig.onDestroy?.();\n }\n });\n engine.attach(renderer);\n mountSolidRoot(renderer, node);\n};\nexport const testRender = async (node, renderConfig = {}) => {\n const testSetup = await createTestRenderer({\n ...renderConfig,\n onDestroy: () => {\n renderConfig.onDestroy?.();\n }\n });\n engine.attach(testSetup.renderer);\n mountSolidRoot(testSetup.renderer, node);\n return testSetup;\n};\nexport * from \"./src/reconciler.js\";\nexport * from \"./src/elements/index.js\";\nexport * from \"./src/scrollback.js\";\nexport * from \"./src/time-to-first-draw.js\";\nexport * from \"./src/plugins/slot.js\";\nexport * from \"./src/types/elements.js\";",
|
|
6
6
|
"import { ASCIIFontRenderable, BoxRenderable, CodeRenderable, DiffRenderable, InputRenderable, LineNumberRenderable, MarkdownRenderable, ScrollBoxRenderable, SelectRenderable, TabSelectRenderable, TextareaRenderable, TextAttributes, TextNodeRenderable, TextRenderable } from \"@opentui/core\";\nclass SpanRenderable extends TextNodeRenderable {\n constructor(_ctx, options) {\n super(options);\n this._ctx = _ctx;\n }\n}\nexport const textNodeKeys = [\"span\", \"b\", \"strong\", \"i\", \"em\", \"u\", \"a\"];\nclass TextModifierRenderable extends SpanRenderable {\n constructor(options, modifier) {\n super(null, options);\n\n // Set appropriate attributes based on modifier type\n if (modifier === \"b\" || modifier === \"strong\") {\n this.attributes = (this.attributes || 0) | TextAttributes.BOLD;\n } else if (modifier === \"i\" || modifier === \"em\") {\n this.attributes = (this.attributes || 0) | TextAttributes.ITALIC;\n } else if (modifier === \"u\") {\n this.attributes = (this.attributes || 0) | TextAttributes.UNDERLINE;\n }\n }\n}\nexport class BoldSpanRenderable extends TextModifierRenderable {\n constructor(options) {\n super(options, \"b\");\n }\n}\nexport class ItalicSpanRenderable extends TextModifierRenderable {\n constructor(options) {\n super(options, \"i\");\n }\n}\nexport class UnderlineSpanRenderable extends TextModifierRenderable {\n constructor(options) {\n super(options, \"u\");\n }\n}\nexport class LineBreakRenderable extends SpanRenderable {\n constructor(_ctx, options) {\n super(null, options);\n this.add();\n }\n add() {\n return super.add(\"\\n\");\n }\n}\nexport class LinkRenderable extends SpanRenderable {\n constructor(_ctx, options) {\n const linkOptions = {\n ...options,\n link: {\n url: options.href\n }\n };\n super(null, linkOptions);\n }\n}\nexport const baseComponents = {\n box: BoxRenderable,\n text: TextRenderable,\n input: InputRenderable,\n select: SelectRenderable,\n textarea: TextareaRenderable,\n ascii_font: ASCIIFontRenderable,\n tab_select: TabSelectRenderable,\n scrollbox: ScrollBoxRenderable,\n code: CodeRenderable,\n diff: DiffRenderable,\n line_number: LineNumberRenderable,\n markdown: MarkdownRenderable,\n span: SpanRenderable,\n strong: BoldSpanRenderable,\n b: BoldSpanRenderable,\n em: ItalicSpanRenderable,\n i: ItalicSpanRenderable,\n u: UnderlineSpanRenderable,\n br: LineBreakRenderable,\n a: LinkRenderable\n};\nexport const componentCatalogue = {\n ...baseComponents\n};\n\n/**\n * Extend the component catalogue with new renderable components\n *\n * @example\n * ```tsx\n * // Extend with an object of components\n * extend({\n * consoleButton: ButtonRenderable,\n * customBox: CustomBoxRenderable\n * })\n * ```\n */\nexport function extend(objects) {\n Object.assign(componentCatalogue, objects);\n}\nexport function getComponentCatalogue() {\n return componentCatalogue;\n}",
|
|
7
7
|
"import { engine, Timeline } from \"@opentui/core\";\nimport { createContext, createSignal, onCleanup, onMount, useContext } from \"solid-js/dist/solid.js\";\nexport const RendererContext = createContext();\nexport const useRenderer = () => {\n const renderer = useContext(RendererContext);\n if (!renderer) {\n throw new Error(\"No renderer found\");\n }\n return renderer;\n};\nexport const onResize = callback => {\n const renderer = useRenderer();\n onMount(() => {\n renderer.on(\"resize\", callback);\n });\n onCleanup(() => {\n renderer.off(\"resize\", callback);\n });\n};\nexport const useTerminalDimensions = () => {\n const renderer = useRenderer();\n const [terminalDimensions, setTerminalDimensions] = createSignal({\n width: renderer.width,\n height: renderer.height\n });\n const callback = (width, height) => {\n setTerminalDimensions({\n width,\n height\n });\n };\n onResize(callback);\n return terminalDimensions;\n};\n/**\n * Subscribe to keyboard events.\n *\n * By default, only receives press events (including key repeats with `repeated: true`).\n * Use `options.release` to also receive release events.\n *\n * @example\n * // Basic press handling (includes repeats)\n * useKeyboard((e) => console.log(e.name, e.repeated ? \"(repeat)\" : \"\"))\n *\n * // With release events\n * useKeyboard((e) => {\n * if (e.eventType === \"release\") keys.delete(e.name)\n * else keys.add(e.name)\n * }, { release: true })\n */\nexport const useKeyboard = (callback, options) => {\n const renderer = useRenderer();\n const keyHandler = renderer.keyInput;\n onMount(() => {\n keyHandler.on(\"keypress\", callback);\n if (options?.release) {\n keyHandler.on(\"keyrelease\", callback);\n }\n });\n onCleanup(() => {\n keyHandler.off(\"keypress\", callback);\n if (options?.release) {\n keyHandler.off(\"keyrelease\", callback);\n }\n });\n};\nexport const usePaste = callback => {\n const renderer = useRenderer();\n const keyHandler = renderer.keyInput;\n onMount(() => {\n keyHandler.on(\"paste\", callback);\n });\n onCleanup(() => {\n keyHandler.off(\"paste\", callback);\n });\n};\n\n/**\n * @deprecated renamed to useKeyboard\n */\nexport const useKeyHandler = useKeyboard;\nexport const onFocus = callback => {\n const renderer = useRenderer();\n onMount(() => {\n renderer.on(\"focus\", callback);\n });\n onCleanup(() => {\n renderer.off(\"focus\", callback);\n });\n};\nexport const onBlur = callback => {\n const renderer = useRenderer();\n onMount(() => {\n renderer.on(\"blur\", callback);\n });\n onCleanup(() => {\n renderer.off(\"blur\", callback);\n });\n};\nexport const useSelectionHandler = callback => {\n const renderer = useRenderer();\n onMount(() => {\n renderer.on(\"selection\", callback);\n });\n onCleanup(() => {\n renderer.off(\"selection\", callback);\n });\n};\nexport const useTimeline = (options = {}) => {\n const timeline = new Timeline(options);\n onMount(() => {\n if (options.autoplay !== false) {\n timeline.play();\n }\n engine.register(timeline);\n });\n onCleanup(() => {\n timeline.pause();\n engine.unregister(timeline);\n });\n return timeline;\n};",
|
|
8
|
-
"import { createEffect, createMemo, getOwner, onCleanup, runWithOwner, splitProps, untrack } from \"solid-js/dist/solid.js\";\nimport { createSlotNode, createElement, insert, spread } from \"../reconciler.js\";\nimport { useRenderer } from \"./hooks.js\";\n\n/**\n * Renders components somewhere else in the DOM\n *\n * Useful for inserting modals and tooltips outside of an cropping layout. If no mount point is given, the portal is inserted on the root renderable; it is wrapped in a `<box>`\n *\n * @description https://docs.solidjs.com/reference/components/portal\n */\nexport function Portal(props) {\n const renderer = useRenderer();\n const marker = createSlotNode(),\n mount = () => props.mount || renderer.root,\n owner = getOwner();\n let content;\n createEffect(() => {\n // basically we backdoor into a sort of renderEffect here\n content || (content = runWithOwner(owner, () => createMemo(() => props.children)));\n const el = mount();\n const container = createElement(\"box\"),\n renderRoot = container;\n Object.defineProperty(container, \"_$host\", {\n get() {\n return marker.parent;\n },\n configurable: true\n });\n insert(renderRoot, content);\n el.add(container);\n props.ref && props.ref(container);\n onCleanup(() => el.remove(container
|
|
9
|
-
"/* @refresh skip */\nimport { BaseRenderable, createTextAttributes, InputRenderable, InputRenderableEvents, isTextNodeRenderable, parseColor, Renderable, RootTextNodeRenderable, ScrollBoxRenderable, SelectRenderable, SelectRenderableEvents, TabSelectRenderable, TabSelectRenderableEvents, TextNodeRenderable, TextRenderable } from \"@opentui/core\";\nimport { decodeHTML } from \"entities\";\nimport { useContext } from \"solid-js/dist/solid.js\";\nimport { createRenderer } from \"./renderer/index.js\";\nimport { getComponentCatalogue, RendererContext, SlotRenderable } from \"./elements/index.js\";\nimport { getNextId } from \"./utils/id-counter.js\";\nimport { log } from \"./utils/log.js\";\nclass TextNode extends TextNodeRenderable {\n static fromString(text, options = {}) {\n const node = new TextNode(options);\n node.add(text);\n return node;\n }\n}\n/**\n * Gets the id of a node, or content if it's a text chunk.\n * Intended for use in logging.\n * @param node The node to get the id of.\n * @returns Log-friendly id of the node.\n */\nconst logId = node => {\n if (!node) return undefined;\n return node.id;\n};\nconst getNodeChildren = node => {\n let children;\n if (node instanceof TextRenderable) {\n children = node.getTextChildren();\n } else {\n children = node.getChildren();\n }\n return children;\n};\nfunction _insertNode(parent, node, anchor) {\n log(\"Inserting node:\", logId(node), \"into parent:\", logId(parent), \"with anchor:\", logId(anchor), node instanceof TextNode);\n if (node instanceof SlotRenderable) {\n node.parent = parent;\n node = node.getSlotChild(parent);\n }\n if (anchor && anchor instanceof SlotRenderable) {\n anchor = anchor.getSlotChild(parent);\n }\n if (isTextNodeRenderable(node)) {\n if (!(parent instanceof TextRenderable) && !isTextNodeRenderable(parent)) {\n throw new Error(`Orphan text error: \"${node.toChunks().map(c => c.text).join(\"\")}\" must have a <text> as a parent: ${parent.id} above ${node.id}`);\n }\n }\n\n // Renderable nodes\n if (!(parent instanceof BaseRenderable)) {\n console.error(\"[INSERT]\", \"Tried to mount a non base renderable\");\n // Can't be a noop, have to panic\n throw new Error(\"Tried to mount a non base renderable\");\n }\n if (!anchor) {\n parent.add(node);\n return;\n }\n const children = getNodeChildren(parent);\n const anchorIndex = children.findIndex(el => el.id === anchor.id);\n if (anchorIndex === -1) {\n log(\"[INSERT]\", \"Could not find anchor\", logId(parent), logId(anchor), \"[children]\", ...children.map(c => c.id));\n }\n parent.add(node, anchorIndex);\n}\nfunction _removeNode(parent, node) {\n log(\"Removing node:\", logId(node), \"from parent:\", logId(parent));\n let slotParent;\n if (node instanceof SlotRenderable) {\n slotParent = node;\n const slotChild = slotParent.getSlotChildForRemoval(parent);\n if (!slotChild) {\n if (slotParent.parent === parent) {\n slotParent.parent = null;\n }\n return;\n }\n node = slotChild;\n }\n parent.remove(node.id);\n slotParent?.didRemoveSlotChild(parent, node);\n process.nextTick(() => {\n if (node instanceof BaseRenderable && !node.parent) {\n node.destroyRecursively();\n return;\n }\n });\n}\nfunction _createTextNode(value) {\n log(\"Creating text node:\", value);\n const id = getNextId(\"text-node\");\n if (typeof value === \"number\") {\n value = value.toString();\n }\n return TextNode.fromString(decodeHTML(value), {\n id\n });\n}\nexport function createSlotNode() {\n const id = getNextId(\"slot-node\");\n log(\"Creating slot node\", id);\n return new SlotRenderable(id);\n}\nfunction _getParentNode(childNode) {\n log(\"Getting parent of node:\", logId(childNode));\n let parent = childNode.parent ?? undefined;\n if (parent instanceof RootTextNodeRenderable) {\n parent = parent.textParent ?? undefined;\n }\n // ScrollBox delegates add/remove to its internal `content` wrapper\n // (scrollbox → wrapper → viewport → content), so children report\n // `content` as their parent. Return the ScrollBox so the identity\n // check in cleanChildren (getParentNode(el) === parent) succeeds.\n const scrollBoxCandidate = parent?.parent?.parent?.parent;\n if (scrollBoxCandidate instanceof ScrollBoxRenderable && scrollBoxCandidate.content === parent) {\n parent = scrollBoxCandidate;\n }\n return parent;\n}\nexport const {\n render: _render,\n effect,\n memo,\n createComponent,\n createElement,\n createTextNode,\n insertNode,\n insert,\n spread,\n setProp,\n mergeProps,\n use\n} = createRenderer({\n createElement(tagName) {\n log(\"Creating element:\", tagName);\n const id = getNextId(tagName);\n const solidRenderer = useContext(RendererContext);\n if (!solidRenderer) {\n throw new Error(\"No renderer found\");\n }\n const elements = getComponentCatalogue();\n if (!elements[tagName]) {\n throw new Error(`[Reconciler] Unknown component type: ${tagName}`);\n }\n const element = new elements[tagName](solidRenderer, {\n id\n });\n log(\"Element created with id:\", id);\n return element;\n },\n createTextNode: _createTextNode,\n createSlotNode,\n replaceText(textNode, value) {\n log(\"Replacing text:\", value, \"in node:\", logId(textNode));\n if (!(textNode instanceof TextNode)) return;\n textNode.replace(decodeHTML(value), 0);\n },\n setProperty(node, name, value, prev) {\n if (name.startsWith(\"on:\")) {\n const eventName = name.slice(3);\n if (value) {\n node.on(eventName, value);\n }\n if (prev) {\n node.off(eventName, prev);\n }\n return;\n }\n if (isTextNodeRenderable(node)) {\n if (name === \"href\") {\n node.link = {\n url: value\n };\n return;\n }\n if (name === \"style\") {\n node.attributes |= createTextAttributes(value);\n node.fg = value.fg ? parseColor(value.fg) : node.fg;\n node.bg = value.bg ? parseColor(value.bg) : node.bg;\n return;\n }\n return;\n }\n switch (name) {\n case \"id\":\n log(\"Id mapped\", node.id, \"=\", value);\n node[name] = value;\n break;\n case \"focused\":\n if (!(node instanceof Renderable)) return;\n if (value) {\n node.focus();\n } else {\n node.blur();\n }\n break;\n case \"onChange\":\n let event = undefined;\n if (node instanceof SelectRenderable) {\n event = SelectRenderableEvents.SELECTION_CHANGED;\n } else if (node instanceof TabSelectRenderable) {\n event = TabSelectRenderableEvents.SELECTION_CHANGED;\n } else if (node instanceof InputRenderable) {\n event = InputRenderableEvents.CHANGE;\n }\n if (!event) break;\n if (value) {\n node.on(event, value);\n }\n if (prev) {\n node.off(event, prev);\n }\n break;\n case \"onInput\":\n if (node instanceof InputRenderable) {\n if (value) {\n node.on(InputRenderableEvents.INPUT, value);\n }\n if (prev) {\n node.off(InputRenderableEvents.INPUT, prev);\n }\n }\n break;\n case \"onSubmit\":\n if (node instanceof InputRenderable) {\n if (value) {\n node.on(InputRenderableEvents.ENTER, value);\n }\n if (prev) {\n node.off(InputRenderableEvents.ENTER, prev);\n }\n } else {\n // @ts-expect-error todo validate if prop is actually settable\n node[name] = value;\n }\n break;\n case \"onSelect\":\n if (node instanceof SelectRenderable) {\n if (value) {\n node.on(SelectRenderableEvents.ITEM_SELECTED, value);\n }\n if (prev) {\n node.off(SelectRenderableEvents.ITEM_SELECTED, prev);\n }\n } else if (node instanceof TabSelectRenderable) {\n if (value) {\n node.on(TabSelectRenderableEvents.ITEM_SELECTED, value);\n }\n if (prev) {\n node.off(TabSelectRenderableEvents.ITEM_SELECTED, prev);\n }\n }\n break;\n case \"style\":\n for (const prop in value) {\n const propVal = value[prop];\n if (prev !== undefined && propVal === prev[prop]) continue;\n // @ts-expect-error todo validate if prop is actually settable\n node[prop] = propVal;\n }\n break;\n case \"text\":\n case \"content\":\n {\n const textValue = typeof value === \"string\" ? value : Array.isArray(value) ? value.join(\"\") : `${value}`;\n // @ts-expect-error todo validate if prop is actually settable\n node[name] = decodeHTML(textValue);\n break;\n }\n default:\n // @ts-expect-error todo validate if prop is actually settable\n node[name] = value;\n }\n },\n isTextNode(node) {\n return node instanceof TextNode;\n },\n insertNode: _insertNode,\n removeNode: _removeNode,\n getParentNode: _getParentNode,\n getFirstChild(node) {\n log(\"Getting first child of node:\", logId(node));\n const firstChild = getNodeChildren(node)[0];\n if (!firstChild) {\n log(\"No first child found for node:\", logId(node));\n return undefined;\n }\n log(\"First child found:\", logId(firstChild), \"for node:\", logId(node));\n return firstChild;\n },\n getNextSibling(node) {\n log(\"Getting next sibling of node:\", logId(node));\n const parent = _getParentNode(node);\n if (!parent) {\n log(\"No parent found for node:\", logId(node));\n return undefined;\n }\n if (node instanceof SlotRenderable) {\n const layoutSlotNode = node.getSlotChildForRemoval(parent);\n if (layoutSlotNode) {\n node = layoutSlotNode;\n }\n }\n const siblings = getNodeChildren(parent);\n const index = siblings.indexOf(node);\n if (index === -1 || index === siblings.length - 1) {\n log(\"No next sibling found for node:\", logId(node));\n return undefined;\n }\n const nextSibling = siblings[index + 1];\n if (!nextSibling) {\n log(\"Next sibling is null for node:\", logId(node));\n return undefined;\n }\n log(\"Next sibling found:\", logId(nextSibling), \"for node:\", logId(node));\n return nextSibling;\n }\n});",
|
|
8
|
+
"import { createEffect, createMemo, getOwner, onCleanup, runWithOwner, splitProps, untrack } from \"solid-js/dist/solid.js\";\nimport { createSlotNode, createElement, insert, spread } from \"../reconciler.js\";\nimport { useRenderer } from \"./hooks.js\";\n\n/**\n * Renders components somewhere else in the DOM\n *\n * Useful for inserting modals and tooltips outside of an cropping layout. If no mount point is given, the portal is inserted on the root renderable; it is wrapped in a `<box>`\n *\n * @description https://docs.solidjs.com/reference/components/portal\n */\nexport function Portal(props) {\n const renderer = useRenderer();\n const marker = createSlotNode(),\n mount = () => props.mount || renderer.root,\n owner = getOwner();\n let content;\n createEffect(() => {\n // basically we backdoor into a sort of renderEffect here\n content || (content = runWithOwner(owner, () => createMemo(() => props.children)));\n const el = mount();\n const container = createElement(\"box\"),\n renderRoot = container;\n Object.defineProperty(container, \"_$host\", {\n get() {\n return marker.parent;\n },\n configurable: true\n });\n insert(renderRoot, content);\n el.add(container);\n props.ref && props.ref(container);\n onCleanup(() => el.remove(container));\n }, undefined, {\n render: true\n });\n // The reconciler consumes this marker as the runtime representation of the portal JSX node.\n return marker;\n}\n/**\n * Renders an arbitrary component or element with the given props\n *\n * This is a lower level version of the `Dynamic` component, useful for\n * performance optimizations in libraries. Do not use this unless you know\n * what you are doing.\n * ```typescript\n * const element = () => multiline() ? 'textarea' : 'input';\n * createDynamic(element, { value: value() });\n * ```\n * @description https://docs.solidjs.com/reference/components/dynamic\n */\nexport function createDynamic(component, props) {\n const cached = createMemo(component);\n return createMemo(() => {\n const component = cached();\n switch (typeof component) {\n case \"function\":\n // if (isDev) Object.assign(component, { [$DEVCOMP]: true })\n return untrack(() => component(props));\n case \"string\":\n const el = createElement(component);\n spread(el, props);\n return el;\n default:\n break;\n }\n });\n}\n\n/**\n * Renders an arbitrary custom or native component and passes the other props\n * ```typescript\n * <Dynamic component={multiline() ? 'textarea' : 'input'} value={value()} />\n * ```\n * @description https://docs.solidjs.com/reference/components/dynamic\n */\nexport function Dynamic(props) {\n const [, others] = splitProps(props, [\"component\"]);\n return createDynamic(() => props.component, others);\n}",
|
|
9
|
+
"/* @refresh skip */\nimport { BaseRenderable, createTextAttributes, InputRenderable, InputRenderableEvents, isTextNodeRenderable, parseColor, Renderable, RootTextNodeRenderable, ScrollBoxRenderable, SelectRenderable, SelectRenderableEvents, TabSelectRenderable, TabSelectRenderableEvents, TextNodeRenderable, TextRenderable } from \"@opentui/core\";\nimport { decodeHTML } from \"entities\";\nimport { useContext } from \"solid-js/dist/solid.js\";\nimport { createRenderer } from \"./renderer/index.js\";\nimport { getComponentCatalogue, RendererContext, SlotRenderable } from \"./elements/index.js\";\nimport { getNextId } from \"./utils/id-counter.js\";\nimport { log } from \"./utils/log.js\";\nclass TextNode extends TextNodeRenderable {\n static fromString(text, options = {}) {\n const node = new TextNode(options);\n node.add(text);\n return node;\n }\n}\n/**\n * Gets the id of a node, or content if it's a text chunk.\n * Intended for use in logging.\n * @param node The node to get the id of.\n * @returns Log-friendly id of the node.\n */\nconst logId = node => {\n if (!node) return undefined;\n return node.id;\n};\nconst getNodeChildren = node => {\n let children;\n if (node instanceof TextRenderable) {\n children = node.getTextChildren();\n } else {\n children = node.getChildren();\n }\n return children;\n};\nfunction _insertNode(parent, node, anchor) {\n log(\"Inserting node:\", logId(node), \"into parent:\", logId(parent), \"with anchor:\", logId(anchor), node instanceof TextNode);\n if (node instanceof SlotRenderable) {\n node.parent = parent;\n node = node.getSlotChild(parent);\n }\n if (anchor && anchor instanceof SlotRenderable) {\n anchor = anchor.getSlotChild(parent);\n }\n if (isTextNodeRenderable(node)) {\n if (!(parent instanceof TextRenderable) && !isTextNodeRenderable(parent)) {\n throw new Error(`Orphan text error: \"${node.toChunks().map(c => c.text).join(\"\")}\" must have a <text> as a parent: ${parent.id} above ${node.id}`);\n }\n }\n\n // Renderable nodes\n if (!(parent instanceof BaseRenderable)) {\n console.error(\"[INSERT]\", \"Tried to mount a non base renderable\");\n // Can't be a noop, have to panic\n throw new Error(\"Tried to mount a non base renderable\");\n }\n if (!anchor) {\n parent.add(node);\n return;\n }\n const children = getNodeChildren(parent);\n const anchorIndex = children.indexOf(anchor);\n if (anchorIndex === -1) {\n log(\"[INSERT]\", \"Could not find anchor\", logId(parent), logId(anchor), \"[children]\", ...children.map(c => c.id));\n }\n parent.add(node, anchorIndex);\n}\nfunction _removeNode(parent, node) {\n log(\"Removing node:\", logId(node), \"from parent:\", logId(parent));\n let slotParent;\n if (node instanceof SlotRenderable) {\n slotParent = node;\n const slotChild = slotParent.getSlotChildForRemoval(parent);\n if (!slotChild) {\n if (slotParent.parent === parent) {\n slotParent.parent = null;\n }\n return;\n }\n node = slotChild;\n }\n parent.remove(node);\n slotParent?.didRemoveSlotChild(parent, node);\n process.nextTick(() => {\n if (node instanceof BaseRenderable && !node.parent) {\n node.destroyRecursively();\n return;\n }\n });\n}\nfunction _createTextNode(value) {\n log(\"Creating text node:\", value);\n const id = getNextId(\"text-node\");\n if (typeof value === \"number\") {\n value = value.toString();\n }\n return TextNode.fromString(decodeHTML(value), {\n id\n });\n}\nexport function createSlotNode() {\n const id = getNextId(\"slot-node\");\n log(\"Creating slot node\", id);\n return new SlotRenderable(id);\n}\nfunction _getParentNode(childNode) {\n log(\"Getting parent of node:\", logId(childNode));\n let parent = childNode.parent ?? undefined;\n if (parent instanceof RootTextNodeRenderable) {\n parent = parent.textParent ?? undefined;\n }\n // ScrollBox delegates add/remove to its internal `content` wrapper\n // (scrollbox → wrapper → viewport → content), so children report\n // `content` as their parent. Return the ScrollBox so the identity\n // check in cleanChildren (getParentNode(el) === parent) succeeds.\n const scrollBoxCandidate = parent?.parent?.parent?.parent;\n if (scrollBoxCandidate instanceof ScrollBoxRenderable && scrollBoxCandidate.content === parent) {\n parent = scrollBoxCandidate;\n }\n return parent;\n}\nexport const {\n render: _render,\n effect,\n memo,\n createComponent,\n createElement,\n createTextNode,\n insertNode,\n insert,\n spread,\n setProp,\n mergeProps,\n use\n} = createRenderer({\n createElement(tagName) {\n log(\"Creating element:\", tagName);\n const id = getNextId(tagName);\n const solidRenderer = useContext(RendererContext);\n if (!solidRenderer) {\n throw new Error(\"No renderer found\");\n }\n const elements = getComponentCatalogue();\n if (!elements[tagName]) {\n throw new Error(`[Reconciler] Unknown component type: ${tagName}`);\n }\n const element = new elements[tagName](solidRenderer, {\n id\n });\n log(\"Element created with id:\", id);\n return element;\n },\n createTextNode: _createTextNode,\n createSlotNode,\n replaceText(textNode, value) {\n log(\"Replacing text:\", value, \"in node:\", logId(textNode));\n if (!(textNode instanceof TextNode)) return;\n textNode.replace(decodeHTML(value), 0);\n },\n setProperty(node, name, value, prev) {\n if (name.startsWith(\"on:\")) {\n const eventName = name.slice(3);\n if (value) {\n node.on(eventName, value);\n }\n if (prev) {\n node.off(eventName, prev);\n }\n return;\n }\n if (isTextNodeRenderable(node)) {\n if (name === \"href\") {\n node.link = {\n url: value\n };\n return;\n }\n if (name === \"style\") {\n node.attributes |= createTextAttributes(value);\n node.fg = value.fg ? parseColor(value.fg) : node.fg;\n node.bg = value.bg ? parseColor(value.bg) : node.bg;\n return;\n }\n return;\n }\n switch (name) {\n case \"id\":\n log(\"Id mapped\", node.id, \"=\", value);\n node[name] = value;\n break;\n case \"focused\":\n if (!(node instanceof Renderable)) return;\n if (value) {\n node.focus();\n } else {\n node.blur();\n }\n break;\n case \"onChange\":\n let event = undefined;\n if (node instanceof SelectRenderable) {\n event = SelectRenderableEvents.SELECTION_CHANGED;\n } else if (node instanceof TabSelectRenderable) {\n event = TabSelectRenderableEvents.SELECTION_CHANGED;\n } else if (node instanceof InputRenderable) {\n event = InputRenderableEvents.CHANGE;\n }\n if (!event) break;\n if (value) {\n node.on(event, value);\n }\n if (prev) {\n node.off(event, prev);\n }\n break;\n case \"onInput\":\n if (node instanceof InputRenderable) {\n if (value) {\n node.on(InputRenderableEvents.INPUT, value);\n }\n if (prev) {\n node.off(InputRenderableEvents.INPUT, prev);\n }\n }\n break;\n case \"onSubmit\":\n if (node instanceof InputRenderable) {\n if (value) {\n node.on(InputRenderableEvents.ENTER, value);\n }\n if (prev) {\n node.off(InputRenderableEvents.ENTER, prev);\n }\n } else {\n // @ts-expect-error todo validate if prop is actually settable\n node[name] = value;\n }\n break;\n case \"onSelect\":\n if (node instanceof SelectRenderable) {\n if (value) {\n node.on(SelectRenderableEvents.ITEM_SELECTED, value);\n }\n if (prev) {\n node.off(SelectRenderableEvents.ITEM_SELECTED, prev);\n }\n } else if (node instanceof TabSelectRenderable) {\n if (value) {\n node.on(TabSelectRenderableEvents.ITEM_SELECTED, value);\n }\n if (prev) {\n node.off(TabSelectRenderableEvents.ITEM_SELECTED, prev);\n }\n }\n break;\n case \"style\":\n for (const prop in value) {\n const propVal = value[prop];\n if (prev !== undefined && propVal === prev[prop]) continue;\n // @ts-expect-error todo validate if prop is actually settable\n node[prop] = propVal;\n }\n break;\n case \"text\":\n case \"content\":\n {\n const textValue = typeof value === \"string\" ? value : Array.isArray(value) ? value.join(\"\") : `${value}`;\n // @ts-expect-error todo validate if prop is actually settable\n node[name] = decodeHTML(textValue);\n break;\n }\n default:\n // @ts-expect-error todo validate if prop is actually settable\n node[name] = value;\n }\n },\n isTextNode(node) {\n return node instanceof TextNode;\n },\n insertNode: _insertNode,\n removeNode: _removeNode,\n getParentNode: _getParentNode,\n getFirstChild(node) {\n log(\"Getting first child of node:\", logId(node));\n const firstChild = getNodeChildren(node)[0];\n if (!firstChild) {\n log(\"No first child found for node:\", logId(node));\n return undefined;\n }\n log(\"First child found:\", logId(firstChild), \"for node:\", logId(node));\n return firstChild;\n },\n getNextSibling(node) {\n log(\"Getting next sibling of node:\", logId(node));\n const parent = _getParentNode(node);\n if (!parent) {\n log(\"No parent found for node:\", logId(node));\n return undefined;\n }\n if (node instanceof SlotRenderable) {\n const layoutSlotNode = node.getSlotChildForRemoval(parent);\n if (layoutSlotNode) {\n node = layoutSlotNode;\n }\n }\n const siblings = getNodeChildren(parent);\n const index = siblings.indexOf(node);\n if (index === -1 || index === siblings.length - 1) {\n log(\"No next sibling found for node:\", logId(node));\n return undefined;\n }\n const nextSibling = siblings[index + 1];\n if (!nextSibling) {\n log(\"Next sibling is null for node:\", logId(node));\n return undefined;\n }\n log(\"Next sibling found:\", logId(nextSibling), \"for node:\", logId(node));\n return nextSibling;\n }\n});",
|
|
10
10
|
"import { createRoot, createRenderEffect, createMemo, createComponent, untrack, mergeProps } from \"solid-js/dist/solid.js\";\nconst memo = fn => createMemo(() => fn());\nexport function createRenderer({\n createElement,\n createTextNode,\n createSlotNode,\n isTextNode,\n replaceText,\n insertNode,\n removeNode,\n setProperty,\n getParentNode,\n getFirstChild,\n getNextSibling\n}) {\n function insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial) initial = [];\n if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n }\n function insertExpression(parent, value, current, marker, unwrapArray) {\n while (typeof current === \"function\") current = current();\n if (value === current) return current;\n const t = typeof value,\n multi = marker !== undefined;\n if (t === \"string\" || t === \"number\") {\n if (t === \"number\") value = value.toString();\n if (multi) {\n let node = current[0];\n if (node && isTextNode(node)) {\n replaceText(node, value);\n } else node = createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n replaceText(getFirstChild(parent), current = value);\n } else {\n cleanChildren(parent, current, marker, createTextNode(value));\n current = value;\n }\n }\n } else if (value == null || t === \"boolean\") {\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\") v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n if (normalizeIncomingArray(array, value, unwrapArray)) {\n createRenderEffect(() => current = insertExpression(parent, array, current, marker, true));\n return () => current;\n }\n if (array.length === 0) {\n const replacement = cleanChildren(parent, current, marker);\n if (multi) return current = replacement;\n } else {\n if (Array.isArray(current)) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else reconcileArrays(parent, current, array);\n } else if (current == null || current === \"\") {\n appendNodes(parent, array);\n } else {\n reconcileArrays(parent, multi && current || [getFirstChild(parent)], array);\n }\n }\n current = array;\n } else {\n if (Array.isArray(current)) {\n if (multi) return current = cleanChildren(parent, current, marker, value);\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !getFirstChild(parent)) {\n insertNode(parent, value);\n } else replaceNode(parent, value, getFirstChild(parent));\n current = value;\n }\n return current;\n }\n function normalizeIncomingArray(normalized, array, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length; i < len; i++) {\n let item = array[i],\n t;\n if (item == null || item === true || item === false) ;else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item) || dynamic;\n } else if ((t = typeof item) === \"string\" || t === \"number\") {\n normalized.push(createTextNode(item));\n } else if (t === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\") item = item();\n dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item]) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else normalized.push(item);\n }\n return dynamic;\n }\n function reconcileArrays(parentNode, a, b) {\n let bLength = b.length,\n aEnd = a.length,\n bEnd = bLength,\n aStart = 0,\n bStart = 0,\n after = getNextSibling(a[aEnd - 1]),\n map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node = bEnd < bLength ? bStart ? getNextSibling(b[bStart - 1]) : b[bEnd - bStart] : after;\n while (bStart < bEnd) insertNode(parentNode, b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart])) removeNode(parentNode, a[aStart]);\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = getNextSibling(a[--aEnd]);\n insertNode(parentNode, b[bStart++], getNextSibling(a[aStart++]));\n insertNode(parentNode, b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart,\n sequence = 1,\n t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index) insertNode(parentNode, b[bStart++], node);\n } else replaceNode(parentNode, b[bStart++], a[aStart++]);\n } else aStart++;\n } else removeNode(parentNode, a[aStart++]);\n }\n }\n }\n function cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) {\n let removed;\n while (removed = getFirstChild(parent)) removeNode(parent, removed);\n replacement && insertNode(parent, replacement);\n return replacement ?? \"\";\n }\n const node = replacement || createSlotNode();\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1; i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = getParentNode(el) === parent;\n if (!inserted && !i) isParent ? replaceNode(parent, node, el) : insertNode(parent, node, marker);else isParent && removeNode(parent, el);\n } else inserted = true;\n }\n } else insertNode(parent, node, marker);\n return [node];\n }\n function appendNodes(parent, array, marker) {\n for (let i = 0, len = array.length; i < len; i++) insertNode(parent, array[i], marker);\n }\n function replaceNode(parent, newNode, oldNode) {\n insertNode(parent, newNode, oldNode);\n removeNode(parent, oldNode);\n }\n function spreadExpression(node, props, prevProps = {}, skipChildren) {\n props || (props = {});\n if (!skipChildren) {\n createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));\n }\n createRenderEffect(() => props.ref && props.ref(node));\n createRenderEffect(() => {\n for (const prop in props) {\n if (prop === \"children\" || prop === \"ref\") continue;\n const value = props[prop];\n if (value === prevProps[prop]) continue;\n setProperty(node, prop, value, prevProps[prop]);\n prevProps[prop] = value;\n }\n });\n return prevProps;\n }\n return {\n render(code, element) {\n let disposer;\n createRoot(dispose => {\n disposer = dispose;\n insert(element, code());\n });\n return disposer;\n },\n insert,\n spread(node, accessor, skipChildren) {\n if (typeof accessor === \"function\") {\n createRenderEffect(current => spreadExpression(node, accessor(), current, skipChildren));\n } else spreadExpression(node, accessor, undefined, skipChildren);\n },\n createElement,\n createTextNode,\n insertNode,\n setProp(node, name, value, prev) {\n setProperty(node, name, value, prev);\n return value;\n },\n mergeProps,\n effect: createRenderEffect,\n memo,\n createComponent,\n use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n }\n };\n}",
|
|
11
11
|
"import { createRenderer as createRendererDX } from \"./universal.js\";\nimport { mergeProps } from \"solid-js/dist/solid.js\";\nexport function createRenderer(options) {\n const renderer = createRendererDX(options);\n renderer.mergeProps = mergeProps;\n return renderer;\n}",
|
|
12
12
|
"const idCounter = new Map();\nexport function getNextId(elementType) {\n if (!idCounter.has(elementType)) {\n idCounter.set(elementType, 0);\n }\n const value = idCounter.get(elementType) + 1;\n idCounter.set(elementType, value);\n return `${elementType}-${value}`;\n}",
|
|
13
13
|
"export const log = (...args) => {\n if (process.env.DEBUG) {\n console.log(\"[Reconciler]\", ...args);\n }\n};",
|
|
14
|
-
"import { BaseRenderable, isTextNodeRenderable, TextNodeRenderable, TextRenderable, Yoga } from \"@opentui/core\";\nfunction getLayoutNodeConstructor(parent) {\n const parentLayoutNode = parent?.getLayoutNode?.();\n return parentLayoutNode?.constructor;\n}\nfunction createLayoutSlotYogaNode(parentNodeConstructor) {\n return parentNodeConstructor?.create?.() ?? Yoga.default.Node.create();\n}\nclass SlotBaseRenderable extends BaseRenderable {\n constructor(id) {\n super({\n id\n });\n }\n add(obj, index) {\n throw new Error(\"Can't add children on an Slot renderable\");\n }\n getChildren() {\n return [];\n }\n remove(
|
|
15
|
-
"import { BoxRenderable, RootRenderable } from \"@opentui/core\";\nimport { createSignal } from \"solid-js/dist/solid.js\";\nimport { RendererContext } from \"./elements/index.js\";\nimport { _render as renderInternal, createComponent } from \"./reconciler.js\";\nlet solidScrollbackRootCounter = 0;\nconst MAX_AUTO_HEIGHT_PASSES = 4;\nfunction normalizeSnapshotDimension(value, axis) {\n if (value === undefined) {\n return undefined;\n }\n if (!Number.isFinite(value)) {\n throw new Error(`createScrollbackWriter requires a finite ${axis}`);\n }\n return Math.max(1, Math.trunc(value));\n}\nfunction createSnapshotRendererValue(renderContext, root, width, height, firstLineOffset) {\n const [snapshotWidth] = createSignal(width);\n const [snapshotHeight, setSnapshotHeight] = createSignal(height);\n const renderer = Object.create(renderContext);\n let offset = firstLineOffset;\n Object.defineProperties(renderer, {\n root: {\n value: root,\n enumerable: true,\n configurable: true\n },\n width: {\n get: snapshotWidth,\n enumerable: true,\n configurable: true\n },\n height: {\n get: snapshotHeight,\n enumerable: true,\n configurable: true\n },\n claimFirstLineOffset: {\n value: () => {\n const out = offset;\n offset = 0;\n return out;\n },\n enumerable: true,\n configurable: true\n }\n });\n return {\n renderer,\n getHeight: snapshotHeight,\n setHeight(nextHeight) {\n setSnapshotHeight(nextHeight);\n renderer.emit(\"resize\", snapshotWidth(), nextHeight);\n }\n };\n}\nfunction runLifecyclePasses(renderContext) {\n for (const renderable of renderContext.getLifecyclePasses()) {\n renderable.onLifecyclePass?.call(renderable);\n }\n}\nfunction clearLifecyclePasses(renderContext) {\n for (const renderable of [...renderContext.getLifecyclePasses()]) {\n renderContext.unregisterLifecyclePass(renderable);\n }\n}\nfunction measureSnapshotHeight(renderContext, root) {\n const measureRoot = new RootRenderable(renderContext);\n try {\n measureRoot.add(root);\n runLifecyclePasses(renderContext);\n measureRoot.calculateLayout();\n return Math.max(1, Math.trunc(root.getLayoutNode().getComputedLayout().height));\n } finally {\n if (root.parent === measureRoot) {\n measureRoot.remove(root
|
|
14
|
+
"import { BaseRenderable, isTextNodeRenderable, TextNodeRenderable, TextRenderable, Yoga } from \"@opentui/core\";\nfunction getLayoutNodeConstructor(parent) {\n const parentLayoutNode = parent?.getLayoutNode?.();\n return parentLayoutNode?.constructor;\n}\nfunction createLayoutSlotYogaNode(parentNodeConstructor) {\n return parentNodeConstructor?.create?.() ?? Yoga.default.Node.create();\n}\nclass SlotBaseRenderable extends BaseRenderable {\n constructor(id) {\n super({\n id\n });\n }\n add(obj, index) {\n throw new Error(\"Can't add children on an Slot renderable\");\n }\n getChildren() {\n return [];\n }\n remove(child) {}\n insertBefore(obj, anchor) {\n throw new Error(\"Can't add children on an Slot renderable\");\n }\n getRenderable(id) {\n return undefined;\n }\n getChildrenCount() {\n return 0;\n }\n requestRender() {}\n findDescendantById(id) {\n return undefined;\n }\n}\nexport class TextSlotRenderable extends TextNodeRenderable {\n destroyed = false;\n constructor(id, parent) {\n super({\n id: id\n });\n this._visible = false;\n this.slotParent = parent;\n }\n detachFromSlot() {\n this.slotParent = undefined;\n }\n disposeWithoutSlotCascade() {\n if (this.destroyed) {\n return;\n }\n this.destroyed = true;\n this.detachFromSlot();\n }\n destroy() {\n if (this.destroyed) {\n return;\n }\n this.destroyed = true;\n const slotParent = this.slotParent;\n this.slotParent = undefined;\n slotParent?.destroy();\n super.destroy();\n }\n}\nexport class LayoutSlotRenderable extends SlotBaseRenderable {\n destroyed = false;\n yogaNodeFreed = false;\n constructor(id, parent, layoutParent) {\n super(id);\n this._visible = false;\n this.slotParent = parent;\n this.yogaNodeConstructor = getLayoutNodeConstructor(layoutParent);\n this.yogaNode = createLayoutSlotYogaNode(this.yogaNodeConstructor);\n this.yogaNode.setDisplay(Yoga.Display.None);\n }\n getLayoutNode() {\n return this.yogaNode;\n }\n updateFromLayout() {}\n updateLayout() {}\n onRemove() {}\n isCompatibleWith(layoutParent) {\n return this.yogaNodeConstructor === getLayoutNodeConstructor(layoutParent);\n }\n detachFromSlot() {\n this.slotParent = undefined;\n }\n freeYogaNode() {\n if (this.yogaNodeFreed) {\n return;\n }\n this.yogaNodeFreed = true;\n try {\n this.yogaNode.free();\n } catch {}\n }\n disposeWithoutSlotCascade() {\n if (this.destroyed) {\n return;\n }\n this.destroyed = true;\n this.detachFromSlot();\n this.freeYogaNode();\n }\n destroy() {\n if (this.destroyed) {\n return;\n }\n this.destroyed = true;\n const slotParent = this.slotParent;\n this.slotParent = undefined;\n this.freeYogaNode();\n slotParent?.destroy();\n }\n}\nexport class SlotRenderable extends SlotBaseRenderable {\n destroyed = false;\n layoutNodesByParent = new Map();\n textNodesByParent = new Map();\n layoutNodeCount = 0;\n textNodeCount = 0;\n constructor(id) {\n super(id);\n this._visible = false;\n }\n get layoutNode() {\n return this.getCurrentSlotChild(this.layoutNodesByParent);\n }\n get textNode() {\n return this.getCurrentSlotChild(this.textNodesByParent);\n }\n isTextSlotParent(parent) {\n return isTextNodeRenderable(parent) || parent instanceof TextRenderable;\n }\n getCurrentSlotChild(nodesByParent) {\n for (const node of nodesByParent.values()) {\n if (node.parent) {\n return node;\n }\n }\n return nodesByParent.values().next().value;\n }\n getTextNodeForParent(parent) {\n const mappedNode = this.textNodesByParent.get(parent);\n if (mappedNode) {\n return mappedNode;\n }\n for (const [mappedParent, textNode] of this.textNodesByParent) {\n if (textNode.parent !== parent) {\n continue;\n }\n this.textNodesByParent.delete(mappedParent);\n this.textNodesByParent.set(parent, textNode);\n return textNode;\n }\n }\n getLayoutNodeForParent(parent) {\n const mappedNode = this.layoutNodesByParent.get(parent);\n if (mappedNode) {\n return mappedNode;\n }\n for (const [mappedParent, layoutNode] of this.layoutNodesByParent) {\n if (layoutNode.parent !== parent) {\n continue;\n }\n this.layoutNodesByParent.delete(mappedParent);\n this.layoutNodesByParent.set(parent, layoutNode);\n return layoutNode;\n }\n }\n takeReusableTextNode(parent) {\n for (const [mappedParent, textNode] of this.textNodesByParent) {\n if (textNode.parent) {\n continue;\n }\n this.textNodesByParent.delete(mappedParent);\n this.textNodesByParent.set(parent, textNode);\n return textNode;\n }\n }\n takeReusableLayoutNode(parent) {\n for (const [mappedParent, layoutNode] of this.layoutNodesByParent) {\n if (layoutNode.parent) {\n continue;\n }\n if (!layoutNode.isCompatibleWith(parent)) {\n continue;\n }\n this.layoutNodesByParent.delete(mappedParent);\n this.layoutNodesByParent.set(parent, layoutNode);\n return layoutNode;\n }\n }\n disposeDetachedTextNodes() {\n for (const [parent, textNode] of this.textNodesByParent) {\n if (textNode.parent) {\n continue;\n }\n this.textNodesByParent.delete(parent);\n textNode.disposeWithoutSlotCascade();\n }\n }\n disposeDetachedIncompatibleLayoutNodes(parent) {\n for (const [mappedParent, layoutNode] of this.layoutNodesByParent) {\n if (layoutNode.parent || layoutNode.isCompatibleWith(parent)) {\n continue;\n }\n this.layoutNodesByParent.delete(mappedParent);\n layoutNode.disposeWithoutSlotCascade();\n }\n }\n\n // A slot can have multiple placeholder children attached transiently while a\n // move is in flight. Portal host tracking relies on `slot.parent` pointing at\n // one of the still-live hosts, not necessarily the most recently inserted one.\n getAttachedSlotParent(excludedNode) {\n for (const textNode of this.textNodesByParent.values()) {\n if (textNode !== excludedNode && textNode.parent) {\n return textNode.parent;\n }\n }\n for (const layoutNode of this.layoutNodesByParent.values()) {\n if (layoutNode !== excludedNode && layoutNode.parent) {\n return layoutNode.parent;\n }\n }\n return null;\n }\n hasOtherAttachedSlotChildren(excludedNode) {\n return this.getAttachedSlotParent(excludedNode) !== null;\n }\n getSlotChild(parent) {\n if (this.isTextSlotParent(parent)) {\n const existingTextNode = this.getTextNodeForParent(parent);\n if (existingTextNode) {\n return existingTextNode;\n }\n const reusableTextNode = this.takeReusableTextNode(parent);\n if (reusableTextNode) {\n return reusableTextNode;\n }\n this.disposeDetachedIncompatibleLayoutNodes(parent);\n const textNode = new TextSlotRenderable(`slot-text-${this.id}-${++this.textNodeCount}`, this);\n this.textNodesByParent.set(parent, textNode);\n return textNode;\n }\n const existingLayoutNode = this.getLayoutNodeForParent(parent);\n if (existingLayoutNode) {\n return existingLayoutNode;\n }\n const reusableLayoutNode = this.takeReusableLayoutNode(parent);\n if (reusableLayoutNode) {\n return reusableLayoutNode;\n }\n this.disposeDetachedTextNodes();\n this.disposeDetachedIncompatibleLayoutNodes(parent);\n const layoutNode = new LayoutSlotRenderable(`slot-layout-${this.id}-${++this.layoutNodeCount}`, this, parent);\n this.layoutNodesByParent.set(parent, layoutNode);\n return layoutNode;\n }\n getSlotChildForRemoval(parent) {\n if (this.isTextSlotParent(parent)) {\n return this.getTextNodeForParent(parent);\n }\n return this.getLayoutNodeForParent(parent);\n }\n didRemoveSlotChild(parent, child) {\n const hasOtherAttachedSlotChildren = this.hasOtherAttachedSlotChildren(child);\n if (hasOtherAttachedSlotChildren && child instanceof TextSlotRenderable && this.getTextNodeForParent(parent) === child) {\n this.textNodesByParent.delete(parent);\n child.disposeWithoutSlotCascade();\n }\n if (hasOtherAttachedSlotChildren && child instanceof LayoutSlotRenderable && this.getLayoutNodeForParent(parent) === child) {\n this.layoutNodesByParent.delete(parent);\n child.disposeWithoutSlotCascade();\n }\n if (this.parent === parent) {\n this.parent = this.getAttachedSlotParent(child);\n }\n }\n destroy() {\n if (this.destroyed) {\n return;\n }\n this.destroyed = true;\n const layoutNodes = new Set(this.layoutNodesByParent.values());\n this.layoutNodesByParent.clear();\n for (const layoutNode of layoutNodes) {\n layoutNode.destroy();\n }\n const textNodes = new Set(this.textNodesByParent.values());\n this.textNodesByParent.clear();\n for (const textNode of textNodes) {\n textNode.destroy();\n }\n }\n}",
|
|
15
|
+
"import { BoxRenderable, RootRenderable } from \"@opentui/core\";\nimport { createSignal } from \"solid-js/dist/solid.js\";\nimport { RendererContext } from \"./elements/index.js\";\nimport { _render as renderInternal, createComponent } from \"./reconciler.js\";\nlet solidScrollbackRootCounter = 0;\nconst MAX_AUTO_HEIGHT_PASSES = 4;\nfunction normalizeSnapshotDimension(value, axis) {\n if (value === undefined) {\n return undefined;\n }\n if (!Number.isFinite(value)) {\n throw new Error(`createScrollbackWriter requires a finite ${axis}`);\n }\n return Math.max(1, Math.trunc(value));\n}\nfunction createSnapshotRendererValue(renderContext, root, width, height, firstLineOffset) {\n const [snapshotWidth] = createSignal(width);\n const [snapshotHeight, setSnapshotHeight] = createSignal(height);\n const renderer = Object.create(renderContext);\n let offset = firstLineOffset;\n Object.defineProperties(renderer, {\n root: {\n value: root,\n enumerable: true,\n configurable: true\n },\n width: {\n get: snapshotWidth,\n enumerable: true,\n configurable: true\n },\n height: {\n get: snapshotHeight,\n enumerable: true,\n configurable: true\n },\n claimFirstLineOffset: {\n value: () => {\n const out = offset;\n offset = 0;\n return out;\n },\n enumerable: true,\n configurable: true\n }\n });\n return {\n renderer,\n getHeight: snapshotHeight,\n setHeight(nextHeight) {\n setSnapshotHeight(nextHeight);\n renderer.emit(\"resize\", snapshotWidth(), nextHeight);\n }\n };\n}\nfunction runLifecyclePasses(renderContext) {\n for (const renderable of renderContext.getLifecyclePasses()) {\n renderable.onLifecyclePass?.call(renderable);\n }\n}\nfunction clearLifecyclePasses(renderContext) {\n for (const renderable of [...renderContext.getLifecyclePasses()]) {\n renderContext.unregisterLifecyclePass(renderable);\n }\n}\nfunction measureSnapshotHeight(renderContext, root) {\n const measureRoot = new RootRenderable(renderContext);\n try {\n measureRoot.add(root);\n runLifecyclePasses(renderContext);\n measureRoot.calculateLayout();\n return Math.max(1, Math.trunc(root.getLayoutNode().getComputedLayout().height));\n } finally {\n if (root.parent === measureRoot) {\n measureRoot.remove(root);\n }\n measureRoot.destroyRecursively();\n }\n}\nfunction resolveSnapshotHeight(renderContext, root, snapshotRenderer) {\n for (let pass = 0; pass < MAX_AUTO_HEIGHT_PASSES; pass++) {\n const measuredHeight = measureSnapshotHeight(renderContext, root);\n if (measuredHeight === snapshotRenderer.getHeight()) {\n clearLifecyclePasses(renderContext);\n return measuredHeight;\n }\n snapshotRenderer.setHeight(measuredHeight);\n }\n\n // Give up on converging the synthetic height and let the final render rerun\n // lifecycle passes against the last consistent tree state.\n return measureSnapshotHeight(renderContext, root);\n}\nexport function createScrollbackWriter(node, options = {}) {\n return ctx => {\n const width = normalizeSnapshotDimension(options.width, \"width\") ?? Math.max(1, Math.trunc(ctx.width));\n const height = normalizeSnapshotDimension(options.height, \"height\");\n const startOnNewLine = options.startOnNewLine ?? true;\n const firstLineWidth = !startOnNewLine && ctx.tailColumn > 0 && ctx.tailColumn < ctx.width ? Math.min(width, ctx.width - ctx.tailColumn) : width;\n const firstLineOffset = width - firstLineWidth;\n const root = new BoxRenderable(ctx.renderContext, {\n id: `solid-scrollback-root-${solidScrollbackRootCounter++}`,\n position: \"absolute\",\n left: 0,\n top: 0,\n width,\n height: height ?? \"auto\",\n border: false,\n backgroundColor: \"transparent\",\n shouldFill: false,\n flexDirection: \"column\"\n });\n const snapshotRenderer = createSnapshotRendererValue(ctx.renderContext, root, width, height ?? Math.max(1, ctx.renderContext.height), firstLineOffset);\n let dispose;\n let disposed = false;\n const teardown = () => {\n if (disposed) {\n return;\n }\n disposed = true;\n dispose?.();\n };\n try {\n dispose = renderInternal(() => createComponent(RendererContext.Provider, {\n get value() {\n return snapshotRenderer.renderer;\n },\n get children() {\n return node(ctx);\n }\n }), root);\n return {\n root,\n width,\n height: height ?? resolveSnapshotHeight(ctx.renderContext, root, snapshotRenderer),\n rowColumns: options.rowColumns,\n startOnNewLine,\n trailingNewline: options.trailingNewline,\n teardown\n };\n } catch (error) {\n teardown();\n root.destroyRecursively();\n throw error;\n }\n };\n}\nexport function writeSolidToScrollback(renderer, node, options = {}) {\n renderer.writeToScrollback(createScrollbackWriter(node, options));\n}",
|
|
16
16
|
"import { spread as _$spread } from \"@opentui/solid\";\nimport { createElement as _$createElement } from \"@opentui/solid\";\nimport { TimeToFirstDrawRenderable } from \"@opentui/core\";\nimport { extend } from \"./elements/index.js\";\nextend({\n time_to_first_draw: TimeToFirstDrawRenderable\n});\nexport const TimeToFirstDraw = props => {\n return (() => {\n var _el$ = _$createElement(\"time_to_first_draw\");\n _$spread(_el$, props, false);\n return _el$;\n })();\n};",
|
|
17
17
|
"import { memo as _$memo } from \"@opentui/solid\";\nimport { createComponent as _$createComponent } from \"@opentui/solid\";\nimport { mergeProps as _$mergeProps } from \"@opentui/solid\";\nimport { createSlotRegistry } from \"@opentui/core\";\nimport { children, createMemo, createSignal, ErrorBoundary, For, onCleanup, splitProps } from \"solid-js/dist/solid.js\";\nconst EMPTY_ENTRY_IDS = [];\nexport function createSolidSlotRegistry(renderer, context, options = {}) {\n // Solid slots intentionally use one registry key per renderer instance.\n // Use createSlotRegistry from @opentui/core with a custom key for independent registries.\n return createSlotRegistry(renderer, \"solid:slot-registry\", context, options);\n}\nexport function createSlot(registry, options = {}) {\n return function BoundSlot(props) {\n return _$createComponent(Slot, _$mergeProps(props, {\n registry: registry,\n get pluginFailurePlaceholder() {\n return options.pluginFailurePlaceholder;\n }\n }));\n };\n}\nexport function Slot(props) {\n const [local, slotProps] = splitProps(props, [\"registry\", \"name\", \"mode\", \"children\", \"pluginFailurePlaceholder\"]);\n const registry = () => local.registry;\n const pluginFailurePlaceholder = () => local.pluginFailurePlaceholder;\n const [version, setVersion] = createSignal(0);\n let queued = false;\n let disposed = false;\n const unsubscribe = registry().subscribe(() => {\n if (queued) return;\n queued = true;\n setVersion(current => current + 1);\n queueMicrotask(() => {\n queued = false;\n if (disposed) return;\n });\n });\n onCleanup(() => {\n disposed = true;\n unsubscribe();\n });\n const entries = createMemo((previousEntries = []) => {\n version();\n const resolvedEntries = registry().resolveEntries(local.name);\n if (resolvedEntries.length === 0) {\n if (previousEntries.length === 0) return previousEntries;\n return [];\n }\n const previousById = new Map(previousEntries.map(entry => [entry.id, entry]));\n const nextEntries = resolvedEntries.map(entry => {\n const previousEntry = previousById.get(entry.id);\n if (previousEntry && previousEntry.renderer === entry.renderer) {\n return previousEntry;\n }\n return entry;\n });\n const unchanged = nextEntries.length === previousEntries.length && nextEntries.every((entry, index) => entry === previousEntries[index]);\n if (unchanged) return previousEntries;\n return nextEntries;\n });\n const entryIds = createMemo(() => entries().map(entry => entry.id));\n const entriesById = createMemo(() => new Map(entries().map(entry => [entry.id, entry])));\n const slotName = () => String(local.name);\n const renderFallback = () => {\n const value = children(() => local.children)();\n return value ?? null;\n };\n const resolveFallback = fallbackValue => fallbackValue?.() ?? null;\n const renderPluginFailurePlaceholder = (failure, fallbackValue) => {\n if (!pluginFailurePlaceholder()) {\n return resolveFallback(fallbackValue);\n }\n try {\n return pluginFailurePlaceholder()(failure);\n } catch (error) {\n registry().reportPluginError({\n pluginId: failure.pluginId,\n slot: failure.slot ?? slotName(),\n phase: \"error_placeholder\",\n source: \"solid\",\n error\n });\n return resolveFallback(fallbackValue);\n }\n };\n const renderEntry = (entry, fallbackOnError) => {\n let initialRender;\n try {\n initialRender = entry.renderer(registry().context, slotProps);\n } catch (error) {\n const failure = registry().reportPluginError({\n pluginId: entry.id,\n slot: slotName(),\n phase: \"render\",\n source: \"solid\",\n error\n });\n return renderPluginFailurePlaceholder(failure, fallbackOnError);\n }\n const resolvedInitialRender = children(() => initialRender);\n const hasInitialOutput = resolvedInitialRender.toArray().some(node => node !== null && node !== undefined && node !== false);\n if (!hasInitialOutput) {\n return resolveFallback(fallbackOnError);\n }\n return _$createComponent(ErrorBoundary, {\n fallback: error => {\n const failure = registry().reportPluginError({\n pluginId: entry.id,\n slot: slotName(),\n phase: \"render\",\n source: \"solid\",\n error\n });\n return renderPluginFailurePlaceholder(failure, fallbackOnError);\n },\n get children() {\n return resolvedInitialRender();\n }\n });\n };\n const AppendEntry = appendProps => {\n const entry = createMemo(() => entriesById().get(appendProps.entryId));\n return _$memo(() => {\n const resolvedEntry = entry();\n if (!resolvedEntry) {\n return null;\n }\n return renderEntry(resolvedEntry);\n });\n };\n const appendEntryIds = createMemo(() => {\n const mode = local.mode ?? \"append\";\n if (mode !== \"append\") {\n return EMPTY_ENTRY_IDS;\n }\n return entryIds();\n });\n const appendView = [renderFallback, _$createComponent(For, {\n get each() {\n return appendEntryIds();\n },\n children: entryId => _$createComponent(AppendEntry, {\n entryId: entryId\n })\n })];\n return _$memo(() => {\n const resolvedEntries = entries();\n const mode = local.mode ?? \"append\";\n if (resolvedEntries.length === 0) {\n return renderFallback();\n }\n if (mode === \"single_winner\") {\n const winner = resolvedEntries[0];\n if (!winner) {\n return renderFallback();\n }\n return renderEntry(winner, renderFallback);\n }\n if (mode === \"replace\") {\n const renderedEntries = resolvedEntries.map(entry => renderEntry(entry));\n const hasPluginOutput = renderedEntries.some(entry => entry !== null && entry !== undefined && entry !== false);\n if (!hasPluginOutput) {\n return renderFallback();\n }\n return renderedEntries;\n }\n return appendView;\n });\n}"
|
|
18
18
|
],
|
|
19
|
-
"mappings": "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",
|
|
20
|
-
"debugId": "
|
|
19
|
+
"mappings": "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",
|
|
20
|
+
"debugId": "2356702E45FD426164756E2164756E21",
|
|
21
21
|
"names": []
|
|
22
22
|
}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"types": "index.d.ts",
|
|
6
6
|
"type": "module",
|
|
7
|
-
"version": "0.4.
|
|
7
|
+
"version": "0.4.3",
|
|
8
8
|
"description": "SolidJS renderer for OpenTUI",
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"repository": {
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"dependencies": {
|
|
63
63
|
"@babel/core": "7.28.0",
|
|
64
64
|
"@babel/preset-typescript": "7.27.1",
|
|
65
|
-
"@opentui/core": "0.4.
|
|
65
|
+
"@opentui/core": "0.4.3",
|
|
66
66
|
"babel-plugin-module-resolver": "5.0.2",
|
|
67
67
|
"babel-preset-solid": "1.9.12",
|
|
68
68
|
"entities": "7.0.1",
|
|
@@ -4,10 +4,16 @@ import { createRuntimePlugin, isCoreRuntimeModuleSpecifier, runtimeModuleIdForSp
|
|
|
4
4
|
import * as solidJsRuntime from "solid-js";
|
|
5
5
|
import * as solidJsStoreRuntime from "solid-js/store";
|
|
6
6
|
import * as solidRuntime from "@opentui/solid";
|
|
7
|
+
import * as solidComponentsRuntime from "@opentui/solid/components";
|
|
8
|
+
import * as solidJsxRuntime from "@opentui/solid/jsx-runtime";
|
|
9
|
+
import * as solidJsxDevRuntime from "@opentui/solid/jsx-dev-runtime";
|
|
7
10
|
import { ensureSolidTransformPlugin } from "./solid-plugin.js";
|
|
8
11
|
const runtimePluginSupportInstalledKey = Symbol.for("opentui.solid.runtime-plugin-support");
|
|
9
12
|
const defaultRuntimeModules = {
|
|
10
13
|
"@opentui/solid": solidRuntime,
|
|
14
|
+
"@opentui/solid/components": solidComponentsRuntime,
|
|
15
|
+
"@opentui/solid/jsx-runtime": solidJsxRuntime,
|
|
16
|
+
"@opentui/solid/jsx-dev-runtime": solidJsxDevRuntime,
|
|
11
17
|
"solid-js": solidJsRuntime,
|
|
12
18
|
"solid-js/store": solidJsStoreRuntime,
|
|
13
19
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-plugin-support-configure.js","sourceRoot":"","sources":["runtime-plugin-support-configure.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime-plugin-support-configure.js","sourceRoot":"","sources":["runtime-plugin-support-configure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,iBAAiB,EAAE,MAAM,KAAK,CAAA;AACjD,OAAO,KAAK,WAAW,MAAM,eAAe,CAAA;AAC5C,OAAO,EACL,mBAAmB,EACnB,4BAA4B,EAC5B,2BAA2B,GAG5B,MAAM,8BAA8B,CAAA;AACrC,OAAO,KAAK,cAAc,MAAM,UAAU,CAAA;AAC1C,OAAO,KAAK,mBAAmB,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,sBAAsB,MAAM,2BAA2B,CAAA;AACnE,OAAO,KAAK,eAAe,MAAM,4BAA4B,CAAA;AAC7D,OAAO,KAAK,kBAAkB,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAA;AAE9D,MAAM,gCAAgC,GAAG,MAAM,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAA;AAkB3F,MAAM,qBAAqB,GAAuC;IAChE,gBAAgB,EAAE,YAAuC;IACzD,2BAA2B,EAAE,sBAAiD;IAC9E,4BAA4B,EAAE,eAA0C;IACxE,gCAAgC,EAAE,kBAA6C;IAC/E,UAAU,EAAE,cAAyC;IACrD,gBAAgB,EAAE,mBAA8C;CACjE,CAAA;AAED,SAAS,mBAAmB,CAAC,OAAgD;IAC3E,OAAO,GAAG,OAAO,EAAE,4BAA4B,IAAI,IAAI,IAAI,OAAO,EAAE,yBAAyB,IAAI,KAAK,EAAE,CAAA;AAC1G,CAAC;AAED,SAAS,oBAAoB,CAAC,OAA0C;IACtE,OAAO;QACL,GAAG,qBAAqB;QACxB,GAAG,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,SAAS,uBAAuB,CAC9B,OAAoC,EACpC,OAA2C,EAC3C,OAA0C;IAE1C,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CACb,qEAAqE,SAAS,gKAAgK,CAC/O,CAAA;QACH,CAAC;IACH,CAAC;IAED,IAAI,OAAO,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,iGAAiG,CAAC,CAAA;IACpH,CAAC;IAED,IAAI,OAAO,EAAE,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAA;IAC9G,CAAC;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,UAA4C,EAAE;IACvF,MAAM,KAAK,GAAG,UAAuC,CAAA;IACrD,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAA;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAK,WAAuC,CAAA;IACrE,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAEvD,MAAM,OAAO,GAAG,KAAK,CAAC,gCAAgC,CAAC,CAAA;IACvD,IAAI,OAAO,EAAE,CAAC;QACZ,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QAClD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,0BAA0B,CAAC;QACzB,UAAU,EAAE,2BAA2B,CAAC,gBAAgB,CAAC;QACzD,WAAW,CAAC,SAAS;YACnB,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpE,OAAO,IAAI,CAAA;YACb,CAAC;YAED,OAAO,2BAA2B,CAAC,SAAS,CAAC,CAAA;QAC/C,CAAC;KACF,CAAC,CAAA;IAEF,iBAAiB,CACf,mBAAmB,CAAC;QAClB,IAAI;QACJ,UAAU,EAAE,OAAO;QACnB,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CACH,CAAA;IAED,KAAK,CAAC,gCAAgC,CAAC,GAAG;QACxC,UAAU,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI;QACJ,UAAU;KACX,CAAA;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
|
package/src/elements/slot.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ declare class SlotBaseRenderable extends BaseRenderable {
|
|
|
3
3
|
constructor(id: string);
|
|
4
4
|
add(obj: BaseRenderable | unknown, index?: number): number;
|
|
5
5
|
getChildren(): BaseRenderable[];
|
|
6
|
-
remove(
|
|
6
|
+
remove(child: BaseRenderable): void;
|
|
7
7
|
insertBefore(obj: BaseRenderable | unknown, anchor: BaseRenderable | unknown): void;
|
|
8
8
|
getRenderable(id: string): BaseRenderable | undefined;
|
|
9
9
|
getChildrenCount(): number;
|