@askrjs/askr 0.0.81 → 0.0.83

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/dist/benchmark.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { r as flushRuntimeScheduler } from "./access-ePqdQqkV.js";
2
- import { t as installRendererBridge } from "./renderer-BU9TOqrA.js";
2
+ import { t as installRendererBridge } from "./renderer-VSw0KKDG.js";
3
3
  import { t as state } from "./state-BCl9DeiN.js";
4
4
  import { t as selector } from "./selector-DVwvof1M.js";
5
5
  import { i as For } from "./control-C0X1zgrM.js";
6
6
  import { jsx, jsxs } from "./jsx-runtime.js";
7
- import { t as createIsland } from "./boot-CrpQQNAt.js";
7
+ import { t as createIsland } from "./boot-uK1hzONI.js";
8
8
  //#region src/bench/components/benchmark-row.tsx
9
9
  function BenchmarkRow({ item, isSelected, onSelect, onRemove }) {
10
10
  return /* @__PURE__ */ jsxs("tr", {
@@ -63,8 +63,8 @@ function BenchmarkTable({ rows, isSelected, onSelect, onRemove }) {
63
63
  installRendererBridge();
64
64
  const benchmarkMetadata = {
65
65
  packageName: "@askrjs/askr",
66
- packageVersion: "0.0.81",
67
- buildLabel: "0.0.81-local"
66
+ packageVersion: "0.0.83",
67
+ buildLabel: "0.0.83-local"
68
68
  };
69
69
  function getBenchmarkMetadata() {
70
70
  return { ...benchmarkMetadata };
@@ -1,2 +1,2 @@
1
- import { a as cleanupApp, i as hydrateSPA, n as createIslands, o as hasApp, r as createSPA, t as createIsland } from "../boot-CrpQQNAt.js";
1
+ import { a as cleanupApp, i as hydrateSPA, n as createIslands, o as hasApp, r as createSPA, t as createIsland } from "../boot-uK1hzONI.js";
2
2
  export { cleanupApp, createIsland, createIslands, createSPA, hasApp, hydrateSPA };
@@ -3,7 +3,7 @@ import { n as Fragment, t as ELEMENT_TYPE } from "./jsx-C3IECePB.js";
3
3
  import { n as createComponentInstance, r as executeComponent } from "./component-internal-DsM75Gl1.js";
4
4
  import { t as cleanupComponent } from "./component-cleanup-oWN45rfa.js";
5
5
  import { p as isPromiseLike } from "./lifecycle-batch-CwHCDseR.js";
6
- import { a as withIntrinsicHydrationAdoption, c as beginHydrationListenerTransaction, d as setStaticChildSlotsCacheEnabled, i as registerDeferredHydrationBoundary, l as commitHydrationListenerTransaction, n as activateHydrationBoundary$1, o as beginHydrationDirectListenerMode, r as clearDeferredHydrationBoundaries, s as endHydrationDirectListenerMode, t as installRendererBridge, u as discardHydrationListenerTransaction } from "./renderer-BU9TOqrA.js";
6
+ import { a as withIntrinsicHydrationAdoption, c as beginHydrationListenerTransaction, d as setStaticChildSlotsCacheEnabled, i as registerDeferredHydrationBoundary, l as commitHydrationListenerTransaction, n as activateHydrationBoundary$1, o as beginHydrationDirectListenerMode, r as clearDeferredHydrationBoundaries, s as endHydrationDirectListenerMode, t as installRendererBridge, u as discardHydrationListenerTransaction } from "./renderer-VSw0KKDG.js";
7
7
  import { _ as teardownNodeSubtree, d as removeAllListeners } from "./cleanup-CEF-cX49.js";
8
8
  import { T as assertExecutionModel, c as _applyManifest, d as getRouteRenderContext, f as getRouteRenderData, m as resolveRouteRequest, o as reviveDeferredValue, p as hasRouteRenderData, v as pageRenderEnvelope } from "./deferred-rdHAgyKe.js";
9
9
  import { c as stopHydrationRenderPhase, o as startHydrationRenderPhase } from "./render-context-D-DFk2WN.js";
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@ import { g as readScope, u as defineScope } from "./component-internal-DsM75Gl1.
4
4
  import { f as syncDerivedDependencySubscriptions, l as notifyReadableReaders, o as markReactivePropsDirtySource, p as withDerivedReadTracking, r as clearDerivedDependencySubscriptions, s as markReadableDerivedSubscribersDirty, u as recordReadableRead } from "./readable-B3VIOfd7.js";
5
5
  import { g as getSignal, i as claimHookIndex, p as getCurrentInstance } from "./component-scope-DzJEbYGE.js";
6
6
  import { n as isSnapshotSource } from "./snapshot-source-BB42xgwb.js";
7
- import { t as installRendererBridge } from "./renderer-BU9TOqrA.js";
7
+ import { t as installRendererBridge } from "./renderer-VSw0KKDG.js";
8
8
  import { a as registerSSRStyle } from "./render-context-D-DFk2WN.js";
9
9
  import { t as state } from "./state-BCl9DeiN.js";
10
10
  import { t as selector } from "./selector-DVwvof1M.js";
@@ -3466,10 +3466,9 @@ function updateMixedControlChildren(parent, children, forceUpdate) {
3466
3466
  if (!controlState) throw new Error("[updateElementChildren] Control boundary missing internal state");
3467
3467
  const childVNodes = evaluateControlBoundaryState(controlState);
3468
3468
  const cursorAfterBoundary = cursor ? isRangeStart(cursor) ? findRangeEnd(cursor)?.nextSibling ?? cursor.nextSibling : cursor.nextSibling : null;
3469
- const ranges = syncControlBoundaryInMixedParent(parent, controlState, childVNodes, cursor);
3469
+ const [ranges, postBoundaryCursor] = syncControlBoundaryInMixedParent(parent, controlState, childVNodes, cursor);
3470
3470
  if (controlState.kind === "for") {
3471
- const last = ranges[ranges.length - 1];
3472
- cursor = last ? last.end.nextSibling : cursorAfterBoundary?.parentNode === parent ? cursorAfterBoundary : cursor?.parentNode === parent ? cursor : null;
3471
+ cursor = postBoundaryCursor;
3473
3472
  continue;
3474
3473
  }
3475
3474
  for (const range of ranges) if (range.start.parentNode !== parent) moveRange(parent, range, cursor?.parentNode === parent ? cursor : null);
@@ -4433,7 +4432,12 @@ function adoptHydratedRange(parent, scope, before, vnode) {
4433
4432
  return range;
4434
4433
  }
4435
4434
  function getScopeRange(scope) {
4436
- if (scope.range) return scope.range;
4435
+ if (scope.range) {
4436
+ const host = scope.range.start;
4437
+ const ownedRange = host.__ASKR_INSTANCE ? getOwnedRange(host.__ASKR_INSTANCE) : void 0;
4438
+ if (ownedRange?.start === scope.range.start) scope.range = ownedRange;
4439
+ return scope.range;
4440
+ }
4437
4441
  if (!scope.dom) return null;
4438
4442
  const range = {
4439
4443
  start: scope.dom,
@@ -4443,6 +4447,10 @@ function getScopeRange(scope) {
4443
4447
  scope.range = range;
4444
4448
  return range;
4445
4449
  }
4450
+ function getRangeComponentFunction(range) {
4451
+ if (!range) return void 0;
4452
+ return range.start.__ASKR_INSTANCE?.fn;
4453
+ }
4446
4454
  function materializeChildScopeRange(vnode, parentNamespace, scope, scopeAlreadyActive = false) {
4447
4455
  const previousInstance = scope && !scopeAlreadyActive ? enterDomCommitScope(scope.componentInstance) : null;
4448
4456
  let dom;
@@ -4480,8 +4488,10 @@ function syncControlBoundaryScopeDom(parent, scope, vnode, before = null, allowH
4480
4488
  return resolvedRange;
4481
4489
  }
4482
4490
  if (_isDOMElement(vnode) && typeof vnode.type === "function") {
4483
- const synced = host.syncComponentElement(dom, vnode, vnode.type, (vnode.props ?? {}) || {}, getBoundaryParentNamespace(parent));
4491
+ if (resolvedRange && !resolvedRange.single && getRangeComponentFunction(resolvedRange) === vnode.type) return resolvedRange;
4492
+ const synced = host.syncComponentElement(resolvedRange?.start ?? dom, vnode, vnode.type, (vnode.props ?? {}) || {}, getBoundaryParentNamespace(parent));
4484
4493
  if (synced) {
4494
+ if (resolvedRange && !resolvedRange.single) return getScopeRange(scope);
4485
4495
  const nextRange = {
4486
4496
  start: synced,
4487
4497
  end: synced,
@@ -4531,10 +4541,6 @@ function teardownBoundaryRangeNode(node) {
4531
4541
  teardownNodeSubtree(node);
4532
4542
  node.parentNode?.removeChild(node);
4533
4543
  }
4534
- function syncControlBoundaryScopeNode(parent, scope, vnode) {
4535
- const range = syncControlBoundaryScopeDom(parent, scope, vnode, null, true, false);
4536
- return range?.single ? range.start : null;
4537
- }
4538
4544
  function syncControlBoundaryInMixedParent(parent, controlState, childrenVNodes, before) {
4539
4545
  if (controlState.kind === "for") {
4540
4546
  const ownedNodes = /* @__PURE__ */ new Set();
@@ -4606,7 +4612,7 @@ function syncControlBoundaryInMixedParent(parent, controlState, childrenVNodes,
4606
4612
  anchor = range.start;
4607
4613
  }
4608
4614
  clearBoundaryState(controlState);
4609
- return nextRanges;
4615
+ return [nextRanges, afterBoundary?.parentNode === parent ? afterBoundary : null];
4610
4616
  }
4611
4617
  const activeScope = controlState.activeScope;
4612
4618
  const activeVNode = childrenVNodes[0];
@@ -4622,7 +4628,7 @@ function syncControlBoundaryInMixedParent(parent, controlState, childrenVNodes,
4622
4628
  for (const range of controlState.lastRemovedRanges) if (range !== nextRange) removeRange(range, teardownBoundaryRangeNode);
4623
4629
  for (const node of controlState.lastRemovedNodes) if (node.parentNode === parent) teardownBoundaryRangeNode(node);
4624
4630
  clearBoundaryState(controlState);
4625
- return nextRange ? [nextRange] : [];
4631
+ return [nextRange ? [nextRange] : [], nextRange?.end.nextSibling ?? null];
4626
4632
  }
4627
4633
  //#endregion
4628
4634
  //#region src/renderer/boundary-commit-owner.ts
@@ -4755,6 +4761,10 @@ function createForBoundary(node, props, parentNamespace) {
4755
4761
  }
4756
4762
  //#endregion
4757
4763
  //#region src/renderer/boundaries.ts
4764
+ function syncControlBoundaryScopeNode(parent, scope, vnode) {
4765
+ const range = syncControlBoundaryScopeDom(parent, scope, vnode, null, true, false);
4766
+ return range?.single ? range.start : null;
4767
+ }
4758
4768
  let boundaryDOMHost = null;
4759
4769
  function configureBoundaryDOMHost(host) {
4760
4770
  boundaryDOMHost = host;
@@ -1,7 +1,7 @@
1
1
  import { r as flushRuntimeScheduler } from "../access-ePqdQqkV.js";
2
2
  import { r as computeRouteActivityMatches } from "../route-matching-BUwz4kfl.js";
3
3
  import { l as addInvalidationListener } from "../data-runtime-D68YOo9L.js";
4
- import { a as cleanupApp, r as createSPA, t as createIsland } from "../boot-CrpQQNAt.js";
4
+ import { a as cleanupApp, r as createSPA, t as createIsland } from "../boot-uK1hzONI.js";
5
5
  //#region src/testing/render.ts
6
6
  const renderStates = /* @__PURE__ */ new WeakMap();
7
7
  const eventConstructorNames = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@askrjs/askr",
3
- "version": "0.0.81",
3
+ "version": "0.0.83",
4
4
  "description": "Actor-backed deterministic UI framework",
5
5
  "keywords": [
6
6
  "askr",