@lvce-editor/editor-worker 19.58.0 → 19.58.1

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.
@@ -1748,7 +1748,7 @@ const codeGeneratorAccept = state => {
1748
1748
 
1749
1749
  const editorStates = create$9();
1750
1750
  const {
1751
- dispose: dispose$3,
1751
+ dispose: dispose$4,
1752
1752
  getCommandIds,
1753
1753
  registerCommands,
1754
1754
  wrapGetter
@@ -3490,6 +3490,93 @@ const getUrlAtOffset = (editor, offset) => {
3490
3490
  const EditorChange = 1;
3491
3491
  const EditorSelection$1 = 2;
3492
3492
 
3493
+ const deliveries = new Map();
3494
+ const getDelta = (previous, next) => {
3495
+ return Object.fromEntries(Object.entries(next).filter(([key, value]) => previous[key] !== value));
3496
+ };
3497
+ const flush = async delivery => {
3498
+ while (delivery.pending && !delivery.disposed) {
3499
+ const status = delivery.pendingStatus;
3500
+ delivery.pending = false;
3501
+ if (delivery.supportsDeltas === undefined) {
3502
+ try {
3503
+ delivery.supportsDeltas = (await delivery.rpc.invoke('StatusBar.supportsEditorStatusDeltas')) === true;
3504
+ } catch {
3505
+ delivery.supportsDeltas = false;
3506
+ }
3507
+ }
3508
+ if (delivery.disposed) {
3509
+ return;
3510
+ }
3511
+ let update = status;
3512
+ if (delivery.hasBaseline) {
3513
+ if (!delivery.baseline && !status) {
3514
+ continue;
3515
+ }
3516
+ if (delivery.baseline && status) {
3517
+ const delta = getDelta(delivery.baseline, status);
3518
+ if (Object.keys(delta).length === 0) {
3519
+ continue;
3520
+ }
3521
+ if (delivery.supportsDeltas) {
3522
+ update = delta;
3523
+ }
3524
+ }
3525
+ }
3526
+ try {
3527
+ await delivery.rpc.invoke('StatusBar.handleEditorStatusChanged', update);
3528
+ delivery.baseline = status;
3529
+ delivery.hasBaseline = true;
3530
+ } catch (error) {
3531
+ delivery.baseline = undefined;
3532
+ delivery.hasBaseline = false;
3533
+ console.warn('Failed to deliver editor status:', error);
3534
+ }
3535
+ }
3536
+ };
3537
+ const run$1 = async delivery => {
3538
+ try {
3539
+ await flush(delivery);
3540
+ } finally {
3541
+ delivery.running = undefined;
3542
+ }
3543
+ // An update can arrive after flush returns but before this continuation runs.
3544
+ if (delivery.pending && !delivery.disposed) {
3545
+ await start(delivery);
3546
+ }
3547
+ };
3548
+ const start = delivery => {
3549
+ delivery.running = run$1(delivery);
3550
+ return delivery.running;
3551
+ };
3552
+ const dispose$3 = rpcId => {
3553
+ const delivery = deliveries.get(rpcId);
3554
+ if (delivery) {
3555
+ delivery.disposed = true;
3556
+ deliveries.delete(rpcId);
3557
+ }
3558
+ };
3559
+ const send$2 = (rpcId, rpc, status) => {
3560
+ let delivery = deliveries.get(rpcId);
3561
+ if (!delivery || delivery.rpc !== rpc) {
3562
+ dispose$3(rpcId);
3563
+ delivery = {
3564
+ baseline: undefined,
3565
+ disposed: false,
3566
+ hasBaseline: false,
3567
+ pending: false,
3568
+ pendingStatus: undefined,
3569
+ rpc,
3570
+ running: undefined,
3571
+ supportsDeltas: undefined
3572
+ };
3573
+ deliveries.set(rpcId, delivery);
3574
+ }
3575
+ delivery.pendingStatus = status;
3576
+ delivery.pending = true;
3577
+ return delivery.running || start(delivery);
3578
+ };
3579
+
3493
3580
  const state$a = Object.create(null);
3494
3581
 
3495
3582
  /**
@@ -3518,6 +3605,9 @@ const registerListener$1 = (listenerType, rpcId) => {
3518
3605
  const unregisterListener$1 = (listenerType, rpcId) => {
3519
3606
  number(listenerType);
3520
3607
  number(rpcId);
3608
+ if (listenerType === EditorSelection$1) {
3609
+ dispose$3(rpcId);
3610
+ }
3521
3611
  if (Object.hasOwn(state$a, listenerType)) {
3522
3612
  const index = state$a[listenerType].indexOf(rpcId);
3523
3613
  if (index !== -1) {
@@ -5665,21 +5755,34 @@ const getEditorStatus = editor => {
5665
5755
  };
5666
5756
  };
5667
5757
 
5668
- const equals = (oldStatus, newStatus) => {
5669
- return oldStatus.column === newStatus.column && oldStatus.endOfLine === newStatus.endOfLine && oldStatus.encoding === newStatus.encoding && oldStatus.insertSpaces === newStatus.insertSpaces && oldStatus.languageId === newStatus.languageId && oldStatus.line === newStatus.line && oldStatus.tabSize === newStatus.tabSize;
5758
+ const sendToListener = async (rpcId, status) => {
5759
+ const rpc = get$9(rpcId);
5760
+ if (rpc) {
5761
+ await send$2(rpcId, rpc, status);
5762
+ }
5670
5763
  };
5671
- const notifyEditorStatusChange = async (oldEditor, newEditor) => {
5672
- if (newEditor.initial || !newEditor.focused) {
5764
+ const initializeListener = async rpcId => {
5765
+ if (!getListeners(EditorSelection$1).includes(rpcId)) {
5673
5766
  return;
5674
5767
  }
5675
- const newStatus = getEditorStatus(newEditor);
5676
- if (!oldEditor.initial && oldEditor.focused && equals(getEditorStatus(oldEditor), newStatus)) {
5768
+ const editor = getKeys$2().map(uid => get$8(Number(uid))?.newState).find(state => {
5769
+ const {
5770
+ focused,
5771
+ initial
5772
+ } = state || {};
5773
+ return focused && !initial;
5774
+ });
5775
+ await sendToListener(rpcId, editor ? getEditorStatus(editor) : undefined);
5776
+ };
5777
+ const notifyEditorStatusChange = async (_oldEditor, newEditor) => {
5778
+ if (newEditor.initial || !newEditor.focused) {
5677
5779
  return;
5678
5780
  }
5679
- await notifyListeners(EditorSelection$1, 'StatusBar.handleEditorStatusChanged', newStatus);
5781
+ const status = getEditorStatus(newEditor);
5782
+ await Promise.all(getListeners(EditorSelection$1).map(rpcId => sendToListener(rpcId, status)));
5680
5783
  };
5681
5784
  const notifyEditorStatusCleared = async () => {
5682
- await notifyListeners(EditorSelection$1, 'StatusBar.handleEditorStatusChanged', undefined);
5785
+ await Promise.all(getListeners(EditorSelection$1).map(rpcId => sendToListener(rpcId, undefined)));
5683
5786
  };
5684
5787
 
5685
5788
  const addWidget$1 = widget => {
@@ -5774,7 +5877,7 @@ const disposeEditor = async editorUid => {
5774
5877
  });
5775
5878
  dispose$1(editorUid);
5776
5879
  dispose$2(editorUid);
5777
- dispose$3(editorUid);
5880
+ dispose$4(editorUid);
5778
5881
  if (getKeys$2().length === 0) {
5779
5882
  await notifyEditorStatusCleared();
5780
5883
  }
@@ -14044,6 +14147,7 @@ const handleMessagePort = async (port, rpcId) => {
14044
14147
  });
14045
14148
  if (rpcId) {
14046
14149
  set$h(rpcId, rpc);
14150
+ await initializeListener(rpcId);
14047
14151
  }
14048
14152
  };
14049
14153
 
@@ -14727,10 +14831,11 @@ const refreshGutterDecorationsAll = async () => {
14727
14831
  * @param listenerType - The type of event to listen for (from ListenerType enum)
14728
14832
  * @param rpcId - The RPC ID of the listener that will be notified
14729
14833
  */
14730
- const registerListener = (listenerType, rpcId) => {
14834
+ const registerListener = async (listenerType, rpcId) => {
14731
14835
  number(listenerType);
14732
14836
  number(rpcId);
14733
14837
  registerListener$1(listenerType, rpcId);
14838
+ await initializeListener(rpcId);
14734
14839
  };
14735
14840
 
14736
14841
  const renderAdditionalFocusContext$1 = (oldState, newState) => {
@@ -16545,7 +16650,7 @@ const commandMap = {
16545
16650
  'Id.configure': configure,
16546
16651
  'Initialize.initialize': intialize,
16547
16652
  'Listener.register': registerListener,
16548
- 'Listener.registerListener': registerListener$1,
16653
+ 'Listener.registerListener': registerListener,
16549
16654
  'Listener.unregister': unregisterListener,
16550
16655
  'SendMessagePortToExtensionHostWorker.sendMessagePortToExtensionHostWorker': sendDeprecatedExtensionHostPortToExtensionManagementWorker,
16551
16656
  'SendMessagePortToExtensionManagementWorker.sendMessagePortToExtensionManagementWorker': sendMessagePortToExtensionManagementWorker
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/editor-worker",
3
- "version": "19.58.0",
3
+ "version": "19.58.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git@github.com:lvce-editor/editor-worker.git"