@superdoc-dev/cli 0.5.0-next.60 → 0.5.0-next.62

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.
Files changed (2) hide show
  1. package/dist/index.js +967 -528
  2. package/package.json +8 -8
package/dist/index.js CHANGED
@@ -27924,7 +27924,7 @@ var init_y_websocket = __esm(() => {
27924
27924
  };
27925
27925
  });
27926
27926
 
27927
- // ../../node_modules/.pnpm/@liveblocks+core@3.15.5_@types+json-schema@7.0.15/node_modules/@liveblocks/core/dist/index.js
27927
+ // ../../node_modules/.pnpm/@liveblocks+core@3.17.0_@types+json-schema@7.0.15/node_modules/@liveblocks/core/dist/index.js
27928
27928
  function error(msg) {
27929
27929
  if (false) {} else {
27930
27930
  throw new Error(msg);
@@ -31280,6 +31280,108 @@ function HACK_addIntentAndDeletedIdToOperation(ops, deletedId) {
31280
31280
  }
31281
31281
  });
31282
31282
  }
31283
+ function deepLiveify(value, config) {
31284
+ if (Array.isArray(value)) {
31285
+ return new LiveList(value.map((v) => deepLiveify(v, config)));
31286
+ } else if (isPlainObject(value)) {
31287
+ const init = {};
31288
+ const locals = {};
31289
+ for (const key in value) {
31290
+ const val = value[key];
31291
+ if (val === undefined) {
31292
+ continue;
31293
+ }
31294
+ const subConfig = isPlainObject(config) ? config[key] : config;
31295
+ if (subConfig === false) {
31296
+ locals[key] = val;
31297
+ } else if (subConfig === "atomic") {
31298
+ init[key] = val;
31299
+ } else {
31300
+ init[key] = deepLiveify(val, subConfig);
31301
+ }
31302
+ }
31303
+ const lo = new LiveObject(init);
31304
+ for (const key in locals) {
31305
+ lo.setLocal(key, locals[key]);
31306
+ }
31307
+ return lo;
31308
+ } else {
31309
+ return value;
31310
+ }
31311
+ }
31312
+ function reconcile(live, json, config) {
31313
+ if (isLiveObject(live) && isPlainObject(json)) {
31314
+ return reconcileLiveObject(live, json, config);
31315
+ } else if (isLiveList(live) && Array.isArray(json)) {
31316
+ return reconcileLiveList(live, json, config);
31317
+ } else if (isLiveMap(live) && isPlainObject(json)) {
31318
+ return reconcileLiveMap(live, config);
31319
+ } else {
31320
+ return deepLiveify(json, config);
31321
+ }
31322
+ }
31323
+ function reconcileLiveMap(_liveMap, _config) {
31324
+ throw new Error("Reconciling a LiveMap is not supported yet");
31325
+ }
31326
+ function reconcileLiveObject(liveObj, jsonObj, config) {
31327
+ const currentKeys = liveObj.keys();
31328
+ for (const key in jsonObj) {
31329
+ currentKeys.delete(key);
31330
+ const newVal = jsonObj[key];
31331
+ if (newVal === undefined) {
31332
+ liveObj.delete(key);
31333
+ continue;
31334
+ }
31335
+ const subConfig = isPlainObject(config) ? config[key] : config;
31336
+ if (subConfig === false) {
31337
+ liveObj.setLocal(key, newVal);
31338
+ } else if (subConfig === "atomic") {
31339
+ const curVal = liveObj.get(key);
31340
+ if (curVal !== newVal) {
31341
+ liveObj.set(key, newVal);
31342
+ }
31343
+ } else {
31344
+ const curVal = liveObj.get(key);
31345
+ if (curVal === undefined) {
31346
+ liveObj.set(key, deepLiveify(newVal, subConfig));
31347
+ } else if (isLiveStructure(curVal)) {
31348
+ const next = reconcile(curVal, newVal, subConfig);
31349
+ if (next !== curVal) {
31350
+ liveObj.set(key, next);
31351
+ }
31352
+ } else if (curVal !== newVal) {
31353
+ liveObj.set(key, deepLiveify(newVal, subConfig));
31354
+ }
31355
+ }
31356
+ }
31357
+ for (const key of currentKeys) {
31358
+ liveObj.delete(key);
31359
+ }
31360
+ return liveObj;
31361
+ }
31362
+ function reconcileLiveList(liveList, jsonArr, config) {
31363
+ const curLen = liveList.length;
31364
+ const newLen = jsonArr.length;
31365
+ for (let i = 0;i < Math.min(curLen, newLen); i++) {
31366
+ const curVal = liveList.get(i);
31367
+ const newVal = jsonArr[i];
31368
+ if (isLiveStructure(curVal)) {
31369
+ const next = reconcile(curVal, newVal, config);
31370
+ if (next !== curVal) {
31371
+ liveList.set(i, next);
31372
+ }
31373
+ } else if (curVal !== newVal) {
31374
+ liveList.set(i, deepLiveify(newVal, config));
31375
+ }
31376
+ }
31377
+ for (let i = curLen;i < newLen; i++) {
31378
+ liveList.push(deepLiveify(jsonArr[i], config));
31379
+ }
31380
+ for (let i = curLen - 1;i >= newLen; i--) {
31381
+ liveList.delete(i);
31382
+ }
31383
+ return liveList;
31384
+ }
31283
31385
  function creationOpToLiveNode(op) {
31284
31386
  return lsonToLiveNode(creationOpToLson(op));
31285
31387
  }
@@ -31584,6 +31686,8 @@ function defaultMessageFromContext(context) {
31584
31686
  return "Could not update notification settings";
31585
31687
  case "LARGE_MESSAGE_ERROR":
31586
31688
  return "Could not send large message";
31689
+ case "FEED_REQUEST_ERROR":
31690
+ return context.reason ?? "Feed request failed";
31587
31691
  default:
31588
31692
  return assertNever(context, "Unhandled case");
31589
31693
  }
@@ -31767,9 +31871,13 @@ function createRoom(options, config) {
31767
31871
  }
31768
31872
  context.activeBatch.reverseOps.pushLeft(reverse);
31769
31873
  } else {
31770
- addToUndoStack(reverse);
31771
- context.redoStack.length = 0;
31772
- dispatchOps(ops);
31874
+ if (reverse.length > 0) {
31875
+ addToUndoStack(reverse);
31876
+ }
31877
+ if (ops.length > 0) {
31878
+ context.redoStack.length = 0;
31879
+ dispatchOps(ops);
31880
+ }
31773
31881
  notify({ storageUpdates });
31774
31882
  }
31775
31883
  }
@@ -31790,6 +31898,7 @@ function createRoom(options, config) {
31790
31898
  storageStatus: makeEventSource(),
31791
31899
  ydoc: makeEventSource(),
31792
31900
  comments: makeEventSource(),
31901
+ feeds: makeEventSource(),
31793
31902
  roomWillDestroy: makeEventSource()
31794
31903
  };
