diff --git a/src/expressions.ts b/src/expressions.ts index 8fab6b0..c377c46 100644 --- a/src/expressions.ts +++ b/src/expressions.ts @@ -1,6 +1,6 @@ import { ArrowExpression } from './html' -export const expressions: Array = [] +export const expressionPool: Array = [] const expressionObservers: CallableFunction[] = [] let cursor = 0 @@ -12,9 +12,9 @@ let cursor = 0 export function storeExpressions(expSlots: ArrowExpression[]): number { const len = expSlots.length const pointer = cursor - expressions[cursor++] = len + expressionPool[cursor++] = len for (let i = 0; i < len; i++) { - expressions[cursor++] = expSlots[i] + expressionPool[cursor++] = expSlots[i] } return pointer } @@ -28,13 +28,13 @@ export function updateExpressions( sourcePointer: number, toPointer: number ): void { - const len = expressions[sourcePointer] as number + const len = expressionPool[sourcePointer] as number for (let i = 1; i <= len; i++) { - expressions[toPointer + i] = expressions[sourcePointer + i] + expressionPool[toPointer + i] = expressionPool[sourcePointer + i] delete expressionObservers[sourcePointer + i] } for (let i = 1; i <= len; i++) { - expressionObservers[toPointer + i]?.(expressions[toPointer + i]) + expressionObservers[toPointer + i]?.(expressionPool[toPointer + i]) } } diff --git a/src/html.ts b/src/html.ts index e783f40..dc23710 100644 --- a/src/html.ts +++ b/src/html.ts @@ -1,7 +1,7 @@ import { watch } from './reactive' import { isChunk, isTpl, isType, queue } from './common' import { - expressions, + expressionPool, onExpressionUpdate, storeExpressions, updateExpressions, @@ -358,7 +358,7 @@ function createBindings( chunk: Chunk, expressionPointer: number ): ArrowFragment { - const totalPaths = expressions[expressionPointer] as number + const totalPaths = expressionPool[expressionPointer] as number const stackStart = bindingStackPos + 1 for (let i = 0; i < totalPaths; i++) { const path = chunk.paths[i] @@ -400,7 +400,7 @@ function createNodeBinding( parentChunk: Chunk ) { let fragment: DocumentFragment | Text | Comment - const expression = expressions[expressionPointer] + const expression = expressionPool[expressionPointer] if (isTpl(expression) || Array.isArray(expression)) { // We are dealing with a template that is not reactive. Render it. fragment = createRenderFn()(expression)! @@ -436,14 +436,14 @@ function createAttrBinding( parentChunk: Chunk ) { if (!isType(node, 1)) return - const expression = expressions[expressionPointer] + const expression = expressionPool[expressionPointer] if (attrName[0] === '@') { const event = attrName.substring(1) if (!parentChunk.a) parentChunk.a = new AbortController() node.addEventListener( event, (...args) => - (expressions[expressionPointer] as CallableFunction)?.( + (expressionPool[expressionPointer] as CallableFunction)?.( ...args ) as unknown as EventListener, { diff --git a/src/reactive.ts b/src/reactive.ts index 0a7910f..a00c7ee 100644 --- a/src/reactive.ts +++ b/src/reactive.ts @@ -1,5 +1,5 @@ import { isR, isO, queue } from './common' -import { expressions, onExpressionUpdate } from './expressions' +import { expressionPool, onExpressionUpdate } from './expressions' import { ArrowFunction, ArrowRenderable } from './html' /** @@ -470,7 +470,7 @@ export function watch< startTracking() const effectValue = isPointer - ? (expressions[effect as number] as ArrowFunction)() + ? (expressionPool[effect as number] as ArrowFunction)() : (effect as CallableFunction)() stopTracking(watchKey, rerun!)