diff options
| author | Joris | 2023-02-12 12:35:09 +0100 | 
|---|---|---|
| committer | Joris | 2023-02-12 12:35:09 +0100 | 
| commit | 2dc698c09a32d291ea83296f2e81edf182bb6de0 (patch) | |
| tree | be990d78d2dc9ee2b00f3e751d51d88481313a28 /src | |
| parent | d0431c7f81e20dfb77a6fe154292d6b06f433984 (diff) | |
Fix double map child
The rx-base was not added at the right location, and not cleaned up.
Diffstat (limited to 'src')
| -rw-r--r-- | src/example.ts | 37 | ||||
| -rw-r--r-- | src/rx.ts | 9 | 
2 files changed, 42 insertions, 4 deletions
| diff --git a/src/example.ts b/src/example.ts index c23a4eb..360bf8b 100644 --- a/src/example.ts +++ b/src/example.ts @@ -126,9 +126,44 @@ const chrono =      }))    ]) +const doubleMapChild =  +  withVar(true, (isEven, updateIsEven) => +    withVar('', (search, updateSearch) => { +      const books = [...Array(50).keys()] + +      const filteredBooks = isEven.flatMap(f => search.map(s => +        books.filter(b => +          (f ? b % 2 === 0 : b % 2 === 1) && +          (s === '' || b.toString().includes(s))))) + +      return [ +        checkboxComponent({ +          label: 'Even?', +          isChecked: isEven, +          onCheck: checked => updateIsEven(_ => checked) +        }), +        h( +          'input', +          { oninput: (event: Event) => updateSearch(_ => (event.target as HTMLInputElement).value) +          , style: 'margin-left: 1rem' +          } +        ), +        h('hr'), +        isEven.map(b => +          b  +            ? filteredBooks.map(xs => `isEven (${xs.length})`) +            : filteredBooks.map(xs => `isOdd (${xs.length})`) +        ), +        h('hr'), +        filteredBooks.map(bs => bs.map(b => h('div', b))), +        h('hr') +      ] +    }) +  ) +  const view = h('main',    h('h1', 'Rx'), -  chrono +  doubleMapChild  )  mount(view) @@ -328,8 +328,8 @@ function appendChild(state: State, element: Element, child: Child, lastAdded?: N        lastAdded: appendRes.lastAdded      }    } else if (isRx(child)) { -    const rxBase = document.createTextNode("") -    element.append(rxBase) +    const rxBase = document.createTextNode('') +    appendNode(element, rxBase, lastAdded)      let appendRes: AppendResult = {        cancel: voidCancel,        remove: voidRemove, @@ -345,7 +345,10 @@ function appendChild(state: State, element: Element, child: Child, lastAdded?: N          appendRes.cancel()          cancelRx()        }, -      remove: appendRes.remove, +      remove: () => { +        appendRes.remove() +        element.removeChild(rxBase) +      },        lastAdded: appendRes.lastAdded,      }    } else if (child === undefined || child === false) { | 