31795
31904
  async function createTextMention(mentionId, mention) {
@@ -31866,17 +31975,18 @@ function createRoom(options, config) {
31866
31975
  context.root = LiveObject._fromItems(nodes, context.pool);
31867
31976
  }
31868
31977
  const canWrite = self2.get()?.canWrite ?? true;
31869
- const stackSizeBefore = context.undoStack.length;
31870
- for (const key in context.initialStorage) {
31871
- if (context.root.get(key) === undefined) {
31872
- if (canWrite) {
31873
- context.root.set(key, cloneLson(context.initialStorage[key]));
31874
- } else {
31875
- warn2(`Attempted to populate missing storage key '${key}', but current user has no write access`);
31978
+ const root = context.root;
31979
+ withoutHistory(() => {
31980
+ for (const key in context.initialStorage) {
31981
+ if (root.get(key) === undefined) {
31982
+ if (canWrite) {
31983
+ root.set(key, cloneLson(context.initialStorage[key]));
31984
+ } else {
31985
+ warn2(`Attempted to populate missing storage key '${key}', but current user has no write access`);
31986
+ }
31876
31987
  }
31877
31988
  }
31878
- }
31879
- context.undoStack.length = stackSizeBefore;
31989
+ });
31880
31990
  }
31881
31991
  function _addToRealUndoStack(frames) {
31882
31992
  if (context.undoStack.length >= 50) {
@@ -32160,6 +32270,9 @@ function createRoom(options, config) {
32160
32270
  notify(result.updates);
32161
32271
  sendMessages(messages);
32162
32272
  }
32273
+ function isFeedRequestFailedMsg(msg) {
32274
+ return msg.type === ServerMsgCode.FEED_REQUEST_FAILED;
32275
+ }
32163
32276
  function handleServerMessage(event) {
32164
32277
  if (typeof event.data !== "string") {
32165
32278
  return;
@@ -32259,6 +32372,92 @@ function createRoom(options, config) {
32259
32372
  eventHub.comments.notify(message);
32260
32373
  break;
32261
32374
  }
32375
+ case ServerMsgCode.FEEDS_LIST: {
32376
+ const feedsListMsg = message;
32377
+ const pending = pendingFeedsRequests.get(feedsListMsg.requestId);
32378
+ if (pending) {
32379
+ pending.resolve({
32380
+ feeds: feedsListMsg.feeds,
32381
+ nextCursor: feedsListMsg.nextCursor
32382
+ });
32383
+ pendingFeedsRequests.delete(feedsListMsg.requestId);
32384
+ }
32385
+ eventHub.feeds.notify(feedsListMsg);
32386
+ break;
32387
+ }
32388
+ case ServerMsgCode.FEEDS_ADDED: {
32389
+ const feedsAddedMsg = message;
32390
+ eventHub.feeds.notify(feedsAddedMsg);
32391
+ tryResolvePendingFeedMutationsFromFeedsEvent(feedsAddedMsg);
32392
+ break;
32393
+ }
32394
+ case ServerMsgCode.FEEDS_UPDATED: {
32395
+ const feedsUpdatedMsg = message;
32396
+ eventHub.feeds.notify(feedsUpdatedMsg);
32397
+ tryResolvePendingFeedMutationsFromFeedsEvent(feedsUpdatedMsg);
32398
+ break;
32399
+ }
32400
+ case ServerMsgCode.FEED_DELETED: {
32401
+ eventHub.feeds.notify(message);
32402
+ tryResolvePendingFeedMutationsFromFeedsEvent(message);
32403
+ break;
32404
+ }
32405
+ case ServerMsgCode.FEED_MESSAGES_LIST: {
32406
+ const feedMsgsListMsg = message;
32407
+ const pending = pendingFeedMessagesRequests.get(feedMsgsListMsg.requestId);
32408
+ if (pending) {
32409
+ pending.resolve({
32410
+ messages: feedMsgsListMsg.messages,
32411
+ nextCursor: feedMsgsListMsg.nextCursor
32412
+ });
32413
+ pendingFeedMessagesRequests.delete(feedMsgsListMsg.requestId);
32414
+ }
32415
+ eventHub.feeds.notify(feedMsgsListMsg);
32416
+ break;
32417
+ }
32418
+ case ServerMsgCode.FEED_MESSAGES_ADDED: {
32419
+ const feedMsgsAddedMsg = message;
32420
+ eventHub.feeds.notify(feedMsgsAddedMsg);
32421
+ tryResolvePendingFeedMutationsFromFeedsEvent(feedMsgsAddedMsg);
32422
+ break;
32423
+ }
32424
+ case ServerMsgCode.FEED_MESSAGES_UPDATED: {
32425
+ const feedMsgsUpdatedMsg = message;
32426
+ eventHub.feeds.notify(feedMsgsUpdatedMsg);
32427
+ tryResolvePendingFeedMutationsFromFeedsEvent(feedMsgsUpdatedMsg);
32428
+ break;
32429
+ }
32430
+ case ServerMsgCode.FEED_MESSAGES_DELETED: {
32431
+ eventHub.feeds.notify(message);
32432
+ tryResolvePendingFeedMutationsFromFeedsEvent(message);
32433
+ break;
32434
+ }
32435
+ case ServerMsgCode.FEED_REQUEST_FAILED: {
32436
+ if (!isFeedRequestFailedMsg(message)) {
32437
+ break;
32438
+ }
32439
+ const { requestId, code, reason } = message;
32440
+ const err = new LiveblocksError(reason ?? "Feed request failed", {
32441
+ type: "FEED_REQUEST_ERROR",
32442
+ roomId,
32443
+ requestId,
32444
+ code,
32445
+ reason
32446
+ });
32447
+ if (pendingFeedMutations.has(requestId)) {
32448
+ settleFeedMutation(requestId, "error", err);
32449
+ } else if (pendingFeedsRequests.has(requestId)) {
32450
+ const pending = pendingFeedsRequests.get(requestId);
32451
+ pendingFeedsRequests.delete(requestId);
32452
+ pending?.reject(err);
32453
+ } else if (pendingFeedMessagesRequests.has(requestId)) {
32454
+ const pending = pendingFeedMessagesRequests.get(requestId);
32455
+ pendingFeedMessagesRequests.delete(requestId);
32456
+ pending?.reject(err);
32457
+ }
32458
+ eventHub.feeds.notify(message);
32459
+ break;
32460
+ }
32262
32461
  case ServerMsgCode.STORAGE_STATE_V7:
32263
32462
  default:
32264
32463
  break;
@@ -32353,6 +32552,137 @@ function createRoom(options, config) {
32353
32552
  }
32354
32553
  let _getStorage$ = null;
32355
32554
  let _resolveStoragePromise = null;
32555
+ const pendingFeedsRequests = /* @__PURE__ */ new Map;
32556
+ const pendingFeedMessagesRequests = /* @__PURE__ */ new Map;
32557
+ const pendingFeedMutations = /* @__PURE__ */ new Map;
32558
+ const pendingAddMessageFifoByFeed = /* @__PURE__ */ new Map;
32559
+ function settleFeedMutation(requestId, outcome, error3) {
32560
+ const pending = pendingFeedMutations.get(requestId);
32561
+ if (pending === undefined) {
32562
+ return;
32563
+ }
32564
+ clearTimeout(pending.timeoutId);
32565
+ pendingFeedMutations.delete(requestId);
32566
+ if (pending.kind === "add-message" && !pending.expectedClientMessageId) {
32567
+ const q = pendingAddMessageFifoByFeed.get(pending.feedId);
32568
+ if (q !== undefined) {
32569
+ const idx = q.indexOf(requestId);
32570
+ if (idx >= 0) {
32571
+ q.splice(idx, 1);
32572
+ }
32573
+ if (q.length === 0) {
32574
+ pendingAddMessageFifoByFeed.delete(pending.feedId);
32575
+ }
32576
+ }
32577
+ }
32578
+ if (outcome === "ok") {
32579
+ pending.resolve();
32580
+ } else {
32581
+ pending.reject(error3 ?? new Error("Feed mutation failed"));
32582
+ }
32583
+ }
32584
+ function registerFeedMutation(requestId, kind, feedId, options2) {
32585
+ const { promise, resolve, reject } = Promise_withResolvers();
32586
+ const timeoutId = setTimeout(() => {
32587
+ if (pendingFeedMutations.has(requestId)) {
32588
+ settleFeedMutation(requestId, "error", new Error("Feed mutation timeout"));
32589
+ }
32590
+ }, FEEDS_TIMEOUT);
32591
+ pendingFeedMutations.set(requestId, {
32592
+ resolve,
32593
+ reject,
32594
+ timeoutId,
32595
+ kind,
32596
+ feedId,
32597
+ messageId: options2?.messageId,
32598
+ expectedClientMessageId: options2?.expectedClientMessageId
32599
+ });
32600
+ if (kind === "add-message" && options2?.expectedClientMessageId === undefined) {
32601
+ const q = pendingAddMessageFifoByFeed.get(feedId) ?? [];
32602
+ q.push(requestId);
32603
+ pendingAddMessageFifoByFeed.set(feedId, q);
32604
+ }
32605
+ return promise;
32606
+ }
32607
+ function tryResolvePendingFeedMutationsFromFeedsEvent(message) {
32608
+ switch (message.type) {
32609
+ case ServerMsgCode.FEEDS_ADDED: {
32610
+ for (const feed of message.feeds) {
32611
+ for (const [requestId, pending] of [...pendingFeedMutations]) {
32612
+ if (pending.kind === "add-feed" && pending.feedId === feed.feedId) {
32613
+ settleFeedMutation(requestId, "ok");
32614
+ break;
32615
+ }
32616
+ }
32617
+ }
32618
+ break;
32619
+ }
32620
+ case ServerMsgCode.FEEDS_UPDATED: {
32621
+ for (const feed of message.feeds) {
32622
+ for (const [requestId, pending] of [...pendingFeedMutations]) {
32623
+ if (pending.kind === "update-feed" && pending.feedId === feed.feedId) {
32624
+ settleFeedMutation(requestId, "ok");
32625
+ }
32626
+ }
32627
+ }
32628
+ break;
32629
+ }
32630
+ case ServerMsgCode.FEED_DELETED: {
32631
+ for (const [requestId, pending] of [...pendingFeedMutations]) {
32632
+ if (pending.kind === "delete-feed" && pending.feedId === message.feedId) {
32633
+ settleFeedMutation(requestId, "ok");
32634
+ break;
32635
+ }
32636
+ }
32637
+ break;
32638
+ }
32639
+ case ServerMsgCode.FEED_MESSAGES_ADDED: {
32640
+ for (const m of message.messages) {
32641
+ let matched = false;
32642
+ for (const [requestId, pending] of [...pendingFeedMutations]) {
32643
+ if (pending.kind === "add-message" && pending.feedId === message.feedId && pending.expectedClientMessageId === m.id) {
32644
+ settleFeedMutation(requestId, "ok");
32645
+ matched = true;
32646
+ break;
32647
+ }
32648
+ }
32649
+ if (!matched) {
32650
+ const q = pendingAddMessageFifoByFeed.get(message.feedId);
32651
+ const headId = q?.[0];
32652
+ if (headId !== undefined) {
32653
+ const pending = pendingFeedMutations.get(headId);
32654
+ if (pending?.kind === "add-message" && pending.expectedClientMessageId === undefined) {
32655
+ settleFeedMutation(headId, "ok");
32656
+ }
32657
+ }
32658
+ }
32659
+ }
32660
+ break;
32661
+ }
32662
+ case ServerMsgCode.FEED_MESSAGES_UPDATED: {
32663
+ for (const m of message.messages) {
32664
+ for (const [requestId, pending] of [...pendingFeedMutations]) {
32665
+ if (pending.kind === "update-message" && pending.feedId === message.feedId && pending.messageId === m.id) {
32666
+ settleFeedMutation(requestId, "ok");
32667
+ }
32668
+ }
32669
+ }
32670
+ break;
32671
+ }
32672
+ case ServerMsgCode.FEED_MESSAGES_DELETED: {
32673
+ for (const mid of message.messageIds) {
32674
+ for (const [requestId, pending] of [...pendingFeedMutations]) {
32675
+ if (pending.kind === "delete-message" && pending.feedId === message.feedId && pending.messageId === mid) {
32676
+ settleFeedMutation(requestId, "ok");
32677
+ }
32678
+ }
32679
+ }
32680
+ break;
32681
+ }
32682
+ default:
32683
+ break;
32684
+ }
32685
+ }
32356
32686
  function processInitialStorage(nodes) {
32357
32687
  const unacknowledgedOps = new Map(context.unacknowledgedOps);
32358
32688
  createOrUpdateRootFromMessage(nodes);
@@ -32423,6 +32753,138 @@ function createRoom(options, config) {
32423
32753
  }
32424
32754
  flushNowOrSoon();
32425
32755
  }
32756
+ async function fetchFeeds(options2) {
32757
+ const requestId = nanoid();
32758
+ const { promise, resolve, reject } = Promise_withResolvers();
32759
+ pendingFeedsRequests.set(requestId, { resolve, reject });
32760
+ const message = {
32761
+ type: ClientMsgCode.FETCH_FEEDS,
32762
+ requestId,
32763
+ cursor: options2?.cursor,
32764
+ since: options2?.since,
32765
+ limit: options2?.limit,
32766
+ metadata: options2?.metadata
32767
+ };
32768
+ context.buffer.messages.push(message);
32769
+ flushNowOrSoon();
32770
+ setTimeout(() => {
32771
+ if (pendingFeedsRequests.has(requestId)) {
32772
+ pendingFeedsRequests.delete(requestId);
32773
+ reject(new Error("Feeds fetch timeout"));
32774
+ }
32775
+ }, FEEDS_TIMEOUT);
32776
+ return promise;
32777
+ }
32778
+ async function fetchFeedMessages(feedId, options2) {
32779
+ const requestId = nanoid();
32780
+ const { promise, resolve, reject } = Promise_withResolvers();
32781
+ pendingFeedMessagesRequests.set(requestId, { resolve, reject });
32782
+ const message = {
32783
+ type: ClientMsgCode.FETCH_FEED_MESSAGES,
32784
+ requestId,
32785
+ feedId,
32786
+ cursor: options2?.cursor,
32787
+ since: options2?.since,
32788
+ limit: options2?.limit
32789
+ };
32790
+ context.buffer.messages.push(message);
32791
+ flushNowOrSoon();
32792
+ setTimeout(() => {
32793
+ if (pendingFeedMessagesRequests.has(requestId)) {
32794
+ pendingFeedMessagesRequests.delete(requestId);
32795
+ reject(new Error("Feed messages fetch timeout"));
32796
+ }
32797
+ }, FEEDS_TIMEOUT);
32798
+ return promise;
32799
+ }
32800
+ function addFeed(feedId, options2) {
32801
+ const requestId = nanoid();
32802
+ const promise = registerFeedMutation(requestId, "add-feed", feedId);
32803
+ const message = {
32804
+ type: ClientMsgCode.ADD_FEED,
32805
+ requestId,
32806
+ feedId,
32807
+ metadata: options2?.metadata,
32808
+ createdAt: options2?.createdAt
32809
+ };
32810
+ context.buffer.messages.push(message);
32811
+ flushNowOrSoon();
32812
+ return promise;
32813
+ }
32814
+ function updateFeed(feedId, metadata) {
32815
+ const requestId = nanoid();
32816
+ const promise = registerFeedMutation(requestId, "update-feed", feedId);
32817
+ const message = {
32818
+ type: ClientMsgCode.UPDATE_FEED,
32819
+ requestId,
32820
+ feedId,
32821
+ metadata
32822
+ };
32823
+ context.buffer.messages.push(message);
32824
+ flushNowOrSoon();
32825
+ return promise;
32826
+ }
32827
+ function deleteFeed(feedId) {
32828
+ const requestId = nanoid();
32829
+ const promise = registerFeedMutation(requestId, "delete-feed", feedId);
32830
+ const message = {
32831
+ type: ClientMsgCode.DELETE_FEED,
32832
+ requestId,
32833
+ feedId
32834
+ };
32835
+ context.buffer.messages.push(message);
32836
+ flushNowOrSoon();
32837
+ return promise;
32838
+ }
32839
+ function addFeedMessage(feedId, data, options2) {
32840
+ const requestId = nanoid();
32841
+ const promise = registerFeedMutation(requestId, "add-message", feedId, {
32842
+ expectedClientMessageId: options2?.id
32843
+ });
32844
+ const message = {
32845
+ type: ClientMsgCode.ADD_FEED_MESSAGE,
32846
+ requestId,
32847
+ feedId,
32848
+ data,
32849
+ id: options2?.id,
32850
+ createdAt: options2?.createdAt
32851
+ };
32852
+ context.buffer.messages.push(message);
32853
+ flushNowOrSoon();
32854
+ return promise;
32855
+ }
32856
+ function updateFeedMessage(feedId, messageId, data, options2) {
32857
+ const requestId = nanoid();
32858
+ const promise = registerFeedMutation(requestId, "update-message", feedId, {
32859
+ messageId
32860
+ });
32861
+ const message = {
32862
+ type: ClientMsgCode.UPDATE_FEED_MESSAGE,
32863
+ requestId,
32864
+ feedId,
32865
+ messageId,
32866
+ data,
32867
+ updatedAt: options2?.updatedAt
32868
+ };
32869
+ context.buffer.messages.push(message);
32870
+ flushNowOrSoon();
32871
+ return promise;
32872
+ }
32873
+ function deleteFeedMessage(feedId, messageId) {
32874
+ const requestId = nanoid();
32875
+ const promise = registerFeedMutation(requestId, "delete-message", feedId, {
32876
+ messageId
32877
+ });
32878
+ const message = {
32879
+ type: ClientMsgCode.DELETE_FEED_MESSAGE,
32880
+ requestId,
32881
+ feedId,
32882
+ messageId
32883
+ };
32884
+ context.buffer.messages.push(message);
32885
+ flushNowOrSoon();
32886
+ return promise;
32887
+ }
32426
32888
  function undo() {
32427
32889
  if (context.activeBatch) {
32428
32890
  throw new Error("undo is not allowed during a batch");
@@ -32475,7 +32937,8 @@ function createRoom(options, config) {
32475
32937
  presence: false,
32476
32938
  others: []
32477
32939
  },
32478
- reverseOps: new Deque
32940
+ reverseOps: new Deque,
32941
+ scheduleHistoryResume: false
32479
32942
  };
32480
32943
  try {
32481
32944
  returnValue = callback();
@@ -32485,6 +32948,9 @@ function createRoom(options, config) {
32485
32948
  if (currentBatch.reverseOps.length > 0) {
32486
32949
  addToUndoStack(Array.from(currentBatch.reverseOps));
32487
32950
  }
32951
+ if (currentBatch.scheduleHistoryResume) {
32952
+ commitPausedHistoryToUndoStack();
32953
+ }
32488
32954
  if (currentBatch.ops.length > 0) {
32489
32955
  context.redoStack.length = 0;
32490
32956
  }
@@ -32501,13 +32967,30 @@ function createRoom(options, config) {
32501
32967
  context.pausedHistory = new Deque;
32502
32968
  }
32503
32969
  }
32504
- function resumeHistory() {
32970
+ function commitPausedHistoryToUndoStack() {
32505
32971
  const frames = context.pausedHistory;
32506
32972
  context.pausedHistory = null;
32507
32973
  if (frames !== null && frames.length > 0) {
32508
32974
  _addToRealUndoStack(Array.from(frames));
32509
32975
  }
32510
32976
  }
32977
+ function resumeHistory() {
32978
+ if (context.activeBatch !== null) {
32979
+ context.activeBatch.scheduleHistoryResume = true;
32980
+ return;
32981
+ }
32982
+ commitPausedHistoryToUndoStack();
32983
+ }
32984
+ function withoutHistory(fn) {
32985
+ const undoBefore = context.undoStack.length;
32986
+ const redoBefore = context.redoStack.length;
32987
+ try {
32988
+ return fn();
32989
+ } finally {
32990
+ context.undoStack.length = undoBefore;
32991
+ context.redoStack.length = redoBefore;
32992
+ }
32993
+ }
32511
32994
  const syncSourceForStorage = config.createSyncSource();
32512
32995
  function getStorageStatus() {
32513
32996
  if (context.root === undefined) {
@@ -32560,6 +33043,7 @@ function createRoom(options, config) {
32560
33043
  storageStatus: eventHub.storageStatus.observable,
32561
33044
  ydoc: eventHub.ydoc.observable,
32562
33045
  comments: eventHub.comments.observable,
33046
+ feeds: eventHub.feeds.observable,
32563
33047
  roomWillDestroy: eventHub.roomWillDestroy.observable
32564
33048
  };
32565
33049
  async function getThreadsSince(options2) {
@@ -32750,11 +33234,13 @@ function createRoom(options, config) {
32750
33234
  attachmentUrlsStore: httpClient.getOrCreateAttachmentUrlsStore(roomId)
32751
33235
  },
32752
33236
  id: roomId,
32753
- subscribe: makeClassicSubscribeFn(roomId, events, config.errorEventSource),
33237
+ subscribe: makeClassicSubscribeFn(roomId, eventHub, config.errorEventSource),
32754
33238
  connect: () => managedSocket.connect(),
32755
33239
  reconnect: () => managedSocket.reconnect(),
32756
33240
  disconnect: () => managedSocket.disconnect(),
32757
33241
  destroy: () => {
33242
+ pendingFeedsRequests.forEach((request) => request.reject(new Error("Room destroyed")));
33243
+ pendingFeedMessagesRequests.forEach((request) => request.reject(new Error("Room destroyed")));
32758
33244
  const { roomWillDestroy, ...eventsExceptDestroy } = eventHub;
32759
33245
  for (const source of Object.values(eventsExceptDestroy)) {
32760
33246
  source.dispose();
@@ -32778,9 +33264,20 @@ function createRoom(options, config) {
32778
33264
  canRedo,
32779
33265
  clear,
32780
33266
  pause: pauseHistory,
32781
- resume: resumeHistory
33267
+ resume: resumeHistory,
33268
+ [kInternal]: {
33269
+ withoutHistory
33270
+ }
32782
33271
  },
32783
33272
  fetchYDoc,
33273
+ fetchFeeds,
33274
+ fetchFeedMessages,
33275
+ addFeed,
33276
+ updateFeed,
33277
+ deleteFeed,
33278
+ addFeedMessage,
33279
+ updateFeedMessage,
33280
+ deleteFeedMessage,
32784
33281
  getStorage,
32785
33282
  getStorageSnapshot,
32786
33283
  getStorageStatus,
@@ -33253,7 +33750,7 @@ function escapeMarkdown(value) {
33253
33750
  var __defProp2, __export2 = (target, all2) => {
33254
33751
  for (var name in all2)
33255
33752
  __defProp2(target, name, { get: all2[name], enumerable: true });
33256
- }, PKG_NAME = "@liveblocks/core", PKG_VERSION = "3.15.5", PKG_FORMAT = "esm", g, crossLinkedDocs = "https://liveblocks.io/docs/errors/cross-linked", dupesDocs = "https://liveblocks.io/docs/errors/dupes", SPACE = " ", freeze2, kSinks, kTrigger, signalsToTrigger = null, trackedReads = null, AbstractSignal, Signal, PatchableSignal, INITIAL, DerivedSignal, MutableSignal, SortedList, AiChatDB = class {
33753
+ }, PKG_NAME = "@liveblocks/core", PKG_VERSION = "3.17.0", PKG_FORMAT = "esm", g, crossLinkedDocs = "https://liveblocks.io/docs/errors/cross-linked", dupesDocs = "https://liveblocks.io/docs/errors/dupes", SPACE = " ", freeze2, kSinks, kTrigger, signalsToTrigger = null, trackedReads = null, AbstractSignal, Signal, PatchableSignal, INITIAL, DerivedSignal, MutableSignal, SortedList, AiChatDB = class {
33257
33754
  #byId;
33258
33755
  #chats;
33259
33756
  signal;
@@ -34365,6 +34862,9 @@ var __defProp2, __export2 = (target, all2) => {
34365
34862
  }
34366
34863
  return this.#cachedTreeNode;
34367
34864
  }
34865
+ immutableIs(value) {
34866
+ return this.#cachedImmutable !== undefined && this.#cachedImmutable === value;
34867
+ }
34368
34868
  toImmutable() {
34369
34869
  if (this.#cachedImmutable === undefined) {
34370
34870
  this.#cachedImmutable = this._toImmutable();
@@ -34464,7 +34964,7 @@ var __defProp2, __export2 = (target, all2) => {
34464
34964
  return this.#invalidateUser(connectionId);
34465
34965
  });
34466
34966
  }
34467
- }, LiveblocksError, MIN_THROTTLE = 16, MAX_THROTTLE = 1000, DEFAULT_THROTTLE = 100, MIN_BACKGROUND_KEEP_ALIVE_TIMEOUT = 15000, MIN_LOST_CONNECTION_TIMEOUT = 200, RECOMMENDED_MIN_LOST_CONNECTION_TIMEOUT = 1000, MAX_LOST_CONNECTION_TIMEOUT = 30000, DEFAULT_LOST_CONNECTION_TIMEOUT = 5000, RESOLVE_USERS_BATCH_DELAY = 50, RESOLVE_ROOMS_INFO_BATCH_DELAY = 50, RESOLVE_GROUPS_INFO_BATCH_DELAY = 50, htmlEscapables, htmlEscapablesRegex, HtmlSafeString = class {
34967
+ }, LiveblocksError, FEEDS_TIMEOUT = 5000, MIN_THROTTLE = 16, MAX_THROTTLE = 1000, DEFAULT_THROTTLE = 100, MIN_BACKGROUND_KEEP_ALIVE_TIMEOUT = 15000, MIN_LOST_CONNECTION_TIMEOUT = 200, RECOMMENDED_MIN_LOST_CONNECTION_TIMEOUT = 1000, MAX_LOST_CONNECTION_TIMEOUT = 30000, DEFAULT_LOST_CONNECTION_TIMEOUT = 5000, RESOLVE_USERS_BATCH_DELAY = 50, RESOLVE_ROOMS_INFO_BATCH_DELAY = 50, RESOLVE_GROUPS_INFO_BATCH_DELAY = 50, htmlEscapables, htmlEscapablesRegex, HtmlSafeString = class {
34468
34968
  #strings;
34469
34969
  #values;
34470
34970
  constructor(strings, values2) {
@@ -34953,6 +35453,15 @@ var init_dist = __esm(() => {
34953
35453
  COMMENT_REACTION_ADDED: 405,
34954
35454
  COMMENT_REACTION_REMOVED: 406,
34955
35455
  COMMENT_METADATA_UPDATED: 409,
35456
+ FEEDS_LIST: 500,
35457
+ FEEDS_ADDED: 501,
35458
+ FEEDS_UPDATED: 502,
35459
+ FEED_DELETED: 503,
35460
+ FEED_MESSAGES_LIST: 504,
35461
+ FEED_MESSAGES_ADDED: 505,
35462
+ FEED_MESSAGES_UPDATED: 506,
35463
+ FEED_MESSAGES_DELETED: 507,
35464
+ FEED_REQUEST_FAILED: 508,
34956
35465
  REJECT_STORAGE_OP: 299
34957
35466
  });
34958
35467
  BACKOFF_DELAYS = [250, 500, 1000, 2000, 4000, 8000, 1e4];
@@ -35411,7 +35920,8 @@ var init_dist = __esm(() => {
35411
35920
  };
35412
35921
  } else {
35413
35922
  if (indexOfItemWithSamePosition !== -1) {
35414
- nn(this.#items.removeAt(indexOfItemWithSamePosition));
35923
+ const displaced = nn(this.#items.removeAt(indexOfItemWithSamePosition));
35924
+ this.#implicitlyDeletedItems.add(displaced);
35415
35925
  }
35416
35926
  const { newItem, newIndex } = this.#createAttachItemAndSort(op, op.parentKey);
35417
35927
  return {
@@ -36292,7 +36802,8 @@ var init_dist = __esm(() => {
36292
36802
  };
36293
36803
  MAX_LIVE_OBJECT_SIZE = 128 * 1024;
36294
36804
  LiveObject = class _LiveObject extends AbstractCrdt {
36295
- #map;
36805
+ #synced;
36806
+ #local = /* @__PURE__ */ new Map;
36296
36807
  #unackedOpsByKey;
36297
36808
  static detectLargeObjects = false;
36298
36809
  static #buildRootAndParentToChildren(nodes) {
@@ -36330,7 +36841,7 @@ var init_dist = __esm(() => {
36330
36841
  value._setParentLink(this, key);
36331
36842
  }
36332
36843
  }
36333
- this.#map = new Map(Object.entries(o));
36844
+ this.#synced = new Map(Object.entries(o));
36334
36845
  }
36335
36846
  _toOps(parentId, parentKey) {
36336
36847
  if (this._id === undefined) {
@@ -36345,7 +36856,7 @@ var init_dist = __esm(() => {
36345
36856
  data: {}
36346
36857
  };
36347
36858
  ops.push(op);
36348
- for (const [key, value] of this.#map) {
36859
+ for (const [key, value] of this.#synced) {
36349
36860
  if (isLiveNode(value)) {
36350
36861
  for (const childOp of value._toOps(this._id, key)) {
36351
36862
  ops.push(childOp);
@@ -36372,14 +36883,14 @@ var init_dist = __esm(() => {
36372
36883
  if (isLiveStructure(child)) {
36373
36884
  child._setParentLink(liveObj, crdt.parentKey);
36374
36885
  }
36375
- liveObj.#map.set(crdt.parentKey, child);
36886
+ liveObj.#synced.set(crdt.parentKey, child);
36376
36887
  liveObj.invalidate();
36377
36888
  }
36378
36889
  return liveObj;
36379
36890
  }
36380
36891
  _attach(id2, pool) {
36381
36892
  super._attach(id2, pool);
36382
- for (const [_key, value] of this.#map) {
36893
+ for (const [_key, value] of this.#synced) {
36383
36894
  if (isLiveNode(value)) {
36384
36895
  value._attach(pool.generateId(), pool);
36385
36896
  }
@@ -36406,7 +36917,7 @@ var init_dist = __esm(() => {
36406
36917
  return { modified: false };
36407
36918
  }
36408
36919
  const thisId = nn(this._id);
36409
- const previousValue = this.#map.get(key);
36920
+ const previousValue = this.#synced.get(key);
36410
36921
  let reverse;
36411
36922
  if (isLiveNode(previousValue)) {
36412
36923
  reverse = previousValue._toOps(thisId, key);
@@ -36422,7 +36933,8 @@ var init_dist = __esm(() => {
36422
36933
  }
36423
36934
  ];
36424
36935
  }
36425
- this.#map.set(key, child);
36936
+ this.#local.delete(key);
36937
+ this.#synced.set(key, child);
36426
36938
  this.invalidate();
36427
36939
  if (isLiveStructure(child)) {
36428
36940
  child._setParentLink(this, key);
@@ -36442,9 +36954,9 @@ var init_dist = __esm(() => {
36442
36954
  const id2 = nn(this._id);
36443
36955
  const parentKey = nn(child._parentKey);
36444
36956
  const reverse = child._toOps(id2, parentKey);
36445
- for (const [key, value] of this.#map) {
36957
+ for (const [key, value] of this.#synced) {
36446
36958
  if (value === child) {
36447
- this.#map.delete(key);
36959
+ this.#synced.delete(key);
36448
36960
  this.invalidate();
36449
36961
  }
36450
36962
  }
@@ -36462,7 +36974,7 @@ var init_dist = __esm(() => {
36462
36974
  }
36463
36975
  _detach() {
36464
36976
  super._detach();
36465
- for (const value of this.#map.values()) {
36977
+ for (const value of this.#synced.values()) {
36466
36978
  if (isLiveNode(value)) {
36467
36979
  value._detach();
36468
36980
  }
@@ -36478,7 +36990,7 @@ var init_dist = __esm(() => {
36478
36990
  }
36479
36991
  _serialize() {
36480
36992
  const data = {};
36481
- for (const [key, value] of this.#map) {
36993
+ for (const [key, value] of this.#synced) {
36482
36994
  if (!isLiveNode(value)) {
36483
36995
  data[key] = value;
36484
36996
  }
@@ -36507,7 +37019,7 @@ var init_dist = __esm(() => {
36507
37019
  data: {}
36508
37020
  };
36509
37021
  for (const key in op.data) {
36510
- const oldValue = this.#map.get(key);
37022
+ const oldValue = this.#synced.get(key);
36511
37023
  if (isLiveNode(oldValue)) {
36512
37024
  for (const childOp of oldValue._toOps(id2, key)) {
36513
37025
  reverse.push(childOp);
@@ -36535,13 +37047,14 @@ var init_dist = __esm(() => {
36535
37047
  } else {
36536
37048
  continue;
36537
37049
  }
36538
- const oldValue = this.#map.get(key);
37050
+ const oldValue = this.#synced.get(key);
36539
37051
  if (isLiveNode(oldValue)) {
36540
37052
  oldValue._detach();
36541
37053
  }
36542
37054
  isModified = true;
36543
37055
  updateDelta[key] = { type: "update" };
36544
- this.#map.set(key, value);
37056
+ this.#local.delete(key);
37057
+ this.#synced.set(key, value);
36545
37058
  this.invalidate();
36546
37059
  }
36547
37060
  if (Object.keys(reverseUpdate.data).length !== 0) {
@@ -36558,7 +37071,7 @@ var init_dist = __esm(() => {
36558
37071
  }
36559
37072
  #applyDeleteObjectKey(op, isLocal) {
36560
37073
  const key = op.key;
36561
- const oldValue = this.#map.get(key);
37074
+ const oldValue = this.#synced.get(key);
36562
37075
  if (oldValue === undefined) {
36563
37076
  return { modified: false };
36564
37077
  }
@@ -36579,7 +37092,8 @@ var init_dist = __esm(() => {
36579
37092
  }
36580
37093
  ];
36581
37094
  }
36582
- this.#map.delete(key);
37095
+ this.#local.delete(key);
37096
+ this.#synced.delete(key);
36583
37097
  this.invalidate();
36584
37098
  return {
36585
37099
  modified: {
@@ -36592,45 +37106,105 @@ var init_dist = __esm(() => {
36592
37106
  reverse
36593
37107
  };
36594
37108
  }
37109
+ keys() {
37110
+ const result = new Set(this.#synced.keys());
37111
+ for (const key of this.#local.keys()) {
37112
+ result.add(key);
37113
+ }
37114
+ return result;
37115
+ }
36595
37116
  toObject() {
36596
- return Object.fromEntries(this.#map);
37117
+ const result = Object.fromEntries(this.#synced);
37118
+ for (const [key, value] of this.#local) {
37119
+ result[key] = value;
37120
+ }
37121
+ return result;
36597
37122
  }
36598
37123
  set(key, value) {
36599
- this._pool?.assertStorageIsWritable();
36600
37124
  this.update({ [key]: value });
36601
37125
  }
37126
+ setLocal(key, value) {
37127
+ this._pool?.assertStorageIsWritable();
37128
+ const deleteResult = this.#prepareDelete(key);
37129
+ this.#local.set(key, value);
37130
+ this.invalidate();
37131
+ if (this._pool !== undefined && this._id !== undefined) {
37132
+ const ops = deleteResult?.[0] ?? [];
37133
+ const reverse = deleteResult?.[1] ?? [];
37134
+ const storageUpdates = deleteResult?.[2] ?? /* @__PURE__ */ new Map;
37135
+ const existing = storageUpdates.get(this._id);
37136
+ storageUpdates.set(this._id, {
37137
+ node: this,
37138
+ type: "LiveObject",
37139
+ updates: {
37140
+ ...existing?.updates,
37141
+ [key]: { type: "update" }
37142
+ }
37143
+ });
37144
+ this._pool.dispatch(ops, reverse, storageUpdates);
37145
+ }
37146
+ }
36602
37147
  get(key) {
36603
- return this.#map.get(key);
37148
+ return this.#local.has(key) ? this.#local.get(key) : this.#synced.get(key);
36604
37149
  }
36605
- delete(key) {
37150
+ #prepareDelete(key) {
36606
37151
  this._pool?.assertStorageIsWritable();
36607
- const keyAsString = key;
36608
- const oldValue = this.#map.get(keyAsString);
37152
+ const k = key;
37153
+ if (this.#local.has(k) && !this.#synced.has(k)) {
37154
+ const oldValue2 = this.#local.get(k);
37155
+ this.#local.delete(k);
37156
+ this.invalidate();
37157
+ if (this._pool !== undefined && this._id !== undefined) {
37158
+ const storageUpdates2 = /* @__PURE__ */ new Map;
37159
+ storageUpdates2.set(this._id, {
37160
+ node: this,
37161
+ type: "LiveObject",
37162
+ updates: {
37163
+ [k]: {
37164
+ type: "delete",
37165
+ deletedItem: oldValue2
37166
+ }
37167
+ }
37168
+ });
37169
+ return [[], [], storageUpdates2];
37170
+ }
37171
+ return null;
37172
+ }
37173
+ this.#local.delete(k);
37174
+ const oldValue = this.#synced.get(k);
36609
37175
  if (oldValue === undefined) {
36610
- return;
37176
+ return null;
36611
37177
  }
36612
37178
  if (this._pool === undefined || this._id === undefined) {
36613
37179
  if (isLiveNode(oldValue)) {
36614
37180
  oldValue._detach();
36615
37181
  }
36616
- this.#map.delete(keyAsString);
37182
+ this.#synced.delete(k);
36617
37183
  this.invalidate();
36618
- return;
37184
+ return null;
36619
37185
  }
37186
+ const ops = [
37187
+ {
37188
+ type: OpCode.DELETE_OBJECT_KEY,
37189
+ key: k,
37190
+ id: this._id,
37191
+ opId: this._pool.generateOpId()
37192
+ }
37193
+ ];
36620
37194
  let reverse;
36621
37195
  if (isLiveNode(oldValue)) {
36622
37196
  oldValue._detach();
36623
- reverse = oldValue._toOps(this._id, keyAsString);
37197
+ reverse = oldValue._toOps(this._id, k);
36624
37198
  } else {
36625
37199
  reverse = [
36626
37200
  {
36627
37201
  type: OpCode.UPDATE_OBJECT,
36628
- data: { [keyAsString]: oldValue },
37202
+ data: { [k]: oldValue },
36629
37203
  id: this._id
36630
37204
  }
36631
37205
  ];
36632
37206
  }
36633
- this.#map.delete(keyAsString);
37207
+ this.#synced.delete(k);
36634
37208
  this.invalidate();
36635
37209
  const storageUpdates = /* @__PURE__ */ new Map;
36636
37210
  storageUpdates.set(this._id, {
@@ -36640,20 +37214,20 @@ var init_dist = __esm(() => {
36640
37214
  [key]: { type: "delete", deletedItem: oldValue }
36641
37215
  }
36642
37216
  });
36643
- this._pool.dispatch([
36644
- {
36645
- type: OpCode.DELETE_OBJECT_KEY,
36646
- key: keyAsString,
36647
- id: this._id,
36648
- opId: this._pool.generateOpId()
36649
- }
36650
- ], reverse, storageUpdates);
37217
+ return [ops, reverse, storageUpdates];
37218
+ }
37219
+ delete(key) {
37220
+ const result = this.#prepareDelete(key);
37221
+ if (result) {
37222
+ const [ops, reverse, storageUpdates] = result;
37223
+ this._pool?.dispatch(ops, reverse, storageUpdates);
37224
+ }
36651
37225
  }
36652
37226
  update(patch) {
36653
37227
  this._pool?.assertStorageIsWritable();
36654
37228
  if (_LiveObject.detectLargeObjects) {
36655
37229
  const data = {};
36656
- for (const [key, value] of this.#map) {
37230
+ for (const [key, value] of this.#synced) {
36657
37231
  if (!isLiveNode(value)) {
36658
37232
  data[key] = value;
36659
37233
  }
@@ -36681,14 +37255,15 @@ var init_dist = __esm(() => {
36681
37255
  if (newValue === undefined) {
36682
37256
  continue;
36683
37257
  }
36684
- const oldValue = this.#map.get(key);
37258
+ const oldValue = this.#synced.get(key);
36685
37259
  if (isLiveNode(oldValue)) {
36686
37260
  oldValue._detach();
36687
37261
  }
36688
37262
  if (isLiveNode(newValue)) {
36689
37263
  newValue._setParentLink(this, key);
36690
37264
  }
36691
- this.#map.set(key, newValue);
37265
+ this.#local.delete(key);
37266
+ this.#synced.set(key, newValue);
36692
37267
  this.invalidate();
36693
37268
  }
36694
37269
  return;
@@ -36708,7 +37283,10 @@ var init_dist = __esm(() => {
36708
37283
  if (newValue === undefined) {
36709
37284
  continue;
36710
37285
  }
36711
- const oldValue = this.#map.get(key);
37286
+ const oldValue = this.#synced.get(key);
37287
+ if (oldValue === newValue) {
37288
+ continue;
37289
+ }
36712
37290
  if (isLiveNode(oldValue)) {
36713
37291
  for (const childOp of oldValue._toOps(this._id, key)) {
36714
37292
  reverseOps.push(childOp);
@@ -36734,7 +37312,8 @@ var init_dist = __esm(() => {
36734
37312
  updatedProps[key] = newValue;
36735
37313
  this.#unackedOpsByKey.set(key, opId);
36736
37314
  }
36737
- this.#map.set(key, newValue);
37315
+ this.#local.delete(key);
37316
+ this.#synced.set(key, newValue);
36738
37317
  this.invalidate();
36739
37318
  updateDelta[key] = { type: "update" };
36740
37319
  }
@@ -36749,6 +37328,9 @@ var init_dist = __esm(() => {
36749
37328
  data: updatedProps
36750
37329
  });
36751
37330
  }
37331
+ if (ops.length === 0 && reverseOps.length === 0 && Object.keys(updateDelta).length === 0) {
37332
+ return;
37333
+ }
36752
37334
  const storageUpdates = /* @__PURE__ */ new Map;
36753
37335
  storageUpdates.set(this._id, {
36754
37336
  node: this,
@@ -36757,6 +37339,20 @@ var init_dist = __esm(() => {
36757
37339
  });
36758
37340
  this._pool.dispatch(ops, reverseOps, storageUpdates);
36759
37341
  }
37342
+ static from(obj, config) {
37343
+ if (!isPlainObject(obj))
37344
+ throw new Error("Expected a JSON object");
37345
+ const liveObj = new _LiveObject({});
37346
+ liveObj.reconcile(obj, config);
37347
+ return liveObj;
37348
+ }
37349
+ reconcile(jsonObj, config) {
37350
+ if (this.immutableIs(jsonObj))
37351
+ return;
37352
+ if (!isPlainObject(jsonObj))
37353
+ throw new Error("Reconciling the document root expects a plain object value");
37354
+ reconcileLiveObject(this, jsonObj, config);
37355
+ }
36760
37356
  toImmutable() {
36761
37357
  return super.toImmutable();
36762
37358
  }
@@ -36769,21 +37365,28 @@ var init_dist = __esm(() => {
36769
37365
  type: "LiveObject",
36770
37366
  id: nodeId,
36771
37367
  key,
36772
- payload: Array.from(this.#map.entries()).map(([key2, value]) => isLiveNode(value) ? value.toTreeNode(key2) : { type: "Json", id: `${nodeId}:${key2}`, key: key2, payload: value })
37368
+ payload: Array.from(this.#synced.entries()).map(([key2, value]) => isLiveNode(value) ? value.toTreeNode(key2) : { type: "Json", id: `${nodeId}:${key2}`, key: key2, payload: value })
36773
37369
  };
36774
37370
  }
36775
37371
  _toImmutable() {
36776
37372
  const result = {};
36777
- for (const [key, val] of this.#map) {
37373
+ for (const [key, val] of this.#synced) {
36778
37374
  result[key] = isLiveStructure(val) ? val.toImmutable() : val;
36779
37375
  }
37376
+ for (const [key, val] of this.#local) {
37377
+ result[key] = val;
37378
+ }
36780
37379
  return Object.freeze(result);
36781
37380
  }
36782
37381
  clone() {
36783
- return new _LiveObject(Object.fromEntries(Array.from(this.#map).map(([key, value]) => [
37382
+ const cloned = new _LiveObject(Object.fromEntries(Array.from(this.#synced).map(([key, value]) => [
36784
37383
  key,
36785
37384
  isLiveStructure(value) ? value.clone() : deepClone(value)
36786
37385
  ])));
37386
+ for (const [key, value] of this.#local) {
37387
+ cloned.#local.set(key, deepClone(value));
37388
+ }
37389
+ return cloned;
36787
37390
  }
36788
37391
  };
36789
37392
  Deque = class {
@@ -36850,7 +37453,15 @@ var init_dist = __esm(() => {
36850
37453
  FETCH_STORAGE: 200,
36851
37454
  UPDATE_STORAGE: 201,
36852
37455
  FETCH_YDOC: 300,
36853
- UPDATE_YDOC: 301
37456
+ UPDATE_YDOC: 301,
37457
+ FETCH_FEEDS: 510,
37458
+ FETCH_FEED_MESSAGES: 511,
37459
+ ADD_FEED: 512,
37460
+ UPDATE_FEED: 513,
37461
+ DELETE_FEED: 514,
37462
+ ADD_FEED_MESSAGE: 515,
37463
+ UPDATE_FEED_MESSAGE: 516,
37464
+ DELETE_FEED_MESSAGE: 517
36854
37465
  });
36855
37466
  LiveblocksError = class _LiveblocksError extends Error {
36856
37467
  context;
@@ -36896,8 +37507,8 @@ var init_dist = __esm(() => {
36896
37507
  detectDupes(PKG_NAME, PKG_VERSION, PKG_FORMAT);
36897
37508
  });
36898
37509
 
36899
- // ../../node_modules/.pnpm/@liveblocks+client@3.15.5_@types+json-schema@7.0.15/node_modules/@liveblocks/client/dist/index.js
36900
- var PKG_NAME2 = "@liveblocks/client", PKG_VERSION2 = "3.15.5", PKG_FORMAT2 = "esm";
37510
+ // ../../node_modules/.pnpm/@liveblocks+client@3.17.0_@types+json-schema@7.0.15/node_modules/@liveblocks/client/dist/index.js
37511
+ var PKG_NAME2 = "@liveblocks/client", PKG_VERSION2 = "3.17.0", PKG_FORMAT2 = "esm";
36901
37512
  var init_dist2 = __esm(() => {
36902
37513
  init_dist();
36903
37514
  init_dist();
@@ -37526,8 +38137,8 @@ var init_sha2 = __esm(() => {
37526
38137
  sha256 = /* @__PURE__ */ createHasher(() => new SHA256);
37527
38138
  });
37528
38139
 
37529
- // ../../node_modules/.pnpm/@liveblocks+yjs@3.15.5_@types+json-schema@7.0.15_yjs@13.6.30/node_modules/@liveblocks/yjs/dist/index.js
37530
- var PKG_NAME3 = "@liveblocks/yjs", PKG_VERSION3 = "3.15.5", PKG_FORMAT3 = "esm", create9 = () => /* @__PURE__ */ new Map, setIfUndefined3 = (map3, key, createT) => {
38140
+ // ../../node_modules/.pnpm/@liveblocks+yjs@3.17.0_@types+json-schema@7.0.15_yjs@13.6.30/node_modules/@liveblocks/yjs/dist/index.js
38141
+ var PKG_NAME3 = "@liveblocks/yjs", PKG_VERSION3 = "3.17.0", PKG_FORMAT3 = "esm", create9 = () => /* @__PURE__ */ new Map, setIfUndefined3 = (map3, key, createT) => {
37531
38142
  let set = map3.get(key);
37532
38143
  if (set === undefined) {
37533
38144
  map3.set(key, set = createT());
@@ -38033,7 +38644,7 @@ var init_dist3 = __esm(() => {
38033
38644
  detectDupes(PKG_NAME3, PKG_VERSION3, PKG_FORMAT3);
38034
38645
  });
38035
38646
 
38036
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/constants.js
38647
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/constants.js
38037
38648
  var require_constants = __commonJS((exports, module) => {
38038
38649
  var BINARY_TYPES = ["nodebuffer", "arraybuffer", "fragments"];
38039
38650
  var hasBlob = typeof Blob !== "undefined";
@@ -38053,7 +38664,7 @@ var require_constants = __commonJS((exports, module) => {
38053
38664
  };
38054
38665
  });
38055
38666
 
38056
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/buffer-util.js
38667
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/buffer-util.js
38057
38668
  var require_buffer_util = __commonJS((exports, module) => {
38058
38669
  var { EMPTY_BUFFER } = require_constants();
38059
38670
  var FastBuffer = Buffer[Symbol.species];
@@ -38131,7 +38742,7 @@ var require_buffer_util = __commonJS((exports, module) => {
38131
38742
  }
38132
38743
  });
38133
38744
 
38134
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/limiter.js
38745
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/limiter.js
38135
38746
  var require_limiter = __commonJS((exports, module) => {
38136
38747
  var kDone = Symbol("kDone");
38137
38748
  var kRun = Symbol("kRun");
@@ -38163,7 +38774,7 @@ var require_limiter = __commonJS((exports, module) => {
38163
38774
  module.exports = Limiter;
38164
38775
  });
38165
38776
 
38166
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/permessage-deflate.js
38777
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/permessage-deflate.js
38167
38778
  var require_permessage_deflate = __commonJS((exports, module) => {
38168
38779
  var zlib = __require("zlib");
38169
38780
  var bufferUtil = require_buffer_util();
@@ -38179,11 +38790,11 @@ var require_permessage_deflate = __commonJS((exports, module) => {
38179
38790
  var zlibLimiter;
38180
38791
 
38181
38792
  class PerMessageDeflate {
38182
- constructor(options) {
38793
+ constructor(options, isServer, maxPayload) {
38794
+ this._maxPayload = maxPayload | 0;
38183
38795
  this._options = options || {};
38184
38796
  this._threshold = this._options.threshold !== undefined ? this._options.threshold : 1024;
38185
- this._maxPayload = this._options.maxPayload | 0;
38186
- this._isServer = !!this._options.isServer;
38797
+ this._isServer = !!isServer;
38187
38798
  this._deflate = null;
38188
38799
  this._inflate = null;
38189
38800
  this.params = null;
@@ -38427,7 +39038,7 @@ var require_permessage_deflate = __commonJS((exports, module) => {
38427
39038
  }
38428
39039
  });
38429
39040
 
38430
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/validation.js
39041
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/validation.js
38431
39042
  var require_validation = __commonJS((exports, module) => {
38432
39043
  var { isUtf8 } = __require("buffer");
38433
39044
  var { hasBlob } = require_constants();
@@ -38614,7 +39225,7 @@ var require_validation = __commonJS((exports, module) => {
38614
39225
  }
38615
39226
  });
38616
39227
 
38617
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/receiver.js
39228
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/receiver.js
38618
39229
  var require_receiver = __commonJS((exports, module) => {
38619
39230
  var { Writable } = __require("stream");
38620
39231
  var PerMessageDeflate = require_permessage_deflate();
@@ -38995,7 +39606,7 @@ var require_receiver = __commonJS((exports, module) => {
38995
39606
  module.exports = Receiver;
38996
39607
  });
38997
39608
 
38998
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/sender.js
39609
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/sender.js
38999
39610
  var require_sender = __commonJS((exports, module) => {
39000
39611
  var { Duplex } = __require("stream");
39001
39612
  var { randomFillSync } = __require("crypto");
@@ -39349,7 +39960,7 @@ var require_sender = __commonJS((exports, module) => {
39349
39960
  }
39350
39961
  });
39351
39962
 
39352
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/event-target.js
39963
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/event-target.js
39353
39964
  var require_event_target = __commonJS((exports, module) => {
39354
39965
  var { kForOnEventAttribute, kListener } = require_constants();
39355
39966
  var kCode = Symbol("kCode");
@@ -39500,7 +40111,7 @@ var require_event_target = __commonJS((exports, module) => {
39500
40111
  }
39501
40112
  });
39502
40113
 
39503
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/extension.js
40114
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/extension.js
39504
40115
  var require_extension = __commonJS((exports, module) => {
39505
40116
  var { tokenChars } = require_validation();
39506
40117
  function push(dest, name, elem) {
@@ -39665,7 +40276,7 @@ var require_extension = __commonJS((exports, module) => {
39665
40276
  module.exports = { format, parse };
39666
40277
  });
39667
40278
 
39668
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/websocket.js
40279
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/websocket.js
39669
40280
  var require_websocket = __commonJS((exports, module) => {
39670
40281
  var EventEmitter2 = __require("events");
39671
40282
  var https = __require("https");
@@ -40054,7 +40665,7 @@ var require_websocket = __commonJS((exports, module) => {
40054
40665
  } else {
40055
40666
  try {
40056
40667
  parsedUrl = new URL2(address2);
40057
- } catch {
40668
+ } catch (e) {
40058
40669
  throw new SyntaxError(`Invalid URL: ${address2}`);
40059
40670
  }
40060
40671
  }
@@ -40102,11 +40713,7 @@ var require_websocket = __commonJS((exports, module) => {
40102
40713
  opts.path = parsedUrl.pathname + parsedUrl.search;
40103
40714
  opts.timeout = opts.handshakeTimeout;
40104
40715
  if (opts.perMessageDeflate) {
40105
- perMessageDeflate = new PerMessageDeflate({
40106
- ...opts.perMessageDeflate,
40107
- isServer: false,
40108
- maxPayload: opts.maxPayload
40109
- });
40716
+ perMessageDeflate = new PerMessageDeflate(opts.perMessageDeflate !== true ? opts.perMessageDeflate : {}, false, opts.maxPayload);
40110
40717
  opts.headers["Sec-WebSocket-Extensions"] = format({
40111
40718
  [PerMessageDeflate.extensionName]: perMessageDeflate.offer()
40112
40719
  });
@@ -40431,7 +41038,7 @@ var require_websocket = __commonJS((exports, module) => {
40431
41038
  }
40432
41039
  });
40433
41040
 
40434
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/stream.js
41041
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/stream.js
40435
41042
  var require_stream = __commonJS((exports, module) => {
40436
41043
  var WebSocket2 = require_websocket();
40437
41044
  var { Duplex } = __require("stream");
@@ -40534,7 +41141,7 @@ var require_stream = __commonJS((exports, module) => {
40534
41141
  module.exports = createWebSocketStream;
40535
41142
  });
40536
41143
 
40537
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/subprotocol.js
41144
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/subprotocol.js
40538
41145
  var require_subprotocol = __commonJS((exports, module) => {
40539
41146
  var { tokenChars } = require_validation();
40540
41147
  function parse(header) {
@@ -40579,7 +41186,7 @@ var require_subprotocol = __commonJS((exports, module) => {
40579
41186
  module.exports = { parse };
40580
41187
  });
40581
41188
 
40582
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/websocket-server.js
41189
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/websocket-server.js
40583
41190
  var require_websocket_server = __commonJS((exports, module) => {
40584
41191
  var EventEmitter2 = __require("events");
40585
41192
  var http = __require("http");
@@ -40752,11 +41359,7 @@ var require_websocket_server = __commonJS((exports, module) => {
40752
41359
  const secWebSocketExtensions = req.headers["sec-websocket-extensions"];
40753
41360
  const extensions = {};
40754
41361
  if (this.options.perMessageDeflate && secWebSocketExtensions !== undefined) {
40755
- const perMessageDeflate = new PerMessageDeflate({
40756
- ...this.options.perMessageDeflate,
40757
- isServer: true,
40758
- maxPayload: this.options.maxPayload
40759
- });
41362
+ const perMessageDeflate = new PerMessageDeflate(this.options.perMessageDeflate, true, this.options.maxPayload);
40760
41363
  try {
40761
41364
  const offers = extension.parse(secWebSocketExtensions);
40762
41365
  if (offers[PerMessageDeflate.extensionName]) {
@@ -40885,15 +41488,12 @@ var require_websocket_server = __commonJS((exports, module) => {
40885
41488
  }
40886
41489
  });
40887
41490
 
40888
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/wrapper.mjs
40889
- var import_stream, import_extension, import_permessage_deflate, import_receiver, import_sender, import_subprotocol, import_websocket, import_websocket_server, wrapper_default;
41491
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/wrapper.mjs
41492
+ var import_stream, import_receiver, import_sender, import_websocket, import_websocket_server, wrapper_default;
40890
41493
  var init_wrapper = __esm(() => {
40891
41494
  import_stream = __toESM(require_stream(), 1);
40892
- import_extension = __toESM(require_extension(), 1);
40893
- import_permessage_deflate = __toESM(require_permessage_deflate(), 1);
40894
41495
  import_receiver = __toESM(require_receiver(), 1);
40895
41496
  import_sender = __toESM(require_sender(), 1);
40896
- import_subprotocol = __toESM(require_subprotocol(), 1);
40897
41497
  import_websocket = __toESM(require_websocket(), 1);
40898
41498
  import_websocket_server = __toESM(require_websocket_server(), 1);
40899
41499
  wrapper_default = import_websocket.default;
@@ -63099,11 +63699,11 @@ function combineExtensions(extensions) {
63099
63699
  syntaxExtension(all3, extensions[index2]);
63100
63700
  return all3;
63101
63701
  }
63102
- function syntaxExtension(all3, extension2) {
63702
+ function syntaxExtension(all3, extension) {
63103
63703
  let hook;
63104
- for (hook in extension2) {
63704
+ for (hook in extension) {
63105
63705
  const left = (hasOwnProperty2.call(all3, hook) ? all3[hook] : undefined) || (all3[hook] = {});
63106
- const right = extension2[hook];
63706
+ const right = extension[hook];
63107
63707
  let code$1;
63108
63708
  if (right)
63109
63709
  for (code$1 in right) {
@@ -65262,7 +65862,7 @@ var init_remark_gfm_BhnWr3yf_es = __esm(() => {
65262
65862
  emptyOptions2 = {};
65263
65863
  });
65264
65864
 
65265
- // ../../packages/superdoc/dist/chunks/SuperConverter-CE_qGNRx.es.js
65865
+ // ../../packages/superdoc/dist/chunks/SuperConverter-D0RwvY4d.es.js
65266
65866
  function getExtensionConfigField(extension$1, field, context = { name: "" }) {
65267
65867
  const fieldValue = extension$1.config[field];
65268
65868
  if (typeof fieldValue === "function")
@@ -89683,7 +90283,7 @@ function preprocess() {
89683
90283
  }
89684
90284
  }
89685
90285
  function fromMarkdown(value, encoding, options) {
89686
- if (encoding && typeof encoding === "object") {
90286
+ if (typeof encoding !== "string") {
89687
90287
  options = encoding;
89688
90288
  encoding = undefined;
89689
90289
  }
@@ -90317,10 +90917,10 @@ function configure(combined, extensions) {
90317
90917
  if (Array.isArray(value))
90318
90918
  configure(combined, value);
90319
90919
  else
90320
- extension2(combined, value);
90920
+ extension(combined, value);
90321
90921
  }
90322
90922
  }
90323
- function extension2(combined, extension$1) {
90923
+ function extension(combined, extension$1) {
90324
90924
  let key;
90325
90925
  for (key in extension$1)
90326
90926
  if (own3.call(extension$1, key))
@@ -110201,19 +110801,7 @@ var isRegExp = (value) => {
110201
110801
  typeOver = true;
110202
110802
  }
110203
110803
  }
110204
- if (added.some((n) => n.nodeName == "BR") && (view.input.lastKeyCode == 8 || view.input.lastKeyCode == 46)) {
110205
- for (let node3 of added)
110206
- if (node3.nodeName == "BR" && node3.parentNode) {
110207
- let after2 = node3.nextSibling;
110208
- while (after2 && after2.nodeType == 1) {
110209
- if (after2.contentEditable == "false") {
110210
- node3.parentNode.removeChild(node3);
110211
- break;
110212
- }
110213
- after2 = after2.firstChild;
110214
- }
110215
- }
110216
- } else if (gecko && added.length) {
110804
+ if (gecko && added.length) {
110217
110805
  let brs = added.filter((n) => n.nodeName == "BR");
110218
110806
  if (brs.length == 2) {
110219
110807
  let [a, b] = brs;
@@ -110229,6 +110817,13 @@ var isRegExp = (value) => {
110229
110817
  br.remove();
110230
110818
  }
110231
110819
  }
110820
+ } else if ((chrome || safari) && added.some((n) => n.nodeName == "BR") && (view.input.lastKeyCode == 8 || view.input.lastKeyCode == 46)) {
110821
+ for (let node3 of added)
110822
+ if (node3.nodeName == "BR" && node3.parentNode) {
110823
+ let after2 = node3.nextSibling;
110824
+ if (after2 && after2.nodeType == 1 && after2.contentEditable == "false")
110825
+ node3.parentNode.removeChild(node3);
110826
+ }
110232
110827
  }
110233
110828
  let readSel = null;
110234
110829
  if (from4 < 0 && newSel && view.input.lastFocus > Date.now() - 200 && Math.max(view.input.lastTouch, view.input.lastClick.time) < Date.now() - 300 && selectionCollapsed(sel) && (readSel = selectionFromDOM(view)) && readSel.eq(Selection.near(view.state.doc.resolve(0), 1))) {
@@ -110477,11 +111072,11 @@ var isRegExp = (value) => {
110477
111072
  }
110478
111073
  updateDraggedNode(dragging, prev) {
110479
111074
  let sel = dragging.node, found$1 = -1;
110480
- if (sel.from < this.state.doc.content.size && this.state.doc.nodeAt(sel.from) == sel.node)
111075
+ if (this.state.doc.nodeAt(sel.from) == sel.node)
110481
111076
  found$1 = sel.from;
110482
111077
  else {
110483
111078
  let movedPos = sel.from + (this.state.doc.content.size - prev.doc.content.size);
110484
- if ((movedPos > 0 && movedPos < this.state.doc.content.size && this.state.doc.nodeAt(movedPos)) == sel.node)
111079
+ if ((movedPos > 0 && this.state.doc.nodeAt(movedPos)) == sel.node)
110485
111080
  found$1 = movedPos;
110486
111081
  }
110487
111082
  this.dragging = new Dragging(dragging.slice, dragging.move, found$1 < 0 ? undefined : NodeSelection.create(this.state.doc, found$1));
@@ -116857,7 +117452,7 @@ var isRegExp = (value) => {
116857
117452
  state.kern = kernNode.attributes["w:val"];
116858
117453
  }
116859
117454
  }, SuperConverter;
116860
- var init_SuperConverter_CE_qGNRx_es = __esm(() => {
117455
+ var init_SuperConverter_D0RwvY4d_es = __esm(() => {
116861
117456
  init_rolldown_runtime_Bg48TavK_es();
116862
117457
  init_jszip_C49i9kUs_es();
116863
117458
  init_xml_js_CqGKpaft_es();
@@ -153930,7 +154525,7 @@ var init_SuperConverter_CE_qGNRx_es = __esm(() => {
153930
154525
  };
153931
154526
  });
153932
154527
 
153933
- // ../../packages/superdoc/dist/chunks/create-headless-toolbar-oHAjbd4d.es.js
154528
+ // ../../packages/superdoc/dist/chunks/create-headless-toolbar-C1v2RG6S.es.js
153934
154529
  function parseSizeUnit(val = "0") {
153935
154530
  const length3 = val.toString() || "0";
153936
154531
  const value = Number.parseFloat(length3);
@@ -155466,8 +156061,8 @@ var CSS_DIMENSION_REGEX, DOM_SIZE_UNITS, Extension = class Extension2 {
155466
156061
  return false;
155467
156062
  return Boolean(checker(attrs));
155468
156063
  };
155469
- var init_create_headless_toolbar_oHAjbd4d_es = __esm(() => {
155470
- init_SuperConverter_CE_qGNRx_es();
156064
+ var init_create_headless_toolbar_C1v2RG6S_es = __esm(() => {
156065
+ init_SuperConverter_D0RwvY4d_es();
155471
156066
  init_constants_5yyN6FZg_es();
155472
156067
  init_dist_B8HfvhaK_es();
155473
156068
  CSS_DIMENSION_REGEX = /[\d-.]+(\w+)$/;
@@ -155621,28 +156216,28 @@ function zwitch(key2, options) {
155621
156216
  one2.unknown = settings.unknown;
155622
156217
  return one2;
155623
156218
  }
155624
- function configure2(base3, extension3) {
156219
+ function configure2(base3, extension2) {
155625
156220
  let index2 = -1;
155626
156221
  let key2;
155627
- if (extension3.extensions)
155628
- while (++index2 < extension3.extensions.length)
155629
- configure2(base3, extension3.extensions[index2]);
155630
- for (key2 in extension3)
155631
- if (own4.call(extension3, key2))
156222
+ if (extension2.extensions)
156223
+ while (++index2 < extension2.extensions.length)
156224
+ configure2(base3, extension2.extensions[index2]);
156225
+ for (key2 in extension2)
156226
+ if (own4.call(extension2, key2))
155632
156227
  switch (key2) {
155633
156228
  case "extensions":
155634
156229
  break;
155635
156230
  case "unsafe":
155636
- list3(base3[key2], extension3[key2]);
156231
+ list3(base3[key2], extension2[key2]);
155637
156232
  break;
155638
156233
  case "join":
155639
- list3(base3[key2], extension3[key2]);
156234
+ list3(base3[key2], extension2[key2]);
155640
156235
  break;
155641
156236
  case "handlers":
155642
- map5(base3[key2], extension3[key2]);
156237
+ map5(base3[key2], extension2[key2]);
155643
156238
  break;
155644
156239
  default:
155645
- base3.options[key2] = extension3[key2];
156240
+ base3.options[key2] = extension2[key2];
155646
156241
  }
155647
156242
  return base3;
155648
156243
  }
@@ -157246,15 +157841,15 @@ var DOCX = "application/vnd.openxmlformats-officedocument.wordprocessingml.docum
157246
157841
  this.mediaFiles[name] = fileBase64;
157247
157842
  } else {
157248
157843
  const fileBase64 = await zipEntry.async("base64");
157249
- let extension3 = this.getFileExtension(name)?.toLowerCase();
157844
+ let extension2 = this.getFileExtension(name)?.toLowerCase();
157250
157845
  let detectedType = null;
157251
- if (!IMAGE_EXTS.has(extension3) || extension3 === "tmp") {
157846
+ if (!IMAGE_EXTS.has(extension2) || extension2 === "tmp") {
157252
157847
  detectedType = detectImageType(fileBase64);
157253
157848
  if (detectedType)
157254
- extension3 = detectedType;
157849
+ extension2 = detectedType;
157255
157850
  }
157256
- if (IMAGE_EXTS.has(extension3)) {
157257
- const mimeSubtype = MIME_TYPE_FOR_EXT[extension3] || extension3;
157851
+ if (IMAGE_EXTS.has(extension2)) {
157852
+ const mimeSubtype = MIME_TYPE_FOR_EXT[extension2] || extension2;
157258
157853
  this.mediaFiles[name] = `data:image/${mimeSubtype};base64,${fileBase64}`;
157259
157854
  const blob = await zipEntry.async("blob");
157260
157855
  const fileObj = new File([blob], name, { type: blob.type });
@@ -158791,7 +159386,7 @@ var require_decode = __commonJS((exports) => {
158791
159386
  exports.decodeXML = decodeXML;
158792
159387
  });
158793
159388
 
158794
- // ../../node_modules/.pnpm/@babel+parser@7.29.2/node_modules/@babel/parser/lib/index.js
159389
+ // ../../node_modules/.pnpm/@babel+parser@7.29.0/node_modules/@babel/parser/lib/index.js
158795
159390
  var require_lib2 = __commonJS((exports) => {
158796
159391
  Object.defineProperty(exports, "__esModule", {
158797
159392
  value: true
@@ -170393,7 +170988,7 @@ var require_lib2 = __commonJS((exports) => {
170393
170988
  this.next();
170394
170989
  return this.parseAsyncFunctionExpression(this.startNodeAtNode(id2));
170395
170990
  } else if (tokenIsIdentifier(type2)) {
170396
- if (canBeArrow && this.lookaheadCharCode() === 61) {
170991
+ if (this.lookaheadCharCode() === 61) {
170397
170992
  return this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(id2));
170398
170993
  } else {
170399
170994
  return id2;
@@ -203905,7 +204500,7 @@ var init_remark_gfm_eZN6yzWQ_es = __esm(() => {
203905
204500
  init_remark_gfm_BhnWr3yf_es();
203906
204501
  });
203907
204502
 
203908
- // ../../packages/superdoc/dist/chunks/src-C8kQT9o6.es.js
204503
+ // ../../packages/superdoc/dist/chunks/src-CsmBi_VA.es.js
203909
204504
  function deleteProps(obj, propOrProps) {
203910
204505
  const props = typeof propOrProps === "string" ? [propOrProps] : propOrProps;
203911
204506
  const removeNested = (target, pathParts, index2 = 0) => {
@@ -208650,6 +209245,76 @@ function getFirstTableCellTextPos(tablePos, tableNode) {
208650
209245
  const map$12 = TableMap.get(tableNode);
208651
209246
  return tablePos + 1 + map$12.map[0] + 2;
208652
209247
  }
209248
+ function resolveCommandTargetTable(selection) {
209249
+ if (selection?.node?.type?.name === "structuredContentBlock") {
209250
+ let found2 = null;
209251
+ let count2 = 0;
209252
+ selection.node.descendants((node3, pos) => {
209253
+ if (node3.type?.name !== "table")
209254
+ return true;
209255
+ count2 += 1;
209256
+ found2 = {
209257
+ node: node3,
209258
+ pos: selection.from + 1 + pos
209259
+ };
209260
+ return false;
209261
+ });
209262
+ if (count2 === 1 && found2)
209263
+ return found2;
209264
+ }
209265
+ return findParentNode((node3) => node3.type.name === "table")(selection);
209266
+ }
209267
+ function resolveStructuredContentBlockTableInsertion(selection) {
209268
+ if (selection instanceof NodeSelection && selection.node?.type?.name === "structuredContentBlock") {
209269
+ const contentStart = selection.from + 1;
209270
+ const firstChild = selection.node.firstChild;
209271
+ if (selection.node.childCount === 1 && firstChild?.type?.name === "paragraph" && firstChild.textContent === "")
209272
+ return {
209273
+ from: contentStart,
209274
+ to: contentStart + firstChild.nodeSize,
209275
+ tablePos: contentStart
209276
+ };
209277
+ const contentEnd = contentStart + selection.node.content.size;
209278
+ return {
209279
+ from: contentEnd,
209280
+ to: contentEnd,
209281
+ tablePos: contentEnd
209282
+ };
209283
+ }
209284
+ const $from = selection.$from;
209285
+ let structuredContentDepth = -1;
209286
+ for (let depth = $from.depth;depth > 0; depth--)
209287
+ if ($from.node(depth).type?.name === "structuredContentBlock") {
209288
+ structuredContentDepth = depth;
209289
+ break;
209290
+ }
209291
+ if (structuredContentDepth === -1)
209292
+ return null;
209293
+ const paragraphDepth = $from.parent?.type?.name === "run" ? $from.depth - 1 : $from.depth;
209294
+ if (paragraphDepth <= structuredContentDepth) {
209295
+ const contentEnd = $from.end(structuredContentDepth);
209296
+ return {
209297
+ from: contentEnd,
209298
+ to: contentEnd,
209299
+ tablePos: contentEnd
209300
+ };
209301
+ }
209302
+ const paragraph2 = $from.node(paragraphDepth);
209303
+ if (paragraph2.type.name === "paragraph" && paragraph2.textContent === "") {
209304
+ const from$2 = $from.before(paragraphDepth);
209305
+ return {
209306
+ from: from$2,
209307
+ to: $from.after(paragraphDepth),
209308
+ tablePos: from$2
209309
+ };
209310
+ }
209311
+ const from$1 = $from.after(paragraphDepth);
209312
+ return {
209313
+ from: from$1,
209314
+ to: from$1,
209315
+ tablePos: from$1
209316
+ };
209317
+ }
208653
209318
  function getCellType({ node: node3, state }) {
208654
209319
  return tableNodeTypes(state.schema)[node3.type.spec.tableRole];
208655
209320
  }
@@ -215594,10 +216259,10 @@ function Item$1(fun, array) {
215594
216259
  this.array = array;
215595
216260
  }
215596
216261
  function noop2() {}
215597
- function isExtensionRulesEnabled(extension3, enabled) {
216262
+ function isExtensionRulesEnabled(extension2, enabled) {
215598
216263
  if (Array.isArray(enabled))
215599
216264
  return enabled.some((enabledExtension) => {
215600
- return (typeof enabledExtension === "string" ? enabledExtension : enabledExtension.name) === extension3.name;
216265
+ return (typeof enabledExtension === "string" ? enabledExtension : enabledExtension.name) === extension2.name;
215601
216266
  });
215602
216267
  return enabled;
215603
216268
  }
@@ -253035,7 +253700,7 @@ function hydrateImageBlocks(blocks2, mediaFiles) {
253035
253700
  });
253036
253701
  if (normalizedMedia.size === 0)
253037
253702
  return blocks2;
253038
- const resolveImageSrc = (src, relId, attrSrc, extension3) => {
253703
+ const resolveImageSrc = (src, relId, attrSrc, extension2) => {
253039
253704
  if (!src || src.startsWith("data:"))
253040
253705
  return;
253041
253706
  const candidates = /* @__PURE__ */ new Set;
@@ -253043,7 +253708,7 @@ function hydrateImageBlocks(blocks2, mediaFiles) {
253043
253708
  if (attrSrc)
253044
253709
  candidates.add(attrSrc);
253045
253710
  if (relId) {
253046
- const inferredExt = extension3 ?? inferExtensionFromPath(src) ?? "jpeg";
253711
+ const inferredExt = extension2 ?? inferExtensionFromPath(src) ?? "jpeg";
253047
253712
  candidates.add(`word/media/${relId}.${inferredExt}`);
253048
253713
  candidates.add(`media/${relId}.${inferredExt}`);
253049
253714
  }
@@ -253054,7 +253719,7 @@ function hydrateImageBlocks(blocks2, mediaFiles) {
253054
253719
  const base64 = normalizedMedia.get(normalized);
253055
253720
  if (!base64)
253056
253721
  continue;
253057
- const finalExt = extension3 ?? inferExtensionFromPath(normalized) ?? "jpeg";
253722
+ const finalExt = extension2 ?? inferExtensionFromPath(normalized) ?? "jpeg";
253058
253723
  return base64.startsWith("data:") ? base64 : `data:image/${finalExt};base64,${base64}`;
253059
253724
  }
253060
253725
  };
@@ -253086,8 +253751,8 @@ function hydrateImageBlocks(blocks2, mediaFiles) {
253086
253751
  const attrs = blk.attrs ?? {};
253087
253752
  const relId = typeof attrs.rId === "string" ? attrs.rId : undefined;
253088
253753
  const attrSrc = typeof attrs.src === "string" ? attrs.src : undefined;
253089
- const extension3 = typeof attrs.extension === "string" ? attrs.extension.toLowerCase() : undefined;
253090
- const resolvedSrc = resolveImageSrc(blk.src, relId, attrSrc, extension3);
253754
+ const extension2 = typeof attrs.extension === "string" ? attrs.extension.toLowerCase() : undefined;
253755
+ const resolvedSrc = resolveImageSrc(blk.src, relId, attrSrc, extension2);
253091
253756
  if (resolvedSrc)
253092
253757
  return {
253093
253758
  ...blk,
@@ -261747,7 +262412,7 @@ var Node$13 = class Node$14 {
261747
262412
  seededAt: (/* @__PURE__ */ new Date()).toISOString(),
261748
262413
  source: "browser"
261749
262414
  });
261750
- }, initSyncListener = (ydoc, editor, extension3) => {
262415
+ }, initSyncListener = (ydoc, editor, extension2) => {
261751
262416
  const provider = editor.options.collaborationProvider;
261752
262417
  if (!provider)
261753
262418
  return () => {};
@@ -261757,7 +262422,7 @@ var Node$13 = class Node$14 {
261757
262422
  return;
261758
262423
  if (synced === false)
261759
262424
  return;
261760
- extension3.options.isReady = true;
262425
+ extension2.options.isReady = true;
261761
262426
  editor.emit("collaborationReady", {
261762
262427
  editor,
261763
262428
  ydoc
@@ -261910,11 +262575,11 @@ var Node$13 = class Node$14 {
261910
262575
  });
261911
262576
  }
261912
262577
  };
261913
- for (const extension3 of extensions) {
261914
- const addGlobalAttributes = getExtensionConfigField(extension3, "addGlobalAttributes", {
261915
- name: extension3.name,
261916
- options: extension3.options,
261917
- storage: extension3.storage
262578
+ for (const extension2 of extensions) {
262579
+ const addGlobalAttributes = getExtensionConfigField(extension2, "addGlobalAttributes", {
262580
+ name: extension2.name,
262581
+ options: extension2.options,
262582
+ storage: extension2.storage
261918
262583
  });
261919
262584
  if (!addGlobalAttributes)
261920
262585
  continue;
@@ -261929,11 +262594,11 @@ var Node$13 = class Node$14 {
261929
262594
  const nodeAndMarkExtensions = extensions.filter((e) => {
261930
262595
  return e.type === "node" || e.type === "mark";
261931
262596
  });
261932
- for (const extension3 of nodeAndMarkExtensions) {
261933
- const addAttributes = getExtensionConfigField(extension3, "addAttributes", {
261934
- name: extension3.name,
261935
- options: extension3.options,
261936
- storage: extension3.storage
262597
+ for (const extension2 of nodeAndMarkExtensions) {
262598
+ const addAttributes = getExtensionConfigField(extension2, "addAttributes", {
262599
+ name: extension2.name,
262600
+ options: extension2.options,
262601
+ storage: extension2.storage
261937
262602
  });
261938
262603
  if (!addAttributes)
261939
262604
  continue;
@@ -261946,7 +262611,7 @@ var Node$13 = class Node$14 {
261946
262611
  if (typeof merged.default === "function")
261947
262612
  merged.default = merged.default();
261948
262613
  extensionAttributes.push({
261949
- type: extension3.name,
262614
+ type: extension2.name,
261950
262615
  name,
261951
262616
  attribute: merged
261952
262617
  });
@@ -271641,12 +272306,12 @@ var Node$13 = class Node$14 {
271641
272306
  });
271642
272307
  }
271643
272308
  static #createNodesSchema(nodeExtensions, attributes, editor) {
271644
- const nodeEntries = nodeExtensions.map((extension3) => {
271645
- const extensionAttributes = attributes.filter((a2) => a2.type === extension3.name);
272309
+ const nodeEntries = nodeExtensions.map((extension2) => {
272310
+ const extensionAttributes = attributes.filter((a2) => a2.type === extension2.name);
271646
272311
  const context = {
271647
- name: extension3.name,
271648
- options: extension3.options,
271649
- storage: extension3.storage,
272312
+ name: extension2.name,
272313
+ options: extension2.options,
272314
+ storage: extension2.storage,
271650
272315
  editor
271651
272316
  };
271652
272317
  const attrs = Object.fromEntries(extensionAttributes.map((attr) => {
@@ -271656,80 +272321,80 @@ var Node$13 = class Node$14 {
271656
272321
  const extendNodeSchema = getExtensionConfigField(e, "extendNodeSchema", context);
271657
272322
  return {
271658
272323
  ...fields,
271659
- ...extendNodeSchema ? extendNodeSchema(extension3) : {}
272324
+ ...extendNodeSchema ? extendNodeSchema(extension2) : {}
271660
272325
  };
271661
272326
  }, {});
271662
272327
  const schema = cleanSchemaItem({
271663
- content: callOrGet(getExtensionConfigField(extension3, "content", context)),
271664
- group: callOrGet(getExtensionConfigField(extension3, "group", context)),
271665
- marks: callOrGet(getExtensionConfigField(extension3, "marks", context)),
271666
- inline: callOrGet(getExtensionConfigField(extension3, "inline", context)),
271667
- atom: callOrGet(getExtensionConfigField(extension3, "atom", context)),
271668
- selectable: callOrGet(getExtensionConfigField(extension3, "selectable", context)),
271669
- draggable: callOrGet(getExtensionConfigField(extension3, "draggable", context)),
271670
- code: callOrGet(getExtensionConfigField(extension3, "code", context)),
271671
- defining: callOrGet(getExtensionConfigField(extension3, "defining", context)),
271672
- isolating: callOrGet(getExtensionConfigField(extension3, "isolating", context)),
271673
- summary: getExtensionConfigField(extension3, "summary", context),
272328
+ content: callOrGet(getExtensionConfigField(extension2, "content", context)),
272329
+ group: callOrGet(getExtensionConfigField(extension2, "group", context)),
272330
+ marks: callOrGet(getExtensionConfigField(extension2, "marks", context)),
272331
+ inline: callOrGet(getExtensionConfigField(extension2, "inline", context)),
272332
+ atom: callOrGet(getExtensionConfigField(extension2, "atom", context)),
272333
+ selectable: callOrGet(getExtensionConfigField(extension2, "selectable", context)),
272334
+ draggable: callOrGet(getExtensionConfigField(extension2, "draggable", context)),
272335
+ code: callOrGet(getExtensionConfigField(extension2, "code", context)),
272336
+ defining: callOrGet(getExtensionConfigField(extension2, "defining", context)),
272337
+ isolating: callOrGet(getExtensionConfigField(extension2, "isolating", context)),
272338
+ summary: getExtensionConfigField(extension2, "summary", context),
271674
272339
  attrs,
271675
272340
  ...additionalNodeFields
271676
272341
  });
271677
- if (typeof extension3.validChildren === "function" || Array.isArray(extension3.validChildren))
272342
+ if (typeof extension2.validChildren === "function" || Array.isArray(extension2.validChildren))
271678
272343
  Object.defineProperty(schema, "validChildren", {
271679
272344
  enumerable: false,
271680
272345
  configurable: false,
271681
- get: () => extension3.validChildren
272346
+ get: () => extension2.validChildren
271682
272347
  });
271683
- const parseDOM = callOrGet(getExtensionConfigField(extension3, "parseDOM", context));
272348
+ const parseDOM = callOrGet(getExtensionConfigField(extension2, "parseDOM", context));
271684
272349
  if (parseDOM)
271685
272350
  schema.parseDOM = parseDOM.map((parseRule) => {
271686
272351
  return Attribute2.insertExtensionAttrsToParseRule(parseRule, extensionAttributes);
271687
272352
  });
271688
- const renderDOM = getExtensionConfigField(extension3, "renderDOM", context);
272353
+ const renderDOM = getExtensionConfigField(extension2, "renderDOM", context);
271689
272354
  if (renderDOM)
271690
272355
  schema.toDOM = (node3) => renderDOM({
271691
272356
  node: node3,
271692
272357
  htmlAttributes: Attribute2.getAttributesToRender(node3, extensionAttributes)
271693
272358
  });
271694
- const renderText = getExtensionConfigField(extension3, "renderText", context);
272359
+ const renderText = getExtensionConfigField(extension2, "renderText", context);
271695
272360
  if (renderText)
271696
272361
  schema.toText = renderText;
271697
- return [extension3.name, schema];
272362
+ return [extension2.name, schema];
271698
272363
  });
271699
272364
  return Object.fromEntries(nodeEntries);
271700
272365
  }
271701
272366
  static #createMarksSchema(markExtensions, attributes, editor) {
271702
- const markEntries = markExtensions.map((extension3) => {
271703
- const extensionAttributes = attributes.filter((a2) => a2.type === extension3.name);
272367
+ const markEntries = markExtensions.map((extension2) => {
272368
+ const extensionAttributes = attributes.filter((a2) => a2.type === extension2.name);
271704
272369
  const context = {
271705
- name: extension3.name,
271706
- options: extension3.options,
271707
- storage: extension3.storage,
272370
+ name: extension2.name,
272371
+ options: extension2.options,
272372
+ storage: extension2.storage,
271708
272373
  editor
271709
272374
  };
271710
272375
  const attrs = Object.fromEntries(extensionAttributes.map((attr) => {
271711
272376
  return [attr.name, { default: attr?.attribute?.default }];
271712
272377
  }));
271713
272378
  const schema = cleanSchemaItem({
271714
- group: callOrGet(getExtensionConfigField(extension3, "group", context)),
271715
- inclusive: callOrGet(getExtensionConfigField(extension3, "inclusive", context)),
271716
- excludes: callOrGet(getExtensionConfigField(extension3, "excludes", context)),
271717
- spanning: callOrGet(getExtensionConfigField(extension3, "spanning", context)),
271718
- code: callOrGet(getExtensionConfigField(extension3, "code", context)),
272379
+ group: callOrGet(getExtensionConfigField(extension2, "group", context)),
272380
+ inclusive: callOrGet(getExtensionConfigField(extension2, "inclusive", context)),
272381
+ excludes: callOrGet(getExtensionConfigField(extension2, "excludes", context)),
272382
+ spanning: callOrGet(getExtensionConfigField(extension2, "spanning", context)),
272383
+ code: callOrGet(getExtensionConfigField(extension2, "code", context)),
271719
272384
  attrs
271720
272385
  });
271721
- const parseDOM = callOrGet(getExtensionConfigField(extension3, "parseDOM", context));
272386
+ const parseDOM = callOrGet(getExtensionConfigField(extension2, "parseDOM", context));
271722
272387
  if (parseDOM)
271723
272388
  schema.parseDOM = parseDOM.map((parseRule) => {
271724
272389
  return Attribute2.insertExtensionAttrsToParseRule(parseRule, extensionAttributes);
271725
272390
  });
271726
- const renderDOM = getExtensionConfigField(extension3, "renderDOM", context);
272391
+ const renderDOM = getExtensionConfigField(extension2, "renderDOM", context);
271727
272392
  if (renderDOM)
271728
272393
  schema.toDOM = (mark2) => renderDOM({
271729
272394
  mark: mark2,
271730
272395
  htmlAttributes: Attribute2.getAttributesToRender(mark2, extensionAttributes)
271731
272396
  });
271732
- return [extension3.name, schema];
272397
+ return [extension2.name, schema];
271733
272398
  });
271734
272399
  return Object.fromEntries(markEntries);
271735
272400
  }
@@ -271854,9 +272519,9 @@ var Node$13 = class Node$14 {
271854
272519
  constructor(extensions, userExtensions, editor) {
271855
272520
  this.editor = editor;
271856
272521
  this.externalExtensions = userExtensions || [];
271857
- this.externalExtensions = this.externalExtensions.map((extension3) => {
272522
+ this.externalExtensions = this.externalExtensions.map((extension2) => {
271858
272523
  return {
271859
- ...extension3,
272524
+ ...extension2,
271860
272525
  isExternal: true
271861
272526
  };
271862
272527
  });
@@ -271887,13 +272552,13 @@ var Node$13 = class Node$14 {
271887
272552
  }
271888
272553
  get commands() {
271889
272554
  let commandsObject = {};
271890
- for (const extension3 of this.extensions) {
271891
- const addCommands = getExtensionConfigField(extension3, "addCommands", {
271892
- name: extension3.name,
271893
- options: extension3.options,
271894
- storage: extension3.storage,
272555
+ for (const extension2 of this.extensions) {
272556
+ const addCommands = getExtensionConfigField(extension2, "addCommands", {
272557
+ name: extension2.name,
272558
+ options: extension2.options,
272559
+ storage: extension2.storage,
271895
272560
  editor: this.editor,
271896
- type: getSchemaTypeByName(extension3.name, this.schema)
272561
+ type: getSchemaTypeByName(extension2.name, this.schema)
271897
272562
  });
271898
272563
  if (addCommands)
271899
272564
  commandsObject = {
@@ -271905,16 +272570,16 @@ var Node$13 = class Node$14 {
271905
272570
  }
271906
272571
  get helpers() {
271907
272572
  const helpersObject = {};
271908
- for (const extension3 of this.extensions) {
271909
- const name = extension3.name;
272573
+ for (const extension2 of this.extensions) {
272574
+ const name = extension2.name;
271910
272575
  if (!name)
271911
272576
  continue;
271912
- const addHelpers = getExtensionConfigField(extension3, "addHelpers", {
271913
- name: extension3.name,
271914
- options: extension3.options,
271915
- storage: extension3.storage,
272577
+ const addHelpers = getExtensionConfigField(extension2, "addHelpers", {
272578
+ name: extension2.name,
272579
+ options: extension2.options,
272580
+ storage: extension2.storage,
271916
272581
  editor: this.editor,
271917
- type: getSchemaTypeByName(extension3.name, this.schema)
272582
+ type: getSchemaTypeByName(extension2.name, this.schema)
271918
272583
  });
271919
272584
  if (addHelpers)
271920
272585
  helpersObject[name] = addHelpers();
@@ -271925,16 +272590,16 @@ var Node$13 = class Node$14 {
271925
272590
  const editor = this.editor;
271926
272591
  const extensions = ExtensionService2.sortByPriority([...this.extensions].reverse());
271927
272592
  const inputRules = [];
271928
- const allPlugins = extensions.map((extension3) => {
272593
+ const allPlugins = extensions.map((extension2) => {
271929
272594
  const context = {
271930
- name: extension3.name,
271931
- options: extension3.options,
271932
- storage: extension3.storage,
272595
+ name: extension2.name,
272596
+ options: extension2.options,
272597
+ storage: extension2.storage,
271933
272598
  editor,
271934
- type: getSchemaTypeByName(extension3.name, this.schema)
272599
+ type: getSchemaTypeByName(extension2.name, this.schema)
271935
272600
  };
271936
272601
  const plugins = [];
271937
- const addShortcuts = getExtensionConfigField(extension3, "addShortcuts", context);
272602
+ const addShortcuts = getExtensionConfigField(extension2, "addShortcuts", context);
271938
272603
  let bindingsObject = {};
271939
272604
  if (addShortcuts) {
271940
272605
  const entries2 = Object.entries(addShortcuts()).map(([shortcut, method]) => {
@@ -271946,10 +272611,10 @@ var Node$13 = class Node$14 {
271946
272611
  bindingsObject = { ...Object.fromEntries(entries2) };
271947
272612
  }
271948
272613
  plugins.push(keymap(bindingsObject));
271949
- const addInputRules = getExtensionConfigField(extension3, "addInputRules", context);
271950
- if (isExtensionRulesEnabled(extension3, editor.options.enableInputRules) && addInputRules)
272614
+ const addInputRules = getExtensionConfigField(extension2, "addInputRules", context);
272615
+ if (isExtensionRulesEnabled(extension2, editor.options.enableInputRules) && addInputRules)
271951
272616
  inputRules.push(...addInputRules());
271952
- const addPmPlugins = getExtensionConfigField(extension3, "addPmPlugins", context);
272617
+ const addPmPlugins = getExtensionConfigField(extension2, "addPmPlugins", context);
271953
272618
  if (addPmPlugins)
271954
272619
  plugins.push(...addPmPlugins());
271955
272620
  return plugins;
@@ -271961,14 +272626,14 @@ var Node$13 = class Node$14 {
271961
272626
  }
271962
272627
  get nodeViews() {
271963
272628
  const { editor } = this;
271964
- const entries2 = this.extensions.filter((e) => e.type === "node").filter((extension3) => !!getExtensionConfigField(extension3, "addNodeView")).map((extension3) => {
271965
- const extensionAttrs = this.attributes.filter((a2) => a2.type === extension3.name);
271966
- const addNodeView = getExtensionConfigField(extension3, "addNodeView", {
271967
- name: extension3.name,
271968
- options: extension3.options,
271969
- storage: extension3.storage,
272629
+ const entries2 = this.extensions.filter((e) => e.type === "node").filter((extension2) => !!getExtensionConfigField(extension2, "addNodeView")).map((extension2) => {
272630
+ const extensionAttrs = this.attributes.filter((a2) => a2.type === extension2.name);
272631
+ const addNodeView = getExtensionConfigField(extension2, "addNodeView", {
272632
+ name: extension2.name,
272633
+ options: extension2.options,
272634
+ storage: extension2.storage,
271970
272635
  editor,
271971
- type: getNodeType(extension3.name, this.schema)
272636
+ type: getNodeType(extension2.name, this.schema)
271972
272637
  });
271973
272638
  if (!addNodeView)
271974
272639
  return null;
@@ -271982,47 +272647,47 @@ var Node$13 = class Node$14 {
271982
272647
  getPos,
271983
272648
  decorations,
271984
272649
  htmlAttributes: Attribute2.getAttributesToRender(node3, extensionAttrs),
271985
- extension: extension3,
272650
+ extension: extension2,
271986
272651
  extensionAttrs
271987
272652
  });
271988
272653
  };
271989
- return [extension3.name, nodeview];
272654
+ return [extension2.name, nodeview];
271990
272655
  }).filter(Boolean);
271991
272656
  return Object.fromEntries(entries2);
271992
272657
  }
271993
272658
  #setupExtensions() {
271994
- for (const extension3 of this.extensions) {
271995
- this.editor.extensionStorage[extension3.name] = extension3.storage;
272659
+ for (const extension2 of this.extensions) {
272660
+ this.editor.extensionStorage[extension2.name] = extension2.storage;
271996
272661
  const context = {
271997
- name: extension3.name,
271998
- options: extension3.options,
271999
- storage: extension3.storage,
272662
+ name: extension2.name,
272663
+ options: extension2.options,
272664
+ storage: extension2.storage,
272000
272665
  editor: this.editor,
272001
- type: getSchemaTypeByName(extension3.name, this.schema)
272666
+ type: getSchemaTypeByName(extension2.name, this.schema)
272002
272667
  };
272003
- if (extension3.type === "mark") {
272004
- if (callOrGet(getExtensionConfigField(extension3, "keepOnSplit", context)) ?? true)
272005
- this.splittableMarks.push(extension3.name);
272668
+ if (extension2.type === "mark") {
272669
+ if (callOrGet(getExtensionConfigField(extension2, "keepOnSplit", context)) ?? true)
272670
+ this.splittableMarks.push(extension2.name);
272006
272671
  }
272007
- this.#attachEditorEvents(extension3);
272672
+ this.#attachEditorEvents(extension2);
272008
272673
  }
272009
272674
  }
272010
- #attachEditorEvents(extension3) {
272675
+ #attachEditorEvents(extension2) {
272011
272676
  const context = {
272012
- name: extension3.name,
272013
- options: extension3.options,
272014
- storage: extension3.storage,
272677
+ name: extension2.name,
272678
+ options: extension2.options,
272679
+ storage: extension2.storage,
272015
272680
  editor: this.editor,
272016
- type: getSchemaTypeByName(extension3.name, this.schema)
272017
- };
272018
- const onBeforeCreate = getExtensionConfigField(extension3, "onBeforeCreate", context);
272019
- const onCreate2 = getExtensionConfigField(extension3, "onCreate", context);
272020
- const onUpdate = getExtensionConfigField(extension3, "onUpdate", context);
272021
- const onSelectionUpdate = getExtensionConfigField(extension3, "onSelectionUpdate", context);
272022
- const onTransaction = getExtensionConfigField(extension3, "onTransaction", context);
272023
- const onFocus = getExtensionConfigField(extension3, "onFocus", context);
272024
- const onBlur = getExtensionConfigField(extension3, "onBlur", context);
272025
- const onDestroy2 = getExtensionConfigField(extension3, "onDestroy", context);
272681
+ type: getSchemaTypeByName(extension2.name, this.schema)
272682
+ };
272683
+ const onBeforeCreate = getExtensionConfigField(extension2, "onBeforeCreate", context);
272684
+ const onCreate2 = getExtensionConfigField(extension2, "onCreate", context);
272685
+ const onUpdate = getExtensionConfigField(extension2, "onUpdate", context);
272686
+ const onSelectionUpdate = getExtensionConfigField(extension2, "onSelectionUpdate", context);
272687
+ const onTransaction = getExtensionConfigField(extension2, "onTransaction", context);
272688
+ const onFocus = getExtensionConfigField(extension2, "onFocus", context);
272689
+ const onBlur = getExtensionConfigField(extension2, "onBlur", context);
272690
+ const onDestroy2 = getExtensionConfigField(extension2, "onDestroy", context);
272026
272691
  if (onBeforeCreate)
272027
272692
  this.editor.on("beforeCreate", onBeforeCreate);
272028
272693
  if (onCreate2)
@@ -272453,7 +273118,7 @@ var Node$13 = class Node$14 {
272453
273118
  }, getLevel = (node3) => {
272454
273119
  const lvl = node3.getAttribute("data-level");
272455
273120
  return lvl ? parseInt(lvl, 10) : 0;
272456
- }, DEFAULT_FALLBACK_MARGIN_INCHES = 1, MIN_MOBILE_SIDE_MARGIN_PX = 10, RESIZE_DEBOUNCE_MS = 150, DEFAULT_LINE_HEIGHT = 1.2, RUNTIME_COPY_STRIP_SELECTOR, PARAGRAPH_CONTENT_SELECTOR = "span.sd-paragraph-content", BLOCK_COPY_CONTEXT_SELECTOR = "p, div, h1, h2, h3, h4, h5, h6, blockquote, table", WORD_HTML_META = '<meta name="Generator" content="Microsoft Word">', WORD_NUM_FMT_BY_LIST_FMT, ProseMirrorRenderer = class {
273121
+ }, DEFAULT_FALLBACK_MARGIN_INCHES = 1, MIN_MOBILE_SIDE_MARGIN_PX = 10, RESIZE_DEBOUNCE_MS = 150, DEFAULT_LINE_HEIGHT = 1.2, HEADER_FOOTER_LINE_HEIGHT = 1, RUNTIME_COPY_STRIP_SELECTOR, PARAGRAPH_CONTENT_SELECTOR = "span.sd-paragraph-content", BLOCK_COPY_CONTEXT_SELECTOR = "p, div, h1, h2, h3, h4, h5, h6, blockquote, table", WORD_HTML_META = '<meta name="Generator" content="Microsoft Word">', WORD_NUM_FMT_BY_LIST_FMT, ProseMirrorRenderer = class {
272457
273122
  constructor() {
272458
273123
  this.view = null;
272459
273124
  this.eventListenerCleanups = [];
@@ -272544,7 +273209,7 @@ var Node$13 = class Node$14 {
272544
273209
  element3.style.fontFamily = resolvedFontFamily;
272545
273210
  if (fontSizePt)
272546
273211
  element3.style.fontSize = `${fontSizePt}pt`;
272547
- proseMirror.style.lineHeight = String(DEFAULT_LINE_HEIGHT);
273212
+ proseMirror.style.lineHeight = editor.options.isHeaderOrFooter ? String(HEADER_FOOTER_LINE_HEIGHT) : String(DEFAULT_LINE_HEIGHT);
272548
273213
  element3.style.transformOrigin = "top left";
272549
273214
  element3.style.touchAction = "auto";
272550
273215
  const elementStyleWithVendor = element3.style;
@@ -272705,16 +273370,16 @@ var Node$13 = class Node$14 {
272705
273370
  console.warn("Failed to initialize developer tools:", error3);
272706
273371
  }
272707
273372
  }
272708
- }, BLANK_DOCX_BASE64 = `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`, BLANK_DOCX_DATA_URI, TAB_LEADER_TO_SEPARATOR, SEPARATOR_TO_TAB_LEADER, DEFAULT_TOC_CONFIG, SWITCH_PATTERN$1, BULLET_FORMATS$1, LOCK_MODE_TO_SDT_LOCK, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, TOGGLE_MARK_SPECS, CORE_MARK_NAMES, METADATA_MARK_NAMES, CSS_NAMED_COLORS, V3_PREFIX = "text:", V4_PREFIX = "text:v4:", HEADING_STYLE_DEPTH, BULLET_FORMATS, MARK_PRIORITY, remarkProcessor, DEFAULT_UNFLATTEN_LISTS = true, HEADING_STYLE_PATTERN, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SCHEMA_NODE_GATES, schemaGatedIds, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, registry, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, BOOLEAN_INLINE_MARK_KEYS, TEXT_STYLE_KEYS, PRESERVE_RUN_PROPERTIES_META_KEY = "sdPreserveRunPropertiesKeys", CONTENT_CAPABILITIES, INLINE_CAPABILITIES, SDT_LOCK_TO_LOCK_MODE, BODY_LOCATOR2, STUB_WHERE, EMPTY_RESOLUTION, CONTAINER_NODE_TYPES, VALID_EDGE_NODE_TYPES3, FALLBACK_STORE_KEY = "__documentApiComments", STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL2, UNDERLINE_API_TO_STORAGE, UNDERLINE_STORAGE_TO_API, HEX_SUBKEYS_BY_PROPERTY, PARAGRAPH_NODE_TYPES, TEXT_STYLE_CHARACTER_STYLE_ATTR = "styleId", DIRECT_FORMATTING_MARK_NAMES, ALIGNMENT_TO_JUSTIFICATION, SUPPORTED_DELETE_NODE_TYPES3, REJECTED_DELETE_NODE_TYPES3, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, HEADING_PATTERN, INDENT_PER_LEVEL_TWIPS = 720, HANGING_INDENT_TWIPS = 360, ORDERED_PRESET_CONFIG, BULLET_PRESET_CONFIG, PRESET_TEMPLATES, LevelFormattingHelpers, PRESET_KIND_MAP, NUMBERING_PART = "word/numbering.xml", DEFAULT_PRESET_FOR_KIND, _setValueDelegate, PREVIEW_TEXT_MAX_LENGTH = 2000, BLOCK_PREVIEW_MAX_LENGTH = 200, EDGE_NODE_TYPES$1, POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, SETTINGS_PART$1 = "word/settings.xml", WORD_DEFAULT_TBL_LOOK, FLAG_TO_OOXML_KEY, INVERTED_FLAGS, XML_KEY_TO_STYLE_OPTION, CLEARED_BORDER_OOXML, TABLE_MARGIN_KEY_GROUPS, TABLE_ADAPTER_DISPATCH, ROW_TARGETED_TABLE_OPS, registered = false, STYLES_PART_ID = "word/styles.xml", stylesPartDescriptor, settingsPartDescriptor, RELS_PART_ID2 = "word/_rels/document.xml.rels", RELS_XMLNS2 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", relsPartDescriptor, HISTORY_UNSAFE_OPS, CANONICAL_COMMENT_IGNORED_KEYS, INITIAL_HASH, ROUND_CONSTANTS, V1_COVERAGE, V2_COVERAGE, SNAPSHOT_VERSION_V2 = "sd-diff-snapshot/v2", PAYLOAD_VERSION_V1 = "sd-diff-payload/v1", PAYLOAD_VERSION_V2 = "sd-diff-payload/v2", ENGINE_ID = "super-editor", STAGED_CONVERTER_KEYS, DiffServiceError, DEFAULT_LEVEL = 1, SWITCH_PATTERN, TOC_BOOKMARK_PREFIX = "_Toc", DEFAULT_RIGHT_TAB_POS = 9350, TAB_LEADER_MAP, NO_ENTRIES_PLACEHOLDER, TC_LEVEL_MIN = 1, TC_LEVEL_MAX = 9, ALLOWED_WRAP_ATTRS, WRAP_TYPES_SUPPORTING_SIDE, WRAP_TYPES_SUPPORTING_DISTANCES, RELATIVE_HEIGHT_MIN = 0, RELATIVE_HEIGHT_MAX = 4294967295, FORBIDDEN_RAW_PATCH_NAMES, CONTROL_TYPE_SDT_PR_ELEMENTS, DEFAULT_CHECKBOX_SYMBOL_FONT2 = "MS Gothic", DEFAULT_CHECKBOX_CHECKED_HEX2 = "2612", DEFAULT_CHECKBOX_UNCHECKED_HEX2 = "2610", VARIANT_ORDER, KIND_ORDER, HEADER_RELATIONSHIP_TYPE3 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE3 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", DOCUMENT_RELS_PATH2 = "word/_rels/document.xml.rels", HEADER_FILE_PATTERN2, FOOTER_FILE_PATTERN2, SETTINGS_PART, SPECIAL_NOTE_TYPES, RESTART_POLICY_TO_OOXML, VALID_DISPLAYS, REFERENCE_BLOCK_PREFIX, CAPTION_STYLE_NAMES, CAPTION_PARAGRAPH_STYLE_ID = "Caption", CAPTION_FORMAT_TO_OOXML, DOCUMENT_STAT_FIELD_TYPES, TOA_LEADER_REVERSE_MAP, EDGE_NODE_TYPES, CONTENT_TYPES_PART_ID = "[Content_Types].xml", CONTENT_TYPES_NS = "http://schemas.openxmlformats.org/package/2006/content-types", contentTypesPartDescriptor, empty_exports, init_empty, CURRENT_APP_VERSION2 = "1.24.0", PIXELS_PER_INCH2 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, cloneExtensionInstance = (extension3) => {
272709
- const extensionLike = extension3;
273373
+ }, BLANK_DOCX_BASE64 = `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`, BLANK_DOCX_DATA_URI, TAB_LEADER_TO_SEPARATOR, SEPARATOR_TO_TAB_LEADER, DEFAULT_TOC_CONFIG, SWITCH_PATTERN$1, BULLET_FORMATS$1, LOCK_MODE_TO_SDT_LOCK, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, TOGGLE_MARK_SPECS, CORE_MARK_NAMES, METADATA_MARK_NAMES, CSS_NAMED_COLORS, V3_PREFIX = "text:", V4_PREFIX = "text:v4:", HEADING_STYLE_DEPTH, BULLET_FORMATS, MARK_PRIORITY, remarkProcessor, DEFAULT_UNFLATTEN_LISTS = true, HEADING_STYLE_PATTERN, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SCHEMA_NODE_GATES, schemaGatedIds, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, registry, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, BOOLEAN_INLINE_MARK_KEYS, TEXT_STYLE_KEYS, PRESERVE_RUN_PROPERTIES_META_KEY = "sdPreserveRunPropertiesKeys", CONTENT_CAPABILITIES, INLINE_CAPABILITIES, SDT_LOCK_TO_LOCK_MODE, BODY_LOCATOR2, STUB_WHERE, EMPTY_RESOLUTION, CONTAINER_NODE_TYPES, VALID_EDGE_NODE_TYPES3, FALLBACK_STORE_KEY = "__documentApiComments", STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL2, UNDERLINE_API_TO_STORAGE, UNDERLINE_STORAGE_TO_API, HEX_SUBKEYS_BY_PROPERTY, PARAGRAPH_NODE_TYPES, TEXT_STYLE_CHARACTER_STYLE_ATTR = "styleId", DIRECT_FORMATTING_MARK_NAMES, ALIGNMENT_TO_JUSTIFICATION, SUPPORTED_DELETE_NODE_TYPES3, REJECTED_DELETE_NODE_TYPES3, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, HEADING_PATTERN, INDENT_PER_LEVEL_TWIPS = 720, HANGING_INDENT_TWIPS = 360, ORDERED_PRESET_CONFIG, BULLET_PRESET_CONFIG, PRESET_TEMPLATES, LevelFormattingHelpers, PRESET_KIND_MAP, NUMBERING_PART = "word/numbering.xml", DEFAULT_PRESET_FOR_KIND, _setValueDelegate, PREVIEW_TEXT_MAX_LENGTH = 2000, BLOCK_PREVIEW_MAX_LENGTH = 200, EDGE_NODE_TYPES$1, POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, SETTINGS_PART$1 = "word/settings.xml", WORD_DEFAULT_TBL_LOOK, FLAG_TO_OOXML_KEY, INVERTED_FLAGS, XML_KEY_TO_STYLE_OPTION, CLEARED_BORDER_OOXML, TABLE_MARGIN_KEY_GROUPS, TABLE_ADAPTER_DISPATCH, ROW_TARGETED_TABLE_OPS, registered = false, STYLES_PART_ID = "word/styles.xml", stylesPartDescriptor, settingsPartDescriptor, RELS_PART_ID2 = "word/_rels/document.xml.rels", RELS_XMLNS2 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", relsPartDescriptor, HISTORY_UNSAFE_OPS, CANONICAL_COMMENT_IGNORED_KEYS, INITIAL_HASH, ROUND_CONSTANTS, V1_COVERAGE, V2_COVERAGE, SNAPSHOT_VERSION_V2 = "sd-diff-snapshot/v2", PAYLOAD_VERSION_V1 = "sd-diff-payload/v1", PAYLOAD_VERSION_V2 = "sd-diff-payload/v2", ENGINE_ID = "super-editor", STAGED_CONVERTER_KEYS, DiffServiceError, DEFAULT_LEVEL = 1, SWITCH_PATTERN, TOC_BOOKMARK_PREFIX = "_Toc", DEFAULT_RIGHT_TAB_POS = 9350, TAB_LEADER_MAP, NO_ENTRIES_PLACEHOLDER, TC_LEVEL_MIN = 1, TC_LEVEL_MAX = 9, ALLOWED_WRAP_ATTRS, WRAP_TYPES_SUPPORTING_SIDE, WRAP_TYPES_SUPPORTING_DISTANCES, RELATIVE_HEIGHT_MIN = 0, RELATIVE_HEIGHT_MAX = 4294967295, FORBIDDEN_RAW_PATCH_NAMES, CONTROL_TYPE_SDT_PR_ELEMENTS, DEFAULT_CHECKBOX_SYMBOL_FONT2 = "MS Gothic", DEFAULT_CHECKBOX_CHECKED_HEX2 = "2612", DEFAULT_CHECKBOX_UNCHECKED_HEX2 = "2610", VARIANT_ORDER, KIND_ORDER, HEADER_RELATIONSHIP_TYPE3 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE3 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", DOCUMENT_RELS_PATH2 = "word/_rels/document.xml.rels", HEADER_FILE_PATTERN2, FOOTER_FILE_PATTERN2, SETTINGS_PART, SPECIAL_NOTE_TYPES, RESTART_POLICY_TO_OOXML, VALID_DISPLAYS, REFERENCE_BLOCK_PREFIX, CAPTION_STYLE_NAMES, CAPTION_PARAGRAPH_STYLE_ID = "Caption", CAPTION_FORMAT_TO_OOXML, DOCUMENT_STAT_FIELD_TYPES, TOA_LEADER_REVERSE_MAP, EDGE_NODE_TYPES, CONTENT_TYPES_PART_ID = "[Content_Types].xml", CONTENT_TYPES_NS = "http://schemas.openxmlformats.org/package/2006/content-types", contentTypesPartDescriptor, empty_exports, init_empty, CURRENT_APP_VERSION2 = "1.24.0", PIXELS_PER_INCH2 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, cloneExtensionInstance = (extension2) => {
273374
+ const extensionLike = extension2;
272710
273375
  const config2 = extensionLike?.config;
272711
273376
  const ExtensionCtor = extensionLike?.constructor;
272712
273377
  if (!config2 || typeof config2 !== "object" || typeof ExtensionCtor !== "function")
272713
- return extension3;
273378
+ return extension2;
272714
273379
  try {
272715
273380
  return new ExtensionCtor(config2);
272716
273381
  } catch {
272717
- return extension3;
273382
+ return extension2;
272718
273383
  }
272719
273384
  }, Editor, token = (varName, fallback) => ({
272720
273385
  css: `var(${varName}, ${fallback})`,
@@ -286216,12 +286881,12 @@ var Node$13 = class Node$14 {
286216
286881
  return;
286217
286882
  console.log(...args$1);
286218
286883
  }, HEADER_FOOTER_INIT_BUDGET_MS = 200, MAX_ZOOM_WARNING_THRESHOLD = 10, MAX_SELECTION_RECTS_PER_USER = 100, SEMANTIC_RESIZE_DEBOUNCE_MS = 120, MIN_SEMANTIC_CONTENT_WIDTH_PX = 1, GLOBAL_PERFORMANCE, PresentationEditor, ICONS, TEXTS, tableActionsOptions;
286219
- var init_src_C8kQT9o6_es = __esm(() => {
286884
+ var init_src_CsmBi_VA_es = __esm(() => {
286220
286885
  init_rolldown_runtime_Bg48TavK_es();
286221
- init_SuperConverter_CE_qGNRx_es();
286886
+ init_SuperConverter_D0RwvY4d_es();
286222
286887
  init_jszip_C49i9kUs_es();
286223
286888
  init_uuid_qzgm05fK_es();
286224
- init_create_headless_toolbar_oHAjbd4d_es();
286889
+ init_create_headless_toolbar_C1v2RG6S_es();
286225
286890
  init_constants_5yyN6FZg_es();
286226
286891
  init_dist_B8HfvhaK_es();
286227
286892
  init_unified_Dsuw2be5_es();
@@ -287317,7 +287982,7 @@ ${err.toString()}`);
287317
287982
  }
287318
287983
  static valid($pos) {
287319
287984
  let parent = $pos.parent;
287320
- if (parent.inlineContent || !closedBefore($pos) || !closedAfter($pos))
287985
+ if (parent.isTextblock || !closedBefore($pos) || !closedAfter($pos))
287321
287986
  return false;
287322
287987
  let override = parent.type.spec.allowGapCursor;
287323
287988
  if (override != null)
@@ -287380,11 +288045,11 @@ ${err.toString()}`);
287380
288045
  addPmPlugins() {
287381
288046
  return [gapCursor()];
287382
288047
  },
287383
- extendNodeSchema(extension3) {
287384
- return { allowGapCursor: callOrGet(getExtensionConfigField(extension3, "allowGapCursor", {
287385
- name: extension3.name,
287386
- options: extension3.options,
287387
- storage: extension3.storage
288048
+ extendNodeSchema(extension2) {
288049
+ return { allowGapCursor: callOrGet(getExtensionConfigField(extension2, "allowGapCursor", {
288050
+ name: extension2.name,
288051
+ options: extension2.options,
288052
+ storage: extension2.storage
287388
288053
  })) ?? null };
287389
288054
  }
287390
288055
  });
@@ -290342,6 +291007,14 @@ ${err.toString()}`);
290342
291007
  };
290343
291008
  const node3 = createTable(editor.schema, rows, cols, withHeaderRow, null, widths, tableAttrs);
290344
291009
  if (dispatch) {
291010
+ const structuredContentInsertion = resolveStructuredContentBlockTableInsertion(tr.selection);
291011
+ if (structuredContentInsertion) {
291012
+ const { from: from$1, to, tablePos } = structuredContentInsertion;
291013
+ tr.replaceWith(from$1, to, node3);
291014
+ const selectionPos$1 = getFirstTableCellTextPos(tablePos, node3);
291015
+ tr.scrollIntoView().setSelection(TextSelection2.near(tr.doc.resolve(selectionPos$1)));
291016
+ return true;
291017
+ }
290345
291018
  let offset$1;
290346
291019
  let replaceRange2 = undefined;
290347
291020
  if (tr.selection.$from.depth === 0) {
@@ -290668,18 +291341,16 @@ ${err.toString()}`);
290668
291341
  deleteCellAndTableBorders: () => ({ state, tr }) => {
290669
291342
  if (!isInTable(state))
290670
291343
  return false;
290671
- const table2 = findParentNode((node3) => node3.type.name === this.name)(state.selection);
291344
+ const table2 = resolveCommandTargetTable(state.selection);
290672
291345
  if (!table2)
290673
291346
  return false;
290674
- const from$1 = table2.pos;
290675
- const to = table2.pos + table2.node.nodeSize;
290676
291347
  const nilBorder = {
290677
291348
  val: "nil",
290678
291349
  size: 0,
290679
291350
  space: 0,
290680
291351
  color: "auto"
290681
291352
  };
290682
- state.doc.nodesBetween(from$1, to, (node3, pos) => {
291353
+ table2.node.descendants((node3, pos) => {
290683
291354
  if (["tableCell", "tableHeader"].includes(node3.type.name)) {
290684
291355
  const nextTableCellProperties = {
290685
291356
  ...node3.attrs.tableCellProperties ?? {},
@@ -290691,13 +291362,14 @@ ${err.toString()}`);
290691
291362
  }
290692
291363
  };
290693
291364
  const nextInlineKeys = [...new Set([...node3.attrs.tableCellPropertiesInlineKeys || [], "borders"])];
290694
- tr.setNodeMarkup(pos, undefined, {
291365
+ tr.setNodeMarkup(table2.pos + 1 + pos, undefined, {
290695
291366
  ...node3.attrs,
290696
291367
  borders: null,
290697
291368
  tableCellProperties: nextTableCellProperties,
290698
291369
  tableCellPropertiesInlineKeys: nextInlineKeys
290699
291370
  });
290700
291371
  }
291372
+ return true;
290701
291373
  });
290702
291374
  tr.setNodeMarkup(table2.pos, undefined, {
290703
291375
  ...table2.node.attrs,
@@ -290828,11 +291500,11 @@ ${err.toString()}`);
290828
291500
  })()
290829
291501
  ];
290830
291502
  },
290831
- extendNodeSchema(extension3) {
290832
- return { tableRole: callOrGet(getExtensionConfigField(extension3, "tableRole", {
290833
- name: extension3.name,
290834
- options: extension3.options,
290835
- storage: extension3.storage
291503
+ extendNodeSchema(extension2) {
291504
+ return { tableRole: callOrGet(getExtensionConfigField(extension2, "tableRole", {
291505
+ name: extension2.name,
291506
+ options: extension2.options,
291507
+ storage: extension2.storage
290836
291508
  })) };
290837
291509
  }
290838
291510
  });
@@ -310524,11 +311196,11 @@ function print() { __p += __j.call(arguments, '') }
310524
311196
  SelectionHandleExtension
310525
311197
  ];
310526
311198
  const externalExtensions = this.options.externalExtensions || [];
310527
- const allExtensions = [...coreExtensions, ...this.options.extensions].filter((extension3) => {
310528
- const extensionType = typeof extension3?.type === "string" ? extension3.type : undefined;
311199
+ const allExtensions = [...coreExtensions, ...this.options.extensions].filter((extension2) => {
311200
+ const extensionType = typeof extension2?.type === "string" ? extension2.type : undefined;
310529
311201
  return extensionType ? allowedExtensions.includes(extensionType) : false;
310530
- }).map((extension3) => cloneExtensionInstance(extension3));
310531
- const isolatedExternalExtensions = externalExtensions.map((extension3) => cloneExtensionInstance(extension3));
311202
+ }).map((extension2) => cloneExtensionInstance(extension2));
311203
+ const isolatedExternalExtensions = externalExtensions.map((extension2) => cloneExtensionInstance(extension2));
310532
311204
  this.extensionService = ExtensionService.create(allExtensions, isolatedExternalExtensions, this);
310533
311205
  }
310534
311206
  #createCommandService() {
@@ -320687,11 +321359,11 @@ var init_zipper_DbkgrypV_es = __esm(() => {
320687
321359
 
320688
321360
  // ../../packages/superdoc/dist/super-editor.es.js
320689
321361
  var init_super_editor_es = __esm(() => {
320690
- init_src_C8kQT9o6_es();
320691
- init_SuperConverter_CE_qGNRx_es();
321362
+ init_src_CsmBi_VA_es();
321363
+ init_SuperConverter_D0RwvY4d_es();
320692
321364
  init_jszip_C49i9kUs_es();
320693
321365
  init_xml_js_CqGKpaft_es();
320694
- init_create_headless_toolbar_oHAjbd4d_es();
321366
+ init_create_headless_toolbar_C1v2RG6S_es();
320695
321367
  init_constants_5yyN6FZg_es();
320696
321368
  init_dist_B8HfvhaK_es();
320697
321369
  init_unified_Dsuw2be5_es();
@@ -376498,12 +377170,11 @@ var require_braces = __commonJS((exports, module) => {
376498
377170
  module.exports = braces;
376499
377171
  });
376500
377172
 
376501
- // ../../node_modules/.pnpm/picomatch@2.3.2/node_modules/picomatch/lib/constants.js
377173
+ // ../../node_modules/.pnpm/picomatch@2.3.1/node_modules/picomatch/lib/constants.js
376502
377174
  var require_constants4 = __commonJS((exports, module) => {
376503
377175
  var path2 = __require("path");
376504
377176
  var WIN_SLASH = "\\\\/";
376505
377177
  var WIN_NO_SLASH = `[^${WIN_SLASH}]`;
376506
- var DEFAULT_MAX_EXTGLOB_RECURSION = 0;
376507
377178
  var DOT_LITERAL = "\\.";
376508
377179
  var PLUS_LITERAL = "\\+";
376509
377180
  var QMARK_LITERAL = "\\?";
@@ -376551,7 +377222,6 @@ var require_constants4 = __commonJS((exports, module) => {
376551
377222
  END_ANCHOR: `(?:[${WIN_SLASH}]|$)`
376552
377223
  };
376553
377224
  var POSIX_REGEX_SOURCE = {
376554
- __proto__: null,
376555
377225
  alnum: "a-zA-Z0-9",
376556
377226
  alpha: "a-zA-Z",
376557
377227
  ascii: "\\x00-\\x7F",
@@ -376568,7 +377238,6 @@ var require_constants4 = __commonJS((exports, module) => {
376568
377238
  xdigit: "A-Fa-f0-9"
376569
377239
  };
376570
377240
  module.exports = {
376571
- DEFAULT_MAX_EXTGLOB_RECURSION,
376572
377241
  MAX_LENGTH: 1024 * 64,
376573
377242
  POSIX_REGEX_SOURCE,
376574
377243
  REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g,
@@ -376578,7 +377247,6 @@ var require_constants4 = __commonJS((exports, module) => {
376578
377247
  REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g,
376579
377248
  REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g,
376580
377249
  REPLACEMENTS: {
376581
- __proto__: null,
376582
377250
  "***": "*",
376583
377251
  "**/**": "**",
376584
377252
  "**/**/**": "**"
@@ -376642,7 +377310,7 @@ var require_constants4 = __commonJS((exports, module) => {
376642
377310
  };
376643
377311
  });
376644
377312
 
376645
- // ../../node_modules/.pnpm/picomatch@2.3.2/node_modules/picomatch/lib/utils.js
377313
+ // ../../node_modules/.pnpm/picomatch@2.3.1/node_modules/picomatch/lib/utils.js
376646
377314
  var require_utils3 = __commonJS((exports) => {
376647
377315
  var path2 = __require("path");
376648
377316
  var win32 = process.platform === "win32";
@@ -376702,7 +377370,7 @@ var require_utils3 = __commonJS((exports) => {
376702
377370
  };
376703
377371
  });
376704
377372
 
376705
- // ../../node_modules/.pnpm/picomatch@2.3.2/node_modules/picomatch/lib/scan.js
377373
+ // ../../node_modules/.pnpm/picomatch@2.3.1/node_modules/picomatch/lib/scan.js
376706
377374
  var require_scan = __commonJS((exports, module) => {
376707
377375
  var utils = require_utils3();
376708
377376
  var {
@@ -377017,7 +377685,7 @@ var require_scan = __commonJS((exports, module) => {
377017
377685
  module.exports = scan;
377018
377686
  });
377019
377687
 
377020
- // ../../node_modules/.pnpm/picomatch@2.3.2/node_modules/picomatch/lib/parse.js
377688
+ // ../../node_modules/.pnpm/picomatch@2.3.1/node_modules/picomatch/lib/parse.js
377021
377689
  var require_parse2 = __commonJS((exports, module) => {
377022
377690
  var constants2 = require_constants4();
377023
377691
  var utils = require_utils3();
@@ -377044,213 +377712,6 @@ var require_parse2 = __commonJS((exports, module) => {
377044
377712
  var syntaxError = (type2, char) => {
377045
377713
  return `Missing ${type2}: "${char}" - use "\\\\${char}" to match literal characters`;
377046
377714
  };
377047
- var splitTopLevel = (input2) => {
377048
- const parts = [];
377049
- let bracket = 0;
377050
- let paren = 0;
377051
- let quote2 = 0;
377052
- let value2 = "";
377053
- let escaped = false;
377054
- for (const ch of input2) {
377055
- if (escaped === true) {
377056
- value2 += ch;
377057
- escaped = false;
377058
- continue;
377059
- }
377060
- if (ch === "\\") {
377061
- value2 += ch;
377062
- escaped = true;
377063
- continue;
377064
- }
377065
- if (ch === '"') {
377066
- quote2 = quote2 === 1 ? 0 : 1;
377067
- value2 += ch;
377068
- continue;
377069
- }
377070
- if (quote2 === 0) {
377071
- if (ch === "[") {
377072
- bracket++;
377073
- } else if (ch === "]" && bracket > 0) {
377074
- bracket--;
377075
- } else if (bracket === 0) {
377076
- if (ch === "(") {
377077
- paren++;
377078
- } else if (ch === ")" && paren > 0) {
377079
- paren--;
377080
- } else if (ch === "|" && paren === 0) {
377081
- parts.push(value2);
377082
- value2 = "";
377083
- continue;
377084
- }
377085
- }
377086
- }
377087
- value2 += ch;
377088
- }
377089
- parts.push(value2);
377090
- return parts;
377091
- };
377092
- var isPlainBranch = (branch) => {
377093
- let escaped = false;
377094
- for (const ch of branch) {
377095
- if (escaped === true) {
377096
- escaped = false;
377097
- continue;
377098
- }
377099
- if (ch === "\\") {
377100
- escaped = true;
377101
- continue;
377102
- }
377103
- if (/[?*+@!()[\]{}]/.test(ch)) {
377104
- return false;
377105
- }
377106
- }
377107
- return true;
377108
- };
377109
- var normalizeSimpleBranch = (branch) => {
377110
- let value2 = branch.trim();
377111
- let changed = true;
377112
- while (changed === true) {
377113
- changed = false;
377114
- if (/^@\([^\\()[\]{}|]+\)$/.test(value2)) {
377115
- value2 = value2.slice(2, -1);
377116
- changed = true;
377117
- }
377118
- }
377119
- if (!isPlainBranch(value2)) {
377120
- return;
377121
- }
377122
- return value2.replace(/\\(.)/g, "$1");
377123
- };
377124
- var hasRepeatedCharPrefixOverlap = (branches) => {
377125
- const values2 = branches.map(normalizeSimpleBranch).filter(Boolean);
377126
- for (let i4 = 0;i4 < values2.length; i4++) {
377127
- for (let j = i4 + 1;j < values2.length; j++) {
377128
- const a2 = values2[i4];
377129
- const b2 = values2[j];
377130
- const char = a2[0];
377131
- if (!char || a2 !== char.repeat(a2.length) || b2 !== char.repeat(b2.length)) {
377132
- continue;
377133
- }
377134
- if (a2 === b2 || a2.startsWith(b2) || b2.startsWith(a2)) {
377135
- return true;
377136
- }
377137
- }
377138
- }
377139
- return false;
377140
- };
377141
- var parseRepeatedExtglob = (pattern, requireEnd = true) => {
377142
- if (pattern[0] !== "+" && pattern[0] !== "*" || pattern[1] !== "(") {
377143
- return;
377144
- }
377145
- let bracket = 0;
377146
- let paren = 0;
377147
- let quote2 = 0;
377148
- let escaped = false;
377149
- for (let i4 = 1;i4 < pattern.length; i4++) {
377150
- const ch = pattern[i4];
377151
- if (escaped === true) {
377152
- escaped = false;
377153
- continue;
377154
- }
377155
- if (ch === "\\") {
377156
- escaped = true;
377157
- continue;
377158
- }
377159
- if (ch === '"') {
377160
- quote2 = quote2 === 1 ? 0 : 1;
377161
- continue;
377162
- }
377163
- if (quote2 === 1) {
377164
- continue;
377165
- }
377166
- if (ch === "[") {
377167
- bracket++;
377168
- continue;
377169
- }
377170
- if (ch === "]" && bracket > 0) {
377171
- bracket--;
377172
- continue;
377173
- }
377174
- if (bracket > 0) {
377175
- continue;
377176
- }
377177
- if (ch === "(") {
377178
- paren++;
377179
- continue;
377180
- }
377181
- if (ch === ")") {
377182
- paren--;
377183
- if (paren === 0) {
377184
- if (requireEnd === true && i4 !== pattern.length - 1) {
377185
- return;
377186
- }
377187
- return {
377188
- type: pattern[0],
377189
- body: pattern.slice(2, i4),
377190
- end: i4
377191
- };
377192
- }
377193
- }
377194
- }
377195
- };
377196
- var getStarExtglobSequenceOutput = (pattern) => {
377197
- let index2 = 0;
377198
- const chars = [];
377199
- while (index2 < pattern.length) {
377200
- const match2 = parseRepeatedExtglob(pattern.slice(index2), false);
377201
- if (!match2 || match2.type !== "*") {
377202
- return;
377203
- }
377204
- const branches = splitTopLevel(match2.body).map((branch2) => branch2.trim());
377205
- if (branches.length !== 1) {
377206
- return;
377207
- }
377208
- const branch = normalizeSimpleBranch(branches[0]);
377209
- if (!branch || branch.length !== 1) {
377210
- return;
377211
- }
377212
- chars.push(branch);
377213
- index2 += match2.end + 1;
377214
- }
377215
- if (chars.length < 1) {
377216
- return;
377217
- }
377218
- const source = chars.length === 1 ? utils.escapeRegex(chars[0]) : `[${chars.map((ch) => utils.escapeRegex(ch)).join("")}]`;
377219
- return `${source}*`;
377220
- };
377221
- var repeatedExtglobRecursion = (pattern) => {
377222
- let depth = 0;
377223
- let value2 = pattern.trim();
377224
- let match2 = parseRepeatedExtglob(value2);
377225
- while (match2) {
377226
- depth++;
377227
- value2 = match2.body.trim();
377228
- match2 = parseRepeatedExtglob(value2);
377229
- }
377230
- return depth;
377231
- };
377232
- var analyzeRepeatedExtglob = (body2, options2) => {
377233
- if (options2.maxExtglobRecursion === false) {
377234
- return { risky: false };
377235
- }
377236
- const max5 = typeof options2.maxExtglobRecursion === "number" ? options2.maxExtglobRecursion : constants2.DEFAULT_MAX_EXTGLOB_RECURSION;
377237
- const branches = splitTopLevel(body2).map((branch) => branch.trim());
377238
- if (branches.length > 1) {
377239
- if (branches.some((branch) => branch === "") || branches.some((branch) => /^[*?]+$/.test(branch)) || hasRepeatedCharPrefixOverlap(branches)) {
377240
- return { risky: true };
377241
- }
377242
- }
377243
- for (const branch of branches) {
377244
- const safeOutput = getStarExtglobSequenceOutput(branch);
377245
- if (safeOutput) {
377246
- return { risky: true, safeOutput };
377247
- }
377248
- if (repeatedExtglobRecursion(branch) > max5) {
377249
- return { risky: true };
377250
- }
377251
- }
377252
- return { risky: false };
377253
- };
377254
377715
  var parse4 = (input2, options2) => {
377255
377716
  if (typeof input2 !== "string") {
377256
377717
  throw new TypeError("Expected a string");
@@ -377383,8 +377844,6 @@ var require_parse2 = __commonJS((exports, module) => {
377383
377844
  token2.prev = prev;
377384
377845
  token2.parens = state2.parens;
377385
377846
  token2.output = state2.output;
377386
- token2.startIndex = state2.index;
377387
- token2.tokensIndex = tokens.length;
377388
377847
  const output = (opts.capture ? "(" : "") + token2.open;
377389
377848
  increment2("parens");
377390
377849
  push2({ type: type2, value: value3, output: state2.output ? "" : ONE_CHAR });
@@ -377392,26 +377851,6 @@ var require_parse2 = __commonJS((exports, module) => {
377392
377851
  extglobs.push(token2);
377393
377852
  };
377394
377853
  const extglobClose = (token2) => {
377395
- const literal = input2.slice(token2.startIndex, state2.index + 1);
377396
- const body2 = input2.slice(token2.startIndex + 2, state2.index);
377397
- const analysis = analyzeRepeatedExtglob(body2, opts);
377398
- if ((token2.type === "plus" || token2.type === "star") && analysis.risky) {
377399
- const safeOutput = analysis.safeOutput ? (token2.output ? "" : ONE_CHAR) + (opts.capture ? `(${analysis.safeOutput})` : analysis.safeOutput) : undefined;
377400
- const open2 = tokens[token2.tokensIndex];
377401
- open2.type = "text";
377402
- open2.value = literal;
377403
- open2.output = safeOutput || utils.escapeRegex(literal);
377404
- for (let i4 = token2.tokensIndex + 1;i4 < tokens.length; i4++) {
377405
- tokens[i4].value = "";
377406
- tokens[i4].output = "";
377407
- delete tokens[i4].suffix;
377408
- }
377409
- state2.output = token2.output + open2.output;
377410
- state2.backtrack = true;
377411
- push2({ type: "paren", extglob: true, value: value2, output: "" });
377412
- decrement("parens");
377413
- return;
377414
- }
377415
377854
  let output = token2.close + (opts.capture ? ")" : "");
377416
377855
  let rest;
377417
377856
  if (token2.type === "negate") {
@@ -378024,7 +378463,7 @@ var require_parse2 = __commonJS((exports, module) => {
378024
378463
  module.exports = parse4;
378025
378464
  });
378026
378465
 
378027
- // ../../node_modules/.pnpm/picomatch@2.3.2/node_modules/picomatch/lib/picomatch.js
378466
+ // ../../node_modules/.pnpm/picomatch@2.3.1/node_modules/picomatch/lib/picomatch.js
378028
378467
  var require_picomatch = __commonJS((exports, module) => {
378029
378468
  var path2 = __require("path");
378030
378469
  var scan = require_scan();