Skip to content

@marko/runtime-tags@6.4.9

Latest

Choose a tag to compare

@github-actions github-actions released this 04 Nov 22:23
· 14 commits to main since this release

Patch Changes

  • #4582 aef305c Thanks @DylanPiercey! - Fix "too much recursion" on resume when several async Marko 5 components rendered inside a tags template settled together and shared a branch id.

  • #4575 60b9944 Thanks @DylanPiercey! - Insert a newly rendered branch (an <if> branch, a <for> row, a dynamic tag's content) with one DOM call instead of one per node, and move keyed <for> rows the same way. Rows of several nodes render faster, and the runtime is smaller.

  • #4576 9511d2c Thanks @DylanPiercey! - Fix a <define> tag called with arguments it never reads, whose body is read through the param after them (<X(n)>hi</X> with |a, opts|): the client compile no longer crashes, and the server render no longer passes the body as the first argument.

  • #4561 8404a9d Thanks @DylanPiercey! - Fix a $global read used as one value of a class or style object (or a class array) whose other values change, which the client read as an undefined $global and threw on.

  • #4578 13a8c8f Thanks @DylanPiercey! - Fix serializedGlobals not reaching the client on a page, or in lazy content, whose only client code is an effect (such as a <script> reading $global), which read undefined after resume.

  • #4574 f6d0fa0 Thanks @DylanPiercey! - Fix a function that reads a tag variable declared below it without calling it (such as () => later) compiling without its scope and throwing $scope is not defined when called.

  • #4559 e13d47f Thanks @DylanPiercey! - Fix a <const> alias of input or a tag parameter (or a value destructured from one) not rendering when an event handler also reads it, and let handlers read any alias without re-attaching on every change.

  • #4571 b0d049c Thanks @DylanPiercey! - Stop reserving a client scope slot for a <for> key that is only read through a <const> alias of it.

  • #4555 778b834 Thanks @DylanPiercey! - Fix a function resumed from inside a <for> (a handler passed to a tag, a <const> function, a valueChange) that reads only the loop key, such as item.id with by="id" or the index, compiling without its scope and throwing $scope is not defined when called.

  • #4564 906c516 Thanks @DylanPiercey! - Render a template that imports itself (import Self from "./self.marko") on the server by calling its own content, as it already does when the tag is used by its file name, instead of through its import of itself.

  • #4570 b966ecb Thanks @DylanPiercey! - Render a class read from a server stylesheet import on the client as the undefined the import is there, as for any other server value, instead of dropping the client write depending on translation order.

  • #4557 70165d4 Thanks @DylanPiercey! - Pass a short literal instead of void 0 for skipped runtime arguments in compiled output.

  • #4572 e9eb4b7 Thanks @DylanPiercey! - Fix <show> when its body starts or ends with control flow (an <if>, a <for>, a nested <show>, or a tag whose template starts or ends with one): hiding a <show> the server rendered hidden could leave its body visible or also remove the content after it, and showing a body that changed while hidden, or a <show> that is its element's only child and the client rendered hidden, could insert stale nodes or nothing. A body the server rendered hidden now stays hidden where it is until first shown, instead of being inserted and removed again on its first update. A body that does not end in a static element no longer gets an end marker: each such template loses a <!>, a walk step and an argument, and each instance a cloned node and a scope slot.

  • #4565 57373f5 Thanks @DylanPiercey! - Fix a resumed <show> whose body renders no node (only a <script> or a static <style>) removing the node before it when hidden.

  • #4565 57373f5 Thanks @DylanPiercey! - Drop the range markers a client-rendered <show> does not need: a body of one element gets no start marker, and a body ending in a static element no end marker. Each such template loses a <!>, a walk step and an argument per marker, and each instance a cloned comment.

  • #4567 8512ee1 Thanks @DylanPiercey! - Fix a <define> whose body starts or ends with a placeholder of a constant value (${"Z"}), called beside text such as another call of itself, which merged the two texts in the client template and made the client render throw.

  • #4563 81f555d Thanks @DylanPiercey! - Fix text beside a <define> call merging with text at the edge of its body, which left the client updating or reading the wrong text node, and a placeholder that renders nothing (${false}) at the edge of a loop row, a branch or passed content making the client lose track of that content's first or last node.

  • #4581 d430524 Thanks @DylanPiercey! - Fix resumed text leading passed content, a loop row or a branch that the server wrote right after other text with no marker between them, which merged the two text nodes so a client update overwrote the text before it (${input.label}<${input.content}/> with content ${count}).

  • Updated dependencies [13830ec]:

    • @marko/compiler@5.42.15