@lvce-editor/renderer-process 30.81.7 → 30.81.8

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.
@@ -1789,7 +1789,7 @@ const hydrate$4 = async () => {
1789
1789
  };
1790
1790
 
1791
1791
  // TODO needed?
1792
- const dispose$p = async () => {
1792
+ const dispose$q = async () => {
1793
1793
  const rpc = state$n.rpc;
1794
1794
  state$n.rpc = undefined;
1795
1795
  await rpc?.dispose();
@@ -1971,7 +1971,7 @@ const initializeLayout = async href => {
1971
1971
  }
1972
1972
  return true;
1973
1973
  };
1974
- const dispose$o = async () => {
1974
+ const dispose$p = async () => {
1975
1975
  state$m.stopObserving?.();
1976
1976
  state$m.stopObserving = undefined;
1977
1977
  const client = state$m.client;
@@ -2049,7 +2049,7 @@ const apply = (uid, args) => {
2049
2049
  for (const index of indices) scaled[index] *= view.speed;
2050
2050
  return scaled;
2051
2051
  };
2052
- const dispose$n = uid => {
2052
+ const dispose$o = uid => {
2053
2053
  views.delete(uid);
2054
2054
  };
2055
2055
 
@@ -4679,7 +4679,7 @@ const handleMessagePort$1 = async port => {
4679
4679
  }
4680
4680
  await rpc.invokeAndTransfer('DragAndDrop.handleMessagePort', port);
4681
4681
  };
4682
- const dispose$m = async () => {
4682
+ const dispose$n = async () => {
4683
4683
  const rpc = state$h.rpc;
4684
4684
  state$h.rpc = undefined;
4685
4685
  await rpc?.dispose();
@@ -5168,7 +5168,7 @@ const create$t = async ({
5168
5168
  // @ts-ignore
5169
5169
  return module.create(options);
5170
5170
  };
5171
- const dispose$l = id => {
5171
+ const dispose$m = id => {
5172
5172
  const worker = remove$3(id);
5173
5173
  if (worker) {
5174
5174
  remove$6(worker);
@@ -5323,7 +5323,7 @@ const applyPatch$1 = (element, patches, eventMap = {}, id = 0) => {
5323
5323
  }
5324
5324
  applyPatch$2(element, patches, eventMap, id);
5325
5325
  };
5326
- const dispose$k = root => {
5326
+ const dispose$l = root => {
5327
5327
  state$f.renderer?.dispose(root);
5328
5328
  };
5329
5329
 
@@ -5342,6 +5342,10 @@ const state$e = {
5342
5342
  handled: false
5343
5343
  };
5344
5344
  const hasFocus = () => !!document.activeElement && document.activeElement !== document.body && document.activeElement !== document.documentElement;
5345
+ const dispose$k = viewletId => {
5346
+ const pending = state$e.pending;
5347
+ if (pending && pending.id === viewletId) pending.cancel();
5348
+ };
5345
5349
 
5346
5350
  // The route's composer can arrive after the initial workbench frame.
5347
5351
  const focus$d = viewletId => {
@@ -5356,26 +5360,56 @@ const focus$d = viewletId => {
5356
5360
  return;
5357
5361
  }
5358
5362
  let cancelled = false;
5363
+ let mutations;
5364
+ let sizes;
5365
+ let observed;
5359
5366
  const cancel = () => {
5360
5367
  cancelled = true;
5361
5368
  document.removeEventListener('focusin', cancel, true);
5369
+ mutations?.disconnect();
5370
+ sizes?.disconnect();
5371
+ state$e.pending = undefined;
5372
+ };
5373
+ state$e.pending = {
5374
+ cancel,
5375
+ id: viewletId
5362
5376
  };
5363
5377
  document.addEventListener('focusin', cancel, {
5364
5378
  capture: true
5365
5379
  });
5366
- requestAnimationFrame(() => {
5367
- requestAnimationFrame(() => {
5368
- const shouldFocus = !cancelled && !hasFocus();
5380
+ const tryFocus = () => {
5381
+ if (cancelled) return;
5382
+ const input = get$b(viewletId)?.state.$Viewlet.querySelector(selector);
5383
+ if (hasFocus() || !(input instanceof HTMLTextAreaElement)) {
5369
5384
  cancel();
5370
- // Resolve the current DOM: startup may have rendered the view again.
5371
- const input = get$b(viewletId)?.state.$Viewlet.querySelector(selector);
5372
- if (shouldFocus && input instanceof HTMLTextAreaElement && input.isConnected && input.getClientRects().length > 0) {
5373
- input.focus({
5374
- preventScroll: true
5375
- });
5385
+ return;
5386
+ }
5387
+ if (input.isConnected && input.getClientRects().length > 0) {
5388
+ input.focus({
5389
+ preventScroll: true
5390
+ });
5391
+ if (document.activeElement === input) {
5392
+ cancel();
5393
+ return;
5376
5394
  }
5395
+ }
5396
+ // A detached or hidden first render is not the user's focus opportunity.
5397
+ // Watch actual mounting/layout rather than consuming it after a frame count.
5398
+ mutations ??= new MutationObserver(tryFocus);
5399
+ sizes ??= new ResizeObserver(tryFocus);
5400
+ mutations.observe(document.body, {
5401
+ attributeFilter: ['class', 'style', 'hidden', 'disabled', 'inert'],
5402
+ attributes: true,
5403
+ childList: true,
5404
+ subtree: true
5377
5405
  });
5378
- });
5406
+ if (observed !== input) {
5407
+ sizes.disconnect();
5408
+ sizes.observe(input);
5409
+ observed = input;
5410
+ }
5411
+ };
5412
+ requestAnimationFrame(() => requestAnimationFrame(tryFocus));
5379
5413
  };
5380
5414
 
5381
5415
  const state$d = {
@@ -10432,11 +10466,12 @@ const commitPending = (uid, transactionId) => {
10432
10466
  executeCommands(take(uid, transactionId, getFocusVersion()));
10433
10467
  };
10434
10468
  const dispose$4 = id => {
10469
+ dispose$k(id);
10435
10470
  try {
10436
10471
  number(id);
10437
10472
  restoreComponentDom(id);
10438
10473
  dispose$j(id);
10439
- dispose$n(id);
10474
+ dispose$o(id);
10440
10475
  unregisterView(id);
10441
10476
  dispose$i(id);
10442
10477
  const instance = get$b(id);
@@ -10447,7 +10482,7 @@ const dispose$4 = id => {
10447
10482
  if (instance.factory.dispose) {
10448
10483
  instance.factory.dispose(instance.state);
10449
10484
  }
10450
- dispose$k(instance.state.$Viewlet);
10485
+ dispose$l(instance.state.$Viewlet);
10451
10486
  if (instance.state.$Viewlet?.isConnected) {
10452
10487
  instance.state.$Viewlet.remove();
10453
10488
  }
@@ -10784,9 +10819,9 @@ const restart = async () => {
10784
10819
  const snapshot = await invoke$1('Reload.prepareHotReload');
10785
10820
  set$9(snapshot);
10786
10821
  await invoke$1('Reload.retire');
10787
- await dispose$o();
10788
10822
  await dispose$p();
10789
- await dispose$m();
10823
+ await dispose$q();
10824
+ await dispose$n();
10790
10825
  terminateAll();
10791
10826
  clear$2();
10792
10827
  clear$4();
@@ -12850,7 +12885,7 @@ const commandMap = {
12850
12885
  'HotReload.request': request,
12851
12886
  'InitData.getInitData': getInitData,
12852
12887
  'IpcParent.create': create$t,
12853
- 'IpcParent.dispose': dispose$l,
12888
+ 'IpcParent.dispose': dispose$m,
12854
12889
  'KeyBindings.setIdentifiers': setIdentifiers,
12855
12890
  'Layout.getBounds': getBounds,
12856
12891
  'Location.getHref': getHref,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/renderer-process",
3
- "version": "30.81.7",
3
+ "version": "30.81.8",
4
4
  "keywords": [
5
5
  "lvce-editor",
6
6
  "renderer-process"