@superdoc-dev/cli 0.5.0-next.37 → 0.5.0-next.38

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 +629 -694
  2. package/package.json +8 -8
package/dist/index.js CHANGED
@@ -27712,7 +27712,7 @@ var init_y_websocket = __esm(() => {
27712
27712
  };
27713
27713
  });
27714
27714
 
27715
- // ../../node_modules/.pnpm/@liveblocks+core@3.15.5_@types+json-schema@7.0.15/node_modules/@liveblocks/core/dist/index.js
27715
+ // ../../node_modules/.pnpm/@liveblocks+core@3.15.4_@types+json-schema@7.0.15/node_modules/@liveblocks/core/dist/index.js
27716
27716
  function error(msg) {
27717
27717
  if (false) {} else {
27718
27718
  throw new Error(msg);
@@ -33041,7 +33041,7 @@ function escapeMarkdown(value) {
33041
33041
  var __defProp2, __export2 = (target, all2) => {
33042
33042
  for (var name in all2)
33043
33043
  __defProp2(target, name, { get: all2[name], enumerable: true });
33044
- }, 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 {
33044
+ }, PKG_NAME = "@liveblocks/core", PKG_VERSION = "3.15.4", 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 {
33045
33045
  #byId;
33046
33046
  #chats;
33047
33047
  signal;
@@ -36684,8 +36684,8 @@ var init_dist = __esm(() => {
36684
36684
  detectDupes(PKG_NAME, PKG_VERSION, PKG_FORMAT);
36685
36685
  });
36686
36686
 
36687
- // ../../node_modules/.pnpm/@liveblocks+client@3.15.5_@types+json-schema@7.0.15/node_modules/@liveblocks/client/dist/index.js
36688
- var PKG_NAME2 = "@liveblocks/client", PKG_VERSION2 = "3.15.5", PKG_FORMAT2 = "esm";
36687
+ // ../../node_modules/.pnpm/@liveblocks+client@3.15.4_@types+json-schema@7.0.15/node_modules/@liveblocks/client/dist/index.js
36688
+ var PKG_NAME2 = "@liveblocks/client", PKG_VERSION2 = "3.15.4", PKG_FORMAT2 = "esm";
36689
36689
  var init_dist2 = __esm(() => {
36690
36690
  init_dist();
36691
36691
  init_dist();
@@ -37314,8 +37314,8 @@ var init_sha2 = __esm(() => {
37314
37314
  sha256 = /* @__PURE__ */ createHasher(() => new SHA256);
37315
37315
  });
37316
37316
 
37317
- // ../../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
37318
- var PKG_NAME3 = "@liveblocks/yjs", PKG_VERSION3 = "3.15.5", PKG_FORMAT3 = "esm", create9 = () => /* @__PURE__ */ new Map, setIfUndefined3 = (map3, key, createT) => {
37317
+ // ../../node_modules/.pnpm/@liveblocks+yjs@3.15.4_@types+json-schema@7.0.15_yjs@13.6.30/node_modules/@liveblocks/yjs/dist/index.js
37318
+ var PKG_NAME3 = "@liveblocks/yjs", PKG_VERSION3 = "3.15.4", PKG_FORMAT3 = "esm", create9 = () => /* @__PURE__ */ new Map, setIfUndefined3 = (map3, key, createT) => {
37319
37319
  let set = map3.get(key);
37320
37320
  if (set === undefined) {
37321
37321
  map3.set(key, set = createT());
@@ -37821,7 +37821,7 @@ var init_dist3 = __esm(() => {
37821
37821
  detectDupes(PKG_NAME3, PKG_VERSION3, PKG_FORMAT3);
37822
37822
  });
37823
37823
 
37824
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/constants.js
37824
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/constants.js
37825
37825
  var require_constants = __commonJS((exports, module) => {
37826
37826
  var BINARY_TYPES = ["nodebuffer", "arraybuffer", "fragments"];
37827
37827
  var hasBlob = typeof Blob !== "undefined";
@@ -37841,7 +37841,7 @@ var require_constants = __commonJS((exports, module) => {
37841
37841
  };
37842
37842
  });
37843
37843
 
37844
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/buffer-util.js
37844
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/buffer-util.js
37845
37845
  var require_buffer_util = __commonJS((exports, module) => {
37846
37846
  var { EMPTY_BUFFER } = require_constants();
37847
37847
  var FastBuffer = Buffer[Symbol.species];
@@ -37919,7 +37919,7 @@ var require_buffer_util = __commonJS((exports, module) => {
37919
37919
  }
37920
37920
  });
37921
37921
 
37922
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/limiter.js
37922
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/limiter.js
37923
37923
  var require_limiter = __commonJS((exports, module) => {
37924
37924
  var kDone = Symbol("kDone");
37925
37925
  var kRun = Symbol("kRun");
@@ -37951,7 +37951,7 @@ var require_limiter = __commonJS((exports, module) => {
37951
37951
  module.exports = Limiter;
37952
37952
  });
37953
37953
 
37954
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/permessage-deflate.js
37954
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/permessage-deflate.js
37955
37955
  var require_permessage_deflate = __commonJS((exports, module) => {
37956
37956
  var zlib = __require("zlib");
37957
37957
  var bufferUtil = require_buffer_util();
@@ -37967,11 +37967,11 @@ var require_permessage_deflate = __commonJS((exports, module) => {
37967
37967
  var zlibLimiter;
37968
37968
 
37969
37969
  class PerMessageDeflate {
37970
- constructor(options) {
37970
+ constructor(options, isServer, maxPayload) {
37971
+ this._maxPayload = maxPayload | 0;
37971
37972
  this._options = options || {};
37972
37973
  this._threshold = this._options.threshold !== undefined ? this._options.threshold : 1024;
37973
- this._maxPayload = this._options.maxPayload | 0;
37974
- this._isServer = !!this._options.isServer;
37974
+ this._isServer = !!isServer;
37975
37975
  this._deflate = null;
37976
37976
  this._inflate = null;
37977
37977
  this.params = null;
@@ -38215,7 +38215,7 @@ var require_permessage_deflate = __commonJS((exports, module) => {
38215
38215
  }
38216
38216
  });
38217
38217
 
38218
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/validation.js
38218
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/validation.js
38219
38219
  var require_validation = __commonJS((exports, module) => {
38220
38220
  var { isUtf8 } = __require("buffer");
38221
38221
  var { hasBlob } = require_constants();
@@ -38402,7 +38402,7 @@ var require_validation = __commonJS((exports, module) => {
38402
38402
  }
38403
38403
  });
38404
38404
 
38405
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/receiver.js
38405
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/receiver.js
38406
38406
  var require_receiver = __commonJS((exports, module) => {
38407
38407
  var { Writable } = __require("stream");
38408
38408
  var PerMessageDeflate = require_permessage_deflate();
@@ -38783,7 +38783,7 @@ var require_receiver = __commonJS((exports, module) => {
38783
38783
  module.exports = Receiver;
38784
38784
  });
38785
38785
 
38786
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/sender.js
38786
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/sender.js
38787
38787
  var require_sender = __commonJS((exports, module) => {
38788
38788
  var { Duplex } = __require("stream");
38789
38789
  var { randomFillSync } = __require("crypto");
@@ -39137,7 +39137,7 @@ var require_sender = __commonJS((exports, module) => {
39137
39137
  }
39138
39138
  });
39139
39139
 
39140
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/event-target.js
39140
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/event-target.js
39141
39141
  var require_event_target = __commonJS((exports, module) => {
39142
39142
  var { kForOnEventAttribute, kListener } = require_constants();
39143
39143
  var kCode = Symbol("kCode");
@@ -39288,7 +39288,7 @@ var require_event_target = __commonJS((exports, module) => {
39288
39288
  }
39289
39289
  });
39290
39290
 
39291
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/extension.js
39291
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/extension.js
39292
39292
  var require_extension = __commonJS((exports, module) => {
39293
39293
  var { tokenChars } = require_validation();
39294
39294
  function push(dest, name, elem) {
@@ -39453,7 +39453,7 @@ var require_extension = __commonJS((exports, module) => {
39453
39453
  module.exports = { format, parse };
39454
39454
  });
39455
39455
 
39456
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/websocket.js
39456
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/websocket.js
39457
39457
  var require_websocket = __commonJS((exports, module) => {
39458
39458
  var EventEmitter2 = __require("events");
39459
39459
  var https = __require("https");
@@ -39842,7 +39842,7 @@ var require_websocket = __commonJS((exports, module) => {
39842
39842
  } else {
39843
39843
  try {
39844
39844
  parsedUrl = new URL2(address2);
39845
- } catch {
39845
+ } catch (e) {
39846
39846
  throw new SyntaxError(`Invalid URL: ${address2}`);
39847
39847
  }
39848
39848
  }
@@ -39890,11 +39890,7 @@ var require_websocket = __commonJS((exports, module) => {
39890
39890
  opts.path = parsedUrl.pathname + parsedUrl.search;
39891
39891
  opts.timeout = opts.handshakeTimeout;
39892
39892
  if (opts.perMessageDeflate) {
39893
- perMessageDeflate = new PerMessageDeflate({
39894
- ...opts.perMessageDeflate,
39895
- isServer: false,
39896
- maxPayload: opts.maxPayload
39897
- });
39893
+ perMessageDeflate = new PerMessageDeflate(opts.perMessageDeflate !== true ? opts.perMessageDeflate : {}, false, opts.maxPayload);
39898
39894
  opts.headers["Sec-WebSocket-Extensions"] = format({
39899
39895
  [PerMessageDeflate.extensionName]: perMessageDeflate.offer()
39900
39896
  });
@@ -40219,7 +40215,7 @@ var require_websocket = __commonJS((exports, module) => {
40219
40215
  }
40220
40216
  });
40221
40217
 
40222
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/stream.js
40218
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/stream.js
40223
40219
  var require_stream = __commonJS((exports, module) => {
40224
40220
  var WebSocket2 = require_websocket();
40225
40221
  var { Duplex } = __require("stream");
@@ -40322,7 +40318,7 @@ var require_stream = __commonJS((exports, module) => {
40322
40318
  module.exports = createWebSocketStream;
40323
40319
  });
40324
40320
 
40325
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/subprotocol.js
40321
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/subprotocol.js
40326
40322
  var require_subprotocol = __commonJS((exports, module) => {
40327
40323
  var { tokenChars } = require_validation();
40328
40324
  function parse(header) {
@@ -40367,7 +40363,7 @@ var require_subprotocol = __commonJS((exports, module) => {
40367
40363
  module.exports = { parse };
40368
40364
  });
40369
40365
 
40370
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/websocket-server.js
40366
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/websocket-server.js
40371
40367
  var require_websocket_server = __commonJS((exports, module) => {
40372
40368
  var EventEmitter2 = __require("events");
40373
40369
  var http = __require("http");
@@ -40540,11 +40536,7 @@ var require_websocket_server = __commonJS((exports, module) => {
40540
40536
  const secWebSocketExtensions = req.headers["sec-websocket-extensions"];
40541
40537
  const extensions = {};
40542
40538
  if (this.options.perMessageDeflate && secWebSocketExtensions !== undefined) {
40543
- const perMessageDeflate = new PerMessageDeflate({
40544
- ...this.options.perMessageDeflate,
40545
- isServer: true,
40546
- maxPayload: this.options.maxPayload
40547
- });
40539
+ const perMessageDeflate = new PerMessageDeflate(this.options.perMessageDeflate, true, this.options.maxPayload);
40548
40540
  try {
40549
40541
  const offers = extension.parse(secWebSocketExtensions);
40550
40542
  if (offers[PerMessageDeflate.extensionName]) {
@@ -40673,15 +40665,12 @@ var require_websocket_server = __commonJS((exports, module) => {
40673
40665
  }
40674
40666
  });
40675
40667
 
40676
- // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/wrapper.mjs
40677
- var import_stream, import_extension, import_permessage_deflate, import_receiver, import_sender, import_subprotocol, import_websocket, import_websocket_server, wrapper_default;
40668
+ // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/wrapper.mjs
40669
+ var import_stream, import_receiver, import_sender, import_websocket, import_websocket_server, wrapper_default;
40678
40670
  var init_wrapper = __esm(() => {
40679
40671
  import_stream = __toESM(require_stream(), 1);
40680
- import_extension = __toESM(require_extension(), 1);
40681
- import_permessage_deflate = __toESM(require_permessage_deflate(), 1);
40682
40672
  import_receiver = __toESM(require_receiver(), 1);
40683
40673
  import_sender = __toESM(require_sender(), 1);
40684
- import_subprotocol = __toESM(require_subprotocol(), 1);
40685
40674
  import_websocket = __toESM(require_websocket(), 1);
40686
40675
  import_websocket_server = __toESM(require_websocket_server(), 1);
40687
40676
  wrapper_default = import_websocket.default;
@@ -61194,11 +61183,11 @@ function combineExtensions(extensions) {
61194
61183
  syntaxExtension(all3, extensions[index2]);
61195
61184
  return all3;
61196
61185
  }
61197
- function syntaxExtension(all3, extension2) {
61186
+ function syntaxExtension(all3, extension) {
61198
61187
  let hook;
61199
- for (hook in extension2) {
61188
+ for (hook in extension) {
61200
61189
  const left = (hasOwnProperty.call(all3, hook) ? all3[hook] : undefined) || (all3[hook] = {});
61201
- const right = extension2[hook];
61190
+ const right = extension[hook];
61202
61191
  let code$1;
61203
61192
  if (right)
61204
61193
  for (code$1 in right) {
@@ -63357,7 +63346,7 @@ var init_remark_gfm_z_sDF4ss_es = __esm(() => {
63357
63346
  emptyOptions2 = {};
63358
63347
  });
63359
63348
 
63360
- // ../../packages/superdoc/dist/chunks/SuperConverter-DFcGhakb.es.js
63349
+ // ../../packages/superdoc/dist/chunks/SuperConverter-DjfudLkQ.es.js
63361
63350
  function getExtensionConfigField(extension$1, field, context = { name: "" }) {
63362
63351
  const fieldValue = extension$1.config[field];
63363
63352
  if (typeof fieldValue === "function")
@@ -71765,6 +71754,31 @@ function getUnderlineCssString({ type = "single", color: color2 = null, thicknes
71765
71754
  add("text-decoration-color", color2);
71766
71755
  return parts.join("; ");
71767
71756
  }
71757
+ function normalizeBaselineShift(baselineShift) {
71758
+ if (!Number.isFinite(baselineShift))
71759
+ return;
71760
+ const normalizedShift = baselineShift;
71761
+ return Math.abs(normalizedShift) <= BASELINE_SHIFT_EPSILON ? undefined : normalizedShift;
71762
+ }
71763
+ function hasExplicitBaselineShift(baselineShift) {
71764
+ return normalizeBaselineShift(baselineShift) != null;
71765
+ }
71766
+ function isSuperscriptOrSubscript(vertAlign) {
71767
+ return vertAlign === "superscript" || vertAlign === "subscript";
71768
+ }
71769
+ function usesDefaultScriptLayout(formatting) {
71770
+ return isSuperscriptOrSubscript(formatting.vertAlign) && !hasExplicitBaselineShift(formatting.baselineShift);
71771
+ }
71772
+ function scaleFontSizeForVerticalText(fontSize, formatting) {
71773
+ if (!Number.isFinite(fontSize))
71774
+ return fontSize;
71775
+ return usesDefaultScriptLayout(formatting) ? fontSize * SUBSCRIPT_SUPERSCRIPT_SCALE : fontSize;
71776
+ }
71777
+ function resolveBaseFontSizeForVerticalText(fontSize, formatting) {
71778
+ if (!Number.isFinite(fontSize))
71779
+ return fontSize;
71780
+ return usesDefaultScriptLayout(formatting) ? fontSize / SUBSCRIPT_SUPERSCRIPT_SCALE : fontSize;
71781
+ }
71768
71782
  function combineProperties(propertiesArray, options = {}) {
71769
71783
  const { fullOverrideProps = [], specialHandling = {} } = options;
71770
71784
  if (!propertiesArray || propertiesArray.length === 0)
@@ -72426,6 +72440,7 @@ function encodeCSSFromRPr(runProperties, docx) {
72426
72440
  let hasHighlightTag = false;
72427
72441
  let verticalAlignValue;
72428
72442
  let fontSizeOverride;
72443
+ const normalizedPositionPoints = runProperties.position != null && Number.isFinite(runProperties.position) ? normalizeBaselineShift(halfPointToPoints(runProperties.position)) : undefined;
72429
72444
  Object.keys(runProperties).forEach((key) => {
72430
72445
  const value = runProperties[key];
72431
72446
  switch (key) {
@@ -72550,7 +72565,7 @@ function encodeCSSFromRPr(runProperties, docx) {
72550
72565
  break;
72551
72566
  }
72552
72567
  case "vertAlign":
72553
- if (runProperties.position != null && Number.isFinite(runProperties.position))
72568
+ if (normalizedPositionPoints != null)
72554
72569
  break;
72555
72570
  if (value === "superscript" || value === "subscript") {
72556
72571
  verticalAlignValue = value === "superscript" ? "super" : "sub";
@@ -72564,12 +72579,9 @@ function encodeCSSFromRPr(runProperties, docx) {
72564
72579
  verticalAlignValue = "baseline";
72565
72580
  break;
72566
72581
  case "position":
72567
- if (value != null && Number.isFinite(value)) {
72568
- const points = halfPointToPoints(value);
72569
- if (Number.isFinite(points)) {
72570
- verticalAlignValue = `${points}pt`;
72571
- fontSizeOverride = undefined;
72572
- }
72582
+ if (normalizedPositionPoints != null) {
72583
+ verticalAlignValue = `${normalizedPositionPoints}pt`;
72584
+ fontSizeOverride = undefined;
72573
72585
  }
72574
72586
  break;
72575
72587
  default:
@@ -86965,7 +86977,7 @@ function preprocess() {
86965
86977
  }
86966
86978
  }
86967
86979
  function fromMarkdown(value, encoding, options) {
86968
- if (encoding && typeof encoding === "object") {
86980
+ if (typeof encoding !== "string") {
86969
86981
  options = encoding;
86970
86982
  encoding = undefined;
86971
86983
  }
@@ -87599,10 +87611,10 @@ function configure(combined, extensions) {
87599
87611
  if (Array.isArray(value))
87600
87612
  configure(combined, value);
87601
87613
  else
87602
- extension2(combined, value);
87614
+ extension(combined, value);
87603
87615
  }
87604
87616
  }
87605
- function extension2(combined, extension$1) {
87617
+ function extension(combined, extension$1) {
87606
87618
  let key;
87607
87619
  for (key in extension$1)
87608
87620
  if (own3.call(extension$1, key))
@@ -99969,9 +99981,9 @@ var isRegExp = (value) => {
99969
99981
  return true;
99970
99982
  }, areAttrsEqual = (attrsA = {}, attrsB = {}) => {
99971
99983
  return objectIncludes(attrsA, attrsB);
99972
- }, TrackInsertMarkName = "trackInsert", TrackDeleteMarkName = "trackDelete", TrackFormatMarkName = "trackFormat", TrackedFormatMarkNames, TABLE_STYLE_ID_TABLE_GRID = "TableGrid", TABLE_FALLBACK_BORDER, TABLE_FALLBACK_BORDERS, TABLE_FALLBACK_CELL_PADDING, DEFAULT_TBL_LOOK, CNF_STYLE_MAP, TABLE_STYLE_PRECEDENCE, getToCssFontFamily = () => {
99984
+ }, TrackInsertMarkName = "trackInsert", TrackDeleteMarkName = "trackDelete", TrackFormatMarkName = "trackFormat", TrackedFormatMarkNames, SUBSCRIPT_SUPERSCRIPT_SCALE = 0.65, BASELINE_SHIFT_EPSILON = 0.000001, TABLE_STYLE_ID_TABLE_GRID = "TableGrid", TABLE_FALLBACK_BORDER, TABLE_FALLBACK_BORDERS, TABLE_FALLBACK_CELL_PADDING, DEFAULT_TBL_LOOK, CNF_STYLE_MAP, TABLE_STYLE_PRECEDENCE, getToCssFontFamily = () => {
99973
99985
  return SuperConverter.toCssFontFamily;
99974
- }, SUBSCRIPT_SUPERSCRIPT_SCALE = 0.65, getSpacingStyle = (spacing, isListItem$1) => {
99986
+ }, getSpacingStyle = (spacing, isListItem$1) => {
99975
99987
  let { before: before2, after: after2, line, lineRule, beforeAutospacing, afterAutospacing } = spacing;
99976
99988
  line = twipsToLines(line);
99977
99989
  if (line != null && line < 1)
@@ -107458,19 +107470,7 @@ var isRegExp = (value) => {
107458
107470
  typeOver = true;
107459
107471
  }
107460
107472
  }
107461
- if (added.some((n) => n.nodeName == "BR") && (view.input.lastKeyCode == 8 || view.input.lastKeyCode == 46)) {
107462
- for (let node3 of added)
107463
- if (node3.nodeName == "BR" && node3.parentNode) {
107464
- let after2 = node3.nextSibling;
107465
- while (after2 && after2.nodeType == 1) {
107466
- if (after2.contentEditable == "false") {
107467
- node3.parentNode.removeChild(node3);
107468
- break;
107469
- }
107470
- after2 = after2.firstChild;
107471
- }
107472
- }
107473
- } else if (gecko && added.length) {
107473
+ if (gecko && added.length) {
107474
107474
  let brs = added.filter((n) => n.nodeName == "BR");
107475
107475
  if (brs.length == 2) {
107476
107476
  let [a, b] = brs;
@@ -107486,6 +107486,13 @@ var isRegExp = (value) => {
107486
107486
  br.remove();
107487
107487
  }
107488
107488
  }
107489
+ } else if ((chrome || safari) && added.some((n) => n.nodeName == "BR") && (view.input.lastKeyCode == 8 || view.input.lastKeyCode == 46)) {
107490
+ for (let node3 of added)
107491
+ if (node3.nodeName == "BR" && node3.parentNode) {
107492
+ let after2 = node3.nextSibling;
107493
+ if (after2 && after2.nodeType == 1 && after2.contentEditable == "false")
107494
+ node3.parentNode.removeChild(node3);
107495
+ }
107489
107496
  }
107490
107497
  let readSel = null;
107491
107498
  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))) {
@@ -107734,11 +107741,11 @@ var isRegExp = (value) => {
107734
107741
  }
107735
107742
  updateDraggedNode(dragging, prev) {
107736
107743
  let sel = dragging.node, found$1 = -1;
107737
- if (sel.from < this.state.doc.content.size && this.state.doc.nodeAt(sel.from) == sel.node)
107744
+ if (this.state.doc.nodeAt(sel.from) == sel.node)
107738
107745
  found$1 = sel.from;
107739
107746
  else {
107740
107747
  let movedPos = sel.from + (this.state.doc.content.size - prev.doc.content.size);
107741
- if ((movedPos > 0 && movedPos < this.state.doc.content.size && this.state.doc.nodeAt(movedPos)) == sel.node)
107748
+ if ((movedPos > 0 && this.state.doc.nodeAt(movedPos)) == sel.node)
107742
107749
  found$1 = movedPos;
107743
107750
  }
107744
107751
  this.dragging = new Dragging(dragging.slice, dragging.move, found$1 < 0 ? undefined : NodeSelection.create(this.state.doc, found$1));
@@ -114078,7 +114085,7 @@ var isRegExp = (value) => {
114078
114085
  state.kern = kernNode.attributes["w:val"];
114079
114086
  }
114080
114087
  }, SuperConverter;
114081
- var init_SuperConverter_DFcGhakb_es = __esm(() => {
114088
+ var init_SuperConverter_DjfudLkQ_es = __esm(() => {
114082
114089
  init_rolldown_runtime_B2q5OVn9_es();
114083
114090
  init_jszip_ChlR43oI_es();
114084
114091
  init_xml_js_40FWvL78_es();
@@ -151094,28 +151101,28 @@ function zwitch(key, options) {
151094
151101
  one2.unknown = settings.unknown;
151095
151102
  return one2;
151096
151103
  }
151097
- function configure2(base3, extension3) {
151104
+ function configure2(base3, extension2) {
151098
151105
  let index2 = -1;
151099
151106
  let key;
151100
- if (extension3.extensions)
151101
- while (++index2 < extension3.extensions.length)
151102
- configure2(base3, extension3.extensions[index2]);
151103
- for (key in extension3)
151104
- if (own4.call(extension3, key))
151107
+ if (extension2.extensions)
151108
+ while (++index2 < extension2.extensions.length)
151109
+ configure2(base3, extension2.extensions[index2]);
151110
+ for (key in extension2)
151111
+ if (own4.call(extension2, key))
151105
151112
  switch (key) {
151106
151113
  case "extensions":
151107
151114
  break;
151108
151115
  case "unsafe":
151109
- list3(base3[key], extension3[key]);
151116
+ list3(base3[key], extension2[key]);
151110
151117
  break;
151111
151118
  case "join":
151112
- list3(base3[key], extension3[key]);
151119
+ list3(base3[key], extension2[key]);
151113
151120
  break;
151114
151121
  case "handlers":
151115
- map5(base3[key], extension3[key]);
151122
+ map5(base3[key], extension2[key]);
151116
151123
  break;
151117
151124
  default:
151118
- base3.options[key] = extension3[key];
151125
+ base3.options[key] = extension2[key];
151119
151126
  }
151120
151127
  return base3;
151121
151128
  }
@@ -154412,15 +154419,15 @@ var DOCX = "application/vnd.openxmlformats-officedocument.wordprocessingml.docum
154412
154419
  this.mediaFiles[name] = fileBase64;
154413
154420
  } else {
154414
154421
  const fileBase64 = await zipEntry.async("base64");
154415
- let extension3 = this.getFileExtension(name)?.toLowerCase();
154422
+ let extension2 = this.getFileExtension(name)?.toLowerCase();
154416
154423
  let detectedType = null;
154417
- if (!IMAGE_EXTS.has(extension3) || extension3 === "tmp") {
154424
+ if (!IMAGE_EXTS.has(extension2) || extension2 === "tmp") {
154418
154425
  detectedType = detectImageType(fileBase64);
154419
154426
  if (detectedType)
154420
- extension3 = detectedType;
154427
+ extension2 = detectedType;
154421
154428
  }
154422
- if (IMAGE_EXTS.has(extension3)) {
154423
- const mimeSubtype = MIME_TYPE_FOR_EXT[extension3] || extension3;
154429
+ if (IMAGE_EXTS.has(extension2)) {
154430
+ const mimeSubtype = MIME_TYPE_FOR_EXT[extension2] || extension2;
154424
154431
  this.mediaFiles[name] = `data:image/${mimeSubtype};base64,${fileBase64}`;
154425
154432
  const blob = await zipEntry.async("blob");
154426
154433
  const fileObj = new File([blob], name, { type: blob.type });
@@ -172599,7 +172606,7 @@ var init_remark_gfm_CjV8kaUy_es = __esm(() => {
172599
172606
  init_remark_gfm_z_sDF4ss_es();
172600
172607
  });
172601
172608
 
172602
- // ../../packages/superdoc/dist/chunks/src-CMCe558J.es.js
172609
+ // ../../packages/superdoc/dist/chunks/src-DTzsVQv_.es.js
172603
172610
  function deleteProps(obj, propOrProps) {
172604
172611
  const props = typeof propOrProps === "string" ? [propOrProps] : propOrProps;
172605
172612
  const removeNested = (target, pathParts, index2 = 0) => {
@@ -172661,29 +172668,6 @@ function cssColorToHex(cssColor) {
172661
172668
  }
172662
172669
  return trimmed;
172663
172670
  }
172664
- function prosemirrorToYDoc(doc$12, xmlFragment = "prosemirror") {
172665
- const ydoc = new Doc;
172666
- const type = ydoc.get(xmlFragment, YXmlFragment);
172667
- if (!type.doc)
172668
- return ydoc;
172669
- prosemirrorToYXmlFragment(doc$12, type);
172670
- return type.doc;
172671
- }
172672
- function prosemirrorToYXmlFragment(doc$12, xmlFragment) {
172673
- const type = xmlFragment || new YXmlFragment;
172674
- updateYFragment(type.doc ? type.doc : { transact: (transaction) => transaction(undefined) }, type, doc$12, {
172675
- mapping: /* @__PURE__ */ new Map,
172676
- isOMark: /* @__PURE__ */ new Map
172677
- });
172678
- return type;
172679
- }
172680
- function getSuperdocVersion() {
172681
- try {
172682
- return "1.23.0";
172683
- } catch {
172684
- return "unknown";
172685
- }
172686
- }
172687
172671
  function computeTabStops$1(context) {
172688
172672
  const { explicitStops, defaultTabInterval, paragraphIndent } = context;
172689
172673
  const leftIndent = paragraphIndent.left ?? 0;
@@ -173241,6 +173225,29 @@ function computeWrapExclusion(image2, lineY, lineHeight) {
173241
173225
  return null;
173242
173226
  }
173243
173227
  }
173228
+ function prosemirrorToYDoc(doc$12, xmlFragment = "prosemirror") {
173229
+ const ydoc = new Doc;
173230
+ const type = ydoc.get(xmlFragment, YXmlFragment);
173231
+ if (!type.doc)
173232
+ return ydoc;
173233
+ prosemirrorToYXmlFragment(doc$12, type);
173234
+ return type.doc;
173235
+ }
173236
+ function prosemirrorToYXmlFragment(doc$12, xmlFragment) {
173237
+ const type = xmlFragment || new YXmlFragment;
173238
+ updateYFragment(type.doc ? type.doc : { transact: (transaction) => transaction(undefined) }, type, doc$12, {
173239
+ mapping: /* @__PURE__ */ new Map,
173240
+ isOMark: /* @__PURE__ */ new Map
173241
+ });
173242
+ return type;
173243
+ }
173244
+ function getSuperdocVersion() {
173245
+ try {
173246
+ return "1.23.0";
173247
+ } catch {
173248
+ return "unknown";
173249
+ }
173250
+ }
173244
173251
  function assertNotSdtLocked(sdt, operation) {
173245
173252
  const mode = resolveLockMode(sdt.node.attrs);
173246
173253
  if (mode === "sdtLocked" || mode === "sdtContentLocked")
@@ -184548,10 +184555,10 @@ function Item$1(fun, array) {
184548
184555
  this.array = array;
184549
184556
  }
184550
184557
  function noop2() {}
184551
- function isExtensionRulesEnabled(extension3, enabled) {
184558
+ function isExtensionRulesEnabled(extension2, enabled) {
184552
184559
  if (Array.isArray(enabled))
184553
184560
  return enabled.some((enabledExtension) => {
184554
- return (typeof enabledExtension === "string" ? enabledExtension : enabledExtension.name) === extension3.name;
184561
+ return (typeof enabledExtension === "string" ? enabledExtension : enabledExtension.name) === extension2.name;
184555
184562
  });
184556
184563
  return enabled;
184557
184564
  }
@@ -221552,7 +221559,7 @@ function hydrateImageBlocks(blocks2, mediaFiles) {
221552
221559
  });
221553
221560
  if (normalizedMedia.size === 0)
221554
221561
  return blocks2;
221555
- const resolveImageSrc = (src, relId, attrSrc, extension3) => {
221562
+ const resolveImageSrc = (src, relId, attrSrc, extension2) => {
221556
221563
  if (!src || src.startsWith("data:"))
221557
221564
  return;
221558
221565
  const candidates = /* @__PURE__ */ new Set;
@@ -221560,7 +221567,7 @@ function hydrateImageBlocks(blocks2, mediaFiles) {
221560
221567
  if (attrSrc)
221561
221568
  candidates.add(attrSrc);
221562
221569
  if (relId) {
221563
- const inferredExt = extension3 ?? inferExtensionFromPath(src) ?? "jpeg";
221570
+ const inferredExt = extension2 ?? inferExtensionFromPath(src) ?? "jpeg";
221564
221571
  candidates.add(`word/media/${relId}.${inferredExt}`);
221565
221572
  candidates.add(`media/${relId}.${inferredExt}`);
221566
221573
  }
@@ -221571,7 +221578,7 @@ function hydrateImageBlocks(blocks2, mediaFiles) {
221571
221578
  const base64 = normalizedMedia.get(normalized);
221572
221579
  if (!base64)
221573
221580
  continue;
221574
- const finalExt = extension3 ?? inferExtensionFromPath(normalized) ?? "jpeg";
221581
+ const finalExt = extension2 ?? inferExtensionFromPath(normalized) ?? "jpeg";
221575
221582
  return base64.startsWith("data:") ? base64 : `data:image/${finalExt};base64,${base64}`;
221576
221583
  }
221577
221584
  };
@@ -221603,8 +221610,8 @@ function hydrateImageBlocks(blocks2, mediaFiles) {
221603
221610
  const attrs = blk.attrs ?? {};
221604
221611
  const relId = typeof attrs.rId === "string" ? attrs.rId : undefined;
221605
221612
  const attrSrc = typeof attrs.src === "string" ? attrs.src : undefined;
221606
- const extension3 = typeof attrs.extension === "string" ? attrs.extension.toLowerCase() : undefined;
221607
- const resolvedSrc = resolveImageSrc(blk.src, relId, attrSrc, extension3);
221613
+ const extension2 = typeof attrs.extension === "string" ? attrs.extension.toLowerCase() : undefined;
221614
+ const resolvedSrc = resolveImageSrc(blk.src, relId, attrSrc, extension2);
221608
221615
  if (resolvedSrc)
221609
221616
  return {
221610
221617
  ...blk,
@@ -221961,43 +221968,29 @@ function textNodeToRun({ node: node3, positions, defaultFont, defaultSize, inher
221961
221968
  run2 = applyInlineRunProperties(run2, runProperties, converterContext);
221962
221969
  return run2;
221963
221970
  }
221971
+ function buildReferenceMarkerRun(displayText, params$1) {
221972
+ const originalRun = buildOriginalReferenceRun(displayText, params$1);
221973
+ if (hasExplicitBaselineShift(originalRun.baselineShift))
221974
+ return copyReferencePmPositions(originalRun, params$1);
221975
+ const baseFontSize = resolveReferenceBaseFontSize(buildReferenceRunWithoutVerticalPositioning(displayText, params$1), originalRun, params$1.defaultSize);
221976
+ return copyReferencePmPositions({
221977
+ ...originalRun,
221978
+ vertAlign: "superscript",
221979
+ baselineShift: undefined,
221980
+ fontSize: baseFontSize * SUBSCRIPT_SUPERSCRIPT_SCALE
221981
+ }, params$1);
221982
+ }
221964
221983
  function footnoteReferenceToBlock(params$1) {
221965
221984
  const { node: node3, converterContext } = params$1;
221966
- const refPos = params$1.positions.get(node3);
221967
221985
  const id2 = node3.attrs?.id;
221968
- const displayText = toSuperscriptDigits$2(resolveFootnoteDisplayNumber(id2, converterContext.footnoteNumberById) ?? id2 ?? "*");
221969
- const run2 = textNodeToRun({
221970
- ...params$1,
221971
- node: {
221972
- type: "text",
221973
- text: displayText,
221974
- marks: [...node3.marks ?? []]
221975
- }
221976
- });
221977
- if (refPos) {
221978
- run2.pmStart = refPos.start;
221979
- run2.pmEnd = refPos.end;
221980
- }
221981
- return run2;
221986
+ const displayId = resolveFootnoteDisplayNumber(id2, converterContext.footnoteNumberById) ?? id2 ?? "*";
221987
+ return buildReferenceMarkerRun(String(displayId), params$1);
221982
221988
  }
221983
221989
  function endnoteReferenceToBlock(params$1) {
221984
221990
  const { node: node3, converterContext } = params$1;
221985
- const refPos = params$1.positions.get(node3);
221986
221991
  const id2 = node3.attrs?.id;
221987
- const displayText = toSuperscriptDigits$1(resolveEndnoteDisplayNumber(id2, converterContext.endnoteNumberById) ?? id2 ?? "*");
221988
- const run2 = textNodeToRun({
221989
- ...params$1,
221990
- node: {
221991
- type: "text",
221992
- text: displayText,
221993
- marks: [...node3.marks ?? []]
221994
- }
221995
- });
221996
- if (refPos) {
221997
- run2.pmStart = refPos.start;
221998
- run2.pmEnd = refPos.end;
221999
- }
222000
- return run2;
221992
+ const displayId = resolveEndnoteDisplayNumber(id2, converterContext.endnoteNumberById) ?? id2 ?? "*";
221993
+ return buildReferenceMarkerRun(String(displayId), params$1);
222001
221994
  }
222002
221995
  function runNodeChildrenToRuns({ node: node3, inheritedMarks, sdtMetadata, converterContext, paragraphProperties, visitNode }) {
222003
221996
  const mergedMarks = [...node3.marks ?? [], ...inheritedMarks ?? []];
@@ -224280,7 +224273,7 @@ function buildFootnotesInput(editorState, converter, converterContext, themeColo
224280
224273
  };
224281
224274
  }
224282
224275
  function isFootnoteMarker(run2) {
224283
- return Boolean(run2.dataAttrs?.["data-sd-footnote-number"]);
224276
+ return Boolean(run2.dataAttrs?.[FOOTNOTE_MARKER_DATA_ATTR]);
224284
224277
  }
224285
224278
  function findRunWithPositions(runs2) {
224286
224279
  return runs2.find((r$1) => {
@@ -224297,20 +224290,8 @@ function resolveDisplayNumber(id2, footnoteNumberById) {
224297
224290
  return num;
224298
224291
  return 1;
224299
224292
  }
224300
- function toSuperscriptDigits(value) {
224301
- const SUPERSCRIPT_MAP = {
224302
- "0": "⁰",
224303
- "1": "¹",
224304
- "2": "²",
224305
- "3": "³",
224306
- "4": "⁴",
224307
- "5": "⁵",
224308
- "6": "⁶",
224309
- "7": "⁷",
224310
- "8": "⁸",
224311
- "9": "⁹"
224312
- };
224313
- return String(value ?? "").split("").map((ch) => SUPERSCRIPT_MAP[ch] ?? ch).join("");
224293
+ function resolveMarkerText(value) {
224294
+ return String(value ?? "");
224314
224295
  }
224315
224296
  function computeMarkerPositions(baseRun, markerLength) {
224316
224297
  if (baseRun?.pmStart == null)
@@ -224324,38 +224305,66 @@ function computeMarkerPositions(baseRun, markerLength) {
224324
224305
  pmEnd: baseRun.pmEnd != null ? Math.max(pmStart, Math.min(baseRun.pmEnd, pmStart + markerLength)) : pmStart + markerLength
224325
224306
  };
224326
224307
  }
224308
+ function resolveMarkerFontFamily(firstTextRun) {
224309
+ return typeof firstTextRun?.fontFamily === "string" ? firstTextRun.fontFamily : DEFAULT_MARKER_FONT_FAMILY;
224310
+ }
224311
+ function resolveMarkerBaseFontSize(firstTextRun) {
224312
+ if (typeof firstTextRun?.fontSize === "number" && Number.isFinite(firstTextRun.fontSize) && firstTextRun.fontSize > 0)
224313
+ return firstTextRun.fontSize;
224314
+ return DEFAULT_MARKER_FONT_SIZE;
224315
+ }
224316
+ function buildMarkerRun(markerText, firstTextRun, positions) {
224317
+ const markerRun = {
224318
+ kind: "text",
224319
+ text: markerText,
224320
+ dataAttrs: { [FOOTNOTE_MARKER_DATA_ATTR]: "true" },
224321
+ fontFamily: resolveMarkerFontFamily(firstTextRun),
224322
+ fontSize: resolveMarkerBaseFontSize(firstTextRun) * SUBSCRIPT_SUPERSCRIPT_SCALE,
224323
+ vertAlign: "superscript"
224324
+ };
224325
+ if (typeof firstTextRun?.bold === "boolean")
224326
+ markerRun.bold = firstTextRun.bold;
224327
+ if (typeof firstTextRun?.italic === "boolean")
224328
+ markerRun.italic = firstTextRun.italic;
224329
+ if (typeof firstTextRun?.letterSpacing === "number" && Number.isFinite(firstTextRun.letterSpacing))
224330
+ markerRun.letterSpacing = firstTextRun.letterSpacing;
224331
+ if (firstTextRun?.color != null)
224332
+ markerRun.color = firstTextRun.color;
224333
+ if (positions.pmStart != null)
224334
+ markerRun.pmStart = positions.pmStart;
224335
+ if (positions.pmEnd != null)
224336
+ markerRun.pmEnd = positions.pmEnd;
224337
+ return markerRun;
224338
+ }
224339
+ function syncMarkerRun(target, source) {
224340
+ target.kind = source.kind;
224341
+ target.text = source.text;
224342
+ target.dataAttrs = source.dataAttrs;
224343
+ target.fontFamily = source.fontFamily;
224344
+ target.fontSize = source.fontSize;
224345
+ target.bold = source.bold;
224346
+ target.italic = source.italic;
224347
+ target.letterSpacing = source.letterSpacing;
224348
+ target.color = source.color;
224349
+ target.vertAlign = source.vertAlign;
224350
+ target.baselineShift = source.baselineShift;
224351
+ target.pmStart = source.pmStart ?? target.pmStart;
224352
+ target.pmEnd = source.pmEnd ?? target.pmEnd;
224353
+ }
224327
224354
  function ensureFootnoteMarker(blocks2, id2, footnoteNumberById) {
224328
224355
  const firstParagraph = blocks2.find((b$1) => b$1?.kind === "paragraph");
224329
224356
  if (!firstParagraph)
224330
224357
  return;
224331
224358
  const runs2 = Array.isArray(firstParagraph.runs) ? firstParagraph.runs : [];
224332
- const markerText = toSuperscriptDigits(resolveDisplayNumber(id2, footnoteNumberById));
224333
- const { pmStart, pmEnd } = computeMarkerPositions(findRunWithPositions(runs2), markerText.length);
224359
+ const markerText = resolveMarkerText(resolveDisplayNumber(id2, footnoteNumberById));
224360
+ const positions = computeMarkerPositions(findRunWithPositions(runs2), markerText.length);
224361
+ const normalizedMarkerRun = buildMarkerRun(markerText, runs2.find((run2) => typeof run2.text === "string" && !isFootnoteMarker(run2)), positions);
224334
224362
  const existingMarker = runs2.find(isFootnoteMarker);
224335
224363
  if (existingMarker) {
224336
- if (pmStart != null && pmEnd != null) {
224337
- if (existingMarker.pmStart == null)
224338
- existingMarker.pmStart = pmStart;
224339
- if (existingMarker.pmEnd == null)
224340
- existingMarker.pmEnd = pmEnd;
224341
- }
224364
+ syncMarkerRun(existingMarker, normalizedMarkerRun);
224342
224365
  return;
224343
224366
  }
224344
- const firstTextRun = runs2.find((r$1) => typeof r$1.text === "string");
224345
- const markerRun = {
224346
- kind: "text",
224347
- text: markerText,
224348
- dataAttrs: { "data-sd-footnote-number": "true" },
224349
- fontFamily: typeof firstTextRun?.fontFamily === "string" ? firstTextRun.fontFamily : "Arial",
224350
- fontSize: typeof firstTextRun?.fontSize === "number" && Number.isFinite(firstTextRun.fontSize) ? firstTextRun.fontSize : 12
224351
- };
224352
- if (pmStart != null)
224353
- markerRun.pmStart = pmStart;
224354
- if (pmEnd != null)
224355
- markerRun.pmEnd = pmEnd;
224356
- if (firstTextRun?.color != null)
224357
- markerRun.color = firstTextRun.color;
224358
- runs2.unshift(markerRun);
224367
+ runs2.unshift(normalizedMarkerRun);
224359
224368
  firstParagraph.runs = runs2;
224360
224369
  }
224361
224370
  function safeCleanup(fn2, context) {
@@ -225057,19 +225066,79 @@ function getCommentHighlightThreadIds(target) {
225057
225066
  return [];
225058
225067
  return threadIds.split(",").map((threadId) => threadId.trim()).filter(Boolean);
225059
225068
  }
225069
+ function resolveTrackChangeThreadId(target) {
225070
+ if (!(target instanceof Element))
225071
+ return null;
225072
+ const threadId = target.closest(TRACK_CHANGE_SELECTOR)?.getAttribute("data-track-change-id")?.trim();
225073
+ return threadId ? threadId : null;
225074
+ }
225075
+ function resolveCommentThreadHit(target) {
225076
+ const threadIds = getCommentHighlightThreadIds(target);
225077
+ if (threadIds.length > 1)
225078
+ return {
225079
+ isAmbiguous: true,
225080
+ threadId: null
225081
+ };
225082
+ if (threadIds.length === 1)
225083
+ return {
225084
+ isAmbiguous: false,
225085
+ threadId: threadIds[0]
225086
+ };
225087
+ return {
225088
+ isAmbiguous: false,
225089
+ threadId: resolveTrackChangeThreadId(target)
225090
+ };
225091
+ }
225092
+ function collectElementsNearPointerTarget(target, clientX, clientY) {
225093
+ const candidates = [];
225094
+ const seen = /* @__PURE__ */ new Set;
225095
+ const ownerDocument = target instanceof Element ? target.ownerDocument : document;
225096
+ const ownerWindow = ownerDocument.defaultView;
225097
+ const addCandidate = (candidate) => {
225098
+ if (!candidate || seen.has(candidate))
225099
+ return;
225100
+ seen.add(candidate);
225101
+ candidates.push(candidate);
225102
+ };
225103
+ if (target instanceof Element)
225104
+ addCandidate(target);
225105
+ if (typeof ownerDocument.elementsFromPoint !== "function" || !ownerWindow)
225106
+ return candidates;
225107
+ const maxX = Math.max(ownerWindow.innerWidth - 1, 0);
225108
+ const maxY = Math.max(ownerWindow.innerHeight - 1, 0);
225109
+ for (const [offsetX, offsetY] of COMMENT_THREAD_HIT_SAMPLE_OFFSETS) {
225110
+ const sampleX = clamp(clientX + offsetX, 0, maxX);
225111
+ const sampleY = clamp(clientY + offsetY, 0, maxY);
225112
+ const elements = ownerDocument.elementsFromPoint(sampleX, sampleY);
225113
+ for (const element3 of elements)
225114
+ addCandidate(element3);
225115
+ }
225116
+ return candidates;
225117
+ }
225118
+ function resolveCommentThreadIdNearPointer(target, clientX, clientY) {
225119
+ const directHit = resolveCommentThreadHit(target);
225120
+ if (directHit.isAmbiguous || directHit.threadId)
225121
+ return directHit.threadId;
225122
+ const nearbyElements = collectElementsNearPointerTarget(target, clientX, clientY);
225123
+ for (const element3 of nearbyElements) {
225124
+ const hit = resolveCommentThreadHit(element3);
225125
+ if (hit.isAmbiguous)
225126
+ return null;
225127
+ if (hit.threadId)
225128
+ return hit.threadId;
225129
+ }
225130
+ return null;
225131
+ }
225060
225132
  function getActiveCommentThreadId(editor) {
225061
225133
  const activeThreadId = CommentsPluginKey.getState(editor.state)?.activeThreadId;
225062
225134
  if (typeof activeThreadId !== "string" || activeThreadId.length === 0)
225063
225135
  return null;
225064
225136
  return activeThreadId;
225065
225137
  }
225066
- function shouldIgnoreRepeatClickOnActiveComment(target, activeThreadId) {
225138
+ function shouldIgnoreRepeatClickOnActiveComment(target, clientX, clientY, activeThreadId) {
225067
225139
  if (!activeThreadId)
225068
225140
  return false;
225069
- const clickedThreadIds = getCommentHighlightThreadIds(target);
225070
- if (clickedThreadIds.length !== 1)
225071
- return false;
225072
- return clickedThreadIds[0] === activeThreadId;
225141
+ return resolveCommentThreadIdNearPointer(target, clientX, clientY) === activeThreadId;
225073
225142
  }
225074
225143
  function isInRegisteredSurface(event) {
225075
225144
  const path2 = typeof event.composedPath === "function" ? event.composedPath() : [];
@@ -226178,16 +226247,19 @@ function calculateEmptyParagraphMetrics(fontSize, spacing, fontInfo) {
226178
226247
  lineHeight
226179
226248
  };
226180
226249
  }
226250
+ function lineHeightFontSize(run2) {
226251
+ return resolveBaseFontSizeForVerticalText(run2.fontSize, run2);
226252
+ }
226181
226253
  function getFontInfoFromRun(run2) {
226182
226254
  return {
226183
226255
  fontFamily: normalizeFontFamily(run2.fontFamily),
226184
- fontSize: normalizeFontSize(run2.fontSize),
226256
+ fontSize: normalizeFontSize(lineHeightFontSize(run2)),
226185
226257
  bold: run2.bold,
226186
226258
  italic: run2.italic
226187
226259
  };
226188
226260
  }
226189
226261
  function updateMaxFontInfo(currentMaxSize, currentMaxInfo, newRun) {
226190
- if (newRun.fontSize >= currentMaxSize)
226262
+ if (lineHeightFontSize(newRun) >= currentMaxSize)
226191
226263
  return getFontInfoFromRun(newRun);
226192
226264
  return currentMaxInfo;
226193
226265
  }
@@ -226949,7 +227021,7 @@ async function measureParagraphBlock(block, maxWidth) {
226949
227021
  toRun: runIndex,
226950
227022
  toChar: spacesEndChar,
226951
227023
  width: spacesWidth,
226952
- maxFontSize: run2.fontSize,
227024
+ maxFontSize: lineHeightFontSize(run2),
226953
227025
  maxFontInfo: getFontInfoFromRun(run2),
226954
227026
  maxWidth: getEffectiveWidth(lines.length === 0 ? initialAvailableWidth : bodyContentWidth),
226955
227027
  segments: [{
@@ -226981,7 +227053,7 @@ async function measureParagraphBlock(block, maxWidth) {
226981
227053
  toRun: runIndex,
226982
227054
  toChar: spacesEndChar,
226983
227055
  width: spacesWidth,
226984
- maxFontSize: run2.fontSize,
227056
+ maxFontSize: lineHeightFontSize(run2),
226985
227057
  maxFontInfo: getFontInfoFromRun(run2),
226986
227058
  maxWidth: getEffectiveWidth(bodyContentWidth),
226987
227059
  segments: [{
@@ -226997,7 +227069,7 @@ async function measureParagraphBlock(block, maxWidth) {
226997
227069
  currentLine.toChar = spacesEndChar;
226998
227070
  currentLine.width = roundValue(currentLine.width + boundarySpacing + spacesWidth);
226999
227071
  currentLine.maxFontInfo = updateMaxFontInfo(currentLine.maxFontSize, currentLine.maxFontInfo, run2);
227000
- currentLine.maxFontSize = Math.max(currentLine.maxFontSize, run2.fontSize);
227072
+ currentLine.maxFontSize = Math.max(currentLine.maxFontSize, lineHeightFontSize(run2));
227001
227073
  appendSegment(currentLine.segments, runIndex, spacesStartChar, spacesEndChar, spacesWidth);
227002
227074
  currentLine.spaceCount += spacesLength;
227003
227075
  }
@@ -227036,7 +227108,7 @@ async function measureParagraphBlock(block, maxWidth) {
227036
227108
  toRun: runIndex,
227037
227109
  toChar: spaceEndChar,
227038
227110
  width: singleSpaceWidth,
227039
- maxFontSize: run2.fontSize,
227111
+ maxFontSize: lineHeightFontSize(run2),
227040
227112
  maxFontInfo: getFontInfoFromRun(run2),
227041
227113
  maxWidth: getEffectiveWidth(lines.length === 0 ? initialAvailableWidth : bodyContentWidth),
227042
227114
  segments: [{
@@ -227069,7 +227141,7 @@ async function measureParagraphBlock(block, maxWidth) {
227069
227141
  toRun: runIndex,
227070
227142
  toChar: spaceEndChar,
227071
227143
  width: singleSpaceWidth,
227072
- maxFontSize: run2.fontSize,
227144
+ maxFontSize: lineHeightFontSize(run2),
227073
227145
  maxFontInfo: getFontInfoFromRun(run2),
227074
227146
  maxWidth: getEffectiveWidth(bodyContentWidth),
227075
227147
  segments: [{
@@ -227085,7 +227157,7 @@ async function measureParagraphBlock(block, maxWidth) {
227085
227157
  currentLine.toChar = spaceEndChar;
227086
227158
  currentLine.width = roundValue(currentLine.width + boundarySpacing$1 + singleSpaceWidth);
227087
227159
  currentLine.maxFontInfo = updateMaxFontInfo(currentLine.maxFontSize, currentLine.maxFontInfo, run2);
227088
- currentLine.maxFontSize = Math.max(currentLine.maxFontSize, run2.fontSize);
227160
+ currentLine.maxFontSize = Math.max(currentLine.maxFontSize, lineHeightFontSize(run2));
227089
227161
  let spaceExplicitX;
227090
227162
  if (inActiveTabGroup && activeTabGroup) {
227091
227163
  spaceExplicitX = activeTabGroup.currentX;
@@ -227134,7 +227206,7 @@ async function measureParagraphBlock(block, maxWidth) {
227134
227206
  currentLine.toRun = runIndex;
227135
227207
  currentLine.toChar = chunkEndChar;
227136
227208
  currentLine.width = roundValue(currentLine.width + chunk2.width);
227137
- currentLine.maxFontSize = Math.max(currentLine.maxFontSize, run2.fontSize);
227209
+ currentLine.maxFontSize = Math.max(currentLine.maxFontSize, lineHeightFontSize(run2));
227138
227210
  currentLine.maxFontInfo = getFontInfoFromRun(run2);
227139
227211
  currentLine.segments.push({
227140
227212
  runIndex,
@@ -227172,7 +227244,7 @@ async function measureParagraphBlock(block, maxWidth) {
227172
227244
  toRun: runIndex,
227173
227245
  toChar: chunkEndChar,
227174
227246
  width: chunk2.width,
227175
- maxFontSize: run2.fontSize,
227247
+ maxFontSize: lineHeightFontSize(run2),
227176
227248
  maxFontInfo: getFontInfoFromRun(run2),
227177
227249
  maxWidth: getEffectiveWidth(contentWidth),
227178
227250
  segments: [{
@@ -227223,7 +227295,7 @@ async function measureParagraphBlock(block, maxWidth) {
227223
227295
  toRun: runIndex,
227224
227296
  toChar: wordEndNoSpace,
227225
227297
  width: wordOnlyWidth,
227226
- maxFontSize: run2.fontSize,
227298
+ maxFontSize: lineHeightFontSize(run2),
227227
227299
  maxFontInfo: getFontInfoFromRun(run2),
227228
227300
  maxWidth: getEffectiveWidth(lines.length === 0 ? initialAvailableWidth : bodyContentWidth),
227229
227301
  segments: [{
@@ -227289,7 +227361,7 @@ async function measureParagraphBlock(block, maxWidth) {
227289
227361
  toRun: runIndex,
227290
227362
  toChar: wordEndNoSpace,
227291
227363
  width: wordOnlyWidth,
227292
- maxFontSize: run2.fontSize,
227364
+ maxFontSize: lineHeightFontSize(run2),
227293
227365
  maxFontInfo: getFontInfoFromRun(run2),
227294
227366
  maxWidth: getEffectiveWidth(bodyContentWidth),
227295
227367
  segments: [{
@@ -227317,7 +227389,7 @@ async function measureParagraphBlock(block, maxWidth) {
227317
227389
  currentLine.toChar = wordEndNoSpace;
227318
227390
  currentLine.width = roundValue(currentLine.width + boundarySpacing + wordOnlyWidth);
227319
227391
  currentLine.maxFontInfo = updateMaxFontInfo(currentLine.maxFontSize, currentLine.maxFontInfo, run2);
227320
- currentLine.maxFontSize = Math.max(currentLine.maxFontSize, run2.fontSize);
227392
+ currentLine.maxFontSize = Math.max(currentLine.maxFontSize, lineHeightFontSize(run2));
227321
227393
  let explicitXHere;
227322
227394
  if (inActiveTabGroup && activeTabGroup) {
227323
227395
  explicitXHere = activeTabGroup.currentX;
@@ -227353,7 +227425,7 @@ async function measureParagraphBlock(block, maxWidth) {
227353
227425
  currentLine.naturalWidth = roundValue(totalWidthWithWord);
227354
227426
  currentLine.width = roundValue(targetWidth);
227355
227427
  currentLine.maxFontInfo = updateMaxFontInfo(currentLine.maxFontSize, currentLine.maxFontInfo, run2);
227356
- currentLine.maxFontSize = Math.max(currentLine.maxFontSize, run2.fontSize);
227428
+ currentLine.maxFontSize = Math.max(currentLine.maxFontSize, lineHeightFontSize(run2));
227357
227429
  appendSegment(currentLine.segments, runIndex, wordStartChar, newToChar, wordCommitWidth, explicitX);
227358
227430
  if (shouldIncludeDelimiterSpace)
227359
227431
  currentLine.spaceCount += 1;
@@ -227381,7 +227453,7 @@ async function measureParagraphBlock(block, maxWidth) {
227381
227453
  toRun: runIndex,
227382
227454
  toChar: charPosInRun,
227383
227455
  width: 0,
227384
- maxFontSize: run2.fontSize,
227456
+ maxFontSize: lineHeightFontSize(run2),
227385
227457
  maxFontInfo: getFontInfoFromRun(run2),
227386
227458
  maxWidth: getEffectiveWidth(lines.length === 0 ? initialAvailableWidth : bodyContentWidth),
227387
227459
  segments: [],
@@ -227397,7 +227469,7 @@ async function measureParagraphBlock(block, maxWidth) {
227397
227469
  const tabAdvance = Math.max(0, clampedTarget - absCurrentX);
227398
227470
  currentLine.width = roundValue(currentLine.width + tabAdvance);
227399
227471
  currentLine.maxFontInfo = updateMaxFontInfo(currentLine.maxFontSize, currentLine.maxFontInfo, run2);
227400
- currentLine.maxFontSize = Math.max(currentLine.maxFontSize, run2.fontSize);
227472
+ currentLine.maxFontSize = Math.max(currentLine.maxFontSize, lineHeightFontSize(run2));
227401
227473
  currentLine.toRun = runIndex;
227402
227474
  currentLine.toChar = charPosInRun;
227403
227475
  charPosInRun += 1;
@@ -228371,7 +228443,26 @@ var Node$13 = class Node$14 {
228371
228443
  "iPhone",
228372
228444
  "iPod"
228373
228445
  ].includes(navigator.platform);
228374
- }, CSS_DIMENSION_REGEX, DOM_SIZE_UNITS, floor4, abs2, min$1 = (a2, b$1) => a2 < b$1 ? a2 : b$1, max$1 = (a2, b$1) => a2 > b$1 ? a2 : b$1, isNegativeZero2 = (n) => n !== 0 ? n < 0 : 1 / n < 0, BIT182, BIT192, BIT202, BIT212, BIT222, BIT232, BIT242, BIT252, BIT262, BIT272, BIT282, BIT292, BIT302, BIT312, MAX_SAFE_INTEGER4, MIN_SAFE_INTEGER2, isInteger4, create$23 = () => /* @__PURE__ */ new Set, every$1 = (arr, f2) => {
228446
+ }, CSS_DIMENSION_REGEX, DOM_SIZE_UNITS, OOXML_PCT_DIVISOR = 5000, TWIPS_PER_PX$2 = 15, isPlainObject$7 = (value) => value !== null && typeof value === "object" && !Array.isArray(value), OOXML_Z_INDEX_BASE = 251658240, SPACE_CHARS, isAtomicRunKind = (kind) => kind === "image" || kind === "lineBreak" || kind === "break" || kind === "tab" || kind === "fieldAnnotation", isImageLikeRun = (run2) => {
228447
+ if (!run2 || typeof run2 !== "object")
228448
+ return false;
228449
+ return typeof run2.src === "string";
228450
+ }, coerceRunText = (run2) => {
228451
+ if (!run2 || typeof run2 !== "object")
228452
+ return "";
228453
+ const candidate = run2.text;
228454
+ return typeof candidate === "string" ? candidate : "";
228455
+ }, coercePmStart = (run2) => {
228456
+ if (!run2 || typeof run2 !== "object")
228457
+ return;
228458
+ const candidate = run2.pmStart;
228459
+ return typeof candidate === "number" ? candidate : undefined;
228460
+ }, coercePmEnd = (run2) => {
228461
+ if (!run2 || typeof run2 !== "object")
228462
+ return;
228463
+ const candidate = run2.pmEnd;
228464
+ return typeof candidate === "number" ? candidate : undefined;
228465
+ }, engines_exports, floor4, abs2, min$1 = (a2, b$1) => a2 < b$1 ? a2 : b$1, max$1 = (a2, b$1) => a2 > b$1 ? a2 : b$1, isNegativeZero2 = (n) => n !== 0 ? n < 0 : 1 / n < 0, BIT182, BIT192, BIT202, BIT212, BIT222, BIT232, BIT242, BIT252, BIT262, BIT272, BIT282, BIT292, BIT302, BIT312, MAX_SAFE_INTEGER4, MIN_SAFE_INTEGER2, isInteger4, create$23 = () => /* @__PURE__ */ new Set, every$1 = (arr, f2) => {
228375
228466
  for (let i4 = 0;i4 < arr.length; i4++)
228376
228467
  if (!f2(arr[i4], i4, arr))
228377
228468
  return false;
@@ -229802,26 +229893,7 @@ var Node$13 = class Node$14 {
229802
229893
  });
229803
229894
  } catch {}
229804
229895
  }
229805
- }, OOXML_PCT_DIVISOR = 5000, TWIPS_PER_PX$2 = 15, isPlainObject$7 = (value) => value !== null && typeof value === "object" && !Array.isArray(value), OOXML_Z_INDEX_BASE = 251658240, SPACE_CHARS, isAtomicRunKind = (kind) => kind === "image" || kind === "lineBreak" || kind === "break" || kind === "tab" || kind === "fieldAnnotation", isImageLikeRun = (run2) => {
229806
- if (!run2 || typeof run2 !== "object")
229807
- return false;
229808
- return typeof run2.src === "string";
229809
- }, coerceRunText = (run2) => {
229810
- if (!run2 || typeof run2 !== "object")
229811
- return "";
229812
- const candidate = run2.text;
229813
- return typeof candidate === "string" ? candidate : "";
229814
- }, coercePmStart = (run2) => {
229815
- if (!run2 || typeof run2 !== "object")
229816
- return;
229817
- const candidate = run2.pmStart;
229818
- return typeof candidate === "number" ? candidate : undefined;
229819
- }, coercePmEnd = (run2) => {
229820
- if (!run2 || typeof run2 !== "object")
229821
- return;
229822
- const candidate = run2.pmEnd;
229823
- return typeof candidate === "number" ? candidate : undefined;
229824
- }, engines_exports, Extension = class Extension2 {
229896
+ }, Extension = class Extension2 {
229825
229897
  constructor(config2) {
229826
229898
  this.type = "extension";
229827
229899
  this.name = "extension";
@@ -230166,7 +230238,7 @@ var Node$13 = class Node$14 {
230166
230238
  seededAt: (/* @__PURE__ */ new Date()).toISOString(),
230167
230239
  source: "browser"
230168
230240
  });
230169
- }, initSyncListener = (ydoc, editor, extension3) => {
230241
+ }, initSyncListener = (ydoc, editor, extension2) => {
230170
230242
  const provider = editor.options.collaborationProvider;
230171
230243
  if (!provider)
230172
230244
  return () => {};
@@ -230176,7 +230248,7 @@ var Node$13 = class Node$14 {
230176
230248
  return;
230177
230249
  if (synced === false)
230178
230250
  return;
230179
- extension3.options.isReady = true;
230251
+ extension2.options.isReady = true;
230180
230252
  editor.emit("collaborationReady", {
230181
230253
  editor,
230182
230254
  ydoc
@@ -230329,11 +230401,11 @@ var Node$13 = class Node$14 {
230329
230401
  });
230330
230402
  }
230331
230403
  };
230332
- for (const extension3 of extensions) {
230333
- const addGlobalAttributes = getExtensionConfigField(extension3, "addGlobalAttributes", {
230334
- name: extension3.name,
230335
- options: extension3.options,
230336
- storage: extension3.storage
230404
+ for (const extension2 of extensions) {
230405
+ const addGlobalAttributes = getExtensionConfigField(extension2, "addGlobalAttributes", {
230406
+ name: extension2.name,
230407
+ options: extension2.options,
230408
+ storage: extension2.storage
230337
230409
  });
230338
230410
  if (!addGlobalAttributes)
230339
230411
  continue;
@@ -230348,11 +230420,11 @@ var Node$13 = class Node$14 {
230348
230420
  const nodeAndMarkExtensions = extensions.filter((e) => {
230349
230421
  return e.type === "node" || e.type === "mark";
230350
230422
  });
230351
- for (const extension3 of nodeAndMarkExtensions) {
230352
- const addAttributes = getExtensionConfigField(extension3, "addAttributes", {
230353
- name: extension3.name,
230354
- options: extension3.options,
230355
- storage: extension3.storage
230423
+ for (const extension2 of nodeAndMarkExtensions) {
230424
+ const addAttributes = getExtensionConfigField(extension2, "addAttributes", {
230425
+ name: extension2.name,
230426
+ options: extension2.options,
230427
+ storage: extension2.storage
230356
230428
  });
230357
230429
  if (!addAttributes)
230358
230430
  continue;
@@ -230365,7 +230437,7 @@ var Node$13 = class Node$14 {
230365
230437
  if (typeof merged.default === "function")
230366
230438
  merged.default = merged.default();
230367
230439
  extensionAttributes.push({
230368
- type: extension3.name,
230440
+ type: extension2.name,
230369
230441
  name,
230370
230442
  attribute: merged
230371
230443
  });
@@ -234025,7 +234097,7 @@ var Node$13 = class Node$14 {
234025
234097
  else if (event === "update")
234026
234098
  params$1.event = comments_module_events.UPDATE;
234027
234099
  return params$1;
234028
- }, CommentsMark, toSuperscriptDigits$4 = (value) => {
234100
+ }, CommentsMark, toSuperscriptDigits$1 = (value) => {
234029
234101
  const map$12 = {
234030
234102
  0: "⁰",
234031
234103
  1: "¹",
@@ -234065,7 +234137,7 @@ var Node$13 = class Node$14 {
234065
234137
  const id2 = node3?.attrs?.id;
234066
234138
  if (id2 != null) {
234067
234139
  el.setAttribute("data-footnote-id", String(id2));
234068
- el.textContent = toSuperscriptDigits$4(resolveFootnoteDisplayNumber$1(this.editor, id2) ?? id2);
234140
+ el.textContent = toSuperscriptDigits$1(resolveFootnoteDisplayNumber$1(this.editor, id2) ?? id2);
234069
234141
  } else
234070
234142
  el.textContent = "*";
234071
234143
  return el;
@@ -234080,14 +234152,14 @@ var Node$13 = class Node$14 {
234080
234152
  if (id2 != null) {
234081
234153
  this.dom.setAttribute("data-footnote-id", String(id2));
234082
234154
  const display = resolveFootnoteDisplayNumber$1(this.editor, id2) ?? id2;
234083
- this.dom.textContent = toSuperscriptDigits$4(display);
234155
+ this.dom.textContent = toSuperscriptDigits$1(display);
234084
234156
  } else {
234085
234157
  this.dom.removeAttribute("data-footnote-id");
234086
234158
  this.dom.textContent = "*";
234087
234159
  }
234088
234160
  return true;
234089
234161
  }
234090
- }, FootnoteReference, toSuperscriptDigits$3 = (value) => {
234162
+ }, FootnoteReference, toSuperscriptDigits = (value) => {
234091
234163
  const map$12 = {
234092
234164
  0: "⁰",
234093
234165
  1: "¹",
@@ -234127,7 +234199,7 @@ var Node$13 = class Node$14 {
234127
234199
  const id2 = node3?.attrs?.id;
234128
234200
  if (id2 != null) {
234129
234201
  el.setAttribute("data-endnote-id", String(id2));
234130
- el.textContent = toSuperscriptDigits$3(resolveEndnoteDisplayNumber$1(this.editor, id2) ?? id2);
234202
+ el.textContent = toSuperscriptDigits(resolveEndnoteDisplayNumber$1(this.editor, id2) ?? id2);
234131
234203
  } else
234132
234204
  el.textContent = "*";
234133
234205
  return el;
@@ -234142,7 +234214,7 @@ var Node$13 = class Node$14 {
234142
234214
  if (id2 != null) {
234143
234215
  this.dom.setAttribute("data-endnote-id", String(id2));
234144
234216
  const display = resolveEndnoteDisplayNumber$1(this.editor, id2) ?? id2;
234145
- this.dom.textContent = toSuperscriptDigits$3(display);
234217
+ this.dom.textContent = toSuperscriptDigits(display);
234146
234218
  } else {
234147
234219
  this.dom.removeAttribute("data-endnote-id");
234148
234220
  this.dom.textContent = "*";
@@ -236980,7 +237052,11 @@ var Node$13 = class Node$14 {
236980
237052
  }), hiddenRender = (type) => ["sd-passthrough", {
236981
237053
  "data-sd-passthrough": type,
236982
237054
  style: "display: none;"
236983
- }], PassthroughBlock, PassthroughInline, IndexEntry, TableOfContentsEntry, CrossReference, SequenceField, DocumentStatField, FIELD_NODE_TYPES, SYNTHETIC_FIELD_NODE_TYPES, UPDATABLE_FIELD_TYPES, FieldUpdate, Citation, Bibliography, AuthorityEntry, TableOfAuthorities, TextStyle, Bold, Italic, FORMATTING_MARK_NAMES, getLinkedStyle = (styleId, styles = []) => {
237055
+ }], PassthroughBlock, PassthroughInline, IndexEntry, TableOfContentsEntry, CrossReference, SequenceField, DocumentStatField, FIELD_NODE_TYPES, SYNTHETIC_FIELD_NODE_TYPES, UPDATABLE_FIELD_TYPES, FieldUpdate, Citation, Bibliography, AuthorityEntry, TableOfAuthorities, hasExplicitPosition = (position4) => {
237056
+ if (typeof position4 !== "string")
237057
+ return false;
237058
+ return normalizeBaselineShift(parseFloat(position4)) != null;
237059
+ }, TextStyle, Bold, Italic, FORMATTING_MARK_NAMES, getLinkedStyle = (styleId, styles = []) => {
236984
237060
  const linkedStyle = styles.find((style2) => style2.id === styleId);
236985
237061
  const basedOn = linkedStyle?.definition?.attrs?.basedOn;
236986
237062
  return {
@@ -241293,12 +241369,12 @@ var Node$13 = class Node$14 {
241293
241369
  });
241294
241370
  }
241295
241371
  static #createNodesSchema(nodeExtensions, attributes, editor) {
241296
- const nodeEntries = nodeExtensions.map((extension3) => {
241297
- const extensionAttributes = attributes.filter((a2) => a2.type === extension3.name);
241372
+ const nodeEntries = nodeExtensions.map((extension2) => {
241373
+ const extensionAttributes = attributes.filter((a2) => a2.type === extension2.name);
241298
241374
  const context = {
241299
- name: extension3.name,
241300
- options: extension3.options,
241301
- storage: extension3.storage,
241375
+ name: extension2.name,
241376
+ options: extension2.options,
241377
+ storage: extension2.storage,
241302
241378
  editor
241303
241379
  };
241304
241380
  const attrs = Object.fromEntries(extensionAttributes.map((attr) => {
@@ -241308,80 +241384,80 @@ var Node$13 = class Node$14 {
241308
241384
  const extendNodeSchema = getExtensionConfigField(e, "extendNodeSchema", context);
241309
241385
  return {
241310
241386
  ...fields,
241311
- ...extendNodeSchema ? extendNodeSchema(extension3) : {}
241387
+ ...extendNodeSchema ? extendNodeSchema(extension2) : {}
241312
241388
  };
241313
241389
  }, {});
241314
241390
  const schema = cleanSchemaItem({
241315
- content: callOrGet(getExtensionConfigField(extension3, "content", context)),
241316
- group: callOrGet(getExtensionConfigField(extension3, "group", context)),
241317
- marks: callOrGet(getExtensionConfigField(extension3, "marks", context)),
241318
- inline: callOrGet(getExtensionConfigField(extension3, "inline", context)),
241319
- atom: callOrGet(getExtensionConfigField(extension3, "atom", context)),
241320
- selectable: callOrGet(getExtensionConfigField(extension3, "selectable", context)),
241321
- draggable: callOrGet(getExtensionConfigField(extension3, "draggable", context)),
241322
- code: callOrGet(getExtensionConfigField(extension3, "code", context)),
241323
- defining: callOrGet(getExtensionConfigField(extension3, "defining", context)),
241324
- isolating: callOrGet(getExtensionConfigField(extension3, "isolating", context)),
241325
- summary: getExtensionConfigField(extension3, "summary", context),
241391
+ content: callOrGet(getExtensionConfigField(extension2, "content", context)),
241392
+ group: callOrGet(getExtensionConfigField(extension2, "group", context)),
241393
+ marks: callOrGet(getExtensionConfigField(extension2, "marks", context)),
241394
+ inline: callOrGet(getExtensionConfigField(extension2, "inline", context)),
241395
+ atom: callOrGet(getExtensionConfigField(extension2, "atom", context)),
241396
+ selectable: callOrGet(getExtensionConfigField(extension2, "selectable", context)),
241397
+ draggable: callOrGet(getExtensionConfigField(extension2, "draggable", context)),
241398
+ code: callOrGet(getExtensionConfigField(extension2, "code", context)),
241399
+ defining: callOrGet(getExtensionConfigField(extension2, "defining", context)),
241400
+ isolating: callOrGet(getExtensionConfigField(extension2, "isolating", context)),
241401
+ summary: getExtensionConfigField(extension2, "summary", context),
241326
241402
  attrs,
241327
241403
  ...additionalNodeFields
241328
241404
  });
241329
- if (typeof extension3.validChildren === "function" || Array.isArray(extension3.validChildren))
241405
+ if (typeof extension2.validChildren === "function" || Array.isArray(extension2.validChildren))
241330
241406
  Object.defineProperty(schema, "validChildren", {
241331
241407
  enumerable: false,
241332
241408
  configurable: false,
241333
- get: () => extension3.validChildren
241409
+ get: () => extension2.validChildren
241334
241410
  });
241335
- const parseDOM = callOrGet(getExtensionConfigField(extension3, "parseDOM", context));
241411
+ const parseDOM = callOrGet(getExtensionConfigField(extension2, "parseDOM", context));
241336
241412
  if (parseDOM)
241337
241413
  schema.parseDOM = parseDOM.map((parseRule) => {
241338
241414
  return Attribute2.insertExtensionAttrsToParseRule(parseRule, extensionAttributes);
241339
241415
  });
241340
- const renderDOM = getExtensionConfigField(extension3, "renderDOM", context);
241416
+ const renderDOM = getExtensionConfigField(extension2, "renderDOM", context);
241341
241417
  if (renderDOM)
241342
241418
  schema.toDOM = (node3) => renderDOM({
241343
241419
  node: node3,
241344
241420
  htmlAttributes: Attribute2.getAttributesToRender(node3, extensionAttributes)
241345
241421
  });
241346
- const renderText = getExtensionConfigField(extension3, "renderText", context);
241422
+ const renderText = getExtensionConfigField(extension2, "renderText", context);
241347
241423
  if (renderText)
241348
241424
  schema.toText = renderText;
241349
- return [extension3.name, schema];
241425
+ return [extension2.name, schema];
241350
241426
  });
241351
241427
  return Object.fromEntries(nodeEntries);
241352
241428
  }
241353
241429
  static #createMarksSchema(markExtensions, attributes, editor) {
241354
- const markEntries = markExtensions.map((extension3) => {
241355
- const extensionAttributes = attributes.filter((a2) => a2.type === extension3.name);
241430
+ const markEntries = markExtensions.map((extension2) => {
241431
+ const extensionAttributes = attributes.filter((a2) => a2.type === extension2.name);
241356
241432
  const context = {
241357
- name: extension3.name,
241358
- options: extension3.options,
241359
- storage: extension3.storage,
241433
+ name: extension2.name,
241434
+ options: extension2.options,
241435
+ storage: extension2.storage,
241360
241436
  editor
241361
241437
  };
241362
241438
  const attrs = Object.fromEntries(extensionAttributes.map((attr) => {
241363
241439
  return [attr.name, { default: attr?.attribute?.default }];
241364
241440
  }));
241365
241441
  const schema = cleanSchemaItem({
241366
- group: callOrGet(getExtensionConfigField(extension3, "group", context)),
241367
- inclusive: callOrGet(getExtensionConfigField(extension3, "inclusive", context)),
241368
- excludes: callOrGet(getExtensionConfigField(extension3, "excludes", context)),
241369
- spanning: callOrGet(getExtensionConfigField(extension3, "spanning", context)),
241370
- code: callOrGet(getExtensionConfigField(extension3, "code", context)),
241442
+ group: callOrGet(getExtensionConfigField(extension2, "group", context)),
241443
+ inclusive: callOrGet(getExtensionConfigField(extension2, "inclusive", context)),
241444
+ excludes: callOrGet(getExtensionConfigField(extension2, "excludes", context)),
241445
+ spanning: callOrGet(getExtensionConfigField(extension2, "spanning", context)),
241446
+ code: callOrGet(getExtensionConfigField(extension2, "code", context)),
241371
241447
  attrs
241372
241448
  });
241373
- const parseDOM = callOrGet(getExtensionConfigField(extension3, "parseDOM", context));
241449
+ const parseDOM = callOrGet(getExtensionConfigField(extension2, "parseDOM", context));
241374
241450
  if (parseDOM)
241375
241451
  schema.parseDOM = parseDOM.map((parseRule) => {
241376
241452
  return Attribute2.insertExtensionAttrsToParseRule(parseRule, extensionAttributes);
241377
241453
  });
241378
- const renderDOM = getExtensionConfigField(extension3, "renderDOM", context);
241454
+ const renderDOM = getExtensionConfigField(extension2, "renderDOM", context);
241379
241455
  if (renderDOM)
241380
241456
  schema.toDOM = (mark2) => renderDOM({
241381
241457
  mark: mark2,
241382
241458
  htmlAttributes: Attribute2.getAttributesToRender(mark2, extensionAttributes)
241383
241459
  });
241384
- return [extension3.name, schema];
241460
+ return [extension2.name, schema];
241385
241461
  });
241386
241462
  return Object.fromEntries(markEntries);
241387
241463
  }
@@ -241506,9 +241582,9 @@ var Node$13 = class Node$14 {
241506
241582
  constructor(extensions, userExtensions, editor) {
241507
241583
  this.editor = editor;
241508
241584
  this.externalExtensions = userExtensions || [];
241509
- this.externalExtensions = this.externalExtensions.map((extension3) => {
241585
+ this.externalExtensions = this.externalExtensions.map((extension2) => {
241510
241586
  return {
241511
- ...extension3,
241587
+ ...extension2,
241512
241588
  isExternal: true
241513
241589
  };
241514
241590
  });
@@ -241539,13 +241615,13 @@ var Node$13 = class Node$14 {
241539
241615
  }
241540
241616
  get commands() {
241541
241617
  let commandsObject = {};
241542
- for (const extension3 of this.extensions) {
241543
- const addCommands = getExtensionConfigField(extension3, "addCommands", {
241544
- name: extension3.name,
241545
- options: extension3.options,
241546
- storage: extension3.storage,
241618
+ for (const extension2 of this.extensions) {
241619
+ const addCommands = getExtensionConfigField(extension2, "addCommands", {
241620
+ name: extension2.name,
241621
+ options: extension2.options,
241622
+ storage: extension2.storage,
241547
241623
  editor: this.editor,
241548
- type: getSchemaTypeByName(extension3.name, this.schema)
241624
+ type: getSchemaTypeByName(extension2.name, this.schema)
241549
241625
  });
241550
241626
  if (addCommands)
241551
241627
  commandsObject = {
@@ -241557,16 +241633,16 @@ var Node$13 = class Node$14 {
241557
241633
  }
241558
241634
  get helpers() {
241559
241635
  const helpersObject = {};
241560
- for (const extension3 of this.extensions) {
241561
- const name = extension3.name;
241636
+ for (const extension2 of this.extensions) {
241637
+ const name = extension2.name;
241562
241638
  if (!name)
241563
241639
  continue;
241564
- const addHelpers = getExtensionConfigField(extension3, "addHelpers", {
241565
- name: extension3.name,
241566
- options: extension3.options,
241567
- storage: extension3.storage,
241640
+ const addHelpers = getExtensionConfigField(extension2, "addHelpers", {
241641
+ name: extension2.name,
241642
+ options: extension2.options,
241643
+ storage: extension2.storage,
241568
241644
  editor: this.editor,
241569
- type: getSchemaTypeByName(extension3.name, this.schema)
241645
+ type: getSchemaTypeByName(extension2.name, this.schema)
241570
241646
  });
241571
241647
  if (addHelpers)
241572
241648
  helpersObject[name] = addHelpers();
@@ -241577,16 +241653,16 @@ var Node$13 = class Node$14 {
241577
241653
  const editor = this.editor;
241578
241654
  const extensions = ExtensionService2.sortByPriority([...this.extensions].reverse());
241579
241655
  const inputRules = [];
241580
- const allPlugins = extensions.map((extension3) => {
241656
+ const allPlugins = extensions.map((extension2) => {
241581
241657
  const context = {
241582
- name: extension3.name,
241583
- options: extension3.options,
241584
- storage: extension3.storage,
241658
+ name: extension2.name,
241659
+ options: extension2.options,
241660
+ storage: extension2.storage,
241585
241661
  editor,
241586
- type: getSchemaTypeByName(extension3.name, this.schema)
241662
+ type: getSchemaTypeByName(extension2.name, this.schema)
241587
241663
  };
241588
241664
  const plugins = [];
241589
- const addShortcuts = getExtensionConfigField(extension3, "addShortcuts", context);
241665
+ const addShortcuts = getExtensionConfigField(extension2, "addShortcuts", context);
241590
241666
  let bindingsObject = {};
241591
241667
  if (addShortcuts) {
241592
241668
  const entries2 = Object.entries(addShortcuts()).map(([shortcut, method]) => {
@@ -241598,10 +241674,10 @@ var Node$13 = class Node$14 {
241598
241674
  bindingsObject = { ...Object.fromEntries(entries2) };
241599
241675
  }
241600
241676
  plugins.push(keymap(bindingsObject));
241601
- const addInputRules = getExtensionConfigField(extension3, "addInputRules", context);
241602
- if (isExtensionRulesEnabled(extension3, editor.options.enableInputRules) && addInputRules)
241677
+ const addInputRules = getExtensionConfigField(extension2, "addInputRules", context);
241678
+ if (isExtensionRulesEnabled(extension2, editor.options.enableInputRules) && addInputRules)
241603
241679
  inputRules.push(...addInputRules());
241604
- const addPmPlugins = getExtensionConfigField(extension3, "addPmPlugins", context);
241680
+ const addPmPlugins = getExtensionConfigField(extension2, "addPmPlugins", context);
241605
241681
  if (addPmPlugins)
241606
241682
  plugins.push(...addPmPlugins());
241607
241683
  return plugins;
@@ -241613,14 +241689,14 @@ var Node$13 = class Node$14 {
241613
241689
  }
241614
241690
  get nodeViews() {
241615
241691
  const { editor } = this;
241616
- const entries2 = this.extensions.filter((e) => e.type === "node").filter((extension3) => !!getExtensionConfigField(extension3, "addNodeView")).map((extension3) => {
241617
- const extensionAttrs = this.attributes.filter((a2) => a2.type === extension3.name);
241618
- const addNodeView = getExtensionConfigField(extension3, "addNodeView", {
241619
- name: extension3.name,
241620
- options: extension3.options,
241621
- storage: extension3.storage,
241692
+ const entries2 = this.extensions.filter((e) => e.type === "node").filter((extension2) => !!getExtensionConfigField(extension2, "addNodeView")).map((extension2) => {
241693
+ const extensionAttrs = this.attributes.filter((a2) => a2.type === extension2.name);
241694
+ const addNodeView = getExtensionConfigField(extension2, "addNodeView", {
241695
+ name: extension2.name,
241696
+ options: extension2.options,
241697
+ storage: extension2.storage,
241622
241698
  editor,
241623
- type: getNodeType(extension3.name, this.schema)
241699
+ type: getNodeType(extension2.name, this.schema)
241624
241700
  });
241625
241701
  if (!addNodeView)
241626
241702
  return null;
@@ -241634,47 +241710,47 @@ var Node$13 = class Node$14 {
241634
241710
  getPos,
241635
241711
  decorations,
241636
241712
  htmlAttributes: Attribute2.getAttributesToRender(node3, extensionAttrs),
241637
- extension: extension3,
241713
+ extension: extension2,
241638
241714
  extensionAttrs
241639
241715
  });
241640
241716
  };
241641
- return [extension3.name, nodeview];
241717
+ return [extension2.name, nodeview];
241642
241718
  }).filter(Boolean);
241643
241719
  return Object.fromEntries(entries2);
241644
241720
  }
241645
241721
  #setupExtensions() {
241646
- for (const extension3 of this.extensions) {
241647
- this.editor.extensionStorage[extension3.name] = extension3.storage;
241722
+ for (const extension2 of this.extensions) {
241723
+ this.editor.extensionStorage[extension2.name] = extension2.storage;
241648
241724
  const context = {
241649
- name: extension3.name,
241650
- options: extension3.options,
241651
- storage: extension3.storage,
241725
+ name: extension2.name,
241726
+ options: extension2.options,
241727
+ storage: extension2.storage,
241652
241728
  editor: this.editor,
241653
- type: getSchemaTypeByName(extension3.name, this.schema)
241729
+ type: getSchemaTypeByName(extension2.name, this.schema)
241654
241730
  };
241655
- if (extension3.type === "mark") {
241656
- if (callOrGet(getExtensionConfigField(extension3, "keepOnSplit", context)) ?? true)
241657
- this.splittableMarks.push(extension3.name);
241731
+ if (extension2.type === "mark") {
241732
+ if (callOrGet(getExtensionConfigField(extension2, "keepOnSplit", context)) ?? true)
241733
+ this.splittableMarks.push(extension2.name);
241658
241734
  }
241659
- this.#attachEditorEvents(extension3);
241735
+ this.#attachEditorEvents(extension2);
241660
241736
  }
241661
241737
  }
241662
- #attachEditorEvents(extension3) {
241738
+ #attachEditorEvents(extension2) {
241663
241739
  const context = {
241664
- name: extension3.name,
241665
- options: extension3.options,
241666
- storage: extension3.storage,
241740
+ name: extension2.name,
241741
+ options: extension2.options,
241742
+ storage: extension2.storage,
241667
241743
  editor: this.editor,
241668
- type: getSchemaTypeByName(extension3.name, this.schema)
241669
- };
241670
- const onBeforeCreate = getExtensionConfigField(extension3, "onBeforeCreate", context);
241671
- const onCreate2 = getExtensionConfigField(extension3, "onCreate", context);
241672
- const onUpdate = getExtensionConfigField(extension3, "onUpdate", context);
241673
- const onSelectionUpdate = getExtensionConfigField(extension3, "onSelectionUpdate", context);
241674
- const onTransaction = getExtensionConfigField(extension3, "onTransaction", context);
241675
- const onFocus = getExtensionConfigField(extension3, "onFocus", context);
241676
- const onBlur = getExtensionConfigField(extension3, "onBlur", context);
241677
- const onDestroy2 = getExtensionConfigField(extension3, "onDestroy", context);
241744
+ type: getSchemaTypeByName(extension2.name, this.schema)
241745
+ };
241746
+ const onBeforeCreate = getExtensionConfigField(extension2, "onBeforeCreate", context);
241747
+ const onCreate2 = getExtensionConfigField(extension2, "onCreate", context);
241748
+ const onUpdate = getExtensionConfigField(extension2, "onUpdate", context);
241749
+ const onSelectionUpdate = getExtensionConfigField(extension2, "onSelectionUpdate", context);
241750
+ const onTransaction = getExtensionConfigField(extension2, "onTransaction", context);
241751
+ const onFocus = getExtensionConfigField(extension2, "onFocus", context);
241752
+ const onBlur = getExtensionConfigField(extension2, "onBlur", context);
241753
+ const onDestroy2 = getExtensionConfigField(extension2, "onDestroy", context);
241678
241754
  if (onBeforeCreate)
241679
241755
  this.editor.on("beforeCreate", onBeforeCreate);
241680
241756
  if (onCreate2)
@@ -242337,21 +242413,21 @@ var Node$13 = class Node$14 {
242337
242413
  console.warn("Failed to initialize developer tools:", error3);
242338
242414
  }
242339
242415
  }
242340
- }, 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.23.0", PIXELS_PER_INCH2 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, cloneExtensionInstance = (extension3) => {
242341
- const extensionLike = extension3;
242416
+ }, 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.23.0", PIXELS_PER_INCH2 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, cloneExtensionInstance = (extension2) => {
242417
+ const extensionLike = extension2;
242342
242418
  const config2 = extensionLike?.config;
242343
242419
  const ExtensionCtor = extensionLike?.constructor;
242344
242420
  if (!config2 || typeof config2 !== "object" || typeof ExtensionCtor !== "function")
242345
- return extension3;
242421
+ return extension2;
242346
242422
  try {
242347
242423
  return new ExtensionCtor(config2);
242348
242424
  } catch {
242349
- return extension3;
242425
+ return extension2;
242350
242426
  }
242351
242427
  }, Editor, token = (varName, fallback) => ({
242352
242428
  css: `var(${varName}, ${fallback})`,
242353
242429
  fallback
242354
- }), H, TRACK_CHANGE_FOCUSED_CLASS = "track-change-focused", COMMENT_HIGHLIGHT_SELECTOR$1 = ".superdoc-comment-highlight", TRACK_CHANGE_SELECTOR = "[data-track-change-id]", CommentHighlightDecorator = class {
242430
+ }), H, TRACK_CHANGE_FOCUSED_CLASS = "track-change-focused", COMMENT_HIGHLIGHT_SELECTOR$1 = ".superdoc-comment-highlight", TRACK_CHANGE_SELECTOR$1 = "[data-track-change-id]", CommentHighlightDecorator = class {
242355
242431
  #activeCommentId = null;
242356
242432
  #container = null;
242357
242433
  setContainer(container) {
@@ -242428,7 +242504,7 @@ var Node$13 = class Node$14 {
242428
242504
  }
242429
242505
  #applyTrackChangeFocus(root3) {
242430
242506
  const activeId = this.#activeCommentId;
242431
- const elements = root3.querySelectorAll(TRACK_CHANGE_SELECTOR);
242507
+ const elements = root3.querySelectorAll(TRACK_CHANGE_SELECTOR$1);
242432
242508
  for (let i4 = 0;i4 < elements.length; i4++) {
242433
242509
  const el = elements[i4];
242434
242510
  if (activeId && el.dataset.trackChangeId === activeId)
@@ -246222,6 +246298,26 @@ var Node$13 = class Node$14 {
246222
246298
  ].join("|");
246223
246299
  }
246224
246300
  return block.id;
246301
+ }, DEFAULT_SUPERSCRIPT_RAISE_RATIO = 0.33, DEFAULT_SUBSCRIPT_LOWER_RATIO = 0.14, hasVerticalPositioning = (run2) => normalizeBaselineShift(run2.baselineShift) != null || run2.vertAlign === "superscript" || run2.vertAlign === "subscript", applyRunVerticalPositioning = (element3, run2) => {
246302
+ if (hasVerticalPositioning(run2))
246303
+ element3.style.lineHeight = "1";
246304
+ const explicitBaselineShift = normalizeBaselineShift(run2.baselineShift);
246305
+ if (explicitBaselineShift != null) {
246306
+ element3.style.verticalAlign = `${explicitBaselineShift}pt`;
246307
+ return;
246308
+ }
246309
+ if (run2.vertAlign === "superscript") {
246310
+ const baseFontSize = resolveBaseFontSizeForVerticalText(run2.fontSize, run2);
246311
+ element3.style.verticalAlign = `${baseFontSize * DEFAULT_SUPERSCRIPT_RAISE_RATIO}px`;
246312
+ return;
246313
+ }
246314
+ if (run2.vertAlign === "subscript") {
246315
+ const baseFontSize = resolveBaseFontSizeForVerticalText(run2.fontSize, run2);
246316
+ element3.style.verticalAlign = `${-(baseFontSize * DEFAULT_SUBSCRIPT_LOWER_RATIO)}px`;
246317
+ return;
246318
+ }
246319
+ if (run2.vertAlign === "baseline")
246320
+ element3.style.verticalAlign = "baseline";
246225
246321
  }, applyRunStyles = (element3, run2, _isLink = false) => {
246226
246322
  if (run2.kind === "tab" || run2.kind === "image" || run2.kind === "lineBreak" || run2.kind === "break" || run2.kind === "fieldAnnotation" || run2.kind === "math")
246227
246323
  return;
@@ -246251,14 +246347,7 @@ var Node$13 = class Node$14 {
246251
246347
  decorations.push("line-through");
246252
246348
  if (decorations.length > 0)
246253
246349
  element3.style.textDecorationLine = decorations.join(" ");
246254
- if (run2.baselineShift != null && Number.isFinite(run2.baselineShift))
246255
- element3.style.verticalAlign = `${run2.baselineShift}pt`;
246256
- else if (run2.vertAlign === "superscript")
246257
- element3.style.verticalAlign = "super";
246258
- else if (run2.vertAlign === "subscript")
246259
- element3.style.verticalAlign = "sub";
246260
- else if (run2.vertAlign === "baseline")
246261
- element3.style.verticalAlign = "baseline";
246350
+ applyRunVerticalPositioning(element3, run2);
246262
246351
  }, CLIP_PATH_PREFIXES, readClipPathValue = (value) => {
246263
246352
  if (typeof value !== "string")
246264
246353
  return "";
@@ -249240,7 +249329,7 @@ var Node$13 = class Node$14 {
249240
249329
  this.#onRebuild();
249241
249330
  });
249242
249331
  }
249243
- }, Y_SORT_THRESHOLD_PX = 2, Y_SAME_LINE_THRESHOLD_PX = 3, HORIZONTAL_OVERLAP_THRESHOLD = 0.8, SUBSCRIPT_SUPERSCRIPT_SCALE2 = 0.65, TWIPS_PER_INCH2 = 1440, PX_PER_PT2, VALID_TRACKED_MODES, DEFAULT_HYPERLINK_CONFIG, ATOMIC_INLINE_TYPES, TOKEN_INLINE_TYPES, isValidTrackedMode = (value) => {
249332
+ }, Y_SORT_THRESHOLD_PX = 2, Y_SAME_LINE_THRESHOLD_PX = 3, HORIZONTAL_OVERLAP_THRESHOLD = 0.8, TWIPS_PER_INCH2 = 1440, PX_PER_PT2, VALID_TRACKED_MODES, DEFAULT_HYPERLINK_CONFIG, ATOMIC_INLINE_TYPES, TOKEN_INLINE_TYPES, isValidTrackedMode = (value) => {
249244
249333
  return typeof value === "string" && VALID_TRACKED_MODES.includes(value);
249245
249334
  }, isTextRun$3 = (run2) => {
249246
249335
  return "text" in run2 && run2.kind !== "tab";
@@ -249999,10 +250088,11 @@ var Node$13 = class Node$14 {
249999
250088
  else
250000
250089
  fontFamily = runProps.fontFamily?.ascii || runProps.fontFamily?.hAnsi || runProps.fontFamily?.eastAsia || defaultFontFamily;
250001
250090
  const vertAlign = runProps.vertAlign;
250002
- const hasPosition = runProps.position != null && Number.isFinite(runProps.position);
250003
- let fontSize = runProps.fontSize ? ptToPx(runProps.fontSize / 2) : defaultFontSizePx;
250004
- if (!hasPosition && (vertAlign === "superscript" || vertAlign === "subscript"))
250005
- fontSize *= SUBSCRIPT_SUPERSCRIPT_SCALE2;
250091
+ const baselineShift = normalizeBaselineShift(runProps.position != null && Number.isFinite(runProps.position) ? runProps.position / 2 : undefined);
250092
+ const fontSize = scaleFontSizeForVerticalText(runProps.fontSize ? ptToPx(runProps.fontSize / 2) : defaultFontSizePx, {
250093
+ vertAlign,
250094
+ baselineShift
250095
+ });
250006
250096
  return {
250007
250097
  fontFamily: toCssFontFamily(fontFamily),
250008
250098
  fontSize,
@@ -250021,7 +250111,7 @@ var Node$13 = class Node$14 {
250021
250111
  lang: runProps.lang?.val || undefined,
250022
250112
  vanish: runProps.vanish,
250023
250113
  vertAlign,
250024
- baselineShift: hasPosition ? runProps.position / 2 : undefined
250114
+ baselineShift
250025
250115
  };
250026
250116
  }, VALID_LINK_TARGETS, toTrimmedString = (value) => {
250027
250117
  if (typeof value !== "string")
@@ -250477,11 +250567,15 @@ var Node$13 = class Node$14 {
250477
250567
  }
250478
250568
  if (attrs.position != null && typeof attrs.position === "string") {
250479
250569
  const parsed = parseFloat(attrs.position);
250480
- if (Number.isFinite(parsed))
250481
- run2.baselineShift = parsed;
250570
+ if (Number.isFinite(parsed)) {
250571
+ const normalizedBaselineShift = normalizeBaselineShift(parsed);
250572
+ if (normalizedBaselineShift == null)
250573
+ delete run2.baselineShift;
250574
+ else
250575
+ run2.baselineShift = normalizedBaselineShift;
250576
+ }
250482
250577
  }
250483
- if (run2.baselineShift == null && (run2.vertAlign === "superscript" || run2.vertAlign === "subscript"))
250484
- run2.fontSize *= SUBSCRIPT_SUPERSCRIPT_SCALE2;
250578
+ run2.fontSize = scaleFontSizeForVerticalText(run2.fontSize, run2);
250485
250579
  }, DEFAULT_HYPERLINK_CONFIG$1, applyMarksToRun = (run2, marks, hyperlinkConfig = DEFAULT_HYPERLINK_CONFIG$1, themeColors, backgroundColor, enableComments = true) => {
250486
250580
  if (!enableComments && "comments" in run2 && run2.comments)
250487
250581
  delete run2.comments;
@@ -250602,46 +250696,67 @@ var Node$13 = class Node$14 {
250602
250696
  if (runAttrs[key$1] !== undefined)
250603
250697
  merged[key$1] = runAttrs[key$1];
250604
250698
  return merged;
250605
- }, resolveFootnoteDisplayNumber = (id2, footnoteNumberById) => {
250699
+ }, buildSyntheticTextNode = (displayText, marks) => ({
250700
+ type: "text",
250701
+ text: displayText,
250702
+ marks: [...marks ?? []]
250703
+ }), isTextStyleMark = (mark2) => mark2.type === "textStyle", stripVerticalPositioningFromMark = (mark2) => {
250704
+ if (!isTextStyleMark(mark2) || !mark2.attrs)
250705
+ return mark2;
250706
+ const sanitizedAttrs = { ...mark2.attrs };
250707
+ delete sanitizedAttrs.vertAlign;
250708
+ delete sanitizedAttrs.position;
250709
+ if (Object.keys(sanitizedAttrs).length === 0)
250710
+ return null;
250711
+ return {
250712
+ ...mark2,
250713
+ attrs: sanitizedAttrs
250714
+ };
250715
+ }, stripVerticalPositioningFromMarks = (marks) => (marks ?? []).flatMap((mark2) => {
250716
+ const sanitizedMark = stripVerticalPositioningFromMark(mark2);
250717
+ return sanitizedMark ? [sanitizedMark] : [];
250718
+ }), stripVerticalPositioningFromRunProperties = (runProperties) => {
250719
+ if (!runProperties)
250720
+ return;
250721
+ const sanitizedRunProperties = { ...runProperties };
250722
+ delete sanitizedRunProperties.vertAlign;
250723
+ delete sanitizedRunProperties.position;
250724
+ return sanitizedRunProperties;
250725
+ }, copyReferencePmPositions = (run2, params$1) => {
250726
+ const refPos = params$1.positions.get(params$1.node);
250727
+ if (!refPos)
250728
+ return run2;
250729
+ return {
250730
+ ...run2,
250731
+ pmStart: refPos.start,
250732
+ pmEnd: refPos.end
250733
+ };
250734
+ }, resolveReferenceBaseFontSize = (runWithoutVerticalPositioning, originalRun, fallbackFontSize) => {
250735
+ if (typeof runWithoutVerticalPositioning.fontSize === "number" && Number.isFinite(runWithoutVerticalPositioning.fontSize))
250736
+ return runWithoutVerticalPositioning.fontSize;
250737
+ if (typeof originalRun.fontSize === "number" && Number.isFinite(originalRun.fontSize))
250738
+ return originalRun.fontSize;
250739
+ return fallbackFontSize;
250740
+ }, buildOriginalReferenceRun = (displayText, params$1) => textNodeToRun({
250741
+ ...params$1,
250742
+ node: buildSyntheticTextNode(displayText, params$1.node.marks)
250743
+ }), buildReferenceRunWithoutVerticalPositioning = (displayText, params$1) => textNodeToRun({
250744
+ ...params$1,
250745
+ inheritedMarks: stripVerticalPositioningFromMarks(params$1.inheritedMarks),
250746
+ runProperties: stripVerticalPositioningFromRunProperties(params$1.runProperties),
250747
+ node: buildSyntheticTextNode(displayText, stripVerticalPositioningFromMarks(params$1.node.marks))
250748
+ }), resolveFootnoteDisplayNumber = (id2, footnoteNumberById) => {
250606
250749
  const key$1 = id2 == null ? null : String(id2);
250607
250750
  if (!key$1)
250608
250751
  return null;
250609
250752
  const mapped = footnoteNumberById?.[key$1];
250610
250753
  return typeof mapped === "number" && Number.isFinite(mapped) && mapped > 0 ? mapped : null;
250611
- }, toSuperscriptDigits$2 = (value) => {
250612
- const map$12 = {
250613
- "0": "⁰",
250614
- "1": "¹",
250615
- "2": "²",
250616
- "3": "³",
250617
- "4": "⁴",
250618
- "5": "⁵",
250619
- "6": "⁶",
250620
- "7": "⁷",
250621
- "8": "⁸",
250622
- "9": "⁹"
250623
- };
250624
- return String(value ?? "").split("").map((ch) => map$12[ch] ?? ch).join("");
250625
250754
  }, resolveEndnoteDisplayNumber = (id2, endnoteNumberById) => {
250626
250755
  const key$1 = id2 == null ? null : String(id2);
250627
250756
  if (!key$1)
250628
250757
  return null;
250629
250758
  const mapped = endnoteNumberById?.[key$1];
250630
250759
  return typeof mapped === "number" && Number.isFinite(mapped) && mapped > 0 ? mapped : null;
250631
- }, toSuperscriptDigits$1 = (value) => {
250632
- const map$12 = {
250633
- "0": "⁰",
250634
- "1": "¹",
250635
- "2": "²",
250636
- "3": "³",
250637
- "4": "⁴",
250638
- "5": "⁵",
250639
- "6": "⁶",
250640
- "7": "⁷",
250641
- "8": "⁸",
250642
- "9": "⁹"
250643
- };
250644
- return String(value ?? "").split("").map((ch) => map$12[ch] ?? ch).join("");
250645
250760
  }, sdtMetadataCache, getIndexChildren = (node3) => {
250646
250761
  if (Array.isArray(node3.content))
250647
250762
  return node3.content;
@@ -251598,7 +251713,7 @@ var Node$13 = class Node$14 {
251598
251713
  return;
251599
251714
  updateGhostListMarkerOffsets(node3, paragraphBlocks, context);
251600
251715
  applyGhostListMarkerOffsets(node3, paragraphBlocks, context);
251601
- }, INLINE_CONVERTERS_REGISTRY, SHAPE_CONVERTERS_REGISTRY, JUSTIFICATION_TO_ALIGN, DEFAULT_FONT = "Times New Roman", DEFAULT_SIZE2, nodeHandlers2, converters, SCROLL_DEBOUNCE_MS = 32, DEFAULT_STALE_TIMEOUT_MS, THROTTLE_MS = 16, RemoteCursorManager = class {
251716
+ }, INLINE_CONVERTERS_REGISTRY, SHAPE_CONVERTERS_REGISTRY, JUSTIFICATION_TO_ALIGN, DEFAULT_FONT = "Times New Roman", DEFAULT_SIZE2, nodeHandlers2, converters, FOOTNOTE_MARKER_DATA_ATTR = "data-sd-footnote-number", DEFAULT_MARKER_FONT_FAMILY = "Arial", DEFAULT_MARKER_FONT_SIZE = 12, SCROLL_DEBOUNCE_MS = 32, DEFAULT_STALE_TIMEOUT_MS, THROTTLE_MS = 16, RemoteCursorManager = class {
251602
251717
  #options;
251603
251718
  #remoteCursorState = /* @__PURE__ */ new Map;
251604
251719
  #remoteCursorElements = /* @__PURE__ */ new Map;
@@ -251821,7 +251936,7 @@ var Node$13 = class Node$14 {
251821
251936
  this.#onCursorsUpdate = null;
251822
251937
  this.#isSetup = false;
251823
251938
  }
251824
- }, log2 = (...args$1) => {}, CLASS, SEMANTIC_FOOTNOTES_HEADING_BLOCK_ID = "__sd_semantic_footnotes_heading", SEMANTIC_FOOTNOTE_BLOCK_ID_PREFIX = "__sd_semantic_footnote", MULTI_CLICK_TIME_THRESHOLD_MS = 400, MULTI_CLICK_DISTANCE_THRESHOLD_PX = 5, AUTO_SCROLL_EDGE_PX = 32, AUTO_SCROLL_MAX_SPEED_PX = 24, SCROLL_DETECTION_TOLERANCE_PX = 1, COMMENT_HIGHLIGHT_SELECTOR = ".superdoc-comment-highlight", clamp = (value, min$2, max$2) => Math.max(min$2, Math.min(max$2, value)), EditorInputManager = class {
251939
+ }, log2 = (...args$1) => {}, CLASS, SEMANTIC_FOOTNOTES_HEADING_BLOCK_ID = "__sd_semantic_footnotes_heading", SEMANTIC_FOOTNOTE_BLOCK_ID_PREFIX = "__sd_semantic_footnote", MULTI_CLICK_TIME_THRESHOLD_MS = 400, MULTI_CLICK_DISTANCE_THRESHOLD_PX = 5, AUTO_SCROLL_EDGE_PX = 32, AUTO_SCROLL_MAX_SPEED_PX = 24, SCROLL_DETECTION_TOLERANCE_PX = 1, COMMENT_HIGHLIGHT_SELECTOR = ".superdoc-comment-highlight", TRACK_CHANGE_SELECTOR = "[data-track-change-id]", COMMENT_THREAD_HIT_TOLERANCE_PX = 3, COMMENT_THREAD_HIT_SAMPLE_OFFSETS, clamp = (value, min$2, max$2) => Math.max(min$2, Math.min(max$2, value)), EditorInputManager = class {
251825
251940
  #deps = null;
251826
251941
  #callbacks = {};
251827
251942
  #isDragging = false;
@@ -252298,6 +252413,8 @@ var Node$13 = class Node$14 {
252298
252413
  return;
252299
252414
  }
252300
252415
  const editor = this.#deps.getEditor();
252416
+ if (this.#handleSingleCommentHighlightClick(event, target, editor))
252417
+ return;
252301
252418
  if (this.#handleRepeatClickOnActiveComment(event, target, editor))
252302
252419
  return;
252303
252420
  const layoutState = this.#deps.getLayoutState();
@@ -253185,16 +253302,29 @@ var Node$13 = class Node$14 {
253185
253302
  }
253186
253303
  #handleRepeatClickOnActiveComment(event, target, editor) {
253187
253304
  const activeThreadId = getActiveCommentThreadId(editor);
253188
- if (!shouldIgnoreRepeatClickOnActiveComment(target, activeThreadId))
253305
+ if (!shouldIgnoreRepeatClickOnActiveComment(target, event.clientX, event.clientY, activeThreadId))
253189
253306
  return false;
253190
253307
  event.preventDefault();
253191
- this.#focusEditor();
253192
253308
  editor.emit?.("commentsUpdate", {
253193
253309
  type: comments_module_events.SELECTED,
253194
253310
  activeCommentId: activeThreadId
253195
253311
  });
253196
253312
  return true;
253197
253313
  }
253314
+ #handleSingleCommentHighlightClick(event, target, editor) {
253315
+ const clickedThreadId = resolveCommentThreadIdNearPointer(target, event.clientX, event.clientY);
253316
+ if (!clickedThreadId)
253317
+ return false;
253318
+ if (clickedThreadId === getActiveCommentThreadId(editor))
253319
+ return false;
253320
+ event.preventDefault();
253321
+ if (!editor.commands?.setCursorById?.(clickedThreadId, { activeCommentId: clickedThreadId }))
253322
+ editor.emit?.("commentsUpdate", {
253323
+ type: comments_module_events.SELECTED,
253324
+ activeCommentId: clickedThreadId
253325
+ });
253326
+ return true;
253327
+ }
253198
253328
  }, createDefaultScheduler = () => {
253199
253329
  if (typeof window !== "undefined" && typeof window.requestAnimationFrame === "function")
253200
253330
  return {
@@ -255483,9 +255613,9 @@ var Node$13 = class Node$14 {
255483
255613
  return;
255484
255614
  console.log(...args$1);
255485
255615
  }, 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;
255486
- var init_src_CMCe558J_es = __esm(() => {
255616
+ var init_src_DTzsVQv__es = __esm(() => {
255487
255617
  init_rolldown_runtime_B2q5OVn9_es();
255488
- init_SuperConverter_DFcGhakb_es();
255618
+ init_SuperConverter_DjfudLkQ_es();
255489
255619
  init_jszip_ChlR43oI_es();
255490
255620
  init_uuid_qzgm05fK_es();
255491
255621
  init_constants_CIF8yzNk_es();
@@ -255517,6 +255647,20 @@ var init_src_CMCe558J_es = __esm(() => {
255517
255647
  "vmin",
255518
255648
  "vmax"
255519
255649
  ];
255650
+ SPACE_CHARS = new Set([" ", " "]);
255651
+ engines_exports = /* @__PURE__ */ __export3({
255652
+ OOXML_PCT_DIVISOR: () => OOXML_PCT_DIVISOR,
255653
+ calculateTabWidth: () => calculateTabWidth,
255654
+ computeListIndent: () => computeListIndent,
255655
+ computeTabStops: () => computeTabStops$1,
255656
+ computeWrapExclusion: () => computeWrapExclusion,
255657
+ formatListLabel: () => formatListLabel,
255658
+ layoutWithTabs: () => layoutWithTabs,
255659
+ measureRowHeights: () => measureRowHeights,
255660
+ resolveColumnWidths: () => resolveColumnWidths,
255661
+ resolveSpacingIndent: () => resolveSpacingIndent,
255662
+ scaleWrapPolygon: () => scaleWrapPolygon
255663
+ }, 1);
255520
255664
  floor4 = Math.floor;
255521
255665
  abs2 = Math.abs;
255522
255666
  BIT182 = 1 << 17;
@@ -256039,20 +256183,6 @@ ${err.toString()}`);
256039
256183
  }
256040
256184
  }
256041
256185
  };
256042
- SPACE_CHARS = new Set([" ", " "]);
256043
- engines_exports = /* @__PURE__ */ __export3({
256044
- OOXML_PCT_DIVISOR: () => OOXML_PCT_DIVISOR,
256045
- calculateTabWidth: () => calculateTabWidth,
256046
- computeListIndent: () => computeListIndent,
256047
- computeTabStops: () => computeTabStops$1,
256048
- computeWrapExclusion: () => computeWrapExclusion,
256049
- formatListLabel: () => formatListLabel,
256050
- layoutWithTabs: () => layoutWithTabs,
256051
- measureRowHeights: () => measureRowHeights,
256052
- resolveColumnWidths: () => resolveColumnWidths,
256053
- resolveSpacingIndent: () => resolveSpacingIndent,
256054
- scaleWrapPolygon: () => scaleWrapPolygon
256055
- }, 1);
256056
256186
  CustomSelectionPluginKey = new PluginKey("CustomSelection");
256057
256187
  SelectionHandlePluginKey = new PluginKey("selectionHandle");
256058
256188
  DEFAULT_SELECTION_STATE = Object.freeze({
@@ -256601,7 +256731,7 @@ ${err.toString()}`);
256601
256731
  }
256602
256732
  static valid($pos) {
256603
256733
  let parent = $pos.parent;
256604
- if (parent.inlineContent || !closedBefore($pos) || !closedAfter($pos))
256734
+ if (parent.isTextblock || !closedBefore($pos) || !closedAfter($pos))
256605
256735
  return false;
256606
256736
  let override = parent.type.spec.allowGapCursor;
256607
256737
  if (override != null)
@@ -256664,11 +256794,11 @@ ${err.toString()}`);
256664
256794
  addPmPlugins() {
256665
256795
  return [gapCursor()];
256666
256796
  },
256667
- extendNodeSchema(extension3) {
256668
- return { allowGapCursor: callOrGet(getExtensionConfigField(extension3, "allowGapCursor", {
256669
- name: extension3.name,
256670
- options: extension3.options,
256671
- storage: extension3.storage
256797
+ extendNodeSchema(extension2) {
256798
+ return { allowGapCursor: callOrGet(getExtensionConfigField(extension2, "allowGapCursor", {
256799
+ name: extension2.name,
256800
+ options: extension2.options,
256801
+ storage: extension2.storage
256672
256802
  })) ?? null };
256673
256803
  }
256674
256804
  });
@@ -260112,11 +260242,11 @@ ${err.toString()}`);
260112
260242
  })()
260113
260243
  ];
260114
260244
  },
260115
- extendNodeSchema(extension3) {
260116
- return { tableRole: callOrGet(getExtensionConfigField(extension3, "tableRole", {
260117
- name: extension3.name,
260118
- options: extension3.options,
260119
- storage: extension3.storage
260245
+ extendNodeSchema(extension2) {
260246
+ return { tableRole: callOrGet(getExtensionConfigField(extension2, "tableRole", {
260247
+ name: extension2.name,
260248
+ options: extension2.options,
260249
+ storage: extension2.storage
260120
260250
  })) };
260121
260251
  }
260122
260252
  });
@@ -266172,7 +266302,7 @@ ${err.toString()}`);
266172
266302
  vertAlign: {
266173
266303
  default: null,
266174
266304
  renderDOM: (attrs) => {
266175
- if (!attrs.vertAlign || attrs.position)
266305
+ if (!attrs.vertAlign || hasExplicitPosition(attrs.position))
266176
266306
  return {};
266177
266307
  if (attrs.vertAlign === "superscript")
266178
266308
  return { style: "vertical-align: super; font-size: 65%;" };
@@ -266196,7 +266326,7 @@ ${err.toString()}`);
266196
266326
  position: {
266197
266327
  default: null,
266198
266328
  renderDOM: (attrs) => {
266199
- if (!attrs.position)
266329
+ if (!hasExplicitPosition(attrs.position))
266200
266330
  return {};
266201
266331
  return { style: `vertical-align: ${attrs.position};` };
266202
266332
  },
@@ -279870,11 +280000,11 @@ function print() { __p += __j.call(arguments, '') }
279870
280000
  SelectionHandleExtension
279871
280001
  ];
279872
280002
  const externalExtensions = this.options.externalExtensions || [];
279873
- const allExtensions = [...coreExtensions, ...this.options.extensions].filter((extension3) => {
279874
- const extensionType = typeof extension3?.type === "string" ? extension3.type : undefined;
280003
+ const allExtensions = [...coreExtensions, ...this.options.extensions].filter((extension2) => {
280004
+ const extensionType = typeof extension2?.type === "string" ? extension2.type : undefined;
279875
280005
  return extensionType ? allowedExtensions.includes(extensionType) : false;
279876
- }).map((extension3) => cloneExtensionInstance(extension3));
279877
- const isolatedExternalExtensions = externalExtensions.map((extension3) => cloneExtensionInstance(extension3));
280006
+ }).map((extension2) => cloneExtensionInstance(extension2));
280007
+ const isolatedExternalExtensions = externalExtensions.map((extension2) => cloneExtensionInstance(extension2));
279878
280008
  this.extensionService = ExtensionService.create(allExtensions, isolatedExternalExtensions, this);
279879
280009
  }
279880
280010
  #createCommandService() {
@@ -285331,6 +285461,13 @@ function print() { __p += __j.call(arguments, '') }
285331
285461
  tableFragment: DOM_CLASS_NAMES.TABLE_FRAGMENT,
285332
285462
  inlineSdtWrapper: DOM_CLASS_NAMES.INLINE_SDT_WRAPPER
285333
285463
  };
285464
+ COMMENT_THREAD_HIT_SAMPLE_OFFSETS = [
285465
+ [0, 0],
285466
+ [-COMMENT_THREAD_HIT_TOLERANCE_PX, 0],
285467
+ [COMMENT_THREAD_HIT_TOLERANCE_PX, 0],
285468
+ [0, -COMMENT_THREAD_HIT_TOLERANCE_PX],
285469
+ [0, COMMENT_THREAD_HIT_TOLERANCE_PX]
285470
+ ];
285334
285471
  SelectionSyncCoordinator = class extends EventEmitter2 {
285335
285472
  #docEpoch = 0;
285336
285473
  #layoutEpoch = 0;
@@ -287195,38 +287332,69 @@ function print() { __p += __j.call(arguments, '') }
287195
287332
  } else
287196
287333
  return false;
287197
287334
  }
287335
+ getReachableThreadAnchorClientY(threadId, targetClientY) {
287336
+ return this.#buildThreadAnchorScrollPlan(threadId, targetClientY)?.achievedClientY ?? null;
287337
+ }
287198
287338
  scrollThreadAnchorToClientY(threadId, targetClientY, options = {}) {
287199
- if (!threadId || !Number.isFinite(targetClientY))
287339
+ const scrollPlan = this.#buildThreadAnchorScrollPlan(threadId, targetClientY);
287340
+ if (!scrollPlan)
287200
287341
  return false;
287342
+ const behavior = options.behavior ?? "auto";
287343
+ scrollPlan.applyScroll(behavior);
287344
+ return true;
287345
+ }
287346
+ #buildThreadAnchorScrollPlan(threadId, targetClientY) {
287347
+ if (!threadId || !Number.isFinite(targetClientY))
287348
+ return null;
287201
287349
  const threadPosition = this.#collectCommentPositions()[threadId];
287202
287350
  if (!threadPosition)
287203
- return false;
287351
+ return null;
287204
287352
  const currentTop = this.getSelectionBounds(threadPosition.start, threadPosition.end)?.bounds?.top;
287205
287353
  if (!Number.isFinite(currentTop))
287206
- return false;
287207
- const deltaY = currentTop - targetClientY;
287208
- if (Math.abs(deltaY) < 1)
287209
- return true;
287210
- const behavior = options.behavior ?? "auto";
287354
+ return null;
287355
+ const requestedScrollDelta = currentTop - targetClientY;
287211
287356
  const scrollTarget = this.#scrollContainer ?? this.#visibleHost;
287212
- if (scrollTarget instanceof Window) {
287213
- const currentScrollY = scrollTarget.scrollY ?? scrollTarget.pageYOffset ?? 0;
287214
- scrollTarget.scrollTo({
287215
- top: currentScrollY + deltaY,
287216
- behavior
287217
- });
287218
- return true;
287219
- }
287220
- if (scrollTarget instanceof HTMLElement) {
287221
- const maxScrollTop = Math.max(0, scrollTarget.scrollHeight - scrollTarget.clientHeight);
287222
- const nextScrollTop = Math.max(0, Math.min(maxScrollTop, scrollTarget.scrollTop + deltaY));
287223
- scrollTarget.scrollTo({
287224
- top: nextScrollTop,
287225
- behavior
287226
- });
287227
- return true;
287228
- }
287229
- return false;
287357
+ if (scrollTarget instanceof Window)
287358
+ return this.#buildWindowThreadAnchorScrollPlan(scrollTarget, currentTop, requestedScrollDelta);
287359
+ if (scrollTarget instanceof HTMLElement)
287360
+ return this.#buildElementThreadAnchorScrollPlan(scrollTarget, currentTop, requestedScrollDelta);
287361
+ return null;
287362
+ }
287363
+ #buildWindowThreadAnchorScrollPlan(scrollTarget, currentTop, requestedScrollDelta) {
287364
+ const scrollRoot = scrollTarget.document.scrollingElement ?? scrollTarget.document.documentElement ?? scrollTarget.document.body ?? null;
287365
+ const currentScrollTop = scrollTarget.scrollY ?? scrollTarget.pageYOffset ?? scrollRoot?.scrollTop ?? 0;
287366
+ const viewportHeight = scrollTarget.innerHeight ?? scrollRoot?.clientHeight ?? 0;
287367
+ const maxScrollTop = Math.max(0, (scrollRoot?.scrollHeight ?? 0) - viewportHeight);
287368
+ const nextScrollTop = Math.max(0, Math.min(maxScrollTop, currentScrollTop + requestedScrollDelta));
287369
+ const appliedScrollDelta = nextScrollTop - currentScrollTop;
287370
+ return {
287371
+ achievedClientY: currentTop - appliedScrollDelta,
287372
+ applyScroll: (behavior) => {
287373
+ if (Math.abs(appliedScrollDelta) < 1)
287374
+ return;
287375
+ scrollTarget.scrollTo({
287376
+ top: nextScrollTop,
287377
+ behavior
287378
+ });
287379
+ }
287380
+ };
287381
+ }
287382
+ #buildElementThreadAnchorScrollPlan(scrollTarget, currentTop, requestedScrollDelta) {
287383
+ const currentScrollTop = scrollTarget.scrollTop;
287384
+ const maxScrollTop = Math.max(0, scrollTarget.scrollHeight - scrollTarget.clientHeight);
287385
+ const nextScrollTop = Math.max(0, Math.min(maxScrollTop, currentScrollTop + requestedScrollDelta));
287386
+ const appliedScrollDelta = nextScrollTop - currentScrollTop;
287387
+ return {
287388
+ achievedClientY: currentTop - appliedScrollDelta,
287389
+ applyScroll: (behavior) => {
287390
+ if (Math.abs(appliedScrollDelta) < 1)
287391
+ return;
287392
+ scrollTarget.scrollTo({
287393
+ top: nextScrollTop,
287394
+ behavior
287395
+ });
287396
+ }
287397
+ };
287230
287398
  }
287231
287399
  #findElementAtPosition(pageEl, pos) {
287232
287400
  const elements = Array.from(pageEl.querySelectorAll("[data-pm-start][data-pm-end]"));
@@ -289965,8 +290133,8 @@ var init_zipper_YmNpPIyc_es = __esm(() => {
289965
290133
 
289966
290134
  // ../../packages/superdoc/dist/super-editor.es.js
289967
290135
  var init_super_editor_es = __esm(() => {
289968
- init_src_CMCe558J_es();
289969
- init_SuperConverter_DFcGhakb_es();
290136
+ init_src_DTzsVQv__es();
290137
+ init_SuperConverter_DjfudLkQ_es();
289970
290138
  init_jszip_ChlR43oI_es();
289971
290139
  init_xml_js_40FWvL78_es();
289972
290140
  init_constants_CIF8yzNk_es();
@@ -345775,12 +345943,11 @@ var require_braces = __commonJS((exports, module) => {
345775
345943
  module.exports = braces;
345776
345944
  });
345777
345945
 
345778
- // ../../node_modules/.pnpm/picomatch@2.3.2/node_modules/picomatch/lib/constants.js
345946
+ // ../../node_modules/.pnpm/picomatch@2.3.1/node_modules/picomatch/lib/constants.js
345779
345947
  var require_constants4 = __commonJS((exports, module) => {
345780
345948
  var path2 = __require("path");
345781
345949
  var WIN_SLASH = "\\\\/";
345782
345950
  var WIN_NO_SLASH = `[^${WIN_SLASH}]`;
345783
- var DEFAULT_MAX_EXTGLOB_RECURSION = 0;
345784
345951
  var DOT_LITERAL = "\\.";
345785
345952
  var PLUS_LITERAL = "\\+";
345786
345953
  var QMARK_LITERAL = "\\?";
@@ -345828,7 +345995,6 @@ var require_constants4 = __commonJS((exports, module) => {
345828
345995
  END_ANCHOR: `(?:[${WIN_SLASH}]|$)`
345829
345996
  };
345830
345997
  var POSIX_REGEX_SOURCE = {
345831
- __proto__: null,
345832
345998
  alnum: "a-zA-Z0-9",
345833
345999
  alpha: "a-zA-Z",
345834
346000
  ascii: "\\x00-\\x7F",
@@ -345845,7 +346011,6 @@ var require_constants4 = __commonJS((exports, module) => {
345845
346011
  xdigit: "A-Fa-f0-9"
345846
346012
  };
345847
346013
  module.exports = {
345848
- DEFAULT_MAX_EXTGLOB_RECURSION,
345849
346014
  MAX_LENGTH: 1024 * 64,
345850
346015
  POSIX_REGEX_SOURCE,
345851
346016
  REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g,
@@ -345855,7 +346020,6 @@ var require_constants4 = __commonJS((exports, module) => {
345855
346020
  REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g,
345856
346021
  REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g,
345857
346022
  REPLACEMENTS: {
345858
- __proto__: null,
345859
346023
  "***": "*",
345860
346024
  "**/**": "**",
345861
346025
  "**/**/**": "**"
@@ -345919,7 +346083,7 @@ var require_constants4 = __commonJS((exports, module) => {
345919
346083
  };
345920
346084
  });
345921
346085
 
345922
- // ../../node_modules/.pnpm/picomatch@2.3.2/node_modules/picomatch/lib/utils.js
346086
+ // ../../node_modules/.pnpm/picomatch@2.3.1/node_modules/picomatch/lib/utils.js
345923
346087
  var require_utils3 = __commonJS((exports) => {
345924
346088
  var path2 = __require("path");
345925
346089
  var win32 = process.platform === "win32";
@@ -345979,7 +346143,7 @@ var require_utils3 = __commonJS((exports) => {
345979
346143
  };
345980
346144
  });
345981
346145
 
345982
- // ../../node_modules/.pnpm/picomatch@2.3.2/node_modules/picomatch/lib/scan.js
346146
+ // ../../node_modules/.pnpm/picomatch@2.3.1/node_modules/picomatch/lib/scan.js
345983
346147
  var require_scan = __commonJS((exports, module) => {
345984
346148
  var utils = require_utils3();
345985
346149
  var {
@@ -346294,7 +346458,7 @@ var require_scan = __commonJS((exports, module) => {
346294
346458
  module.exports = scan;
346295
346459
  });
346296
346460
 
346297
- // ../../node_modules/.pnpm/picomatch@2.3.2/node_modules/picomatch/lib/parse.js
346461
+ // ../../node_modules/.pnpm/picomatch@2.3.1/node_modules/picomatch/lib/parse.js
346298
346462
  var require_parse2 = __commonJS((exports, module) => {
346299
346463
  var constants2 = require_constants4();
346300
346464
  var utils = require_utils3();
@@ -346321,213 +346485,6 @@ var require_parse2 = __commonJS((exports, module) => {
346321
346485
  var syntaxError = (type2, char) => {
346322
346486
  return `Missing ${type2}: "${char}" - use "\\\\${char}" to match literal characters`;
346323
346487
  };
346324
- var splitTopLevel = (input2) => {
346325
- const parts = [];
346326
- let bracket = 0;
346327
- let paren = 0;
346328
- let quote2 = 0;
346329
- let value2 = "";
346330
- let escaped = false;
346331
- for (const ch of input2) {
346332
- if (escaped === true) {
346333
- value2 += ch;
346334
- escaped = false;
346335
- continue;
346336
- }
346337
- if (ch === "\\") {
346338
- value2 += ch;
346339
- escaped = true;
346340
- continue;
346341
- }
346342
- if (ch === '"') {
346343
- quote2 = quote2 === 1 ? 0 : 1;
346344
- value2 += ch;
346345
- continue;
346346
- }
346347
- if (quote2 === 0) {
346348
- if (ch === "[") {
346349
- bracket++;
346350
- } else if (ch === "]" && bracket > 0) {
346351
- bracket--;
346352
- } else if (bracket === 0) {
346353
- if (ch === "(") {
346354
- paren++;
346355
- } else if (ch === ")" && paren > 0) {
346356
- paren--;
346357
- } else if (ch === "|" && paren === 0) {
346358
- parts.push(value2);
346359
- value2 = "";
346360
- continue;
346361
- }
346362
- }
346363
- }
346364
- value2 += ch;
346365
- }
346366
- parts.push(value2);
346367
- return parts;
346368
- };
346369
- var isPlainBranch = (branch) => {
346370
- let escaped = false;
346371
- for (const ch of branch) {
346372
- if (escaped === true) {
346373
- escaped = false;
346374
- continue;
346375
- }
346376
- if (ch === "\\") {
346377
- escaped = true;
346378
- continue;
346379
- }
346380
- if (/[?*+@!()[\]{}]/.test(ch)) {
346381
- return false;
346382
- }
346383
- }
346384
- return true;
346385
- };
346386
- var normalizeSimpleBranch = (branch) => {
346387
- let value2 = branch.trim();
346388
- let changed = true;
346389
- while (changed === true) {
346390
- changed = false;
346391
- if (/^@\([^\\()[\]{}|]+\)$/.test(value2)) {
346392
- value2 = value2.slice(2, -1);
346393
- changed = true;
346394
- }
346395
- }
346396
- if (!isPlainBranch(value2)) {
346397
- return;
346398
- }
346399
- return value2.replace(/\\(.)/g, "$1");
346400
- };
346401
- var hasRepeatedCharPrefixOverlap = (branches) => {
346402
- const values2 = branches.map(normalizeSimpleBranch).filter(Boolean);
346403
- for (let i4 = 0;i4 < values2.length; i4++) {
346404
- for (let j = i4 + 1;j < values2.length; j++) {
346405
- const a2 = values2[i4];
346406
- const b2 = values2[j];
346407
- const char = a2[0];
346408
- if (!char || a2 !== char.repeat(a2.length) || b2 !== char.repeat(b2.length)) {
346409
- continue;
346410
- }
346411
- if (a2 === b2 || a2.startsWith(b2) || b2.startsWith(a2)) {
346412
- return true;
346413
- }
346414
- }
346415
- }
346416
- return false;
346417
- };
346418
- var parseRepeatedExtglob = (pattern, requireEnd = true) => {
346419
- if (pattern[0] !== "+" && pattern[0] !== "*" || pattern[1] !== "(") {
346420
- return;
346421
- }
346422
- let bracket = 0;
346423
- let paren = 0;
346424
- let quote2 = 0;
346425
- let escaped = false;
346426
- for (let i4 = 1;i4 < pattern.length; i4++) {
346427
- const ch = pattern[i4];
346428
- if (escaped === true) {
346429
- escaped = false;
346430
- continue;
346431
- }
346432
- if (ch === "\\") {
346433
- escaped = true;
346434
- continue;
346435
- }
346436
- if (ch === '"') {
346437
- quote2 = quote2 === 1 ? 0 : 1;
346438
- continue;
346439
- }
346440
- if (quote2 === 1) {
346441
- continue;
346442
- }
346443
- if (ch === "[") {
346444
- bracket++;
346445
- continue;
346446
- }
346447
- if (ch === "]" && bracket > 0) {
346448
- bracket--;
346449
- continue;
346450
- }
346451
- if (bracket > 0) {
346452
- continue;
346453
- }
346454
- if (ch === "(") {
346455
- paren++;
346456
- continue;
346457
- }
346458
- if (ch === ")") {
346459
- paren--;
346460
- if (paren === 0) {
346461
- if (requireEnd === true && i4 !== pattern.length - 1) {
346462
- return;
346463
- }
346464
- return {
346465
- type: pattern[0],
346466
- body: pattern.slice(2, i4),
346467
- end: i4
346468
- };
346469
- }
346470
- }
346471
- }
346472
- };
346473
- var getStarExtglobSequenceOutput = (pattern) => {
346474
- let index2 = 0;
346475
- const chars = [];
346476
- while (index2 < pattern.length) {
346477
- const match2 = parseRepeatedExtglob(pattern.slice(index2), false);
346478
- if (!match2 || match2.type !== "*") {
346479
- return;
346480
- }
346481
- const branches = splitTopLevel(match2.body).map((branch2) => branch2.trim());
346482
- if (branches.length !== 1) {
346483
- return;
346484
- }
346485
- const branch = normalizeSimpleBranch(branches[0]);
346486
- if (!branch || branch.length !== 1) {
346487
- return;
346488
- }
346489
- chars.push(branch);
346490
- index2 += match2.end + 1;
346491
- }
346492
- if (chars.length < 1) {
346493
- return;
346494
- }
346495
- const source = chars.length === 1 ? utils.escapeRegex(chars[0]) : `[${chars.map((ch) => utils.escapeRegex(ch)).join("")}]`;
346496
- return `${source}*`;
346497
- };
346498
- var repeatedExtglobRecursion = (pattern) => {
346499
- let depth = 0;
346500
- let value2 = pattern.trim();
346501
- let match2 = parseRepeatedExtglob(value2);
346502
- while (match2) {
346503
- depth++;
346504
- value2 = match2.body.trim();
346505
- match2 = parseRepeatedExtglob(value2);
346506
- }
346507
- return depth;
346508
- };
346509
- var analyzeRepeatedExtglob = (body2, options2) => {
346510
- if (options2.maxExtglobRecursion === false) {
346511
- return { risky: false };
346512
- }
346513
- const max5 = typeof options2.maxExtglobRecursion === "number" ? options2.maxExtglobRecursion : constants2.DEFAULT_MAX_EXTGLOB_RECURSION;
346514
- const branches = splitTopLevel(body2).map((branch) => branch.trim());
346515
- if (branches.length > 1) {
346516
- if (branches.some((branch) => branch === "") || branches.some((branch) => /^[*?]+$/.test(branch)) || hasRepeatedCharPrefixOverlap(branches)) {
346517
- return { risky: true };
346518
- }
346519
- }
346520
- for (const branch of branches) {
346521
- const safeOutput = getStarExtglobSequenceOutput(branch);
346522
- if (safeOutput) {
346523
- return { risky: true, safeOutput };
346524
- }
346525
- if (repeatedExtglobRecursion(branch) > max5) {
346526
- return { risky: true };
346527
- }
346528
- }
346529
- return { risky: false };
346530
- };
346531
346488
  var parse4 = (input2, options2) => {
346532
346489
  if (typeof input2 !== "string") {
346533
346490
  throw new TypeError("Expected a string");
@@ -346660,8 +346617,6 @@ var require_parse2 = __commonJS((exports, module) => {
346660
346617
  token2.prev = prev;
346661
346618
  token2.parens = state2.parens;
346662
346619
  token2.output = state2.output;
346663
- token2.startIndex = state2.index;
346664
- token2.tokensIndex = tokens.length;
346665
346620
  const output = (opts.capture ? "(" : "") + token2.open;
346666
346621
  increment2("parens");
346667
346622
  push2({ type: type2, value: value3, output: state2.output ? "" : ONE_CHAR });
@@ -346669,26 +346624,6 @@ var require_parse2 = __commonJS((exports, module) => {
346669
346624
  extglobs.push(token2);
346670
346625
  };
346671
346626
  const extglobClose = (token2) => {
346672
- const literal = input2.slice(token2.startIndex, state2.index + 1);
346673
- const body2 = input2.slice(token2.startIndex + 2, state2.index);
346674
- const analysis = analyzeRepeatedExtglob(body2, opts);
346675
- if ((token2.type === "plus" || token2.type === "star") && analysis.risky) {
346676
- const safeOutput = analysis.safeOutput ? (token2.output ? "" : ONE_CHAR) + (opts.capture ? `(${analysis.safeOutput})` : analysis.safeOutput) : undefined;
346677
- const open2 = tokens[token2.tokensIndex];
346678
- open2.type = "text";
346679
- open2.value = literal;
346680
- open2.output = safeOutput || utils.escapeRegex(literal);
346681
- for (let i4 = token2.tokensIndex + 1;i4 < tokens.length; i4++) {
346682
- tokens[i4].value = "";
346683
- tokens[i4].output = "";
346684
- delete tokens[i4].suffix;
346685
- }
346686
- state2.output = token2.output + open2.output;
346687
- state2.backtrack = true;
346688
- push2({ type: "paren", extglob: true, value: value2, output: "" });
346689
- decrement("parens");
346690
- return;
346691
- }
346692
346627
  let output = token2.close + (opts.capture ? ")" : "");
346693
346628
  let rest;
346694
346629
  if (token2.type === "negate") {
@@ -347301,7 +347236,7 @@ var require_parse2 = __commonJS((exports, module) => {
347301
347236
  module.exports = parse4;
347302
347237
  });
347303
347238
 
347304
- // ../../node_modules/.pnpm/picomatch@2.3.2/node_modules/picomatch/lib/picomatch.js
347239
+ // ../../node_modules/.pnpm/picomatch@2.3.1/node_modules/picomatch/lib/picomatch.js
347305
347240
  var require_picomatch = __commonJS((exports, module) => {
347306
347241
  var path2 = __require("path");
347307
347242
  var scan = require_scan();