@lvce-editor/editor-worker 17.1.0 → 18.0.0

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.
@@ -1335,6 +1335,10 @@ const sendMessagePortToEditorWorker = async (port, rpcId) => {
1335
1335
  const command = 'HandleMessagePort.handleMessagePort';
1336
1336
  await invokeAndTransfer$1('SendMessagePortToExtensionHostWorker.sendMessagePortToEditorWorker', port, command, rpcId);
1337
1337
  };
1338
+ const sendMessagePortToClipBoardWorker = async (port, rpcId) => {
1339
+ const command = 'ClipBoard.handleMessagePort';
1340
+ await invokeAndTransfer$1('SendMessagePortToExtensionHostWorker.sendMessagePortToClipBoardWorker', port, command, rpcId);
1341
+ };
1338
1342
  const sendMessagePortToOpenerWorker = async (port, rpcId) => {
1339
1343
  const command = 'HandleMessagePort.handleMessagePort';
1340
1344
  await invokeAndTransfer$1('SendMessagePortToExtensionHostWorker.sendMessagePortToOpenerWorker', port, command, rpcId);
@@ -1641,6 +1645,7 @@ const RendererWorker = {
1641
1645
  searchFileFetch,
1642
1646
  searchFileHtml,
1643
1647
  searchFileMemory,
1648
+ sendMessagePortToClipBoardWorker,
1644
1649
  sendMessagePortToEditorWorker,
1645
1650
  sendMessagePortToErrorWorker,
1646
1651
  sendMessagePortToExtensionHostWorker,
@@ -1991,7 +1996,7 @@ const getInitialLineState = initialLineState => {
1991
1996
  return deepCopy(initialLineState);
1992
1997
  };
1993
1998
 
1994
- const state$7 = {
1999
+ const state$8 = {
1995
2000
  warned: []
1996
2001
  };
1997
2002
  const flattenTokensArray = tokens => {
@@ -2003,10 +2008,10 @@ const flattenTokensArray = tokens => {
2003
2008
  return flattened;
2004
2009
  };
2005
2010
  const warnDeprecatedArrayReturn = (languageId, fn) => {
2006
- if (state$7.warned.includes(fn)) {
2011
+ if (state$8.warned.includes(fn)) {
2007
2012
  return;
2008
2013
  }
2009
- state$7.warned.push(fn);
2014
+ state$8.warned.push(fn);
2010
2015
  console.warn(`tokenizers without hasArrayReturn=false are deprecated (language ${languageId})`);
2011
2016
  };
2012
2017
  const safeTokenizeLine = (languageId, tokenizeLine, line, lineStateAtStart, hasArrayReturn) => {
@@ -2080,21 +2085,21 @@ const {
2080
2085
  set: set$5
2081
2086
  } = SyntaxHighlightingWorker;
2082
2087
 
2083
- const state$6 = {
2088
+ const state$7 = {
2084
2089
  pending: Object.create(null),
2085
2090
  tokenizers: Object.create(null)
2086
2091
  };
2087
2092
  const has = languageId => {
2088
- return languageId in state$6.tokenizers;
2093
+ return languageId in state$7.tokenizers;
2089
2094
  };
2090
2095
  const set$4 = (languageId, tokenizer) => {
2091
- state$6.tokenizers[languageId] = tokenizer;
2096
+ state$7.tokenizers[languageId] = tokenizer;
2092
2097
  };
2093
2098
  const get$4 = languageId => {
2094
- return state$6.tokenizers[languageId];
2099
+ return state$7.tokenizers[languageId];
2095
2100
  };
2096
2101
  const isPending = languageId => {
2097
- return languageId in state$6.pending;
2102
+ return languageId in state$7.pending;
2098
2103
  };
2099
2104
 
2100
2105
  const tokenMaps = Object.create(null);
@@ -3116,6 +3121,81 @@ const getUrlAtOffset = (editor, offset) => {
3116
3121
  return undefined;
3117
3122
  };
3118
3123
 
3124
+ const EditorChange = 1;
3125
+
3126
+ const state$6 = Object.create(null);
3127
+
3128
+ /**
3129
+ * Register a listener for a specific event type
3130
+ * @param listenerType - The type of event to listen for
3131
+ * @param rpcId - The RPC ID of the listener
3132
+ */
3133
+ const registerListener$1 = (listenerType, rpcId) => {
3134
+ number(listenerType);
3135
+ number(rpcId);
3136
+ if (!state$6[listenerType]) {
3137
+ state$6[listenerType] = [];
3138
+ }
3139
+
3140
+ // Avoid duplicate registrations
3141
+ if (!state$6[listenerType].includes(rpcId)) {
3142
+ state$6[listenerType].push(rpcId);
3143
+ }
3144
+ };
3145
+
3146
+ /**
3147
+ * Unregister a listener for a specific event type
3148
+ * @param listenerType - The type of event to listen for
3149
+ * @param rpcId - The RPC ID of the listener
3150
+ */
3151
+ const unregisterListener$1 = (listenerType, rpcId) => {
3152
+ number(listenerType);
3153
+ number(rpcId);
3154
+ if (state$6[listenerType]) {
3155
+ const index = state$6[listenerType].indexOf(rpcId);
3156
+ if (index !== -1) {
3157
+ state$6[listenerType].splice(index, 1);
3158
+ }
3159
+ }
3160
+ };
3161
+
3162
+ /**
3163
+ * Get all registered listeners for a specific event type
3164
+ * @param listenerType - The type of event
3165
+ * @returns Array of RPC IDs
3166
+ */
3167
+ const getListeners = listenerType => {
3168
+ number(listenerType);
3169
+ return state$6[listenerType] || [];
3170
+ };
3171
+
3172
+ /**
3173
+ * Notify all registered listeners of a specific event type
3174
+ * @param listenerType - The type of event that occurred
3175
+ * @param method - The method name to invoke on the listener
3176
+ * @param params - Parameters to pass to the listener method
3177
+ */
3178
+ const notifyListeners = async (listenerType, method, ...params) => {
3179
+ number(listenerType);
3180
+ string(method);
3181
+ const rpcIds = getListeners(listenerType);
3182
+
3183
+ // Notify all listeners in parallel
3184
+ const notifications = rpcIds.map(async rpcId => {
3185
+ try {
3186
+ const rpc = get$7(rpcId);
3187
+ if (rpc) {
3188
+ await rpc.invoke(method, ...params);
3189
+ }
3190
+ } catch (error) {
3191
+ // Silently ignore errors from individual listeners
3192
+ // to prevent one failing listener from affecting others
3193
+ console.warn(`Failed to notify listener ${rpcId}:`, error);
3194
+ }
3195
+ });
3196
+ await Promise.all(notifications);
3197
+ };
3198
+
3119
3199
  const splitLines = lines => {
3120
3200
  if (!lines) {
3121
3201
  return [''];
@@ -3555,6 +3635,12 @@ const scheduleDocumentAndCursorsSelections = async (editor, changes, selectionCh
3555
3635
  if (!editor.modified) {
3556
3636
  await notifyTabModifiedStatusChange(editor.uri);
3557
3637
  }
3638
+
3639
+ // Notify registered listeners about editor changes
3640
+ notifyListeners(EditorChange, 'handleEditorChanged', editor.uid, editor.uri, changes).catch(error => {
3641
+ // Silently ignore notification errors to not interrupt the edit flow
3642
+ console.warn('Failed to notify editor change listeners:', error);
3643
+ });
3558
3644
  const incrementalEdits = await getIncrementalEdits(editor, newEditorWithDecorations);
3559
3645
  const editorWithNewWidgets = await applyWidgetChanges(newEditorWithDecorations, changes);
3560
3646
  const newEditor2 = {
@@ -10830,6 +10916,17 @@ const moveLineUp = editor => {
10830
10916
  return editor;
10831
10917
  };
10832
10918
 
10919
+ /**
10920
+ * Register a listener for editor events
10921
+ * @param listenerType - The type of event to listen for (from ListenerType enum)
10922
+ * @param rpcId - The RPC ID of the listener that will be notified
10923
+ */
10924
+ const registerListener = (listenerType, rpcId) => {
10925
+ number(listenerType);
10926
+ number(rpcId);
10927
+ registerListener$1(listenerType, rpcId);
10928
+ };
10929
+
10833
10930
  const getCursorsVirtualDom = cursors => {
10834
10931
  const dom = [];
10835
10932
  for (const translate of cursors) {
@@ -11207,6 +11304,17 @@ const setDebugEnabled = (state, enabled) => {
11207
11304
  return state;
11208
11305
  };
11209
11306
 
11307
+ /**
11308
+ * Unregister a listener for editor events
11309
+ * @param listenerType - The type of event to stop listening for
11310
+ * @param rpcId - The RPC ID of the listener to unregister
11311
+ */
11312
+ const unregisterListener = (listenerType, rpcId) => {
11313
+ number(listenerType);
11314
+ number(rpcId);
11315
+ unregisterListener$1(listenerType, rpcId);
11316
+ };
11317
+
11210
11318
  const invoke = async (method, ...params) => {
11211
11319
  const worker = get$7(DebugWorker);
11212
11320
  return worker.invoke(method, ...params);
@@ -11500,6 +11608,8 @@ const commandMap = {
11500
11608
  'Hover.loadContent': loadContent,
11501
11609
  'Hover.render': renderHover,
11502
11610
  'Initialize.initialize': intialize,
11611
+ 'Listener.register': registerListener,
11612
+ 'Listener.unregister': unregisterListener,
11503
11613
  'SendMessagePortToExtensionHostWorker.sendMessagePortToExtensionHostWorker': sendMessagePortToExtensionHostWorker2
11504
11614
  };
11505
11615
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/editor-worker",
3
- "version": "17.1.0",
3
+ "version": "18.0.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git@github.com:lvce-editor/editor-worker.git"