@halo-dev/richtext-editor 0.0.0-alpha.6 → 0.0.0-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9002,7 +9002,7 @@ var RichTextEditor = function(exports, vue) {
9002
9002
  dispatch(state.tr.insertText("\n").scrollIntoView());
9003
9003
  return true;
9004
9004
  };
9005
- function defaultBlockAt$2(match) {
9005
+ function defaultBlockAt$1(match) {
9006
9006
  for (let i2 = 0; i2 < match.edgeCount; i2++) {
9007
9007
  let { type } = match.edge(i2);
9008
9008
  if (type.isTextblock && !type.hasRequiredAttrs())
@@ -9014,7 +9014,7 @@ var RichTextEditor = function(exports, vue) {
9014
9014
  let { $head, $anchor } = state.selection;
9015
9015
  if (!$head.parent.type.spec.code || !$head.sameParent($anchor))
9016
9016
  return false;
9017
- let above = $head.node(-1), after = $head.indexAfter(-1), type = defaultBlockAt$2(above.contentMatchAt(after));
9017
+ let above = $head.node(-1), after = $head.indexAfter(-1), type = defaultBlockAt$1(above.contentMatchAt(after));
9018
9018
  if (!type || !above.canReplaceWith(after, after, type))
9019
9019
  return false;
9020
9020
  if (dispatch) {
@@ -9028,7 +9028,7 @@ var RichTextEditor = function(exports, vue) {
9028
9028
  let sel = state.selection, { $from, $to } = sel;
9029
9029
  if (sel instanceof AllSelection || $from.parent.inlineContent || $to.parent.inlineContent)
9030
9030
  return false;
9031
- let type = defaultBlockAt$2($to.parent.contentMatchAt($to.indexAfter()));
9031
+ let type = defaultBlockAt$1($to.parent.contentMatchAt($to.indexAfter()));
9032
9032
  if (!type || !type.isTextblock)
9033
9033
  return false;
9034
9034
  if (dispatch) {
@@ -9387,11 +9387,11 @@ var RichTextEditor = function(exports, vue) {
9387
9387
  }
9388
9388
  createCan(startTr) {
9389
9389
  const { rawCommands, state } = this;
9390
- const dispatch = void 0;
9390
+ const dispatch = false;
9391
9391
  const tr = startTr || state.tr;
9392
9392
  const props = this.buildProps(tr, dispatch);
9393
9393
  const formattedCommands = Object.fromEntries(Object.entries(rawCommands).map(([name, command2]) => {
9394
- return [name, (...args) => command2(...args)({ ...props, dispatch })];
9394
+ return [name, (...args) => command2(...args)({ ...props, dispatch: void 0 })];
9395
9395
  }));
9396
9396
  return {
9397
9397
  ...formattedCommands,
@@ -10048,7 +10048,7 @@ var RichTextEditor = function(exports, vue) {
10048
10048
  editor,
10049
10049
  state: chainableState,
10050
10050
  from: Math.max(from - 1, 0),
10051
- to: to.b,
10051
+ to: to.b - 1,
10052
10052
  rule
10053
10053
  });
10054
10054
  if (!handler || !tr.steps.length) {
@@ -10193,13 +10193,18 @@ var RichTextEditor = function(exports, vue) {
10193
10193
  };
10194
10194
  const plugins = [];
10195
10195
  const addKeyboardShortcuts = getExtensionField(extension, "addKeyboardShortcuts", context);
10196
+ let defaultBindings = {};
10197
+ if (extension.type === "mark" && extension.config.exitable) {
10198
+ defaultBindings.ArrowRight = () => Mark.handleExit({ editor, mark: extension });
10199
+ }
10196
10200
  if (addKeyboardShortcuts) {
10197
10201
  const bindings = Object.fromEntries(Object.entries(addKeyboardShortcuts()).map(([shortcut, method]) => {
10198
10202
  return [shortcut, () => method({ editor })];
10199
10203
  }));
10200
- const keyMapPlugin = keymap(bindings);
10201
- plugins.push(keyMapPlugin);
10204
+ defaultBindings = { ...defaultBindings, ...bindings };
10202
10205
  }
10206
+ const keyMapPlugin = keymap(defaultBindings);
10207
+ plugins.push(keyMapPlugin);
10203
10208
  const addInputRules = getExtensionField(extension, "addInputRules", context);
10204
10209
  if (isExtensionRulesEnabled(extension, editor.options.enableInputRules) && addInputRules) {
10205
10210
  inputRules.push(...addInputRules());
@@ -10574,18 +10579,8 @@ var RichTextEditor = function(exports, vue) {
10574
10579
  }
10575
10580
  return false;
10576
10581
  };
10577
- function isClass(value) {
10578
- var _a;
10579
- if (((_a = value.constructor) === null || _a === void 0 ? void 0 : _a.toString().substring(0, 5)) !== "class") {
10580
- return false;
10581
- }
10582
- return true;
10583
- }
10584
- function isObject(value) {
10585
- return value && typeof value === "object" && !Array.isArray(value) && !isClass(value);
10586
- }
10587
10582
  function isTextSelection(value) {
10588
- return isObject(value) && value instanceof TextSelection;
10583
+ return value instanceof TextSelection;
10589
10584
  }
10590
10585
  function minMax(value = 0, min2 = 0, max2 = 0) {
10591
10586
  return Math.min(Math.max(value, min2), max2);
@@ -11045,10 +11040,8 @@ var RichTextEditor = function(exports, vue) {
11045
11040
  const setNodeSelection = (position) => ({ tr, dispatch }) => {
11046
11041
  if (dispatch) {
11047
11042
  const { doc: doc2 } = tr;
11048
- const minPos = Selection.atStart(doc2).from;
11049
- const maxPos = Selection.atEnd(doc2).to;
11050
- const resolvedPos = minMax(position, minPos, maxPos);
11051
- const selection = NodeSelection.create(doc2, resolvedPos);
11043
+ const from = minMax(position, 0, doc2.content.size);
11044
+ const selection = NodeSelection.create(doc2, from);
11052
11045
  tr.setSelection(selection);
11053
11046
  }
11054
11047
  return true;
@@ -11070,6 +11063,15 @@ var RichTextEditor = function(exports, vue) {
11070
11063
  const type = getNodeType(typeOrName, state.schema);
11071
11064
  return sinkListItem$1(type)(state, dispatch);
11072
11065
  };
11066
+ function defaultBlockAt(match) {
11067
+ for (let i2 = 0; i2 < match.edgeCount; i2 += 1) {
11068
+ const { type } = match.edge(i2);
11069
+ if (type.isTextblock && !type.hasRequiredAttrs()) {
11070
+ return type;
11071
+ }
11072
+ }
11073
+ return null;
11074
+ }
11073
11075
  function getSplittedAttributes(extensionAttributes, typeName, attributes) {
11074
11076
  return Object.fromEntries(Object.entries(attributes).filter(([name]) => {
11075
11077
  const extensionAttribute = extensionAttributes.find((item) => {
@@ -11081,15 +11083,6 @@ var RichTextEditor = function(exports, vue) {
11081
11083
  return extensionAttribute.attribute.keepOnSplit;
11082
11084
  }));
11083
11085
  }
11084
- function defaultBlockAt$1(match) {
11085
- for (let i2 = 0; i2 < match.edgeCount; i2 += 1) {
11086
- const { type } = match.edge(i2);
11087
- if (type.isTextblock && !type.hasRequiredAttrs()) {
11088
- return type;
11089
- }
11090
- }
11091
- return null;
11092
- }
11093
11086
  function ensureMarks(state, splittableMarks) {
11094
11087
  const marks = state.storedMarks || state.selection.$to.parentOffset && state.selection.$from.marks();
11095
11088
  if (marks) {
@@ -11122,7 +11115,7 @@ var RichTextEditor = function(exports, vue) {
11122
11115
  if (selection instanceof TextSelection) {
11123
11116
  tr.deleteSelection();
11124
11117
  }
11125
- const deflt2 = $from.depth === 0 ? void 0 : defaultBlockAt$1($from.node(-1).contentMatchAt($from.indexAfter(-1)));
11118
+ const deflt2 = $from.depth === 0 ? void 0 : defaultBlockAt($from.node(-1).contentMatchAt($from.indexAfter(-1)));
11126
11119
  let types = atEnd && deflt2 ? [{
11127
11120
  type: deflt2,
11128
11121
  attrs: newAttributes
@@ -11941,6 +11934,7 @@ img.ProseMirror-separator {
11941
11934
  }
11942
11935
  setEditable(editable) {
11943
11936
  this.setOptions({ editable });
11937
+ this.emit("update", { editor: this, transaction: this.state.tr });
11944
11938
  }
11945
11939
  get isEditable() {
11946
11940
  return this.options.editable && this.view && this.view.editable;
@@ -12111,15 +12105,6 @@ img.ProseMirror-separator {
12111
12105
  });
12112
12106
  return transform;
12113
12107
  }
12114
- function defaultBlockAt(match) {
12115
- for (let i2 = 0; i2 < match.edgeCount; i2 += 1) {
12116
- const { type } = match.edge(i2);
12117
- if (type.isTextblock && !type.hasRequiredAttrs()) {
12118
- return type;
12119
- }
12120
- }
12121
- return null;
12122
- }
12123
12108
  function findChildren(node, predicate) {
12124
12109
  const nodesWithPos = [];
12125
12110
  node.descendants((child, pos) => {
@@ -12285,7 +12270,7 @@ img.ProseMirror-separator {
12285
12270
  return marks;
12286
12271
  }
12287
12272
  function isNodeSelection(value) {
12288
- return isObject(value) && value instanceof NodeSelection;
12273
+ return value instanceof NodeSelection;
12289
12274
  }
12290
12275
  function posToDOMRect(view, from, to) {
12291
12276
  const minPos = 0;
@@ -12490,6 +12475,26 @@ img.ProseMirror-separator {
12490
12475
  }));
12491
12476
  return extension;
12492
12477
  }
12478
+ static handleExit({ editor, mark }) {
12479
+ const { tr } = editor.state;
12480
+ const currentPos = editor.state.selection.$from;
12481
+ const isAtEnd = currentPos.pos === currentPos.end();
12482
+ if (isAtEnd) {
12483
+ const currentMarks = currentPos.marks();
12484
+ const isInMark = !!currentMarks.find((m) => (m === null || m === void 0 ? void 0 : m.type.name) === mark.name);
12485
+ if (!isInMark) {
12486
+ return false;
12487
+ }
12488
+ const removeMark2 = currentMarks.find((m) => (m === null || m === void 0 ? void 0 : m.type.name) === mark.name);
12489
+ if (removeMark2) {
12490
+ tr.removeStoredMark(removeMark2);
12491
+ }
12492
+ tr.insertText(" ", currentPos.pos);
12493
+ editor.view.dispatch(tr);
12494
+ return true;
12495
+ }
12496
+ return false;
12497
+ }
12493
12498
  }
12494
12499
  class Node {
12495
12500
  constructor(config2 = {}) {
@@ -12744,7 +12749,7 @@ img.ProseMirror-separator {
12744
12749
  return null;
12745
12750
  }
12746
12751
  if (match.input) {
12747
- chain().deleteRange(range).insertContent({
12752
+ chain().deleteRange(range).insertContentAt(range.from, {
12748
12753
  type: config2.type.name,
12749
12754
  attrs: attributes
12750
12755
  });
@@ -14670,7 +14675,7 @@ img.ProseMirror-separator {
14670
14675
  })
14671
14676
  };
14672
14677
  }
14673
- function render$p(instance) {
14678
+ function render$o(instance) {
14674
14679
  var popper2 = div();
14675
14680
  var box = div();
14676
14681
  box.className = BOX_CLASS;
@@ -14725,7 +14730,7 @@ img.ProseMirror-separator {
14725
14730
  onUpdate
14726
14731
  };
14727
14732
  }
14728
- render$p.$$tippy = true;
14733
+ render$o.$$tippy = true;
14729
14734
  var idCounter = 1;
14730
14735
  var mouseMoveListeners = [];
14731
14736
  var mountedInstances = [];
@@ -15498,7 +15503,7 @@ img.ProseMirror-separator {
15498
15503
  }
15499
15504
  });
15500
15505
  tippy.setDefaultProps({
15501
- render: render$p
15506
+ render: render$o
15502
15507
  });
15503
15508
  class BubbleMenuView {
15504
15509
  constructor({ editor, element, view, tippyOptions = {}, shouldShow }) {
@@ -15507,7 +15512,9 @@ img.ProseMirror-separator {
15507
15512
  const { doc: doc2, selection } = state;
15508
15513
  const { empty: empty2 } = selection;
15509
15514
  const isEmptyTextBlock = !doc2.textBetween(from, to).length && isTextSelection(state.selection);
15510
- if (!view2.hasFocus() || empty2 || isEmptyTextBlock) {
15515
+ const isChildOfMenu = this.element.contains(document.activeElement);
15516
+ const hasEditorFocus = view2.hasFocus() || isChildOfMenu;
15517
+ if (!hasEditorFocus || empty2 || isEmptyTextBlock || !this.editor.isEditable) {
15511
15518
  return false;
15512
15519
  }
15513
15520
  return true;
@@ -15661,7 +15668,7 @@ img.ProseMirror-separator {
15661
15668
  const { $anchor, empty: empty2 } = selection;
15662
15669
  const isRootDepth = $anchor.depth === 1;
15663
15670
  const isEmptyTextBlock = $anchor.parent.isTextblock && !$anchor.parent.type.spec.code && !$anchor.parent.textContent;
15664
- if (!view2.hasFocus() || !empty2 || !isRootDepth || !isEmptyTextBlock) {
15671
+ if (!view2.hasFocus() || !empty2 || !isRootDepth || !isEmptyTextBlock || !this.editor.isEditable) {
15665
15672
  return false;
15666
15673
  }
15667
15674
  return true;
@@ -16018,7 +16025,7 @@ img.ProseMirror-separator {
16018
16025
  render() {
16019
16026
  var _a, _b;
16020
16027
  return vue.h(this.as, {
16021
- class: this.decorationClasses.value,
16028
+ class: this.decorationClasses,
16022
16029
  style: {
16023
16030
  whiteSpace: "normal"
16024
16031
  },
@@ -17624,6 +17631,10 @@ img.ProseMirror-separator {
17624
17631
  shiftCrossAxis: {
17625
17632
  type: Boolean,
17626
17633
  default: defaultPropFactory("shiftCrossAxis")
17634
+ },
17635
+ noAutoFocus: {
17636
+ type: Boolean,
17637
+ default: defaultPropFactory("noAutoFocus")
17627
17638
  }
17628
17639
  },
17629
17640
  emits: [
@@ -18055,7 +18066,8 @@ img.ProseMirror-separator {
18055
18066
  await nextFrame();
18056
18067
  this.classes.showFrom = false;
18057
18068
  this.classes.showTo = true;
18058
- this.$_popperNode.focus();
18069
+ if (!this.noAutoFocus)
18070
+ this.$_popperNode.focus();
18059
18071
  },
18060
18072
  async $_applyHide(skipTransition = false) {
18061
18073
  if (this.shownChildren.size > 0) {
@@ -18492,10 +18504,10 @@ img.ProseMirror-separator {
18492
18504
  tabindex: "-1"
18493
18505
  };
18494
18506
  vue.popScopeId();
18495
- const render$o = /* @__PURE__ */ _withId((_ctx, _cache, $props, $setup, $data, $options) => {
18507
+ const render$n = /* @__PURE__ */ _withId((_ctx, _cache, $props, $setup, $data, $options) => {
18496
18508
  return vue.openBlock(), vue.createBlock("div", _hoisted_1$2$1);
18497
18509
  });
18498
- script.render = render$o;
18510
+ script.render = render$n;
18499
18511
  script.__scopeId = "data-v-b329ee4c";
18500
18512
  script.__file = "src/components/ResizeObserver.vue";
18501
18513
  var PrivateThemeClass = (prop = "theme") => ({
@@ -18542,11 +18554,11 @@ img.ProseMirror-separator {
18542
18554
  ref: "inner",
18543
18555
  class: "v-popper__inner"
18544
18556
  };
18545
- const _hoisted_3$s = /* @__PURE__ */ vue.createElementVNode("div", { class: "v-popper__arrow-outer" }, null, -1);
18546
- const _hoisted_4$1 = /* @__PURE__ */ vue.createElementVNode("div", { class: "v-popper__arrow-inner" }, null, -1);
18547
- const _hoisted_5$1 = [
18548
- _hoisted_3$s,
18549
- _hoisted_4$1
18557
+ const _hoisted_3$r = /* @__PURE__ */ vue.createElementVNode("div", { class: "v-popper__arrow-outer" }, null, -1);
18558
+ const _hoisted_4$2 = /* @__PURE__ */ vue.createElementVNode("div", { class: "v-popper__arrow-inner" }, null, -1);
18559
+ const _hoisted_5$2 = [
18560
+ _hoisted_3$r,
18561
+ _hoisted_4$2
18550
18562
  ];
18551
18563
  function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
18552
18564
  const _component_ResizeObserver = vue.resolveComponent("ResizeObserver");
@@ -18605,7 +18617,7 @@ img.ProseMirror-separator {
18605
18617
  left: _ctx.toPx(_ctx.result.arrow.x),
18606
18618
  top: _ctx.toPx(_ctx.result.arrow.y)
18607
18619
  } : void 0)
18608
- }, _hoisted_5$1, 4)
18620
+ }, _hoisted_5$2, 4)
18609
18621
  ], 4)
18610
18622
  ], 46, _hoisted_1$1$1);
18611
18623
  }
@@ -18815,32 +18827,14 @@ img.ProseMirror-separator {
18815
18827
  }
18816
18828
  });
18817
18829
  const Menu = _sfc_main$2$1;
18818
- const _hoisted_1$s = {
18819
- preserveAspectRatio: "xMidYMid meet",
18820
- viewBox: "0 0 24 24",
18821
- width: "1.2em",
18822
- height: "1.2em"
18823
- };
18824
- const _hoisted_2$s = /* @__PURE__ */ vue.createElementVNode("path", {
18825
- fill: "currentColor",
18826
- d: "M13.5 15.5H10v-3h3.5A1.5 1.5 0 0 1 15 14a1.5 1.5 0 0 1-1.5 1.5m-3.5-9h3A1.5 1.5 0 0 1 14.5 8A1.5 1.5 0 0 1 13 9.5h-3m5.6 1.29c.97-.68 1.65-1.79 1.65-2.79c0-2.26-1.75-4-4-4H7v14h7.04c2.1 0 3.71-1.7 3.71-3.79c0-1.52-.86-2.82-2.15-3.42Z"
18827
- }, null, -1);
18828
- const _hoisted_3$r = [
18829
- _hoisted_2$s
18830
- ];
18831
- function render$n(_ctx, _cache) {
18832
- return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$s, _hoisted_3$r);
18833
- }
18834
- const MdiFormatBold = { name: "mdi-format-bold", render: render$n };
18835
18830
  const _hoisted_1$r = {
18836
- preserveAspectRatio: "xMidYMid meet",
18837
18831
  viewBox: "0 0 24 24",
18838
18832
  width: "1.2em",
18839
18833
  height: "1.2em"
18840
18834
  };
18841
18835
  const _hoisted_2$r = /* @__PURE__ */ vue.createElementVNode("path", {
18842
18836
  fill: "currentColor",
18843
- d: "M10 4v3h2.21l-3.42 8H6v3h8v-3h-2.21l3.42-8H18V4h-8Z"
18837
+ d: "M13.5 15.5H10v-3h3.5A1.5 1.5 0 0 1 15 14a1.5 1.5 0 0 1-1.5 1.5m-3.5-9h3A1.5 1.5 0 0 1 14.5 8A1.5 1.5 0 0 1 13 9.5h-3m5.6 1.29c.97-.68 1.65-1.79 1.65-2.79c0-2.26-1.75-4-4-4H7v14h7.04c2.1 0 3.71-1.7 3.71-3.79c0-1.52-.86-2.82-2.15-3.42Z"
18844
18838
  }, null, -1);
18845
18839
  const _hoisted_3$q = [
18846
18840
  _hoisted_2$r
@@ -18848,16 +18842,15 @@ img.ProseMirror-separator {
18848
18842
  function render$m(_ctx, _cache) {
18849
18843
  return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$r, _hoisted_3$q);
18850
18844
  }
18851
- const MdiFormatItalic = { name: "mdi-format-italic", render: render$m };
18845
+ const MdiFormatBold = { name: "mdi-format-bold", render: render$m };
18852
18846
  const _hoisted_1$q = {
18853
- preserveAspectRatio: "xMidYMid meet",
18854
18847
  viewBox: "0 0 24 24",
18855
18848
  width: "1.2em",
18856
18849
  height: "1.2em"
18857
18850
  };
18858
18851
  const _hoisted_2$q = /* @__PURE__ */ vue.createElementVNode("path", {
18859
18852
  fill: "currentColor",
18860
- d: "M3 14h18v-2H3m2-8v3h5v3h4V7h5V4m-9 15h4v-3h-4v3Z"
18853
+ d: "M10 4v3h2.21l-3.42 8H6v3h8v-3h-2.21l3.42-8H18V4h-8Z"
18861
18854
  }, null, -1);
18862
18855
  const _hoisted_3$p = [
18863
18856
  _hoisted_2$q
@@ -18865,16 +18858,15 @@ img.ProseMirror-separator {
18865
18858
  function render$l(_ctx, _cache) {
18866
18859
  return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$q, _hoisted_3$p);
18867
18860
  }
18868
- const MdiFormatStrikethrough = { name: "mdi-format-strikethrough", render: render$l };
18861
+ const MdiFormatItalic = { name: "mdi-format-italic", render: render$l };
18869
18862
  const _hoisted_1$p = {
18870
- preserveAspectRatio: "xMidYMid meet",
18871
18863
  viewBox: "0 0 24 24",
18872
18864
  width: "1.2em",
18873
18865
  height: "1.2em"
18874
18866
  };
18875
18867
  const _hoisted_2$p = /* @__PURE__ */ vue.createElementVNode("path", {
18876
18868
  fill: "currentColor",
18877
- d: "M3 4h2v6h4V4h2v14H9v-6H5v6H3V4m10 4h2.31l.32-3h2l-.32 3h2l.32-3h2l-.32 3H23v2h-1.9l-.2 2H23v2h-2.31l-.32 3h-2l.32-3h-2l-.32 3h-2l.32-3H13v-2h1.9l.2-2H13V8m4.1 2l-.2 2h2l.2-2h-2Z"
18869
+ d: "M3 14h18v-2H3m2-8v3h5v3h4V7h5V4m-9 15h4v-3h-4v3Z"
18878
18870
  }, null, -1);
18879
18871
  const _hoisted_3$o = [
18880
18872
  _hoisted_2$p
@@ -18882,16 +18874,15 @@ img.ProseMirror-separator {
18882
18874
  function render$k(_ctx, _cache) {
18883
18875
  return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$p, _hoisted_3$o);
18884
18876
  }
18885
- const MdiFormatHeaderPound = { name: "mdi-format-header-pound", render: render$k };
18877
+ const MdiFormatStrikethrough = { name: "mdi-format-strikethrough", render: render$k };
18886
18878
  const _hoisted_1$o = {
18887
- preserveAspectRatio: "xMidYMid meet",
18888
18879
  viewBox: "0 0 24 24",
18889
18880
  width: "1.2em",
18890
18881
  height: "1.2em"
18891
18882
  };
18892
18883
  const _hoisted_2$o = /* @__PURE__ */ vue.createElementVNode("path", {
18893
18884
  fill: "currentColor",
18894
- d: "M3 4h2v6h4V4h2v14H9v-6H5v6H3V4m11 14v-2h2V6.31l-2.5 1.44V5.44L16 4h2v12h2v2h-6Z"
18885
+ d: "M3 4h2v6h4V4h2v14H9v-6H5v6H3V4m10 4h2.31l.32-3h2l-.32 3h2l.32-3h2l-.32 3H23v2h-1.9l-.2 2H23v2h-2.31l-.32 3h-2l.32-3h-2l-.32 3h-2l.32-3H13v-2h1.9l.2-2H13V8m4.1 2l-.2 2h2l.2-2h-2Z"
18895
18886
  }, null, -1);
18896
18887
  const _hoisted_3$n = [
18897
18888
  _hoisted_2$o
@@ -18899,16 +18890,15 @@ img.ProseMirror-separator {
18899
18890
  function render$j(_ctx, _cache) {
18900
18891
  return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$o, _hoisted_3$n);
18901
18892
  }
18902
- const MdiFormatHeader1 = { name: "mdi-format-header-1", render: render$j };
18893
+ const MdiFormatHeaderPound = { name: "mdi-format-header-pound", render: render$j };
18903
18894
  const _hoisted_1$n = {
18904
- preserveAspectRatio: "xMidYMid meet",
18905
18895
  viewBox: "0 0 24 24",
18906
18896
  width: "1.2em",
18907
18897
  height: "1.2em"
18908
18898
  };
18909
18899
  const _hoisted_2$n = /* @__PURE__ */ vue.createElementVNode("path", {
18910
18900
  fill: "currentColor",
18911
- d: "M3 4h2v6h4V4h2v14H9v-6H5v6H3V4m18 14h-6a2 2 0 0 1-2-2c0-.53.2-1 .54-1.36l4.87-5.23c.37-.36.59-.86.59-1.41a2 2 0 0 0-2-2a2 2 0 0 0-2 2h-2a4 4 0 0 1 4-4a4 4 0 0 1 4 4c0 1.1-.45 2.1-1.17 2.83L15 16h6v2Z"
18901
+ d: "M3 4h2v6h4V4h2v14H9v-6H5v6H3V4m11 14v-2h2V6.31l-2.5 1.44V5.44L16 4h2v12h2v2h-6Z"
18912
18902
  }, null, -1);
18913
18903
  const _hoisted_3$m = [
18914
18904
  _hoisted_2$n
@@ -18916,16 +18906,15 @@ img.ProseMirror-separator {
18916
18906
  function render$i(_ctx, _cache) {
18917
18907
  return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$n, _hoisted_3$m);
18918
18908
  }
18919
- const MdiFormatHeader2 = { name: "mdi-format-header-2", render: render$i };
18909
+ const MdiFormatHeader1 = { name: "mdi-format-header-1", render: render$i };
18920
18910
  const _hoisted_1$m = {
18921
- preserveAspectRatio: "xMidYMid meet",
18922
18911
  viewBox: "0 0 24 24",
18923
18912
  width: "1.2em",
18924
18913
  height: "1.2em"
18925
18914
  };
18926
18915
  const _hoisted_2$m = /* @__PURE__ */ vue.createElementVNode("path", {
18927
18916
  fill: "currentColor",
18928
- d: "M3 4h2v6h4V4h2v14H9v-6H5v6H3V4m12 0h4a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-1h2v1h4v-4h-4v-2h4V6h-4v1h-2V6a2 2 0 0 1 2-2Z"
18917
+ d: "M3 4h2v6h4V4h2v14H9v-6H5v6H3V4m18 14h-6a2 2 0 0 1-2-2c0-.53.2-1 .54-1.36l4.87-5.23c.37-.36.59-.86.59-1.41a2 2 0 0 0-2-2a2 2 0 0 0-2 2h-2a4 4 0 0 1 4-4a4 4 0 0 1 4 4c0 1.1-.45 2.1-1.17 2.83L15 16h6v2Z"
18929
18918
  }, null, -1);
18930
18919
  const _hoisted_3$l = [
18931
18920
  _hoisted_2$m
@@ -18933,16 +18922,15 @@ img.ProseMirror-separator {
18933
18922
  function render$h(_ctx, _cache) {
18934
18923
  return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$m, _hoisted_3$l);
18935
18924
  }
18936
- const MdiFormatHeader3 = { name: "mdi-format-header-3", render: render$h };
18925
+ const MdiFormatHeader2 = { name: "mdi-format-header-2", render: render$h };
18937
18926
  const _hoisted_1$l = {
18938
- preserveAspectRatio: "xMidYMid meet",
18939
18927
  viewBox: "0 0 24 24",
18940
18928
  width: "1.2em",
18941
18929
  height: "1.2em"
18942
18930
  };
18943
18931
  const _hoisted_2$l = /* @__PURE__ */ vue.createElementVNode("path", {
18944
18932
  fill: "currentColor",
18945
- d: "M3 4h2v6h4V4h2v14H9v-6H5v6H3V4m15 14v-5h-5v-2l5-7h2v7h1v2h-1v5h-2m0-7V7.42L15.45 11H18Z"
18933
+ d: "M3 4h2v6h4V4h2v14H9v-6H5v6H3V4m12 0h4a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-1h2v1h4v-4h-4v-2h4V6h-4v1h-2V6a2 2 0 0 1 2-2Z"
18946
18934
  }, null, -1);
18947
18935
  const _hoisted_3$k = [
18948
18936
  _hoisted_2$l
@@ -18950,16 +18938,15 @@ img.ProseMirror-separator {
18950
18938
  function render$g(_ctx, _cache) {
18951
18939
  return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$l, _hoisted_3$k);
18952
18940
  }
18953
- const MdiFormatHeader4 = { name: "mdi-format-header-4", render: render$g };
18941
+ const MdiFormatHeader3 = { name: "mdi-format-header-3", render: render$g };
18954
18942
  const _hoisted_1$k = {
18955
- preserveAspectRatio: "xMidYMid meet",
18956
18943
  viewBox: "0 0 24 24",
18957
18944
  width: "1.2em",
18958
18945
  height: "1.2em"
18959
18946
  };
18960
18947
  const _hoisted_2$k = /* @__PURE__ */ vue.createElementVNode("path", {
18961
18948
  fill: "currentColor",
18962
- d: "M3 4h2v6h4V4h2v14H9v-6H5v6H3V4m12 0h5v2h-5v4h2a4 4 0 0 1 4 4a4 4 0 0 1-4 4h-2a2 2 0 0 1-2-2v-1h2v1h2a2 2 0 0 0 2-2a2 2 0 0 0-2-2h-2a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2Z"
18949
+ d: "M3 4h2v6h4V4h2v14H9v-6H5v6H3V4m15 14v-5h-5v-2l5-7h2v7h1v2h-1v5h-2m0-7V7.42L15.45 11H18Z"
18963
18950
  }, null, -1);
18964
18951
  const _hoisted_3$j = [
18965
18952
  _hoisted_2$k
@@ -18967,16 +18954,15 @@ img.ProseMirror-separator {
18967
18954
  function render$f(_ctx, _cache) {
18968
18955
  return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$k, _hoisted_3$j);
18969
18956
  }
18970
- const MdiFormatHeader5 = { name: "mdi-format-header-5", render: render$f };
18957
+ const MdiFormatHeader4 = { name: "mdi-format-header-4", render: render$f };
18971
18958
  const _hoisted_1$j = {
18972
- preserveAspectRatio: "xMidYMid meet",
18973
18959
  viewBox: "0 0 24 24",
18974
18960
  width: "1.2em",
18975
18961
  height: "1.2em"
18976
18962
  };
18977
18963
  const _hoisted_2$j = /* @__PURE__ */ vue.createElementVNode("path", {
18978
18964
  fill: "currentColor",
18979
- d: "M3 4h2v6h4V4h2v14H9v-6H5v6H3V4m12 0h4a2 2 0 0 1 2 2v1h-2V6h-4v4h4a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2m0 8v4h4v-4h-4Z"
18965
+ d: "M3 4h2v6h4V4h2v14H9v-6H5v6H3V4m12 0h5v2h-5v4h2a4 4 0 0 1 4 4a4 4 0 0 1-4 4h-2a2 2 0 0 1-2-2v-1h2v1h2a2 2 0 0 0 2-2a2 2 0 0 0-2-2h-2a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2Z"
18980
18966
  }, null, -1);
18981
18967
  const _hoisted_3$i = [
18982
18968
  _hoisted_2$j
@@ -18984,16 +18970,15 @@ img.ProseMirror-separator {
18984
18970
  function render$e(_ctx, _cache) {
18985
18971
  return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$j, _hoisted_3$i);
18986
18972
  }
18987
- const MdiFormatHeader6 = { name: "mdi-format-header-6", render: render$e };
18973
+ const MdiFormatHeader5 = { name: "mdi-format-header-5", render: render$e };
18988
18974
  const _hoisted_1$i = {
18989
- preserveAspectRatio: "xMidYMid meet",
18990
18975
  viewBox: "0 0 24 24",
18991
18976
  width: "1.2em",
18992
18977
  height: "1.2em"
18993
18978
  };
18994
18979
  const _hoisted_2$i = /* @__PURE__ */ vue.createElementVNode("path", {
18995
18980
  fill: "currentColor",
18996
- d: "M13.5 7a6.5 6.5 0 0 1 6.5 6.5a6.5 6.5 0 0 1-6.5 6.5H10v-2h3.5c2.5 0 4.5-2 4.5-4.5S16 9 13.5 9H7.83l3.08 3.09L9.5 13.5L4 8l5.5-5.5l1.42 1.41L7.83 7h5.67M6 18h2v2H6v-2Z"
18981
+ d: "M3 4h2v6h4V4h2v14H9v-6H5v6H3V4m12 0h4a2 2 0 0 1 2 2v1h-2V6h-4v4h4a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2m0 8v4h4v-4h-4Z"
18997
18982
  }, null, -1);
18998
18983
  const _hoisted_3$h = [
18999
18984
  _hoisted_2$i
@@ -19001,16 +18986,15 @@ img.ProseMirror-separator {
19001
18986
  function render$d(_ctx, _cache) {
19002
18987
  return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$i, _hoisted_3$h);
19003
18988
  }
19004
- const MdiUndoVariant = { name: "mdi-undo-variant", render: render$d };
18989
+ const MdiFormatHeader6 = { name: "mdi-format-header-6", render: render$d };
19005
18990
  const _hoisted_1$h = {
19006
- preserveAspectRatio: "xMidYMid meet",
19007
18991
  viewBox: "0 0 24 24",
19008
18992
  width: "1.2em",
19009
18993
  height: "1.2em"
19010
18994
  };
19011
18995
  const _hoisted_2$h = /* @__PURE__ */ vue.createElementVNode("path", {
19012
18996
  fill: "currentColor",
19013
- d: "M10.5 7A6.5 6.5 0 0 0 4 13.5a6.5 6.5 0 0 0 6.5 6.5H14v-2h-3.5C8 18 6 16 6 13.5S8 9 10.5 9h5.67l-3.08 3.09l1.41 1.41L20 8l-5.5-5.5l-1.42 1.41L16.17 7H10.5M18 18h-2v2h2v-2Z"
18997
+ d: "M13.5 7a6.5 6.5 0 0 1 6.5 6.5a6.5 6.5 0 0 1-6.5 6.5H10v-2h3.5c2.5 0 4.5-2 4.5-4.5S16 9 13.5 9H7.83l3.08 3.09L9.5 13.5L4 8l5.5-5.5l1.42 1.41L7.83 7h5.67M6 18h2v2H6v-2Z"
19014
18998
  }, null, -1);
19015
18999
  const _hoisted_3$g = [
19016
19000
  _hoisted_2$h
@@ -19018,16 +19002,15 @@ img.ProseMirror-separator {
19018
19002
  function render$c(_ctx, _cache) {
19019
19003
  return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$h, _hoisted_3$g);
19020
19004
  }
19021
- const MdiRedoVariant = { name: "mdi-redo-variant", render: render$c };
19005
+ const MdiUndoVariant = { name: "mdi-undo-variant", render: render$c };
19022
19006
  const _hoisted_1$g = {
19023
- preserveAspectRatio: "xMidYMid meet",
19024
19007
  viewBox: "0 0 24 24",
19025
19008
  width: "1.2em",
19026
19009
  height: "1.2em"
19027
19010
  };
19028
19011
  const _hoisted_2$g = /* @__PURE__ */ vue.createElementVNode("path", {
19029
19012
  fill: "currentColor",
19030
- d: "M5 21h14v-2H5v2m7-4a6 6 0 0 0 6-6V3h-2.5v8a3.5 3.5 0 0 1-3.5 3.5A3.5 3.5 0 0 1 8.5 11V3H6v8a6 6 0 0 0 6 6Z"
19013
+ d: "M10.5 7A6.5 6.5 0 0 0 4 13.5a6.5 6.5 0 0 0 6.5 6.5H14v-2h-3.5C8 18 6 16 6 13.5S8 9 10.5 9h5.67l-3.08 3.09l1.41 1.41L20 8l-5.5-5.5l-1.42 1.41L16.17 7H10.5M18 18h-2v2h2v-2Z"
19031
19014
  }, null, -1);
19032
19015
  const _hoisted_3$f = [
19033
19016
  _hoisted_2$g
@@ -19035,16 +19018,15 @@ img.ProseMirror-separator {
19035
19018
  function render$b(_ctx, _cache) {
19036
19019
  return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$g, _hoisted_3$f);
19037
19020
  }
19038
- const MdiFormatUnderline = { name: "mdi-format-underline", render: render$b };
19021
+ const MdiRedoVariant = { name: "mdi-redo-variant", render: render$b };
19039
19022
  const _hoisted_1$f = {
19040
- preserveAspectRatio: "xMidYMid meet",
19041
19023
  viewBox: "0 0 24 24",
19042
19024
  width: "1.2em",
19043
19025
  height: "1.2em"
19044
19026
  };
19045
19027
  const _hoisted_2$f = /* @__PURE__ */ vue.createElementVNode("path", {
19046
19028
  fill: "currentColor",
19047
- d: "M3 3h18v2H3V3m0 4h12v2H3V7m0 4h18v2H3v-2m0 4h12v2H3v-2m0 4h18v2H3v-2Z"
19029
+ d: "M5 21h14v-2H5v2m7-4a6 6 0 0 0 6-6V3h-2.5v8a3.5 3.5 0 0 1-3.5 3.5A3.5 3.5 0 0 1 8.5 11V3H6v8a6 6 0 0 0 6 6Z"
19048
19030
  }, null, -1);
19049
19031
  const _hoisted_3$e = [
19050
19032
  _hoisted_2$f
@@ -19052,16 +19034,15 @@ img.ProseMirror-separator {
19052
19034
  function render$a(_ctx, _cache) {
19053
19035
  return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$f, _hoisted_3$e);
19054
19036
  }
19055
- const MdiFormatAlignLeft = { name: "mdi-format-align-left", render: render$a };
19037
+ const MdiFormatUnderline = { name: "mdi-format-underline", render: render$a };
19056
19038
  const _hoisted_1$e = {
19057
- preserveAspectRatio: "xMidYMid meet",
19058
19039
  viewBox: "0 0 24 24",
19059
19040
  width: "1.2em",
19060
19041
  height: "1.2em"
19061
19042
  };
19062
19043
  const _hoisted_2$e = /* @__PURE__ */ vue.createElementVNode("path", {
19063
19044
  fill: "currentColor",
19064
- d: "M3 3h18v2H3V3m4 4h10v2H7V7m-4 4h18v2H3v-2m4 4h10v2H7v-2m-4 4h18v2H3v-2Z"
19045
+ d: "M3 3h18v2H3V3m0 4h12v2H3V7m0 4h18v2H3v-2m0 4h12v2H3v-2m0 4h18v2H3v-2Z"
19065
19046
  }, null, -1);
19066
19047
  const _hoisted_3$d = [
19067
19048
  _hoisted_2$e
@@ -19069,16 +19050,15 @@ img.ProseMirror-separator {
19069
19050
  function render$9(_ctx, _cache) {
19070
19051
  return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$e, _hoisted_3$d);
19071
19052
  }
19072
- const MdiFormatAlignCenter = { name: "mdi-format-align-center", render: render$9 };
19053
+ const MdiFormatAlignLeft = { name: "mdi-format-align-left", render: render$9 };
19073
19054
  const _hoisted_1$d = {
19074
- preserveAspectRatio: "xMidYMid meet",
19075
19055
  viewBox: "0 0 24 24",
19076
19056
  width: "1.2em",
19077
19057
  height: "1.2em"
19078
19058
  };
19079
19059
  const _hoisted_2$d = /* @__PURE__ */ vue.createElementVNode("path", {
19080
19060
  fill: "currentColor",
19081
- d: "M3 3h18v2H3V3m6 4h12v2H9V7m-6 4h18v2H3v-2m6 4h12v2H9v-2m-6 4h18v2H3v-2Z"
19061
+ d: "M3 3h18v2H3V3m4 4h10v2H7V7m-4 4h18v2H3v-2m4 4h10v2H7v-2m-4 4h18v2H3v-2Z"
19082
19062
  }, null, -1);
19083
19063
  const _hoisted_3$c = [
19084
19064
  _hoisted_2$d
@@ -19086,16 +19066,15 @@ img.ProseMirror-separator {
19086
19066
  function render$8(_ctx, _cache) {
19087
19067
  return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$d, _hoisted_3$c);
19088
19068
  }
19089
- const MdiFormatAlignRight = { name: "mdi-format-align-right", render: render$8 };
19069
+ const MdiFormatAlignCenter = { name: "mdi-format-align-center", render: render$8 };
19090
19070
  const _hoisted_1$c = {
19091
- preserveAspectRatio: "xMidYMid meet",
19092
19071
  viewBox: "0 0 24 24",
19093
19072
  width: "1.2em",
19094
19073
  height: "1.2em"
19095
19074
  };
19096
19075
  const _hoisted_2$c = /* @__PURE__ */ vue.createElementVNode("path", {
19097
19076
  fill: "currentColor",
19098
- d: "M3 3h18v2H3V3m0 4h18v2H3V7m0 4h18v2H3v-2m0 4h18v2H3v-2m0 4h18v2H3v-2Z"
19077
+ d: "M3 3h18v2H3V3m6 4h12v2H9V7m-6 4h18v2H3v-2m6 4h12v2H9v-2m-6 4h18v2H3v-2Z"
19099
19078
  }, null, -1);
19100
19079
  const _hoisted_3$b = [
19101
19080
  _hoisted_2$c
@@ -19103,16 +19082,15 @@ img.ProseMirror-separator {
19103
19082
  function render$7(_ctx, _cache) {
19104
19083
  return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$c, _hoisted_3$b);
19105
19084
  }
19106
- const MdiFormatAlignJustify = { name: "mdi-format-align-justify", render: render$7 };
19085
+ const MdiFormatAlignRight = { name: "mdi-format-align-right", render: render$7 };
19107
19086
  const _hoisted_1$b = {
19108
- preserveAspectRatio: "xMidYMid meet",
19109
19087
  viewBox: "0 0 24 24",
19110
19088
  width: "1.2em",
19111
19089
  height: "1.2em"
19112
19090
  };
19113
19091
  const _hoisted_2$b = /* @__PURE__ */ vue.createElementVNode("path", {
19114
19092
  fill: "currentColor",
19115
- d: "m10 7l-2 4h3v6H5v-6l2-4h3m8 0l-2 4h3v6h-6v-6l2-4h3Z"
19093
+ d: "M3 3h18v2H3V3m0 4h18v2H3V7m0 4h18v2H3v-2m0 4h18v2H3v-2m0 4h18v2H3v-2Z"
19116
19094
  }, null, -1);
19117
19095
  const _hoisted_3$a = [
19118
19096
  _hoisted_2$b
@@ -19120,16 +19098,15 @@ img.ProseMirror-separator {
19120
19098
  function render$6(_ctx, _cache) {
19121
19099
  return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$b, _hoisted_3$a);
19122
19100
  }
19123
- const MdiFormatQuoteOpen = { name: "mdi-format-quote-open", render: render$6 };
19101
+ const MdiFormatAlignJustify = { name: "mdi-format-align-justify", render: render$6 };
19124
19102
  const _hoisted_1$a = {
19125
- preserveAspectRatio: "xMidYMid meet",
19126
19103
  viewBox: "0 0 24 24",
19127
19104
  width: "1.2em",
19128
19105
  height: "1.2em"
19129
19106
  };
19130
19107
  const _hoisted_2$a = /* @__PURE__ */ vue.createElementVNode("path", {
19131
19108
  fill: "currentColor",
19132
- d: "m14.6 16.6l4.6-4.6l-4.6-4.6L16 6l6 6l-6 6l-1.4-1.4m-5.2 0L4.8 12l4.6-4.6L8 6l-6 6l6 6l1.4-1.4Z"
19109
+ d: "m10 7l-2 4h3v6H5v-6l2-4h3m8 0l-2 4h3v6h-6v-6l2-4h3Z"
19133
19110
  }, null, -1);
19134
19111
  const _hoisted_3$9 = [
19135
19112
  _hoisted_2$a
@@ -19137,16 +19114,15 @@ img.ProseMirror-separator {
19137
19114
  function render$5(_ctx, _cache) {
19138
19115
  return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$a, _hoisted_3$9);
19139
19116
  }
19140
- const MdiCodeTags = { name: "mdi-code-tags", render: render$5 };
19117
+ const MdiFormatQuoteOpen = { name: "mdi-format-quote-open", render: render$5 };
19141
19118
  const _hoisted_1$9 = {
19142
- preserveAspectRatio: "xMidYMid meet",
19143
19119
  viewBox: "0 0 24 24",
19144
19120
  width: "1.2em",
19145
19121
  height: "1.2em"
19146
19122
  };
19147
19123
  const _hoisted_2$9 = /* @__PURE__ */ vue.createElementVNode("path", {
19148
19124
  fill: "currentColor",
19149
- d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m-8 5H9v2c0 1.1-.9 2-2 2c1.1 0 2 .9 2 2v2h2v2H9c-1.1 0-2-.9-2-2v-1c0-1.1-.9-2-2-2v-2c1.1 0 2-.9 2-2V8c0-1.1.9-2 2-2h2v2m8 5c-1.1 0-2 .9-2 2v1c0 1.1-.9 2-2 2h-2v-2h2v-2c0-1.1.9-2 2-2c-1.1 0-2-.9-2-2V8h-2V6h2c1.1 0 2 .9 2 2v1c0 1.1.9 2 2 2v2Z"
19125
+ d: "m14.6 16.6l4.6-4.6l-4.6-4.6L16 6l6 6l-6 6l-1.4-1.4m-5.2 0L4.8 12l4.6-4.6L8 6l-6 6l6 6l1.4-1.4Z"
19150
19126
  }, null, -1);
19151
19127
  const _hoisted_3$8 = [
19152
19128
  _hoisted_2$9
@@ -19154,16 +19130,15 @@ img.ProseMirror-separator {
19154
19130
  function render$4(_ctx, _cache) {
19155
19131
  return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$9, _hoisted_3$8);
19156
19132
  }
19157
- const MdiCodeBracesBox = { name: "mdi-code-braces-box", render: render$4 };
19133
+ const MdiCodeTags = { name: "mdi-code-tags", render: render$4 };
19158
19134
  const _hoisted_1$8 = {
19159
- preserveAspectRatio: "xMidYMid meet",
19160
19135
  viewBox: "0 0 24 24",
19161
19136
  width: "1.2em",
19162
19137
  height: "1.2em"
19163
19138
  };
19164
19139
  const _hoisted_2$8 = /* @__PURE__ */ vue.createElementVNode("path", {
19165
19140
  fill: "currentColor",
19166
- d: "M20 19.88V22l-1.8-1.17l-4.79-9c.66-.21 1.26-.55 1.78-1L20 19.88M15 7a3 3 0 0 1-3 3h-.44L5.8 20.83L4 22v-2.12L9.79 9c-1.1-1.23-1-3.13.24-4.24C10.57 4.28 11.27 4 12 4V2a1 1 0 0 1 1 1v1.18c1.2.42 2 1.55 2 2.82m-2 0a1 1 0 0 0-1-1a1 1 0 0 0-1 1a1 1 0 0 0 1 1a1 1 0 0 0 1-1Z"
19141
+ d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m-8 5H9v2c0 1.1-.9 2-2 2c1.1 0 2 .9 2 2v2h2v2H9c-1.1 0-2-.9-2-2v-1c0-1.1-.9-2-2-2v-2c1.1 0 2-.9 2-2V8c0-1.1.9-2 2-2h2v2m8 5c-1.1 0-2 .9-2 2v1c0 1.1-.9 2-2 2h-2v-2h2v-2c0-1.1.9-2 2-2c-1.1 0-2-.9-2-2V8h-2V6h2c1.1 0 2 .9 2 2v1c0 1.1.9 2 2 2v2Z"
19167
19142
  }, null, -1);
19168
19143
  const _hoisted_3$7 = [
19169
19144
  _hoisted_2$8
@@ -19171,9 +19146,8 @@ img.ProseMirror-separator {
19171
19146
  function render$3(_ctx, _cache) {
19172
19147
  return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$8, _hoisted_3$7);
19173
19148
  }
19174
- const MdiMathCompass = { name: "mdi-math-compass", render: render$3 };
19149
+ const MdiCodeBracesBox = { name: "mdi-code-braces-box", render: render$3 };
19175
19150
  const _hoisted_1$7 = {
19176
- preserveAspectRatio: "xMidYMid meet",
19177
19151
  viewBox: "0 0 24 24",
19178
19152
  width: "1.2em",
19179
19153
  height: "1.2em"
@@ -19190,7 +19164,6 @@ img.ProseMirror-separator {
19190
19164
  }
19191
19165
  const MdiFormatSuperscript = { name: "mdi-format-superscript", render: render$2 };
19192
19166
  const _hoisted_1$6 = {
19193
- preserveAspectRatio: "xMidYMid meet",
19194
19167
  viewBox: "0 0 24 24",
19195
19168
  width: "1.2em",
19196
19169
  height: "1.2em"
@@ -19209,14 +19182,19 @@ img.ProseMirror-separator {
19209
19182
  const _hoisted_1$5 = { class: "editor-header flex items-center py-1 space-x-0.5 justify-center border-b drop-shadow-sm bg-white" };
19210
19183
  const _hoisted_2$5 = ["onClick"];
19211
19184
  const _hoisted_3$4 = { class: "w-24 flex flex-col" };
19212
- const _hoisted_4 = ["onClick"];
19213
- const _hoisted_5 = { class: "text-sm" };
19185
+ const _hoisted_4$1 = ["onClick"];
19186
+ const _hoisted_5$1 = { class: "text-sm" };
19214
19187
  const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
19215
19188
  __name: "EditorHeader",
19216
19189
  props: {
19217
19190
  editor: {
19218
19191
  type: Object,
19219
19192
  required: true
19193
+ },
19194
+ additionalMenuItems: {
19195
+ type: Array,
19196
+ required: false,
19197
+ default: () => []
19220
19198
  }
19221
19199
  },
19222
19200
  setup(__props) {
@@ -19299,13 +19277,6 @@ img.ProseMirror-separator {
19299
19277
  action: () => props.editor.chain().focus().toggleCodeBlock().run(),
19300
19278
  isActive: () => props.editor.isActive("codeBlock")
19301
19279
  },
19302
- {
19303
- type: "button",
19304
- icon: MdiMathCompass,
19305
- title: "Math",
19306
- action: () => props.editor.chain().addKatex().run(),
19307
- isActive: () => props.editor.isActive("katexBlock")
19308
- },
19309
19280
  {
19310
19281
  type: "button",
19311
19282
  icon: MdiFormatHeaderPound,
@@ -19383,19 +19354,20 @@ img.ProseMirror-separator {
19383
19354
  title: "Align justify",
19384
19355
  action: () => props.editor.chain().focus().setTextAlign("justify").run(),
19385
19356
  isActive: () => props.editor.isActive({ textAlign: "justify" })
19386
- }
19357
+ },
19358
+ ...props.additionalMenuItems
19387
19359
  ];
19388
19360
  return (_ctx, _cache) => {
19389
19361
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [
19390
19362
  (vue.openBlock(), vue.createElementBlock(vue.Fragment, null, vue.renderList(menuItems, (menuItem, index2) => {
19391
- var _a;
19363
+ var _a, _b;
19392
19364
  return vue.createElementVNode("div", {
19393
19365
  key: index2,
19394
19366
  class: "inline-flex items-center justify-center"
19395
19367
  }, [
19396
19368
  !((_a = menuItem.children) == null ? void 0 : _a.length) ? (vue.openBlock(), vue.createElementBlock("button", {
19397
19369
  key: 0,
19398
- class: vue.normalizeClass([{ "bg-gray-200": menuItem.isActive() }, "hover:bg-gray-100 p-1 rounded-sm"]),
19370
+ class: vue.normalizeClass([{ "bg-gray-200": (_b = menuItem.isActive) == null ? void 0 : _b.call(menuItem) }, "hover:bg-gray-100 p-1 rounded-sm"]),
19399
19371
  onClick: menuItem.action
19400
19372
  }, [
19401
19373
  (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(menuItem.icon)))
@@ -19403,28 +19375,32 @@ img.ProseMirror-separator {
19403
19375
  popper: vue.withCtx(() => [
19404
19376
  vue.createElementVNode("div", _hoisted_3$4, [
19405
19377
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(menuItem.children, (child, childIndex) => {
19378
+ var _a2;
19406
19379
  return vue.openBlock(), vue.createElementBlock("div", {
19407
19380
  key: childIndex,
19408
- class: vue.normalizeClass([{ "bg-gray-200": child.isActive() }, "p-1 hover:bg-gray-100"])
19381
+ class: vue.normalizeClass([{ "bg-gray-200": (_a2 = child.isActive) == null ? void 0 : _a2.call(child) }, "p-1 hover:bg-gray-100"])
19409
19382
  }, [
19410
19383
  vue.createElementVNode("button", {
19411
19384
  class: "flex flex-row gap-2 items-center justify-center",
19412
19385
  onClick: child.action
19413
19386
  }, [
19414
19387
  (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(child.icon))),
19415
- vue.createElementVNode("span", _hoisted_5, vue.toDisplayString(child.title), 1)
19416
- ], 8, _hoisted_4)
19388
+ vue.createElementVNode("span", _hoisted_5$1, vue.toDisplayString(child.title), 1)
19389
+ ], 8, _hoisted_4$1)
19417
19390
  ], 2);
19418
19391
  }), 128))
19419
19392
  ])
19420
19393
  ]),
19421
- default: vue.withCtx(() => [
19422
- vue.createElementVNode("button", {
19423
- class: vue.normalizeClass([{ "bg-gray-200": menuItem.isActive() }, "hover:bg-gray-100 p-1 rounded-sm"])
19424
- }, [
19425
- (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(menuItem.icon)))
19426
- ], 2)
19427
- ]),
19394
+ default: vue.withCtx(() => {
19395
+ var _a2;
19396
+ return [
19397
+ vue.createElementVNode("button", {
19398
+ class: vue.normalizeClass([{ "bg-gray-200": (_a2 = menuItem.isActive) == null ? void 0 : _a2.call(menuItem) }, "hover:bg-gray-100 p-1 rounded-sm"])
19399
+ }, [
19400
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(menuItem.icon)))
19401
+ ], 2)
19402
+ ];
19403
+ }),
19428
19404
  _: 2
19429
19405
  }, 1024))
19430
19406
  ]);
@@ -19547,11 +19523,15 @@ img.ProseMirror-separator {
19547
19523
  default: vue.withCtx(() => [
19548
19524
  vue.createElementVNode("div", _hoisted_1$4, [
19549
19525
  (vue.openBlock(), vue.createElementBlock(vue.Fragment, null, vue.renderList(menuItems, (menuItem, index2) => {
19526
+ var _a;
19550
19527
  return vue.createElementVNode("button", {
19551
19528
  key: index2,
19552
- class: vue.normalizeClass([{ "bg-gray-200 !text-black": menuItem.isActive() }, "text-gray-600 text-lg hover:bg-gray-100 p-0.5 rounded-sm"]),
19529
+ class: vue.normalizeClass([{ "bg-gray-200 !text-black": (_a = menuItem.isActive) == null ? void 0 : _a.call(menuItem) }, "text-gray-600 text-lg hover:bg-gray-100 p-0.5 rounded-sm"]),
19553
19530
  title: menuItem.title,
19554
- onClick: ($event) => menuItem.action()
19531
+ onClick: ($event) => {
19532
+ var _a2;
19533
+ return (_a2 = menuItem.action) == null ? void 0 : _a2.call(menuItem);
19534
+ }
19555
19535
  }, [
19556
19536
  (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(menuItem.icon)))
19557
19537
  ], 10, _hoisted_2$4);
@@ -19575,13 +19555,21 @@ img.ProseMirror-separator {
19575
19555
  editor: {
19576
19556
  type: Object,
19577
19557
  required: true
19558
+ },
19559
+ additionalMenuItems: {
19560
+ type: Array,
19561
+ required: false,
19562
+ default: () => []
19578
19563
  }
19579
19564
  },
19580
19565
  setup(__props) {
19581
19566
  return (_ctx, _cache) => {
19582
19567
  return __props.editor ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3, [
19583
19568
  vue.createVNode(_sfc_main$4, { editor: __props.editor }, null, 8, ["editor"]),
19584
- vue.createVNode(_sfc_main$5, { editor: __props.editor }, null, 8, ["editor"]),
19569
+ vue.createVNode(_sfc_main$5, {
19570
+ editor: __props.editor,
19571
+ additionalMenuItems: __props.additionalMenuItems
19572
+ }, null, 8, ["editor", "additionalMenuItems"]),
19585
19573
  vue.createElementVNode("div", _hoisted_2$3, [
19586
19574
  vue.createVNode(vue.unref(EditorContent), {
19587
19575
  editor: __props.editor,
@@ -19598,7 +19586,6 @@ img.ProseMirror-separator {
19598
19586
  const index = "";
19599
19587
  const tailwind = "";
19600
19588
  const style = "";
19601
- const katex$1 = "";
19602
19589
  const githubMarkdownLight = "";
19603
19590
  const inputRegex$6 = /^\s*>\s$/;
19604
19591
  const Blockquote = Node.create({
@@ -19772,6 +19759,7 @@ img.ProseMirror-separator {
19772
19759
  },
19773
19760
  excludes: "_",
19774
19761
  code: true,
19762
+ exitable: true,
19775
19763
  parseHTML() {
19776
19764
  return [
19777
19765
  { tag: "code" }
@@ -23885,7 +23873,7 @@ img.ProseMirror-separator {
23885
23873
  var value = input.substr(startIdx, endIdx - startIdx);
23886
23874
  return new Multi(value, tokens);
23887
23875
  }
23888
- var warn$1 = typeof console !== "undefined" && console && console.warn || function() {
23876
+ var warn$2 = typeof console !== "undefined" && console && console.warn || function() {
23889
23877
  };
23890
23878
  var INIT = {
23891
23879
  scanner: null,
@@ -23896,7 +23884,7 @@ img.ProseMirror-separator {
23896
23884
  };
23897
23885
  function registerCustomProtocol(protocol) {
23898
23886
  if (INIT.initialized) {
23899
- warn$1('linkifyjs: already initialized - will not register custom protocol "'.concat(protocol, '" until you manually call linkify.init(). To avoid this warning, please register all custom protocols before invoking linkify the first time.'));
23887
+ warn$2('linkifyjs: already initialized - will not register custom protocol "'.concat(protocol, '" until you manually call linkify.init(). To avoid this warning, please register all custom protocols before invoking linkify the first time.'));
23900
23888
  }
23901
23889
  if (!/^[a-z-]+$/.test(protocol)) {
23902
23890
  throw Error("linkifyjs: protocols containing characters other than a-z or - (hyphen) are not supported");
@@ -26691,7 +26679,7 @@ img.ProseMirror-separator {
26691
26679
  return;
26692
26680
  }
26693
26681
  const state = handleExit && !handleStart ? prev : next;
26694
- const decorationNode = document.querySelector(`[data-decoration-id="${state.decorationId}"]`);
26682
+ const decorationNode = view.dom.querySelector(`[data-decoration-id="${state.decorationId}"]`);
26695
26683
  props = {
26696
26684
  editor,
26697
26685
  range: state.range,
@@ -26709,7 +26697,7 @@ img.ProseMirror-separator {
26709
26697
  clientRect: decorationNode ? () => {
26710
26698
  var _a2;
26711
26699
  const { decorationId } = (_a2 = this.key) === null || _a2 === void 0 ? void 0 : _a2.getState(editor.state);
26712
- const currentDecorationNode = document.querySelector(`[data-decoration-id="${decorationId}"]`);
26700
+ const currentDecorationNode = view.dom.querySelector(`[data-decoration-id="${decorationId}"]`);
26713
26701
  return (currentDecorationNode === null || currentDecorationNode === void 0 ? void 0 : currentDecorationNode.getBoundingClientRect()) || null;
26714
26702
  } : null
26715
26703
  };
@@ -26849,12 +26837,17 @@ img.ProseMirror-separator {
26849
26837
  ];
26850
26838
  }
26851
26839
  });
26852
- const _hoisted_1$2 = { class: "items" };
26840
+ const _hoisted_1$2 = { class: "command-items" };
26853
26841
  const _hoisted_2$2 = ["onClick"];
26854
- const _hoisted_3$2 = {
26842
+ const _hoisted_3$2 = { class: "command-title" };
26843
+ const _hoisted_4 = {
26855
26844
  key: 1,
26856
- class: "item"
26845
+ class: "command-empty"
26857
26846
  };
26847
+ const _hoisted_5 = /* @__PURE__ */ vue.createElementVNode("span", null, "\u6CA1\u6709\u641C\u7D22\u7ED3\u679C", -1);
26848
+ const _hoisted_6 = [
26849
+ _hoisted_5
26850
+ ];
26858
26851
  const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
26859
26852
  __name: "CommandsView",
26860
26853
  props: {
@@ -26912,15 +26905,15 @@ img.ProseMirror-separator {
26912
26905
  return (_ctx, _cache) => {
26913
26906
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2, [
26914
26907
  __props.items.length ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(__props.items, (item, index2) => {
26915
- return vue.openBlock(), vue.createElementBlock("button", {
26908
+ return vue.openBlock(), vue.createElementBlock("div", {
26916
26909
  key: index2,
26917
- class: vue.normalizeClass([{ "is-selected": index2 === selectedIndex.value }, "item flex flex-row gap-5 items-center w-32 rounded"]),
26910
+ class: vue.normalizeClass([{ "is-selected": index2 === selectedIndex.value }, "command-item"]),
26918
26911
  onClick: ($event) => handleSelectItem(index2)
26919
26912
  }, [
26920
- (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(item.icon), { class: "bg-gray-100 p-0.5 rounded-sm" })),
26921
- vue.createTextVNode(" " + vue.toDisplayString(item.title), 1)
26913
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(item.icon), { class: "command-icon" })),
26914
+ vue.createElementVNode("span", _hoisted_3$2, vue.toDisplayString(item.title), 1)
26922
26915
  ], 10, _hoisted_2$2);
26923
- }), 128)) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$2, "No result"))
26916
+ }), 128)) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_4, _hoisted_6))
26924
26917
  ]);
26925
26918
  };
26926
26919
  }
@@ -26930,7 +26923,7 @@ img.ProseMirror-separator {
26930
26923
  items: ({ query }) => {
26931
26924
  return [
26932
26925
  {
26933
- icon: MdiFormatHeader1,
26926
+ icon: vue.markRaw(MdiFormatHeader1),
26934
26927
  title: "\u4E00\u7EA7\u6807\u9898",
26935
26928
  keywords: ["h1", "header1", "1", "yijibiaoti"],
26936
26929
  command: ({ editor, range }) => {
@@ -26938,7 +26931,7 @@ img.ProseMirror-separator {
26938
26931
  }
26939
26932
  },
26940
26933
  {
26941
- icon: MdiFormatHeader2,
26934
+ icon: vue.markRaw(MdiFormatHeader2),
26942
26935
  title: "\u4E8C\u7EA7\u6807\u9898",
26943
26936
  keywords: ["h2", "header2", "2", "erjibiaoti"],
26944
26937
  command: ({ editor, range }) => {
@@ -26946,7 +26939,7 @@ img.ProseMirror-separator {
26946
26939
  }
26947
26940
  },
26948
26941
  {
26949
- icon: MdiFormatHeader3,
26942
+ icon: vue.markRaw(MdiFormatHeader3),
26950
26943
  title: "\u4E09\u7EA7\u6807\u9898",
26951
26944
  keywords: ["h3", "header3", "3", "sanjibiaoti"],
26952
26945
  command: ({ editor, range }) => {
@@ -26954,7 +26947,7 @@ img.ProseMirror-separator {
26954
26947
  }
26955
26948
  },
26956
26949
  {
26957
- icon: MdiFormatHeader4,
26950
+ icon: vue.markRaw(MdiFormatHeader4),
26958
26951
  title: "\u56DB\u7EA7\u6807\u9898",
26959
26952
  keywords: ["h4", "header4", "4", "sijibiaoti"],
26960
26953
  command: ({ editor, range }) => {
@@ -26962,7 +26955,7 @@ img.ProseMirror-separator {
26962
26955
  }
26963
26956
  },
26964
26957
  {
26965
- icon: MdiFormatHeader5,
26958
+ icon: vue.markRaw(MdiFormatHeader5),
26966
26959
  title: "\u4E94\u7EA7\u6807\u9898",
26967
26960
  keywords: ["h5", "header5", "5", "wujibiaoti"],
26968
26961
  command: ({ editor, range }) => {
@@ -26970,7 +26963,7 @@ img.ProseMirror-separator {
26970
26963
  }
26971
26964
  },
26972
26965
  {
26973
- icon: MdiFormatHeader6,
26966
+ icon: vue.markRaw(MdiFormatHeader6),
26974
26967
  title: "\u516D\u7EA7\u6807\u9898",
26975
26968
  keywords: ["h6", "header6", "6", "liujibiaoti"],
26976
26969
  command: ({ editor, range }) => {
@@ -26978,19 +26971,11 @@ img.ProseMirror-separator {
26978
26971
  }
26979
26972
  },
26980
26973
  {
26981
- icon: MdiCodeBracesBox,
26974
+ icon: vue.markRaw(MdiCodeBracesBox),
26982
26975
  title: "\u4EE3\u7801\u5757",
26983
26976
  keywords: ["codeblock", "daimakuai"],
26984
26977
  command: ({ editor, range }) => {
26985
- editor.chain().focus().deleteRange(range).setNode("codeBlock").run();
26986
- }
26987
- },
26988
- {
26989
- icon: MdiMathCompass,
26990
- title: "\u6570\u5B66\u516C\u5F0F",
26991
- keywords: ["katex", "math", "shuxuegongshi"],
26992
- command: ({ editor, range }) => {
26993
- editor.chain().focus().deleteRange(range).addKatex().run();
26978
+ editor.chain().focus().deleteRange(range).setCodeBlock().run();
26994
26979
  }
26995
26980
  }
26996
26981
  ].filter(
@@ -27015,7 +27000,6 @@ img.ProseMirror-separator {
27015
27000
  getReferenceClientRect: props.clientRect,
27016
27001
  appendTo: () => document.body,
27017
27002
  content: component.element,
27018
- arrow: ROUND_ARROW,
27019
27003
  showOnCreate: true,
27020
27004
  interactive: true,
27021
27005
  trigger: "manual",
@@ -27088,141 +27072,1588 @@ img.ProseMirror-separator {
27088
27072
  tag: "pre",
27089
27073
  preserveWhitespace: "full"
27090
27074
  }
27091
- ];
27092
- },
27093
- renderHTML({ node, HTMLAttributes }) {
27094
- return [
27095
- "pre",
27096
- mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),
27097
- [
27098
- "code",
27099
- {
27100
- class: node.attrs.language ? this.options.languageClassPrefix + node.attrs.language : null
27101
- },
27102
- 0
27103
- ]
27104
- ];
27105
- },
27106
- addCommands() {
27107
- return {
27108
- setCodeBlock: (attributes) => ({ commands: commands2 }) => {
27109
- return commands2.setNode(this.name, attributes);
27110
- },
27111
- toggleCodeBlock: (attributes) => ({ commands: commands2 }) => {
27112
- return commands2.toggleNode(this.name, "paragraph", attributes);
27075
+ ];
27076
+ },
27077
+ renderHTML({ node, HTMLAttributes }) {
27078
+ return [
27079
+ "pre",
27080
+ mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),
27081
+ [
27082
+ "code",
27083
+ {
27084
+ class: node.attrs.language ? this.options.languageClassPrefix + node.attrs.language : null
27085
+ },
27086
+ 0
27087
+ ]
27088
+ ];
27089
+ },
27090
+ addCommands() {
27091
+ return {
27092
+ setCodeBlock: (attributes) => ({ commands: commands2 }) => {
27093
+ return commands2.setNode(this.name, attributes);
27094
+ },
27095
+ toggleCodeBlock: (attributes) => ({ commands: commands2 }) => {
27096
+ return commands2.toggleNode(this.name, "paragraph", attributes);
27097
+ }
27098
+ };
27099
+ },
27100
+ addKeyboardShortcuts() {
27101
+ return {
27102
+ "Mod-Alt-c": () => this.editor.commands.toggleCodeBlock(),
27103
+ Backspace: () => {
27104
+ const { empty: empty2, $anchor } = this.editor.state.selection;
27105
+ const isAtStart = $anchor.pos === 1;
27106
+ if (!empty2 || $anchor.parent.type.name !== this.name) {
27107
+ return false;
27108
+ }
27109
+ if (isAtStart || !$anchor.parent.textContent.length) {
27110
+ return this.editor.commands.clearNodes();
27111
+ }
27112
+ return false;
27113
+ },
27114
+ Enter: ({ editor }) => {
27115
+ if (!this.options.exitOnTripleEnter) {
27116
+ return false;
27117
+ }
27118
+ const { state } = editor;
27119
+ const { selection } = state;
27120
+ const { $from, empty: empty2 } = selection;
27121
+ if (!empty2 || $from.parent.type !== this.type) {
27122
+ return false;
27123
+ }
27124
+ const isAtEnd = $from.parentOffset === $from.parent.nodeSize - 2;
27125
+ const endsWithDoubleNewline = $from.parent.textContent.endsWith("\n\n");
27126
+ if (!isAtEnd || !endsWithDoubleNewline) {
27127
+ return false;
27128
+ }
27129
+ return editor.chain().command(({ tr }) => {
27130
+ tr.delete($from.pos - 2, $from.pos);
27131
+ return true;
27132
+ }).exitCode().run();
27133
+ },
27134
+ ArrowDown: ({ editor }) => {
27135
+ if (!this.options.exitOnArrowDown) {
27136
+ return false;
27137
+ }
27138
+ const { state } = editor;
27139
+ const { selection, doc: doc2 } = state;
27140
+ const { $from, empty: empty2 } = selection;
27141
+ if (!empty2 || $from.parent.type !== this.type) {
27142
+ return false;
27143
+ }
27144
+ const isAtEnd = $from.parentOffset === $from.parent.nodeSize - 2;
27145
+ if (!isAtEnd) {
27146
+ return false;
27147
+ }
27148
+ const after = $from.after();
27149
+ if (after === void 0) {
27150
+ return false;
27151
+ }
27152
+ const nodeAfter = doc2.nodeAt(after);
27153
+ if (nodeAfter) {
27154
+ return false;
27155
+ }
27156
+ return editor.commands.exitCode();
27157
+ }
27158
+ };
27159
+ },
27160
+ addInputRules() {
27161
+ return [
27162
+ textblockTypeInputRule({
27163
+ find: backtickInputRegex,
27164
+ type: this.type,
27165
+ getAttributes: (match) => ({
27166
+ language: match[1]
27167
+ })
27168
+ }),
27169
+ textblockTypeInputRule({
27170
+ find: tildeInputRegex,
27171
+ type: this.type,
27172
+ getAttributes: (match) => ({
27173
+ language: match[1]
27174
+ })
27175
+ })
27176
+ ];
27177
+ },
27178
+ addProseMirrorPlugins() {
27179
+ return [
27180
+ new Plugin({
27181
+ key: new PluginKey("codeBlockVSCodeHandler"),
27182
+ props: {
27183
+ handlePaste: (view, event) => {
27184
+ if (!event.clipboardData) {
27185
+ return false;
27186
+ }
27187
+ if (this.editor.isActive(this.type.name)) {
27188
+ return false;
27189
+ }
27190
+ const text2 = event.clipboardData.getData("text/plain");
27191
+ const vscode = event.clipboardData.getData("vscode-editor-data");
27192
+ const vscodeData = vscode ? JSON.parse(vscode) : void 0;
27193
+ const language = vscodeData === null || vscodeData === void 0 ? void 0 : vscodeData.mode;
27194
+ if (!text2 || !language) {
27195
+ return false;
27196
+ }
27197
+ const { tr } = view.state;
27198
+ tr.replaceSelectionWith(this.type.create({ language }));
27199
+ tr.setSelection(TextSelection.near(tr.doc.resolve(Math.max(0, tr.selection.from - 2))));
27200
+ tr.insertText(text2.replace(/\r\n?/g, "\n"));
27201
+ tr.setMeta("paste", true);
27202
+ view.dispatch(tr);
27203
+ return true;
27204
+ }
27205
+ }
27206
+ })
27207
+ ];
27208
+ }
27209
+ });
27210
+ var deepFreezeEs6$1 = { exports: {} };
27211
+ function deepFreeze$1(obj) {
27212
+ if (obj instanceof Map) {
27213
+ obj.clear = obj.delete = obj.set = function() {
27214
+ throw new Error("map is read-only");
27215
+ };
27216
+ } else if (obj instanceof Set) {
27217
+ obj.add = obj.clear = obj.delete = function() {
27218
+ throw new Error("set is read-only");
27219
+ };
27220
+ }
27221
+ Object.freeze(obj);
27222
+ Object.getOwnPropertyNames(obj).forEach(function(name) {
27223
+ var prop = obj[name];
27224
+ if (typeof prop == "object" && !Object.isFrozen(prop)) {
27225
+ deepFreeze$1(prop);
27226
+ }
27227
+ });
27228
+ return obj;
27229
+ }
27230
+ deepFreezeEs6$1.exports = deepFreeze$1;
27231
+ deepFreezeEs6$1.exports.default = deepFreeze$1;
27232
+ class Response$1 {
27233
+ constructor(mode) {
27234
+ if (mode.data === void 0)
27235
+ mode.data = {};
27236
+ this.data = mode.data;
27237
+ this.isMatchIgnored = false;
27238
+ }
27239
+ ignoreMatch() {
27240
+ this.isMatchIgnored = true;
27241
+ }
27242
+ }
27243
+ function escapeHTML$1(value) {
27244
+ return value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#x27;");
27245
+ }
27246
+ function inherit$1$1(original, ...objects) {
27247
+ const result = /* @__PURE__ */ Object.create(null);
27248
+ for (const key2 in original) {
27249
+ result[key2] = original[key2];
27250
+ }
27251
+ objects.forEach(function(obj) {
27252
+ for (const key2 in obj) {
27253
+ result[key2] = obj[key2];
27254
+ }
27255
+ });
27256
+ return result;
27257
+ }
27258
+ const SPAN_CLOSE$1 = "</span>";
27259
+ const emitsWrappingTags$1 = (node) => {
27260
+ return !!node.scope || node.sublanguage && node.language;
27261
+ };
27262
+ const scopeToCSSClass$1 = (name, { prefix }) => {
27263
+ if (name.includes(".")) {
27264
+ const pieces = name.split(".");
27265
+ return [
27266
+ `${prefix}${pieces.shift()}`,
27267
+ ...pieces.map((x, i2) => `${x}${"_".repeat(i2 + 1)}`)
27268
+ ].join(" ");
27269
+ }
27270
+ return `${prefix}${name}`;
27271
+ };
27272
+ class HTMLRenderer$1 {
27273
+ constructor(parseTree2, options) {
27274
+ this.buffer = "";
27275
+ this.classPrefix = options.classPrefix;
27276
+ parseTree2.walk(this);
27277
+ }
27278
+ addText(text2) {
27279
+ this.buffer += escapeHTML$1(text2);
27280
+ }
27281
+ openNode(node) {
27282
+ if (!emitsWrappingTags$1(node))
27283
+ return;
27284
+ let className = "";
27285
+ if (node.sublanguage) {
27286
+ className = `language-${node.language}`;
27287
+ } else {
27288
+ className = scopeToCSSClass$1(node.scope, { prefix: this.classPrefix });
27289
+ }
27290
+ this.span(className);
27291
+ }
27292
+ closeNode(node) {
27293
+ if (!emitsWrappingTags$1(node))
27294
+ return;
27295
+ this.buffer += SPAN_CLOSE$1;
27296
+ }
27297
+ value() {
27298
+ return this.buffer;
27299
+ }
27300
+ span(className) {
27301
+ this.buffer += `<span class="${className}">`;
27302
+ }
27303
+ }
27304
+ const newNode$1 = (opts = {}) => {
27305
+ const result = { children: [] };
27306
+ Object.assign(result, opts);
27307
+ return result;
27308
+ };
27309
+ class TokenTree$1 {
27310
+ constructor() {
27311
+ this.rootNode = newNode$1();
27312
+ this.stack = [this.rootNode];
27313
+ }
27314
+ get top() {
27315
+ return this.stack[this.stack.length - 1];
27316
+ }
27317
+ get root() {
27318
+ return this.rootNode;
27319
+ }
27320
+ add(node) {
27321
+ this.top.children.push(node);
27322
+ }
27323
+ openNode(scope) {
27324
+ const node = newNode$1({ scope });
27325
+ this.add(node);
27326
+ this.stack.push(node);
27327
+ }
27328
+ closeNode() {
27329
+ if (this.stack.length > 1) {
27330
+ return this.stack.pop();
27331
+ }
27332
+ return void 0;
27333
+ }
27334
+ closeAllNodes() {
27335
+ while (this.closeNode())
27336
+ ;
27337
+ }
27338
+ toJSON() {
27339
+ return JSON.stringify(this.rootNode, null, 4);
27340
+ }
27341
+ walk(builder) {
27342
+ return this.constructor._walk(builder, this.rootNode);
27343
+ }
27344
+ static _walk(builder, node) {
27345
+ if (typeof node === "string") {
27346
+ builder.addText(node);
27347
+ } else if (node.children) {
27348
+ builder.openNode(node);
27349
+ node.children.forEach((child) => this._walk(builder, child));
27350
+ builder.closeNode(node);
27351
+ }
27352
+ return builder;
27353
+ }
27354
+ static _collapse(node) {
27355
+ if (typeof node === "string")
27356
+ return;
27357
+ if (!node.children)
27358
+ return;
27359
+ if (node.children.every((el) => typeof el === "string")) {
27360
+ node.children = [node.children.join("")];
27361
+ } else {
27362
+ node.children.forEach((child) => {
27363
+ TokenTree$1._collapse(child);
27364
+ });
27365
+ }
27366
+ }
27367
+ }
27368
+ class TokenTreeEmitter$1 extends TokenTree$1 {
27369
+ constructor(options) {
27370
+ super();
27371
+ this.options = options;
27372
+ }
27373
+ addKeyword(text2, scope) {
27374
+ if (text2 === "") {
27375
+ return;
27376
+ }
27377
+ this.openNode(scope);
27378
+ this.addText(text2);
27379
+ this.closeNode();
27380
+ }
27381
+ addText(text2) {
27382
+ if (text2 === "") {
27383
+ return;
27384
+ }
27385
+ this.add(text2);
27386
+ }
27387
+ addSublanguage(emitter, name) {
27388
+ const node = emitter.root;
27389
+ node.sublanguage = true;
27390
+ node.language = name;
27391
+ this.add(node);
27392
+ }
27393
+ toHTML() {
27394
+ const renderer = new HTMLRenderer$1(this, this.options);
27395
+ return renderer.value();
27396
+ }
27397
+ finalize() {
27398
+ return true;
27399
+ }
27400
+ }
27401
+ function source$3(re) {
27402
+ if (!re)
27403
+ return null;
27404
+ if (typeof re === "string")
27405
+ return re;
27406
+ return re.source;
27407
+ }
27408
+ function lookahead$3(re) {
27409
+ return concat$3("(?=", re, ")");
27410
+ }
27411
+ function anyNumberOfTimes$1(re) {
27412
+ return concat$3("(?:", re, ")*");
27413
+ }
27414
+ function optional$1(re) {
27415
+ return concat$3("(?:", re, ")?");
27416
+ }
27417
+ function concat$3(...args) {
27418
+ const joined = args.map((x) => source$3(x)).join("");
27419
+ return joined;
27420
+ }
27421
+ function stripOptionsFromArgs$3(args) {
27422
+ const opts = args[args.length - 1];
27423
+ if (typeof opts === "object" && opts.constructor === Object) {
27424
+ args.splice(args.length - 1, 1);
27425
+ return opts;
27426
+ } else {
27427
+ return {};
27428
+ }
27429
+ }
27430
+ function either$3(...args) {
27431
+ const opts = stripOptionsFromArgs$3(args);
27432
+ const joined = "(" + (opts.capture ? "" : "?:") + args.map((x) => source$3(x)).join("|") + ")";
27433
+ return joined;
27434
+ }
27435
+ function countMatchGroups$1(re) {
27436
+ return new RegExp(re.toString() + "|").exec("").length - 1;
27437
+ }
27438
+ function startsWith$1(re, lexeme) {
27439
+ const match = re && re.exec(lexeme);
27440
+ return match && match.index === 0;
27441
+ }
27442
+ const BACKREF_RE$1 = /\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;
27443
+ function _rewriteBackreferences$1(regexps, { joinWith }) {
27444
+ let numCaptures = 0;
27445
+ return regexps.map((regex) => {
27446
+ numCaptures += 1;
27447
+ const offset2 = numCaptures;
27448
+ let re = source$3(regex);
27449
+ let out = "";
27450
+ while (re.length > 0) {
27451
+ const match = BACKREF_RE$1.exec(re);
27452
+ if (!match) {
27453
+ out += re;
27454
+ break;
27455
+ }
27456
+ out += re.substring(0, match.index);
27457
+ re = re.substring(match.index + match[0].length);
27458
+ if (match[0][0] === "\\" && match[1]) {
27459
+ out += "\\" + String(Number(match[1]) + offset2);
27460
+ } else {
27461
+ out += match[0];
27462
+ if (match[0] === "(") {
27463
+ numCaptures++;
27464
+ }
27465
+ }
27466
+ }
27467
+ return out;
27468
+ }).map((re) => `(${re})`).join(joinWith);
27469
+ }
27470
+ const MATCH_NOTHING_RE$1 = /\b\B/;
27471
+ const IDENT_RE$3 = "[a-zA-Z]\\w*";
27472
+ const UNDERSCORE_IDENT_RE$1 = "[a-zA-Z_]\\w*";
27473
+ const NUMBER_RE$1 = "\\b\\d+(\\.\\d+)?";
27474
+ const C_NUMBER_RE$1 = "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";
27475
+ const BINARY_NUMBER_RE$1 = "\\b(0b[01]+)";
27476
+ const RE_STARTERS_RE$1 = "!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";
27477
+ const SHEBANG$1 = (opts = {}) => {
27478
+ const beginShebang = /^#![ ]*\//;
27479
+ if (opts.binary) {
27480
+ opts.begin = concat$3(
27481
+ beginShebang,
27482
+ /.*\b/,
27483
+ opts.binary,
27484
+ /\b.*/
27485
+ );
27486
+ }
27487
+ return inherit$1$1({
27488
+ scope: "meta",
27489
+ begin: beginShebang,
27490
+ end: /$/,
27491
+ relevance: 0,
27492
+ "on:begin": (m, resp) => {
27493
+ if (m.index !== 0)
27494
+ resp.ignoreMatch();
27495
+ }
27496
+ }, opts);
27497
+ };
27498
+ const BACKSLASH_ESCAPE$1 = {
27499
+ begin: "\\\\[\\s\\S]",
27500
+ relevance: 0
27501
+ };
27502
+ const APOS_STRING_MODE$1 = {
27503
+ scope: "string",
27504
+ begin: "'",
27505
+ end: "'",
27506
+ illegal: "\\n",
27507
+ contains: [BACKSLASH_ESCAPE$1]
27508
+ };
27509
+ const QUOTE_STRING_MODE$1 = {
27510
+ scope: "string",
27511
+ begin: '"',
27512
+ end: '"',
27513
+ illegal: "\\n",
27514
+ contains: [BACKSLASH_ESCAPE$1]
27515
+ };
27516
+ const PHRASAL_WORDS_MODE$1 = {
27517
+ begin: /\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/
27518
+ };
27519
+ const COMMENT$1 = function(begin, end2, modeOptions = {}) {
27520
+ const mode = inherit$1$1(
27521
+ {
27522
+ scope: "comment",
27523
+ begin,
27524
+ end: end2,
27525
+ contains: []
27526
+ },
27527
+ modeOptions
27528
+ );
27529
+ mode.contains.push({
27530
+ scope: "doctag",
27531
+ begin: "[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",
27532
+ end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,
27533
+ excludeBegin: true,
27534
+ relevance: 0
27535
+ });
27536
+ const ENGLISH_WORD = either$3(
27537
+ "I",
27538
+ "a",
27539
+ "is",
27540
+ "so",
27541
+ "us",
27542
+ "to",
27543
+ "at",
27544
+ "if",
27545
+ "in",
27546
+ "it",
27547
+ "on",
27548
+ /[A-Za-z]+['](d|ve|re|ll|t|s|n)/,
27549
+ /[A-Za-z]+[-][a-z]+/,
27550
+ /[A-Za-z][a-z]{2,}/
27551
+ );
27552
+ mode.contains.push(
27553
+ {
27554
+ begin: concat$3(
27555
+ /[ ]+/,
27556
+ "(",
27557
+ ENGLISH_WORD,
27558
+ /[.]?[:]?([.][ ]|[ ])/,
27559
+ "){3}"
27560
+ )
27561
+ }
27562
+ );
27563
+ return mode;
27564
+ };
27565
+ const C_LINE_COMMENT_MODE$1 = COMMENT$1("//", "$");
27566
+ const C_BLOCK_COMMENT_MODE$1 = COMMENT$1("/\\*", "\\*/");
27567
+ const HASH_COMMENT_MODE$1 = COMMENT$1("#", "$");
27568
+ const NUMBER_MODE$1 = {
27569
+ scope: "number",
27570
+ begin: NUMBER_RE$1,
27571
+ relevance: 0
27572
+ };
27573
+ const C_NUMBER_MODE$1 = {
27574
+ scope: "number",
27575
+ begin: C_NUMBER_RE$1,
27576
+ relevance: 0
27577
+ };
27578
+ const BINARY_NUMBER_MODE$1 = {
27579
+ scope: "number",
27580
+ begin: BINARY_NUMBER_RE$1,
27581
+ relevance: 0
27582
+ };
27583
+ const REGEXP_MODE$1 = {
27584
+ begin: /(?=\/[^/\n]*\/)/,
27585
+ contains: [{
27586
+ scope: "regexp",
27587
+ begin: /\//,
27588
+ end: /\/[gimuy]*/,
27589
+ illegal: /\n/,
27590
+ contains: [
27591
+ BACKSLASH_ESCAPE$1,
27592
+ {
27593
+ begin: /\[/,
27594
+ end: /\]/,
27595
+ relevance: 0,
27596
+ contains: [BACKSLASH_ESCAPE$1]
27597
+ }
27598
+ ]
27599
+ }]
27600
+ };
27601
+ const TITLE_MODE$1 = {
27602
+ scope: "title",
27603
+ begin: IDENT_RE$3,
27604
+ relevance: 0
27605
+ };
27606
+ const UNDERSCORE_TITLE_MODE$1 = {
27607
+ scope: "title",
27608
+ begin: UNDERSCORE_IDENT_RE$1,
27609
+ relevance: 0
27610
+ };
27611
+ const METHOD_GUARD$1 = {
27612
+ begin: "\\.\\s*" + UNDERSCORE_IDENT_RE$1,
27613
+ relevance: 0
27614
+ };
27615
+ const END_SAME_AS_BEGIN$1 = function(mode) {
27616
+ return Object.assign(
27617
+ mode,
27618
+ {
27619
+ "on:begin": (m, resp) => {
27620
+ resp.data._beginMatch = m[1];
27621
+ },
27622
+ "on:end": (m, resp) => {
27623
+ if (resp.data._beginMatch !== m[1])
27624
+ resp.ignoreMatch();
27625
+ }
27626
+ }
27627
+ );
27628
+ };
27629
+ var MODES$5 = /* @__PURE__ */ Object.freeze({
27630
+ __proto__: null,
27631
+ MATCH_NOTHING_RE: MATCH_NOTHING_RE$1,
27632
+ IDENT_RE: IDENT_RE$3,
27633
+ UNDERSCORE_IDENT_RE: UNDERSCORE_IDENT_RE$1,
27634
+ NUMBER_RE: NUMBER_RE$1,
27635
+ C_NUMBER_RE: C_NUMBER_RE$1,
27636
+ BINARY_NUMBER_RE: BINARY_NUMBER_RE$1,
27637
+ RE_STARTERS_RE: RE_STARTERS_RE$1,
27638
+ SHEBANG: SHEBANG$1,
27639
+ BACKSLASH_ESCAPE: BACKSLASH_ESCAPE$1,
27640
+ APOS_STRING_MODE: APOS_STRING_MODE$1,
27641
+ QUOTE_STRING_MODE: QUOTE_STRING_MODE$1,
27642
+ PHRASAL_WORDS_MODE: PHRASAL_WORDS_MODE$1,
27643
+ COMMENT: COMMENT$1,
27644
+ C_LINE_COMMENT_MODE: C_LINE_COMMENT_MODE$1,
27645
+ C_BLOCK_COMMENT_MODE: C_BLOCK_COMMENT_MODE$1,
27646
+ HASH_COMMENT_MODE: HASH_COMMENT_MODE$1,
27647
+ NUMBER_MODE: NUMBER_MODE$1,
27648
+ C_NUMBER_MODE: C_NUMBER_MODE$1,
27649
+ BINARY_NUMBER_MODE: BINARY_NUMBER_MODE$1,
27650
+ REGEXP_MODE: REGEXP_MODE$1,
27651
+ TITLE_MODE: TITLE_MODE$1,
27652
+ UNDERSCORE_TITLE_MODE: UNDERSCORE_TITLE_MODE$1,
27653
+ METHOD_GUARD: METHOD_GUARD$1,
27654
+ END_SAME_AS_BEGIN: END_SAME_AS_BEGIN$1
27655
+ });
27656
+ function skipIfHasPrecedingDot$1(match, response) {
27657
+ const before = match.input[match.index - 1];
27658
+ if (before === ".") {
27659
+ response.ignoreMatch();
27660
+ }
27661
+ }
27662
+ function scopeClassName$1(mode, _parent) {
27663
+ if (mode.className !== void 0) {
27664
+ mode.scope = mode.className;
27665
+ delete mode.className;
27666
+ }
27667
+ }
27668
+ function beginKeywords$1(mode, parent) {
27669
+ if (!parent)
27670
+ return;
27671
+ if (!mode.beginKeywords)
27672
+ return;
27673
+ mode.begin = "\\b(" + mode.beginKeywords.split(" ").join("|") + ")(?!\\.)(?=\\b|\\s)";
27674
+ mode.__beforeBegin = skipIfHasPrecedingDot$1;
27675
+ mode.keywords = mode.keywords || mode.beginKeywords;
27676
+ delete mode.beginKeywords;
27677
+ if (mode.relevance === void 0)
27678
+ mode.relevance = 0;
27679
+ }
27680
+ function compileIllegal$1(mode, _parent) {
27681
+ if (!Array.isArray(mode.illegal))
27682
+ return;
27683
+ mode.illegal = either$3(...mode.illegal);
27684
+ }
27685
+ function compileMatch$1(mode, _parent) {
27686
+ if (!mode.match)
27687
+ return;
27688
+ if (mode.begin || mode.end)
27689
+ throw new Error("begin & end are not supported with match");
27690
+ mode.begin = mode.match;
27691
+ delete mode.match;
27692
+ }
27693
+ function compileRelevance$1(mode, _parent) {
27694
+ if (mode.relevance === void 0)
27695
+ mode.relevance = 1;
27696
+ }
27697
+ const beforeMatchExt$1 = (mode, parent) => {
27698
+ if (!mode.beforeMatch)
27699
+ return;
27700
+ if (mode.starts)
27701
+ throw new Error("beforeMatch cannot be used with starts");
27702
+ const originalMode = Object.assign({}, mode);
27703
+ Object.keys(mode).forEach((key2) => {
27704
+ delete mode[key2];
27705
+ });
27706
+ mode.keywords = originalMode.keywords;
27707
+ mode.begin = concat$3(originalMode.beforeMatch, lookahead$3(originalMode.begin));
27708
+ mode.starts = {
27709
+ relevance: 0,
27710
+ contains: [
27711
+ Object.assign(originalMode, { endsParent: true })
27712
+ ]
27713
+ };
27714
+ mode.relevance = 0;
27715
+ delete originalMode.beforeMatch;
27716
+ };
27717
+ const COMMON_KEYWORDS$1 = [
27718
+ "of",
27719
+ "and",
27720
+ "for",
27721
+ "in",
27722
+ "not",
27723
+ "or",
27724
+ "if",
27725
+ "then",
27726
+ "parent",
27727
+ "list",
27728
+ "value"
27729
+ ];
27730
+ const DEFAULT_KEYWORD_SCOPE$1 = "keyword";
27731
+ function compileKeywords$1(rawKeywords, caseInsensitive, scopeName = DEFAULT_KEYWORD_SCOPE$1) {
27732
+ const compiledKeywords = /* @__PURE__ */ Object.create(null);
27733
+ if (typeof rawKeywords === "string") {
27734
+ compileList(scopeName, rawKeywords.split(" "));
27735
+ } else if (Array.isArray(rawKeywords)) {
27736
+ compileList(scopeName, rawKeywords);
27737
+ } else {
27738
+ Object.keys(rawKeywords).forEach(function(scopeName2) {
27739
+ Object.assign(
27740
+ compiledKeywords,
27741
+ compileKeywords$1(rawKeywords[scopeName2], caseInsensitive, scopeName2)
27742
+ );
27743
+ });
27744
+ }
27745
+ return compiledKeywords;
27746
+ function compileList(scopeName2, keywordList) {
27747
+ if (caseInsensitive) {
27748
+ keywordList = keywordList.map((x) => x.toLowerCase());
27749
+ }
27750
+ keywordList.forEach(function(keyword) {
27751
+ const pair = keyword.split("|");
27752
+ compiledKeywords[pair[0]] = [scopeName2, scoreForKeyword$1(pair[0], pair[1])];
27753
+ });
27754
+ }
27755
+ }
27756
+ function scoreForKeyword$1(keyword, providedScore) {
27757
+ if (providedScore) {
27758
+ return Number(providedScore);
27759
+ }
27760
+ return commonKeyword$1(keyword) ? 0 : 1;
27761
+ }
27762
+ function commonKeyword$1(keyword) {
27763
+ return COMMON_KEYWORDS$1.includes(keyword.toLowerCase());
27764
+ }
27765
+ const seenDeprecations$1 = {};
27766
+ const error$1 = (message) => {
27767
+ console.error(message);
27768
+ };
27769
+ const warn$1 = (message, ...args) => {
27770
+ console.log(`WARN: ${message}`, ...args);
27771
+ };
27772
+ const deprecated$1 = (version2, message) => {
27773
+ if (seenDeprecations$1[`${version2}/${message}`])
27774
+ return;
27775
+ console.log(`Deprecated as of ${version2}. ${message}`);
27776
+ seenDeprecations$1[`${version2}/${message}`] = true;
27777
+ };
27778
+ const MultiClassError$1 = new Error();
27779
+ function remapScopeNames$1(mode, regexes, { key: key2 }) {
27780
+ let offset2 = 0;
27781
+ const scopeNames = mode[key2];
27782
+ const emit = {};
27783
+ const positions = {};
27784
+ for (let i2 = 1; i2 <= regexes.length; i2++) {
27785
+ positions[i2 + offset2] = scopeNames[i2];
27786
+ emit[i2 + offset2] = true;
27787
+ offset2 += countMatchGroups$1(regexes[i2 - 1]);
27788
+ }
27789
+ mode[key2] = positions;
27790
+ mode[key2]._emit = emit;
27791
+ mode[key2]._multi = true;
27792
+ }
27793
+ function beginMultiClass$1(mode) {
27794
+ if (!Array.isArray(mode.begin))
27795
+ return;
27796
+ if (mode.skip || mode.excludeBegin || mode.returnBegin) {
27797
+ error$1("skip, excludeBegin, returnBegin not compatible with beginScope: {}");
27798
+ throw MultiClassError$1;
27799
+ }
27800
+ if (typeof mode.beginScope !== "object" || mode.beginScope === null) {
27801
+ error$1("beginScope must be object");
27802
+ throw MultiClassError$1;
27803
+ }
27804
+ remapScopeNames$1(mode, mode.begin, { key: "beginScope" });
27805
+ mode.begin = _rewriteBackreferences$1(mode.begin, { joinWith: "" });
27806
+ }
27807
+ function endMultiClass$1(mode) {
27808
+ if (!Array.isArray(mode.end))
27809
+ return;
27810
+ if (mode.skip || mode.excludeEnd || mode.returnEnd) {
27811
+ error$1("skip, excludeEnd, returnEnd not compatible with endScope: {}");
27812
+ throw MultiClassError$1;
27813
+ }
27814
+ if (typeof mode.endScope !== "object" || mode.endScope === null) {
27815
+ error$1("endScope must be object");
27816
+ throw MultiClassError$1;
27817
+ }
27818
+ remapScopeNames$1(mode, mode.end, { key: "endScope" });
27819
+ mode.end = _rewriteBackreferences$1(mode.end, { joinWith: "" });
27820
+ }
27821
+ function scopeSugar$1(mode) {
27822
+ if (mode.scope && typeof mode.scope === "object" && mode.scope !== null) {
27823
+ mode.beginScope = mode.scope;
27824
+ delete mode.scope;
27825
+ }
27826
+ }
27827
+ function MultiClass$1(mode) {
27828
+ scopeSugar$1(mode);
27829
+ if (typeof mode.beginScope === "string") {
27830
+ mode.beginScope = { _wrap: mode.beginScope };
27831
+ }
27832
+ if (typeof mode.endScope === "string") {
27833
+ mode.endScope = { _wrap: mode.endScope };
27834
+ }
27835
+ beginMultiClass$1(mode);
27836
+ endMultiClass$1(mode);
27837
+ }
27838
+ function compileLanguage$1(language) {
27839
+ function langRe(value, global) {
27840
+ return new RegExp(
27841
+ source$3(value),
27842
+ "m" + (language.case_insensitive ? "i" : "") + (language.unicodeRegex ? "u" : "") + (global ? "g" : "")
27843
+ );
27844
+ }
27845
+ class MultiRegex {
27846
+ constructor() {
27847
+ this.matchIndexes = {};
27848
+ this.regexes = [];
27849
+ this.matchAt = 1;
27850
+ this.position = 0;
27851
+ }
27852
+ addRule(re, opts) {
27853
+ opts.position = this.position++;
27854
+ this.matchIndexes[this.matchAt] = opts;
27855
+ this.regexes.push([opts, re]);
27856
+ this.matchAt += countMatchGroups$1(re) + 1;
27857
+ }
27858
+ compile() {
27859
+ if (this.regexes.length === 0) {
27860
+ this.exec = () => null;
27861
+ }
27862
+ const terminators = this.regexes.map((el) => el[1]);
27863
+ this.matcherRe = langRe(_rewriteBackreferences$1(terminators, { joinWith: "|" }), true);
27864
+ this.lastIndex = 0;
27865
+ }
27866
+ exec(s) {
27867
+ this.matcherRe.lastIndex = this.lastIndex;
27868
+ const match = this.matcherRe.exec(s);
27869
+ if (!match) {
27870
+ return null;
27871
+ }
27872
+ const i2 = match.findIndex((el, i3) => i3 > 0 && el !== void 0);
27873
+ const matchData = this.matchIndexes[i2];
27874
+ match.splice(0, i2);
27875
+ return Object.assign(match, matchData);
27876
+ }
27877
+ }
27878
+ class ResumableMultiRegex {
27879
+ constructor() {
27880
+ this.rules = [];
27881
+ this.multiRegexes = [];
27882
+ this.count = 0;
27883
+ this.lastIndex = 0;
27884
+ this.regexIndex = 0;
27885
+ }
27886
+ getMatcher(index2) {
27887
+ if (this.multiRegexes[index2])
27888
+ return this.multiRegexes[index2];
27889
+ const matcher = new MultiRegex();
27890
+ this.rules.slice(index2).forEach(([re, opts]) => matcher.addRule(re, opts));
27891
+ matcher.compile();
27892
+ this.multiRegexes[index2] = matcher;
27893
+ return matcher;
27894
+ }
27895
+ resumingScanAtSamePosition() {
27896
+ return this.regexIndex !== 0;
27897
+ }
27898
+ considerAll() {
27899
+ this.regexIndex = 0;
27900
+ }
27901
+ addRule(re, opts) {
27902
+ this.rules.push([re, opts]);
27903
+ if (opts.type === "begin")
27904
+ this.count++;
27905
+ }
27906
+ exec(s) {
27907
+ const m = this.getMatcher(this.regexIndex);
27908
+ m.lastIndex = this.lastIndex;
27909
+ let result = m.exec(s);
27910
+ if (this.resumingScanAtSamePosition()) {
27911
+ if (result && result.index === this.lastIndex)
27912
+ ;
27913
+ else {
27914
+ const m2 = this.getMatcher(0);
27915
+ m2.lastIndex = this.lastIndex + 1;
27916
+ result = m2.exec(s);
27917
+ }
27918
+ }
27919
+ if (result) {
27920
+ this.regexIndex += result.position + 1;
27921
+ if (this.regexIndex === this.count) {
27922
+ this.considerAll();
27923
+ }
27924
+ }
27925
+ return result;
27926
+ }
27927
+ }
27928
+ function buildModeRegex(mode) {
27929
+ const mm = new ResumableMultiRegex();
27930
+ mode.contains.forEach((term) => mm.addRule(term.begin, { rule: term, type: "begin" }));
27931
+ if (mode.terminatorEnd) {
27932
+ mm.addRule(mode.terminatorEnd, { type: "end" });
27933
+ }
27934
+ if (mode.illegal) {
27935
+ mm.addRule(mode.illegal, { type: "illegal" });
27936
+ }
27937
+ return mm;
27938
+ }
27939
+ function compileMode(mode, parent) {
27940
+ const cmode = mode;
27941
+ if (mode.isCompiled)
27942
+ return cmode;
27943
+ [
27944
+ scopeClassName$1,
27945
+ compileMatch$1,
27946
+ MultiClass$1,
27947
+ beforeMatchExt$1
27948
+ ].forEach((ext) => ext(mode, parent));
27949
+ language.compilerExtensions.forEach((ext) => ext(mode, parent));
27950
+ mode.__beforeBegin = null;
27951
+ [
27952
+ beginKeywords$1,
27953
+ compileIllegal$1,
27954
+ compileRelevance$1
27955
+ ].forEach((ext) => ext(mode, parent));
27956
+ mode.isCompiled = true;
27957
+ let keywordPattern = null;
27958
+ if (typeof mode.keywords === "object" && mode.keywords.$pattern) {
27959
+ mode.keywords = Object.assign({}, mode.keywords);
27960
+ keywordPattern = mode.keywords.$pattern;
27961
+ delete mode.keywords.$pattern;
27962
+ }
27963
+ keywordPattern = keywordPattern || /\w+/;
27964
+ if (mode.keywords) {
27965
+ mode.keywords = compileKeywords$1(mode.keywords, language.case_insensitive);
27966
+ }
27967
+ cmode.keywordPatternRe = langRe(keywordPattern, true);
27968
+ if (parent) {
27969
+ if (!mode.begin)
27970
+ mode.begin = /\B|\b/;
27971
+ cmode.beginRe = langRe(cmode.begin);
27972
+ if (!mode.end && !mode.endsWithParent)
27973
+ mode.end = /\B|\b/;
27974
+ if (mode.end)
27975
+ cmode.endRe = langRe(cmode.end);
27976
+ cmode.terminatorEnd = source$3(cmode.end) || "";
27977
+ if (mode.endsWithParent && parent.terminatorEnd) {
27978
+ cmode.terminatorEnd += (mode.end ? "|" : "") + parent.terminatorEnd;
27979
+ }
27980
+ }
27981
+ if (mode.illegal)
27982
+ cmode.illegalRe = langRe(mode.illegal);
27983
+ if (!mode.contains)
27984
+ mode.contains = [];
27985
+ mode.contains = [].concat(...mode.contains.map(function(c2) {
27986
+ return expandOrCloneMode$1(c2 === "self" ? mode : c2);
27987
+ }));
27988
+ mode.contains.forEach(function(c2) {
27989
+ compileMode(c2, cmode);
27990
+ });
27991
+ if (mode.starts) {
27992
+ compileMode(mode.starts, parent);
27993
+ }
27994
+ cmode.matcher = buildModeRegex(cmode);
27995
+ return cmode;
27996
+ }
27997
+ if (!language.compilerExtensions)
27998
+ language.compilerExtensions = [];
27999
+ if (language.contains && language.contains.includes("self")) {
28000
+ throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");
28001
+ }
28002
+ language.classNameAliases = inherit$1$1(language.classNameAliases || {});
28003
+ return compileMode(language);
28004
+ }
28005
+ function dependencyOnParent$1(mode) {
28006
+ if (!mode)
28007
+ return false;
28008
+ return mode.endsWithParent || dependencyOnParent$1(mode.starts);
28009
+ }
28010
+ function expandOrCloneMode$1(mode) {
28011
+ if (mode.variants && !mode.cachedVariants) {
28012
+ mode.cachedVariants = mode.variants.map(function(variant) {
28013
+ return inherit$1$1(mode, { variants: null }, variant);
28014
+ });
28015
+ }
28016
+ if (mode.cachedVariants) {
28017
+ return mode.cachedVariants;
28018
+ }
28019
+ if (dependencyOnParent$1(mode)) {
28020
+ return inherit$1$1(mode, { starts: mode.starts ? inherit$1$1(mode.starts) : null });
28021
+ }
28022
+ if (Object.isFrozen(mode)) {
28023
+ return inherit$1$1(mode);
28024
+ }
28025
+ return mode;
28026
+ }
28027
+ var version$1 = "11.6.0";
28028
+ class HTMLInjectionError$1 extends Error {
28029
+ constructor(reason, html) {
28030
+ super(reason);
28031
+ this.name = "HTMLInjectionError";
28032
+ this.html = html;
28033
+ }
28034
+ }
28035
+ const escape$3 = escapeHTML$1;
28036
+ const inherit$2 = inherit$1$1;
28037
+ const NO_MATCH$1 = Symbol("nomatch");
28038
+ const MAX_KEYWORD_HITS$1 = 7;
28039
+ const HLJS$1 = function(hljs) {
28040
+ const languages = /* @__PURE__ */ Object.create(null);
28041
+ const aliases = /* @__PURE__ */ Object.create(null);
28042
+ const plugins = [];
28043
+ let SAFE_MODE = true;
28044
+ const LANGUAGE_NOT_FOUND = "Could not find the language '{}', did you forget to load/include a language module?";
28045
+ const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: "Plain text", contains: [] };
28046
+ let options = {
28047
+ ignoreUnescapedHTML: false,
28048
+ throwUnescapedHTML: false,
28049
+ noHighlightRe: /^(no-?highlight)$/i,
28050
+ languageDetectRe: /\blang(?:uage)?-([\w-]+)\b/i,
28051
+ classPrefix: "hljs-",
28052
+ cssSelector: "pre code",
28053
+ languages: null,
28054
+ __emitter: TokenTreeEmitter$1
28055
+ };
28056
+ function shouldNotHighlight(languageName) {
28057
+ return options.noHighlightRe.test(languageName);
28058
+ }
28059
+ function blockLanguage(block) {
28060
+ let classes = block.className + " ";
28061
+ classes += block.parentNode ? block.parentNode.className : "";
28062
+ const match = options.languageDetectRe.exec(classes);
28063
+ if (match) {
28064
+ const language = getLanguage(match[1]);
28065
+ if (!language) {
28066
+ warn$1(LANGUAGE_NOT_FOUND.replace("{}", match[1]));
28067
+ warn$1("Falling back to no-highlight mode for this block.", block);
28068
+ }
28069
+ return language ? match[1] : "no-highlight";
28070
+ }
28071
+ return classes.split(/\s+/).find((_class) => shouldNotHighlight(_class) || getLanguage(_class));
28072
+ }
28073
+ function highlight2(codeOrLanguageName, optionsOrCode, ignoreIllegals) {
28074
+ let code2 = "";
28075
+ let languageName = "";
28076
+ if (typeof optionsOrCode === "object") {
28077
+ code2 = codeOrLanguageName;
28078
+ ignoreIllegals = optionsOrCode.ignoreIllegals;
28079
+ languageName = optionsOrCode.language;
28080
+ } else {
28081
+ deprecated$1("10.7.0", "highlight(lang, code, ...args) has been deprecated.");
28082
+ deprecated$1("10.7.0", "Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277");
28083
+ languageName = codeOrLanguageName;
28084
+ code2 = optionsOrCode;
28085
+ }
28086
+ if (ignoreIllegals === void 0) {
28087
+ ignoreIllegals = true;
28088
+ }
28089
+ const context = {
28090
+ code: code2,
28091
+ language: languageName
28092
+ };
28093
+ fire("before:highlight", context);
28094
+ const result = context.result ? context.result : _highlight(context.language, context.code, ignoreIllegals);
28095
+ result.code = context.code;
28096
+ fire("after:highlight", result);
28097
+ return result;
28098
+ }
28099
+ function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) {
28100
+ const keywordHits = /* @__PURE__ */ Object.create(null);
28101
+ function keywordData(mode, matchText) {
28102
+ return mode.keywords[matchText];
28103
+ }
28104
+ function processKeywords() {
28105
+ if (!top2.keywords) {
28106
+ emitter.addText(modeBuffer);
28107
+ return;
28108
+ }
28109
+ let lastIndex = 0;
28110
+ top2.keywordPatternRe.lastIndex = 0;
28111
+ let match = top2.keywordPatternRe.exec(modeBuffer);
28112
+ let buf = "";
28113
+ while (match) {
28114
+ buf += modeBuffer.substring(lastIndex, match.index);
28115
+ const word = language.case_insensitive ? match[0].toLowerCase() : match[0];
28116
+ const data = keywordData(top2, word);
28117
+ if (data) {
28118
+ const [kind, keywordRelevance] = data;
28119
+ emitter.addText(buf);
28120
+ buf = "";
28121
+ keywordHits[word] = (keywordHits[word] || 0) + 1;
28122
+ if (keywordHits[word] <= MAX_KEYWORD_HITS$1)
28123
+ relevance += keywordRelevance;
28124
+ if (kind.startsWith("_")) {
28125
+ buf += match[0];
28126
+ } else {
28127
+ const cssClass = language.classNameAliases[kind] || kind;
28128
+ emitter.addKeyword(match[0], cssClass);
28129
+ }
28130
+ } else {
28131
+ buf += match[0];
28132
+ }
28133
+ lastIndex = top2.keywordPatternRe.lastIndex;
28134
+ match = top2.keywordPatternRe.exec(modeBuffer);
28135
+ }
28136
+ buf += modeBuffer.substring(lastIndex);
28137
+ emitter.addText(buf);
28138
+ }
28139
+ function processSubLanguage() {
28140
+ if (modeBuffer === "")
28141
+ return;
28142
+ let result2 = null;
28143
+ if (typeof top2.subLanguage === "string") {
28144
+ if (!languages[top2.subLanguage]) {
28145
+ emitter.addText(modeBuffer);
28146
+ return;
28147
+ }
28148
+ result2 = _highlight(top2.subLanguage, modeBuffer, true, continuations[top2.subLanguage]);
28149
+ continuations[top2.subLanguage] = result2._top;
28150
+ } else {
28151
+ result2 = highlightAuto2(modeBuffer, top2.subLanguage.length ? top2.subLanguage : null);
28152
+ }
28153
+ if (top2.relevance > 0) {
28154
+ relevance += result2.relevance;
28155
+ }
28156
+ emitter.addSublanguage(result2._emitter, result2.language);
28157
+ }
28158
+ function processBuffer() {
28159
+ if (top2.subLanguage != null) {
28160
+ processSubLanguage();
28161
+ } else {
28162
+ processKeywords();
28163
+ }
28164
+ modeBuffer = "";
28165
+ }
28166
+ function emitMultiClass(scope, match) {
28167
+ let i2 = 1;
28168
+ const max2 = match.length - 1;
28169
+ while (i2 <= max2) {
28170
+ if (!scope._emit[i2]) {
28171
+ i2++;
28172
+ continue;
28173
+ }
28174
+ const klass = language.classNameAliases[scope[i2]] || scope[i2];
28175
+ const text2 = match[i2];
28176
+ if (klass) {
28177
+ emitter.addKeyword(text2, klass);
28178
+ } else {
28179
+ modeBuffer = text2;
28180
+ processKeywords();
28181
+ modeBuffer = "";
28182
+ }
28183
+ i2++;
28184
+ }
28185
+ }
28186
+ function startNewMode(mode, match) {
28187
+ if (mode.scope && typeof mode.scope === "string") {
28188
+ emitter.openNode(language.classNameAliases[mode.scope] || mode.scope);
28189
+ }
28190
+ if (mode.beginScope) {
28191
+ if (mode.beginScope._wrap) {
28192
+ emitter.addKeyword(modeBuffer, language.classNameAliases[mode.beginScope._wrap] || mode.beginScope._wrap);
28193
+ modeBuffer = "";
28194
+ } else if (mode.beginScope._multi) {
28195
+ emitMultiClass(mode.beginScope, match);
28196
+ modeBuffer = "";
28197
+ }
28198
+ }
28199
+ top2 = Object.create(mode, { parent: { value: top2 } });
28200
+ return top2;
28201
+ }
28202
+ function endOfMode(mode, match, matchPlusRemainder) {
28203
+ let matched = startsWith$1(mode.endRe, matchPlusRemainder);
28204
+ if (matched) {
28205
+ if (mode["on:end"]) {
28206
+ const resp = new Response$1(mode);
28207
+ mode["on:end"](match, resp);
28208
+ if (resp.isMatchIgnored)
28209
+ matched = false;
28210
+ }
28211
+ if (matched) {
28212
+ while (mode.endsParent && mode.parent) {
28213
+ mode = mode.parent;
28214
+ }
28215
+ return mode;
28216
+ }
28217
+ }
28218
+ if (mode.endsWithParent) {
28219
+ return endOfMode(mode.parent, match, matchPlusRemainder);
28220
+ }
28221
+ }
28222
+ function doIgnore(lexeme) {
28223
+ if (top2.matcher.regexIndex === 0) {
28224
+ modeBuffer += lexeme[0];
28225
+ return 1;
28226
+ } else {
28227
+ resumeScanAtSamePosition = true;
28228
+ return 0;
27113
28229
  }
27114
- };
27115
- },
27116
- addKeyboardShortcuts() {
27117
- return {
27118
- "Mod-Alt-c": () => this.editor.commands.toggleCodeBlock(),
27119
- Backspace: () => {
27120
- const { empty: empty2, $anchor } = this.editor.state.selection;
27121
- const isAtStart = $anchor.pos === 1;
27122
- if (!empty2 || $anchor.parent.type.name !== this.name) {
27123
- return false;
28230
+ }
28231
+ function doBeginMatch(match) {
28232
+ const lexeme = match[0];
28233
+ const newMode = match.rule;
28234
+ const resp = new Response$1(newMode);
28235
+ const beforeCallbacks = [newMode.__beforeBegin, newMode["on:begin"]];
28236
+ for (const cb of beforeCallbacks) {
28237
+ if (!cb)
28238
+ continue;
28239
+ cb(match, resp);
28240
+ if (resp.isMatchIgnored)
28241
+ return doIgnore(lexeme);
28242
+ }
28243
+ if (newMode.skip) {
28244
+ modeBuffer += lexeme;
28245
+ } else {
28246
+ if (newMode.excludeBegin) {
28247
+ modeBuffer += lexeme;
27124
28248
  }
27125
- if (isAtStart || !$anchor.parent.textContent.length) {
27126
- return this.editor.commands.clearNodes();
28249
+ processBuffer();
28250
+ if (!newMode.returnBegin && !newMode.excludeBegin) {
28251
+ modeBuffer = lexeme;
27127
28252
  }
27128
- return false;
27129
- },
27130
- Enter: ({ editor }) => {
27131
- if (!this.options.exitOnTripleEnter) {
27132
- return false;
28253
+ }
28254
+ startNewMode(newMode, match);
28255
+ return newMode.returnBegin ? 0 : lexeme.length;
28256
+ }
28257
+ function doEndMatch(match) {
28258
+ const lexeme = match[0];
28259
+ const matchPlusRemainder = codeToHighlight.substring(match.index);
28260
+ const endMode = endOfMode(top2, match, matchPlusRemainder);
28261
+ if (!endMode) {
28262
+ return NO_MATCH$1;
28263
+ }
28264
+ const origin = top2;
28265
+ if (top2.endScope && top2.endScope._wrap) {
28266
+ processBuffer();
28267
+ emitter.addKeyword(lexeme, top2.endScope._wrap);
28268
+ } else if (top2.endScope && top2.endScope._multi) {
28269
+ processBuffer();
28270
+ emitMultiClass(top2.endScope, match);
28271
+ } else if (origin.skip) {
28272
+ modeBuffer += lexeme;
28273
+ } else {
28274
+ if (!(origin.returnEnd || origin.excludeEnd)) {
28275
+ modeBuffer += lexeme;
27133
28276
  }
27134
- const { state } = editor;
27135
- const { selection } = state;
27136
- const { $from, empty: empty2 } = selection;
27137
- if (!empty2 || $from.parent.type !== this.type) {
27138
- return false;
28277
+ processBuffer();
28278
+ if (origin.excludeEnd) {
28279
+ modeBuffer = lexeme;
27139
28280
  }
27140
- const isAtEnd = $from.parentOffset === $from.parent.nodeSize - 2;
27141
- const endsWithDoubleNewline = $from.parent.textContent.endsWith("\n\n");
27142
- if (!isAtEnd || !endsWithDoubleNewline) {
27143
- return false;
28281
+ }
28282
+ do {
28283
+ if (top2.scope) {
28284
+ emitter.closeNode();
27144
28285
  }
27145
- return editor.chain().command(({ tr }) => {
27146
- tr.delete($from.pos - 2, $from.pos);
27147
- return true;
27148
- }).exitCode().run();
27149
- },
27150
- ArrowDown: ({ editor }) => {
27151
- if (!this.options.exitOnArrowDown) {
27152
- return false;
28286
+ if (!top2.skip && !top2.subLanguage) {
28287
+ relevance += top2.relevance;
27153
28288
  }
27154
- const { state } = editor;
27155
- const { selection, doc: doc2 } = state;
27156
- const { $from, empty: empty2 } = selection;
27157
- if (!empty2 || $from.parent.type !== this.type) {
27158
- return false;
28289
+ top2 = top2.parent;
28290
+ } while (top2 !== endMode.parent);
28291
+ if (endMode.starts) {
28292
+ startNewMode(endMode.starts, match);
28293
+ }
28294
+ return origin.returnEnd ? 0 : lexeme.length;
28295
+ }
28296
+ function processContinuations() {
28297
+ const list = [];
28298
+ for (let current = top2; current !== language; current = current.parent) {
28299
+ if (current.scope) {
28300
+ list.unshift(current.scope);
27159
28301
  }
27160
- const isAtEnd = $from.parentOffset === $from.parent.nodeSize - 2;
27161
- if (!isAtEnd) {
27162
- return false;
28302
+ }
28303
+ list.forEach((item) => emitter.openNode(item));
28304
+ }
28305
+ let lastMatch = {};
28306
+ function processLexeme(textBeforeMatch, match) {
28307
+ const lexeme = match && match[0];
28308
+ modeBuffer += textBeforeMatch;
28309
+ if (lexeme == null) {
28310
+ processBuffer();
28311
+ return 0;
28312
+ }
28313
+ if (lastMatch.type === "begin" && match.type === "end" && lastMatch.index === match.index && lexeme === "") {
28314
+ modeBuffer += codeToHighlight.slice(match.index, match.index + 1);
28315
+ if (!SAFE_MODE) {
28316
+ const err = new Error(`0 width match regex (${languageName})`);
28317
+ err.languageName = languageName;
28318
+ err.badRule = lastMatch.rule;
28319
+ throw err;
27163
28320
  }
27164
- const after = $from.after();
27165
- if (after === void 0) {
27166
- return false;
28321
+ return 1;
28322
+ }
28323
+ lastMatch = match;
28324
+ if (match.type === "begin") {
28325
+ return doBeginMatch(match);
28326
+ } else if (match.type === "illegal" && !ignoreIllegals) {
28327
+ const err = new Error('Illegal lexeme "' + lexeme + '" for mode "' + (top2.scope || "<unnamed>") + '"');
28328
+ err.mode = top2;
28329
+ throw err;
28330
+ } else if (match.type === "end") {
28331
+ const processed = doEndMatch(match);
28332
+ if (processed !== NO_MATCH$1) {
28333
+ return processed;
27167
28334
  }
27168
- const nodeAfter = doc2.nodeAt(after);
27169
- if (nodeAfter) {
27170
- return false;
28335
+ }
28336
+ if (match.type === "illegal" && lexeme === "") {
28337
+ return 1;
28338
+ }
28339
+ if (iterations > 1e5 && iterations > match.index * 3) {
28340
+ const err = new Error("potential infinite loop, way more iterations than matches");
28341
+ throw err;
28342
+ }
28343
+ modeBuffer += lexeme;
28344
+ return lexeme.length;
28345
+ }
28346
+ const language = getLanguage(languageName);
28347
+ if (!language) {
28348
+ error$1(LANGUAGE_NOT_FOUND.replace("{}", languageName));
28349
+ throw new Error('Unknown language: "' + languageName + '"');
28350
+ }
28351
+ const md = compileLanguage$1(language);
28352
+ let result = "";
28353
+ let top2 = continuation || md;
28354
+ const continuations = {};
28355
+ const emitter = new options.__emitter(options);
28356
+ processContinuations();
28357
+ let modeBuffer = "";
28358
+ let relevance = 0;
28359
+ let index2 = 0;
28360
+ let iterations = 0;
28361
+ let resumeScanAtSamePosition = false;
28362
+ try {
28363
+ top2.matcher.considerAll();
28364
+ for (; ; ) {
28365
+ iterations++;
28366
+ if (resumeScanAtSamePosition) {
28367
+ resumeScanAtSamePosition = false;
28368
+ } else {
28369
+ top2.matcher.considerAll();
27171
28370
  }
27172
- return editor.commands.exitCode();
28371
+ top2.matcher.lastIndex = index2;
28372
+ const match = top2.matcher.exec(codeToHighlight);
28373
+ if (!match)
28374
+ break;
28375
+ const beforeMatch = codeToHighlight.substring(index2, match.index);
28376
+ const processedCount = processLexeme(beforeMatch, match);
28377
+ index2 = match.index + processedCount;
28378
+ }
28379
+ processLexeme(codeToHighlight.substring(index2));
28380
+ emitter.closeAllNodes();
28381
+ emitter.finalize();
28382
+ result = emitter.toHTML();
28383
+ return {
28384
+ language: languageName,
28385
+ value: result,
28386
+ relevance,
28387
+ illegal: false,
28388
+ _emitter: emitter,
28389
+ _top: top2
28390
+ };
28391
+ } catch (err) {
28392
+ if (err.message && err.message.includes("Illegal")) {
28393
+ return {
28394
+ language: languageName,
28395
+ value: escape$3(codeToHighlight),
28396
+ illegal: true,
28397
+ relevance: 0,
28398
+ _illegalBy: {
28399
+ message: err.message,
28400
+ index: index2,
28401
+ context: codeToHighlight.slice(index2 - 100, index2 + 100),
28402
+ mode: err.mode,
28403
+ resultSoFar: result
28404
+ },
28405
+ _emitter: emitter
28406
+ };
28407
+ } else if (SAFE_MODE) {
28408
+ return {
28409
+ language: languageName,
28410
+ value: escape$3(codeToHighlight),
28411
+ illegal: false,
28412
+ relevance: 0,
28413
+ errorRaised: err,
28414
+ _emitter: emitter,
28415
+ _top: top2
28416
+ };
28417
+ } else {
28418
+ throw err;
27173
28419
  }
28420
+ }
28421
+ }
28422
+ function justTextHighlightResult(code2) {
28423
+ const result = {
28424
+ value: escape$3(code2),
28425
+ illegal: false,
28426
+ relevance: 0,
28427
+ _top: PLAINTEXT_LANGUAGE,
28428
+ _emitter: new options.__emitter(options)
27174
28429
  };
27175
- },
27176
- addInputRules() {
27177
- return [
27178
- textblockTypeInputRule({
27179
- find: backtickInputRegex,
27180
- type: this.type,
27181
- getAttributes: (match) => ({
27182
- language: match[1]
27183
- })
27184
- }),
27185
- textblockTypeInputRule({
27186
- find: tildeInputRegex,
27187
- type: this.type,
27188
- getAttributes: (match) => ({
27189
- language: match[1]
27190
- })
27191
- })
27192
- ];
27193
- },
27194
- addProseMirrorPlugins() {
27195
- return [
27196
- new Plugin({
27197
- key: new PluginKey("codeBlockVSCodeHandler"),
27198
- props: {
27199
- handlePaste: (view, event) => {
27200
- if (!event.clipboardData) {
27201
- return false;
27202
- }
27203
- if (this.editor.isActive(this.type.name)) {
27204
- return false;
27205
- }
27206
- const text2 = event.clipboardData.getData("text/plain");
27207
- const vscode = event.clipboardData.getData("vscode-editor-data");
27208
- const vscodeData = vscode ? JSON.parse(vscode) : void 0;
27209
- const language = vscodeData === null || vscodeData === void 0 ? void 0 : vscodeData.mode;
27210
- if (!text2 || !language) {
27211
- return false;
27212
- }
27213
- const { tr } = view.state;
27214
- tr.replaceSelectionWith(this.type.create({ language }));
27215
- tr.setSelection(TextSelection.near(tr.doc.resolve(Math.max(0, tr.selection.from - 2))));
27216
- tr.insertText(text2.replace(/\r\n?/g, "\n"));
27217
- tr.setMeta("paste", true);
27218
- view.dispatch(tr);
27219
- return true;
27220
- }
28430
+ result._emitter.addText(code2);
28431
+ return result;
28432
+ }
28433
+ function highlightAuto2(code2, languageSubset) {
28434
+ languageSubset = languageSubset || options.languages || Object.keys(languages);
28435
+ const plaintext2 = justTextHighlightResult(code2);
28436
+ const results = languageSubset.filter(getLanguage).filter(autoDetection).map(
28437
+ (name) => _highlight(name, code2, false)
28438
+ );
28439
+ results.unshift(plaintext2);
28440
+ const sorted = results.sort((a, b) => {
28441
+ if (a.relevance !== b.relevance)
28442
+ return b.relevance - a.relevance;
28443
+ if (a.language && b.language) {
28444
+ if (getLanguage(a.language).supersetOf === b.language) {
28445
+ return 1;
28446
+ } else if (getLanguage(b.language).supersetOf === a.language) {
28447
+ return -1;
27221
28448
  }
27222
- })
27223
- ];
28449
+ }
28450
+ return 0;
28451
+ });
28452
+ const [best, secondBest] = sorted;
28453
+ const result = best;
28454
+ result.secondBest = secondBest;
28455
+ return result;
27224
28456
  }
27225
- });
28457
+ function updateClassName(element, currentLang, resultLang) {
28458
+ const language = currentLang && aliases[currentLang] || resultLang;
28459
+ element.classList.add("hljs");
28460
+ element.classList.add(`language-${language}`);
28461
+ }
28462
+ function highlightElement(element) {
28463
+ let node = null;
28464
+ const language = blockLanguage(element);
28465
+ if (shouldNotHighlight(language))
28466
+ return;
28467
+ fire(
28468
+ "before:highlightElement",
28469
+ { el: element, language }
28470
+ );
28471
+ if (element.children.length > 0) {
28472
+ if (!options.ignoreUnescapedHTML) {
28473
+ console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk.");
28474
+ console.warn("https://github.com/highlightjs/highlight.js/wiki/security");
28475
+ console.warn("The element with unescaped HTML:");
28476
+ console.warn(element);
28477
+ }
28478
+ if (options.throwUnescapedHTML) {
28479
+ const err = new HTMLInjectionError$1(
28480
+ "One of your code blocks includes unescaped HTML.",
28481
+ element.innerHTML
28482
+ );
28483
+ throw err;
28484
+ }
28485
+ }
28486
+ node = element;
28487
+ const text2 = node.textContent;
28488
+ const result = language ? highlight2(text2, { language, ignoreIllegals: true }) : highlightAuto2(text2);
28489
+ element.innerHTML = result.value;
28490
+ updateClassName(element, language, result.language);
28491
+ element.result = {
28492
+ language: result.language,
28493
+ re: result.relevance,
28494
+ relevance: result.relevance
28495
+ };
28496
+ if (result.secondBest) {
28497
+ element.secondBest = {
28498
+ language: result.secondBest.language,
28499
+ relevance: result.secondBest.relevance
28500
+ };
28501
+ }
28502
+ fire("after:highlightElement", { el: element, result, text: text2 });
28503
+ }
28504
+ function configure(userOptions) {
28505
+ options = inherit$2(options, userOptions);
28506
+ }
28507
+ const initHighlighting = () => {
28508
+ highlightAll();
28509
+ deprecated$1("10.6.0", "initHighlighting() deprecated. Use highlightAll() now.");
28510
+ };
28511
+ function initHighlightingOnLoad() {
28512
+ highlightAll();
28513
+ deprecated$1("10.6.0", "initHighlightingOnLoad() deprecated. Use highlightAll() now.");
28514
+ }
28515
+ let wantsHighlight = false;
28516
+ function highlightAll() {
28517
+ if (document.readyState === "loading") {
28518
+ wantsHighlight = true;
28519
+ return;
28520
+ }
28521
+ const blocks = document.querySelectorAll(options.cssSelector);
28522
+ blocks.forEach(highlightElement);
28523
+ }
28524
+ function boot() {
28525
+ if (wantsHighlight)
28526
+ highlightAll();
28527
+ }
28528
+ if (typeof window !== "undefined" && window.addEventListener) {
28529
+ window.addEventListener("DOMContentLoaded", boot, false);
28530
+ }
28531
+ function registerLanguage2(languageName, languageDefinition) {
28532
+ let lang = null;
28533
+ try {
28534
+ lang = languageDefinition(hljs);
28535
+ } catch (error$1$1) {
28536
+ error$1("Language definition for '{}' could not be registered.".replace("{}", languageName));
28537
+ if (!SAFE_MODE) {
28538
+ throw error$1$1;
28539
+ } else {
28540
+ error$1(error$1$1);
28541
+ }
28542
+ lang = PLAINTEXT_LANGUAGE;
28543
+ }
28544
+ if (!lang.name)
28545
+ lang.name = languageName;
28546
+ languages[languageName] = lang;
28547
+ lang.rawDefinition = languageDefinition.bind(null, hljs);
28548
+ if (lang.aliases) {
28549
+ registerAliases(lang.aliases, { languageName });
28550
+ }
28551
+ }
28552
+ function unregisterLanguage(languageName) {
28553
+ delete languages[languageName];
28554
+ for (const alias of Object.keys(aliases)) {
28555
+ if (aliases[alias] === languageName) {
28556
+ delete aliases[alias];
28557
+ }
28558
+ }
28559
+ }
28560
+ function listLanguages2() {
28561
+ return Object.keys(languages);
28562
+ }
28563
+ function getLanguage(name) {
28564
+ name = (name || "").toLowerCase();
28565
+ return languages[name] || languages[aliases[name]];
28566
+ }
28567
+ function registerAliases(aliasList, { languageName }) {
28568
+ if (typeof aliasList === "string") {
28569
+ aliasList = [aliasList];
28570
+ }
28571
+ aliasList.forEach((alias) => {
28572
+ aliases[alias.toLowerCase()] = languageName;
28573
+ });
28574
+ }
28575
+ function autoDetection(name) {
28576
+ const lang = getLanguage(name);
28577
+ return lang && !lang.disableAutodetect;
28578
+ }
28579
+ function upgradePluginAPI(plugin2) {
28580
+ if (plugin2["before:highlightBlock"] && !plugin2["before:highlightElement"]) {
28581
+ plugin2["before:highlightElement"] = (data) => {
28582
+ plugin2["before:highlightBlock"](
28583
+ Object.assign({ block: data.el }, data)
28584
+ );
28585
+ };
28586
+ }
28587
+ if (plugin2["after:highlightBlock"] && !plugin2["after:highlightElement"]) {
28588
+ plugin2["after:highlightElement"] = (data) => {
28589
+ plugin2["after:highlightBlock"](
28590
+ Object.assign({ block: data.el }, data)
28591
+ );
28592
+ };
28593
+ }
28594
+ }
28595
+ function addPlugin(plugin2) {
28596
+ upgradePluginAPI(plugin2);
28597
+ plugins.push(plugin2);
28598
+ }
28599
+ function fire(event, args) {
28600
+ const cb = event;
28601
+ plugins.forEach(function(plugin2) {
28602
+ if (plugin2[cb]) {
28603
+ plugin2[cb](args);
28604
+ }
28605
+ });
28606
+ }
28607
+ function deprecateHighlightBlock(el) {
28608
+ deprecated$1("10.7.0", "highlightBlock will be removed entirely in v12.0");
28609
+ deprecated$1("10.7.0", "Please use highlightElement now.");
28610
+ return highlightElement(el);
28611
+ }
28612
+ Object.assign(hljs, {
28613
+ highlight: highlight2,
28614
+ highlightAuto: highlightAuto2,
28615
+ highlightAll,
28616
+ highlightElement,
28617
+ highlightBlock: deprecateHighlightBlock,
28618
+ configure,
28619
+ initHighlighting,
28620
+ initHighlightingOnLoad,
28621
+ registerLanguage: registerLanguage2,
28622
+ unregisterLanguage,
28623
+ listLanguages: listLanguages2,
28624
+ getLanguage,
28625
+ registerAliases,
28626
+ autoDetection,
28627
+ inherit: inherit$2,
28628
+ addPlugin
28629
+ });
28630
+ hljs.debugMode = function() {
28631
+ SAFE_MODE = false;
28632
+ };
28633
+ hljs.safeMode = function() {
28634
+ SAFE_MODE = true;
28635
+ };
28636
+ hljs.versionString = version$1;
28637
+ hljs.regex = {
28638
+ concat: concat$3,
28639
+ lookahead: lookahead$3,
28640
+ either: either$3,
28641
+ optional: optional$1,
28642
+ anyNumberOfTimes: anyNumberOfTimes$1
28643
+ };
28644
+ for (const key2 in MODES$5) {
28645
+ if (typeof MODES$5[key2] === "object") {
28646
+ deepFreezeEs6$1.exports(MODES$5[key2]);
28647
+ }
28648
+ }
28649
+ Object.assign(hljs, MODES$5);
28650
+ return hljs;
28651
+ };
28652
+ var highlight$2 = HLJS$1({});
28653
+ var core$1 = highlight$2;
28654
+ highlight$2.HighlightJS = highlight$2;
28655
+ highlight$2.default = highlight$2;
28656
+ var HighlightJS$1 = core$1;
27226
28657
  function parseNodes(nodes, className = []) {
27227
28658
  return nodes.map((node) => {
27228
28659
  const classes = [
@@ -27241,13 +28672,16 @@ img.ProseMirror-separator {
27241
28672
  function getHighlightNodes(result) {
27242
28673
  return result.value || result.children || [];
27243
28674
  }
28675
+ function registered$1(aliasOrLanguage) {
28676
+ return Boolean(HighlightJS$1.getLanguage(aliasOrLanguage));
28677
+ }
27244
28678
  function getDecorations({ doc: doc2, name, lowlight: lowlight2, defaultLanguage }) {
27245
28679
  const decorations = [];
27246
28680
  findChildren(doc2, (node) => node.type.name === name).forEach((block) => {
27247
28681
  let from = block.pos + 1;
27248
28682
  const language = block.node.attrs.language || defaultLanguage;
27249
28683
  const languages = lowlight2.listLanguages();
27250
- const nodes = language && languages.includes(language) ? getHighlightNodes(lowlight2.highlight(language, block.node.textContent)) : getHighlightNodes(lowlight2.highlightAuto(block.node.textContent));
28684
+ const nodes = language && (languages.includes(language) || registered$1(language)) ? getHighlightNodes(lowlight2.highlight(language, block.node.textContent)) : getHighlightNodes(lowlight2.highlightAuto(block.node.textContent));
27251
28685
  parseNodes(nodes).forEach((node) => {
27252
28686
  const to = from + node.text.length;
27253
28687
  if (node.classes.length) {
@@ -40201,12 +41635,12 @@ img.ProseMirror-separator {
40201
41635
  let lang = null;
40202
41636
  try {
40203
41637
  lang = languageDefinition(hljs);
40204
- } catch (error$1) {
41638
+ } catch (error$12) {
40205
41639
  error("Language definition for '{}' could not be registered.".replace("{}", languageName));
40206
41640
  if (!SAFE_MODE) {
40207
- throw error$1;
41641
+ throw error$12;
40208
41642
  } else {
40209
- error(error$1);
41643
+ error(error$12);
40210
41644
  }
40211
41645
  lang = PLAINTEXT_LANGUAGE;
40212
41646
  }
@@ -73692,7 +75126,9 @@ img.ProseMirror-separator {
73692
75126
  ])
73693
75127
  ]),
73694
75128
  vue.createElementVNode("pre", null, [
73695
- vue.createVNode(vue.unref(NodeViewContent), { as: "code" })
75129
+ vue.createElementVNode("code", null, [
75130
+ vue.createVNode(vue.unref(NodeViewContent))
75131
+ ])
73696
75132
  ])
73697
75133
  ]),
73698
75134
  _: 1
@@ -74248,6 +75684,32 @@ img.ProseMirror-separator {
74248
75684
  shortbaraboveleftharpoon: "M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",
74249
75685
  shortrightharpoonabovebar: "M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"
74250
75686
  };
75687
+ var tallDelim = function tallDelim2(label, midHeight) {
75688
+ switch (label) {
75689
+ case "lbrack":
75690
+ return "M403 1759 V84 H666 V0 H319 V1759 v" + midHeight + " v1759 h347 v-84\nH403z M403 1759 V0 H319 V1759 v" + midHeight + " v1759 h84z";
75691
+ case "rbrack":
75692
+ return "M347 1759 V0 H0 V84 H263 V1759 v" + midHeight + " v1759 H0 v84 H347z\nM347 1759 V0 H263 V1759 v" + midHeight + " v1759 h84z";
75693
+ case "vert":
75694
+ return "M145 15 v585 v" + midHeight + " v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v" + -midHeight + " v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v" + midHeight + " v585 h43z";
75695
+ case "doublevert":
75696
+ return "M145 15 v585 v" + midHeight + " v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v" + -midHeight + " v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v" + midHeight + " v585 h43z\nM367 15 v585 v" + midHeight + " v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v" + -midHeight + " v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M410 15 H367 v585 v" + midHeight + " v585 h43z";
75697
+ case "lfloor":
75698
+ return "M319 602 V0 H403 V602 v" + midHeight + " v1715 h263 v84 H319z\nMM319 602 V0 H403 V602 v" + midHeight + " v1715 H319z";
75699
+ case "rfloor":
75700
+ return "M319 602 V0 H403 V602 v" + midHeight + " v1799 H0 v-84 H319z\nMM319 602 V0 H403 V602 v" + midHeight + " v1715 H319z";
75701
+ case "lceil":
75702
+ return "M403 1759 V84 H666 V0 H319 V1759 v" + midHeight + " v602 h84z\nM403 1759 V0 H319 V1759 v" + midHeight + " v602 h84z";
75703
+ case "rceil":
75704
+ return "M347 1759 V0 H0 V84 H263 V1759 v" + midHeight + " v602 h84z\nM347 1759 V0 h-84 V1759 v" + midHeight + " v602 h84z";
75705
+ case "lparen":
75706
+ return "M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1\nc-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349,\n-36,557 l0," + (midHeight + 84) + "c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210,\n949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9\nc0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5,\n-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189\nl0,-" + (midHeight + 92) + "c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3,\n-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z";
75707
+ case "rparen":
75708
+ return "M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3,\n63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5\nc11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0," + (midHeight + 9) + "\nc-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664\nc-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11\nc0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17\nc242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558\nl0,-" + (midHeight + 144) + "c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7,\n-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z";
75709
+ default:
75710
+ throw new Error("Unknown stretchy delimiter.");
75711
+ }
75712
+ };
74251
75713
  class DocumentFragment {
74252
75714
  constructor(children) {
74253
75715
  this.children = void 0;
@@ -77997,7 +79459,7 @@ img.ProseMirror-separator {
77997
79459
  }
77998
79460
  if (lookupSymbol(text2, fontName, mode).metrics) {
77999
79461
  return makeSymbol(text2, fontName, mode, options, classes.concat(fontClasses));
78000
- } else if (ligatures.hasOwnProperty(text2) && fontName.substr(0, 10) === "Typewriter") {
79462
+ } else if (ligatures.hasOwnProperty(text2) && fontName.slice(0, 10) === "Typewriter") {
78001
79463
  var parts = [];
78002
79464
  for (var i2 = 0; i2 < text2.length; i2++) {
78003
79465
  parts.push(makeSymbol(text2[i2], fontName, mode, options, classes.concat(fontClasses)));
@@ -78843,7 +80305,7 @@ img.ProseMirror-separator {
78843
80305
  newDocumentFragment
78844
80306
  };
78845
80307
  var makeText = function makeText2(text2, mode, options) {
78846
- if (symbols[mode][text2] && symbols[mode][text2].replace && text2.charCodeAt(0) !== 55349 && !(ligatures.hasOwnProperty(text2) && options && (options.fontFamily && options.fontFamily.substr(4, 2) === "tt" || options.font && options.font.substr(4, 2) === "tt"))) {
80308
+ if (symbols[mode][text2] && symbols[mode][text2].replace && text2.charCodeAt(0) !== 55349 && !(ligatures.hasOwnProperty(text2) && options && (options.fontFamily && options.fontFamily.slice(4, 6) === "tt" || options.font && options.font.slice(4, 6) === "tt"))) {
78847
80309
  text2 = symbols[mode][text2].replace;
78848
80310
  }
78849
80311
  return new mathMLTree.TextNode(text2);
@@ -79127,7 +80589,7 @@ img.ProseMirror-separator {
79127
80589
  var svgSpan = function svgSpan2(group, options) {
79128
80590
  function buildSvgSpan_() {
79129
80591
  var viewBoxWidth = 4e5;
79130
- var label = group.label.substr(1);
80592
+ var label = group.label.slice(1);
79131
80593
  if (utils.contains(["widehat", "widecheck", "widetilde", "utilde"], label)) {
79132
80594
  var grp = group;
79133
80595
  var numChars = groupLength(grp.base);
@@ -79627,6 +81089,175 @@ img.ProseMirror-separator {
79627
81089
  return node;
79628
81090
  }
79629
81091
  });
81092
+ var makeSpan = buildCommon.makeSpan;
81093
+ function htmlBuilder$9(group, options) {
81094
+ var elements = buildExpression$1(group.body, options, true);
81095
+ return makeSpan([group.mclass], elements, options);
81096
+ }
81097
+ function mathmlBuilder$8(group, options) {
81098
+ var node;
81099
+ var inner2 = buildExpression(group.body, options);
81100
+ if (group.mclass === "minner") {
81101
+ node = new mathMLTree.MathNode("mpadded", inner2);
81102
+ } else if (group.mclass === "mord") {
81103
+ if (group.isCharacterBox) {
81104
+ node = inner2[0];
81105
+ node.type = "mi";
81106
+ } else {
81107
+ node = new mathMLTree.MathNode("mi", inner2);
81108
+ }
81109
+ } else {
81110
+ if (group.isCharacterBox) {
81111
+ node = inner2[0];
81112
+ node.type = "mo";
81113
+ } else {
81114
+ node = new mathMLTree.MathNode("mo", inner2);
81115
+ }
81116
+ if (group.mclass === "mbin") {
81117
+ node.attributes.lspace = "0.22em";
81118
+ node.attributes.rspace = "0.22em";
81119
+ } else if (group.mclass === "mpunct") {
81120
+ node.attributes.lspace = "0em";
81121
+ node.attributes.rspace = "0.17em";
81122
+ } else if (group.mclass === "mopen" || group.mclass === "mclose") {
81123
+ node.attributes.lspace = "0em";
81124
+ node.attributes.rspace = "0em";
81125
+ } else if (group.mclass === "minner") {
81126
+ node.attributes.lspace = "0.0556em";
81127
+ node.attributes.width = "+0.1111em";
81128
+ }
81129
+ }
81130
+ return node;
81131
+ }
81132
+ defineFunction({
81133
+ type: "mclass",
81134
+ names: ["\\mathord", "\\mathbin", "\\mathrel", "\\mathopen", "\\mathclose", "\\mathpunct", "\\mathinner"],
81135
+ props: {
81136
+ numArgs: 1,
81137
+ primitive: true
81138
+ },
81139
+ handler(_ref, args) {
81140
+ var {
81141
+ parser,
81142
+ funcName
81143
+ } = _ref;
81144
+ var body = args[0];
81145
+ return {
81146
+ type: "mclass",
81147
+ mode: parser.mode,
81148
+ mclass: "m" + funcName.slice(5),
81149
+ body: ordargument(body),
81150
+ isCharacterBox: utils.isCharacterBox(body)
81151
+ };
81152
+ },
81153
+ htmlBuilder: htmlBuilder$9,
81154
+ mathmlBuilder: mathmlBuilder$8
81155
+ });
81156
+ var binrelClass = (arg) => {
81157
+ var atom = arg.type === "ordgroup" && arg.body.length ? arg.body[0] : arg;
81158
+ if (atom.type === "atom" && (atom.family === "bin" || atom.family === "rel")) {
81159
+ return "m" + atom.family;
81160
+ } else {
81161
+ return "mord";
81162
+ }
81163
+ };
81164
+ defineFunction({
81165
+ type: "mclass",
81166
+ names: ["\\@binrel"],
81167
+ props: {
81168
+ numArgs: 2
81169
+ },
81170
+ handler(_ref2, args) {
81171
+ var {
81172
+ parser
81173
+ } = _ref2;
81174
+ return {
81175
+ type: "mclass",
81176
+ mode: parser.mode,
81177
+ mclass: binrelClass(args[0]),
81178
+ body: ordargument(args[1]),
81179
+ isCharacterBox: utils.isCharacterBox(args[1])
81180
+ };
81181
+ }
81182
+ });
81183
+ defineFunction({
81184
+ type: "mclass",
81185
+ names: ["\\stackrel", "\\overset", "\\underset"],
81186
+ props: {
81187
+ numArgs: 2
81188
+ },
81189
+ handler(_ref3, args) {
81190
+ var {
81191
+ parser,
81192
+ funcName
81193
+ } = _ref3;
81194
+ var baseArg = args[1];
81195
+ var shiftedArg = args[0];
81196
+ var mclass;
81197
+ if (funcName !== "\\stackrel") {
81198
+ mclass = binrelClass(baseArg);
81199
+ } else {
81200
+ mclass = "mrel";
81201
+ }
81202
+ var baseOp = {
81203
+ type: "op",
81204
+ mode: baseArg.mode,
81205
+ limits: true,
81206
+ alwaysHandleSupSub: true,
81207
+ parentIsSupSub: false,
81208
+ symbol: false,
81209
+ suppressBaseShift: funcName !== "\\stackrel",
81210
+ body: ordargument(baseArg)
81211
+ };
81212
+ var supsub = {
81213
+ type: "supsub",
81214
+ mode: shiftedArg.mode,
81215
+ base: baseOp,
81216
+ sup: funcName === "\\underset" ? null : shiftedArg,
81217
+ sub: funcName === "\\underset" ? shiftedArg : null
81218
+ };
81219
+ return {
81220
+ type: "mclass",
81221
+ mode: parser.mode,
81222
+ mclass,
81223
+ body: [supsub],
81224
+ isCharacterBox: utils.isCharacterBox(supsub)
81225
+ };
81226
+ },
81227
+ htmlBuilder: htmlBuilder$9,
81228
+ mathmlBuilder: mathmlBuilder$8
81229
+ });
81230
+ defineFunction({
81231
+ type: "pmb",
81232
+ names: ["\\pmb"],
81233
+ props: {
81234
+ numArgs: 1,
81235
+ allowedInText: true
81236
+ },
81237
+ handler(_ref, args) {
81238
+ var {
81239
+ parser
81240
+ } = _ref;
81241
+ return {
81242
+ type: "pmb",
81243
+ mode: parser.mode,
81244
+ mclass: binrelClass(args[0]),
81245
+ body: ordargument(args[0])
81246
+ };
81247
+ },
81248
+ htmlBuilder(group, options) {
81249
+ var elements = buildExpression$1(group.body, options, true);
81250
+ var node = buildCommon.makeSpan([group.mclass], elements, options);
81251
+ node.style.textShadow = "0.02em 0.01em 0.04px";
81252
+ return node;
81253
+ },
81254
+ mathmlBuilder(group, style2) {
81255
+ var inner2 = buildExpression(group.body, style2);
81256
+ var node = new mathMLTree.MathNode("mstyle", inner2);
81257
+ node.setAttribute("style", "text-shadow: 0.02em 0.01em 0.04px");
81258
+ return node;
81259
+ }
81260
+ });
79630
81261
  var cdArrowFunctionName = {
79631
81262
  ">": "\\\\cdrightarrow",
79632
81263
  "<": "\\\\cdleftarrow",
@@ -79901,11 +81532,11 @@ img.ProseMirror-separator {
79901
81532
  };
79902
81533
  }
79903
81534
  });
79904
- var htmlBuilder$9 = (group, options) => {
81535
+ var htmlBuilder$8 = (group, options) => {
79905
81536
  var elements = buildExpression$1(group.body, options.withColor(group.color), false);
79906
81537
  return buildCommon.makeFragment(elements);
79907
81538
  };
79908
- var mathmlBuilder$8 = (group, options) => {
81539
+ var mathmlBuilder$7 = (group, options) => {
79909
81540
  var inner2 = buildExpression(group.body, options.withColor(group.color));
79910
81541
  var node = new mathMLTree.MathNode("mstyle", inner2);
79911
81542
  node.setAttribute("mathcolor", group.color);
@@ -79932,8 +81563,8 @@ img.ProseMirror-separator {
79932
81563
  body: ordargument(body)
79933
81564
  };
79934
81565
  },
79935
- htmlBuilder: htmlBuilder$9,
79936
- mathmlBuilder: mathmlBuilder$8
81566
+ htmlBuilder: htmlBuilder$8,
81567
+ mathmlBuilder: mathmlBuilder$7
79937
81568
  });
79938
81569
  defineFunction({
79939
81570
  type: "color",
@@ -79958,8 +81589,8 @@ img.ProseMirror-separator {
79958
81589
  body
79959
81590
  };
79960
81591
  },
79961
- htmlBuilder: htmlBuilder$9,
79962
- mathmlBuilder: mathmlBuilder$8
81592
+ htmlBuilder: htmlBuilder$8,
81593
+ mathmlBuilder: mathmlBuilder$7
79963
81594
  });
79964
81595
  defineFunction({
79965
81596
  type: "cr",
@@ -80278,6 +81909,8 @@ img.ProseMirror-separator {
80278
81909
  var middle;
80279
81910
  var repeat;
80280
81911
  var bottom2;
81912
+ var svgLabel = "";
81913
+ var viewBoxWidth = 0;
80281
81914
  top2 = repeat = bottom2 = delim;
80282
81915
  middle = null;
80283
81916
  var font = "Size1-Regular";
@@ -80299,44 +81932,64 @@ img.ProseMirror-separator {
80299
81932
  bottom2 = "\\Downarrow";
80300
81933
  } else if (utils.contains(verts, delim)) {
80301
81934
  repeat = "\u2223";
81935
+ svgLabel = "vert";
81936
+ viewBoxWidth = 333;
80302
81937
  } else if (utils.contains(doubleVerts, delim)) {
80303
81938
  repeat = "\u2225";
81939
+ svgLabel = "doublevert";
81940
+ viewBoxWidth = 556;
80304
81941
  } else if (delim === "[" || delim === "\\lbrack") {
80305
81942
  top2 = "\u23A1";
80306
81943
  repeat = "\u23A2";
80307
81944
  bottom2 = "\u23A3";
80308
81945
  font = "Size4-Regular";
81946
+ svgLabel = "lbrack";
81947
+ viewBoxWidth = 667;
80309
81948
  } else if (delim === "]" || delim === "\\rbrack") {
80310
81949
  top2 = "\u23A4";
80311
81950
  repeat = "\u23A5";
80312
81951
  bottom2 = "\u23A6";
80313
81952
  font = "Size4-Regular";
81953
+ svgLabel = "rbrack";
81954
+ viewBoxWidth = 667;
80314
81955
  } else if (delim === "\\lfloor" || delim === "\u230A") {
80315
81956
  repeat = top2 = "\u23A2";
80316
81957
  bottom2 = "\u23A3";
80317
81958
  font = "Size4-Regular";
81959
+ svgLabel = "lfloor";
81960
+ viewBoxWidth = 667;
80318
81961
  } else if (delim === "\\lceil" || delim === "\u2308") {
80319
81962
  top2 = "\u23A1";
80320
81963
  repeat = bottom2 = "\u23A2";
80321
81964
  font = "Size4-Regular";
81965
+ svgLabel = "lceil";
81966
+ viewBoxWidth = 667;
80322
81967
  } else if (delim === "\\rfloor" || delim === "\u230B") {
80323
81968
  repeat = top2 = "\u23A5";
80324
81969
  bottom2 = "\u23A6";
80325
81970
  font = "Size4-Regular";
81971
+ svgLabel = "rfloor";
81972
+ viewBoxWidth = 667;
80326
81973
  } else if (delim === "\\rceil" || delim === "\u2309") {
80327
81974
  top2 = "\u23A4";
80328
81975
  repeat = bottom2 = "\u23A5";
80329
81976
  font = "Size4-Regular";
81977
+ svgLabel = "rceil";
81978
+ viewBoxWidth = 667;
80330
81979
  } else if (delim === "(" || delim === "\\lparen") {
80331
81980
  top2 = "\u239B";
80332
81981
  repeat = "\u239C";
80333
81982
  bottom2 = "\u239D";
80334
81983
  font = "Size4-Regular";
81984
+ svgLabel = "lparen";
81985
+ viewBoxWidth = 875;
80335
81986
  } else if (delim === ")" || delim === "\\rparen") {
80336
81987
  top2 = "\u239E";
80337
81988
  repeat = "\u239F";
80338
81989
  bottom2 = "\u23A0";
80339
81990
  font = "Size4-Regular";
81991
+ svgLabel = "rparen";
81992
+ viewBoxWidth = 875;
80340
81993
  } else if (delim === "\\{" || delim === "\\lbrace") {
80341
81994
  top2 = "\u23A7";
80342
81995
  middle = "\u23A8";
@@ -80392,21 +82045,43 @@ img.ProseMirror-separator {
80392
82045
  }
80393
82046
  var depth = realHeightTotal / 2 - axisHeight;
80394
82047
  var stack = [];
80395
- stack.push(makeGlyphSpan(bottom2, font, mode));
80396
- stack.push(lap);
80397
- if (middle === null) {
80398
- var innerHeight2 = realHeightTotal - topHeightTotal - bottomHeightTotal + 2 * lapInEms;
80399
- stack.push(makeInner(repeat, innerHeight2, options));
82048
+ if (svgLabel.length > 0) {
82049
+ var midHeight = realHeightTotal - topHeightTotal - bottomHeightTotal;
82050
+ var viewBoxHeight = Math.round(realHeightTotal * 1e3);
82051
+ var pathStr = tallDelim(svgLabel, Math.round(midHeight * 1e3));
82052
+ var path2 = new PathNode(svgLabel, pathStr);
82053
+ var width = (viewBoxWidth / 1e3).toFixed(3) + "em";
82054
+ var height = (viewBoxHeight / 1e3).toFixed(3) + "em";
82055
+ var svg = new SvgNode([path2], {
82056
+ "width": width,
82057
+ "height": height,
82058
+ "viewBox": "0 0 " + viewBoxWidth + " " + viewBoxHeight
82059
+ });
82060
+ var wrapper = buildCommon.makeSvgSpan([], [svg], options);
82061
+ wrapper.height = viewBoxHeight / 1e3;
82062
+ wrapper.style.width = width;
82063
+ wrapper.style.height = height;
82064
+ stack.push({
82065
+ type: "elem",
82066
+ elem: wrapper
82067
+ });
80400
82068
  } else {
80401
- var _innerHeight = (realHeightTotal - topHeightTotal - bottomHeightTotal - middleHeightTotal) / 2 + 2 * lapInEms;
80402
- stack.push(makeInner(repeat, _innerHeight, options));
82069
+ stack.push(makeGlyphSpan(bottom2, font, mode));
80403
82070
  stack.push(lap);
80404
- stack.push(makeGlyphSpan(middle, font, mode));
82071
+ if (middle === null) {
82072
+ var innerHeight2 = realHeightTotal - topHeightTotal - bottomHeightTotal + 2 * lapInEms;
82073
+ stack.push(makeInner(repeat, innerHeight2, options));
82074
+ } else {
82075
+ var _innerHeight = (realHeightTotal - topHeightTotal - bottomHeightTotal - middleHeightTotal) / 2 + 2 * lapInEms;
82076
+ stack.push(makeInner(repeat, _innerHeight, options));
82077
+ stack.push(lap);
82078
+ stack.push(makeGlyphSpan(middle, font, mode));
82079
+ stack.push(lap);
82080
+ stack.push(makeInner(repeat, _innerHeight, options));
82081
+ }
80405
82082
  stack.push(lap);
80406
- stack.push(makeInner(repeat, _innerHeight, options));
82083
+ stack.push(makeGlyphSpan(top2, font, mode));
80407
82084
  }
80408
- stack.push(lap);
80409
- stack.push(makeGlyphSpan(top2, font, mode));
80410
82085
  var newOptions = options.havingBaseStyle(Style$1.TEXT);
80411
82086
  var inner2 = buildCommon.makeVList({
80412
82087
  positionType: "bottom",
@@ -80888,9 +82563,9 @@ img.ProseMirror-separator {
80888
82563
  return middleNode;
80889
82564
  }
80890
82565
  });
80891
- var htmlBuilder$8 = (group, options) => {
82566
+ var htmlBuilder$7 = (group, options) => {
80892
82567
  var inner2 = buildCommon.wrapFragment(buildGroup$1(group.body, options), options);
80893
- var label = group.label.substr(1);
82568
+ var label = group.label.slice(1);
80894
82569
  var scale = options.sizeMultiplier;
80895
82570
  var img;
80896
82571
  var imgShift = 0;
@@ -81013,7 +82688,7 @@ img.ProseMirror-separator {
81013
82688
  return buildCommon.makeSpan(["mord"], [vlist], options);
81014
82689
  }
81015
82690
  };
81016
- var mathmlBuilder$7 = (group, options) => {
82691
+ var mathmlBuilder$6 = (group, options) => {
81017
82692
  var fboxsep = 0;
81018
82693
  var node = new mathMLTree.MathNode(group.label.indexOf("colorbox") > -1 ? "mpadded" : "menclose", [buildGroup(group.body, options)]);
81019
82694
  switch (group.label) {
@@ -81082,8 +82757,8 @@ img.ProseMirror-separator {
81082
82757
  body
81083
82758
  };
81084
82759
  },
81085
- htmlBuilder: htmlBuilder$8,
81086
- mathmlBuilder: mathmlBuilder$7
82760
+ htmlBuilder: htmlBuilder$7,
82761
+ mathmlBuilder: mathmlBuilder$6
81087
82762
  });
81088
82763
  defineFunction({
81089
82764
  type: "enclose",
@@ -81110,8 +82785,8 @@ img.ProseMirror-separator {
81110
82785
  body
81111
82786
  };
81112
82787
  },
81113
- htmlBuilder: htmlBuilder$8,
81114
- mathmlBuilder: mathmlBuilder$7
82788
+ htmlBuilder: htmlBuilder$7,
82789
+ mathmlBuilder: mathmlBuilder$6
81115
82790
  });
81116
82791
  defineFunction({
81117
82792
  type: "enclose",
@@ -81152,8 +82827,8 @@ img.ProseMirror-separator {
81152
82827
  body
81153
82828
  };
81154
82829
  },
81155
- htmlBuilder: htmlBuilder$8,
81156
- mathmlBuilder: mathmlBuilder$7
82830
+ htmlBuilder: htmlBuilder$7,
82831
+ mathmlBuilder: mathmlBuilder$6
81157
82832
  });
81158
82833
  defineFunction({
81159
82834
  type: "enclose",
@@ -81351,13 +83026,13 @@ img.ProseMirror-separator {
81351
83026
  };
81352
83027
  }
81353
83028
  function dCellStyle(envName) {
81354
- if (envName.substr(0, 1) === "d") {
83029
+ if (envName.slice(0, 1) === "d") {
81355
83030
  return "display";
81356
83031
  } else {
81357
83032
  return "text";
81358
83033
  }
81359
83034
  }
81360
- var htmlBuilder$7 = function htmlBuilder2(group, options) {
83035
+ var htmlBuilder$6 = function htmlBuilder2(group, options) {
81361
83036
  var r2;
81362
83037
  var c2;
81363
83038
  var nr = group.body.length;
@@ -81583,7 +83258,7 @@ img.ProseMirror-separator {
81583
83258
  l: "left ",
81584
83259
  r: "right "
81585
83260
  };
81586
- var mathmlBuilder$6 = function mathmlBuilder2(group, options) {
83261
+ var mathmlBuilder$5 = function mathmlBuilder2(group, options) {
81587
83262
  var tbl = [];
81588
83263
  var glue = new mathMLTree.MathNode("mtd", [], ["mtr-glue"]);
81589
83264
  var tag = new mathMLTree.MathNode("mtd", [], ["mml-eqn-num"]);
@@ -81781,8 +83456,8 @@ img.ProseMirror-separator {
81781
83456
  };
81782
83457
  return parseArray(context.parser, res, dCellStyle(context.envName));
81783
83458
  },
81784
- htmlBuilder: htmlBuilder$7,
81785
- mathmlBuilder: mathmlBuilder$6
83459
+ htmlBuilder: htmlBuilder$6,
83460
+ mathmlBuilder: mathmlBuilder$5
81786
83461
  });
81787
83462
  defineEnvironment({
81788
83463
  type: "array",
@@ -81842,8 +83517,8 @@ img.ProseMirror-separator {
81842
83517
  rightColor: void 0
81843
83518
  } : res;
81844
83519
  },
81845
- htmlBuilder: htmlBuilder$7,
81846
- mathmlBuilder: mathmlBuilder$6
83520
+ htmlBuilder: htmlBuilder$6,
83521
+ mathmlBuilder: mathmlBuilder$5
81847
83522
  });
81848
83523
  defineEnvironment({
81849
83524
  type: "array",
@@ -81859,8 +83534,8 @@ img.ProseMirror-separator {
81859
83534
  res.colSeparationType = "small";
81860
83535
  return res;
81861
83536
  },
81862
- htmlBuilder: htmlBuilder$7,
81863
- mathmlBuilder: mathmlBuilder$6
83537
+ htmlBuilder: htmlBuilder$6,
83538
+ mathmlBuilder: mathmlBuilder$5
81864
83539
  });
81865
83540
  defineEnvironment({
81866
83541
  type: "array",
@@ -81896,8 +83571,8 @@ img.ProseMirror-separator {
81896
83571
  }
81897
83572
  return res;
81898
83573
  },
81899
- htmlBuilder: htmlBuilder$7,
81900
- mathmlBuilder: mathmlBuilder$6
83574
+ htmlBuilder: htmlBuilder$6,
83575
+ mathmlBuilder: mathmlBuilder$5
81901
83576
  });
81902
83577
  defineEnvironment({
81903
83578
  type: "array",
@@ -81930,8 +83605,8 @@ img.ProseMirror-separator {
81930
83605
  rightColor: void 0
81931
83606
  };
81932
83607
  },
81933
- htmlBuilder: htmlBuilder$7,
81934
- mathmlBuilder: mathmlBuilder$6
83608
+ htmlBuilder: htmlBuilder$6,
83609
+ mathmlBuilder: mathmlBuilder$5
81935
83610
  });
81936
83611
  defineEnvironment({
81937
83612
  type: "array",
@@ -81940,8 +83615,8 @@ img.ProseMirror-separator {
81940
83615
  numArgs: 0
81941
83616
  },
81942
83617
  handler: alignedHandler,
81943
- htmlBuilder: htmlBuilder$7,
81944
- mathmlBuilder: mathmlBuilder$6
83618
+ htmlBuilder: htmlBuilder$6,
83619
+ mathmlBuilder: mathmlBuilder$5
81945
83620
  });
81946
83621
  defineEnvironment({
81947
83622
  type: "array",
@@ -81966,8 +83641,8 @@ img.ProseMirror-separator {
81966
83641
  };
81967
83642
  return parseArray(context.parser, res, "display");
81968
83643
  },
81969
- htmlBuilder: htmlBuilder$7,
81970
- mathmlBuilder: mathmlBuilder$6
83644
+ htmlBuilder: htmlBuilder$6,
83645
+ mathmlBuilder: mathmlBuilder$5
81971
83646
  });
81972
83647
  defineEnvironment({
81973
83648
  type: "array",
@@ -81976,8 +83651,8 @@ img.ProseMirror-separator {
81976
83651
  numArgs: 1
81977
83652
  },
81978
83653
  handler: alignedHandler,
81979
- htmlBuilder: htmlBuilder$7,
81980
- mathmlBuilder: mathmlBuilder$6
83654
+ htmlBuilder: htmlBuilder$6,
83655
+ mathmlBuilder: mathmlBuilder$5
81981
83656
  });
81982
83657
  defineEnvironment({
81983
83658
  type: "array",
@@ -81996,8 +83671,8 @@ img.ProseMirror-separator {
81996
83671
  };
81997
83672
  return parseArray(context.parser, res, "display");
81998
83673
  },
81999
- htmlBuilder: htmlBuilder$7,
82000
- mathmlBuilder: mathmlBuilder$6
83674
+ htmlBuilder: htmlBuilder$6,
83675
+ mathmlBuilder: mathmlBuilder$5
82001
83676
  });
82002
83677
  defineEnvironment({
82003
83678
  type: "array",
@@ -82009,8 +83684,8 @@ img.ProseMirror-separator {
82009
83684
  validateAmsEnvironmentContext(context);
82010
83685
  return parseCD(context.parser);
82011
83686
  },
82012
- htmlBuilder: htmlBuilder$7,
82013
- mathmlBuilder: mathmlBuilder$6
83687
+ htmlBuilder: htmlBuilder$6,
83688
+ mathmlBuilder: mathmlBuilder$5
82014
83689
  });
82015
83690
  defineMacro("\\nonumber", "\\gdef\\@eqnsw{0}");
82016
83691
  defineMacro("\\notag", "\\nonumber");
@@ -82078,144 +83753,6 @@ img.ProseMirror-separator {
82078
83753
  };
82079
83754
  }
82080
83755
  });
82081
- var makeSpan = buildCommon.makeSpan;
82082
- function htmlBuilder$6(group, options) {
82083
- var elements = buildExpression$1(group.body, options, true);
82084
- return makeSpan([group.mclass], elements, options);
82085
- }
82086
- function mathmlBuilder$5(group, options) {
82087
- var node;
82088
- var inner2 = buildExpression(group.body, options);
82089
- if (group.mclass === "minner") {
82090
- node = new mathMLTree.MathNode("mpadded", inner2);
82091
- } else if (group.mclass === "mord") {
82092
- if (group.isCharacterBox) {
82093
- node = inner2[0];
82094
- node.type = "mi";
82095
- } else {
82096
- node = new mathMLTree.MathNode("mi", inner2);
82097
- }
82098
- } else {
82099
- if (group.isCharacterBox) {
82100
- node = inner2[0];
82101
- node.type = "mo";
82102
- } else {
82103
- node = new mathMLTree.MathNode("mo", inner2);
82104
- }
82105
- if (group.mclass === "mbin") {
82106
- node.attributes.lspace = "0.22em";
82107
- node.attributes.rspace = "0.22em";
82108
- } else if (group.mclass === "mpunct") {
82109
- node.attributes.lspace = "0em";
82110
- node.attributes.rspace = "0.17em";
82111
- } else if (group.mclass === "mopen" || group.mclass === "mclose") {
82112
- node.attributes.lspace = "0em";
82113
- node.attributes.rspace = "0em";
82114
- } else if (group.mclass === "minner") {
82115
- node.attributes.lspace = "0.0556em";
82116
- node.attributes.width = "+0.1111em";
82117
- }
82118
- }
82119
- return node;
82120
- }
82121
- defineFunction({
82122
- type: "mclass",
82123
- names: ["\\mathord", "\\mathbin", "\\mathrel", "\\mathopen", "\\mathclose", "\\mathpunct", "\\mathinner"],
82124
- props: {
82125
- numArgs: 1,
82126
- primitive: true
82127
- },
82128
- handler(_ref, args) {
82129
- var {
82130
- parser,
82131
- funcName
82132
- } = _ref;
82133
- var body = args[0];
82134
- return {
82135
- type: "mclass",
82136
- mode: parser.mode,
82137
- mclass: "m" + funcName.substr(5),
82138
- body: ordargument(body),
82139
- isCharacterBox: utils.isCharacterBox(body)
82140
- };
82141
- },
82142
- htmlBuilder: htmlBuilder$6,
82143
- mathmlBuilder: mathmlBuilder$5
82144
- });
82145
- var binrelClass = (arg) => {
82146
- var atom = arg.type === "ordgroup" && arg.body.length ? arg.body[0] : arg;
82147
- if (atom.type === "atom" && (atom.family === "bin" || atom.family === "rel")) {
82148
- return "m" + atom.family;
82149
- } else {
82150
- return "mord";
82151
- }
82152
- };
82153
- defineFunction({
82154
- type: "mclass",
82155
- names: ["\\@binrel"],
82156
- props: {
82157
- numArgs: 2
82158
- },
82159
- handler(_ref2, args) {
82160
- var {
82161
- parser
82162
- } = _ref2;
82163
- return {
82164
- type: "mclass",
82165
- mode: parser.mode,
82166
- mclass: binrelClass(args[0]),
82167
- body: ordargument(args[1]),
82168
- isCharacterBox: utils.isCharacterBox(args[1])
82169
- };
82170
- }
82171
- });
82172
- defineFunction({
82173
- type: "mclass",
82174
- names: ["\\stackrel", "\\overset", "\\underset"],
82175
- props: {
82176
- numArgs: 2
82177
- },
82178
- handler(_ref3, args) {
82179
- var {
82180
- parser,
82181
- funcName
82182
- } = _ref3;
82183
- var baseArg = args[1];
82184
- var shiftedArg = args[0];
82185
- var mclass;
82186
- if (funcName !== "\\stackrel") {
82187
- mclass = binrelClass(baseArg);
82188
- } else {
82189
- mclass = "mrel";
82190
- }
82191
- var baseOp = {
82192
- type: "op",
82193
- mode: baseArg.mode,
82194
- limits: true,
82195
- alwaysHandleSupSub: true,
82196
- parentIsSupSub: false,
82197
- symbol: false,
82198
- suppressBaseShift: funcName !== "\\stackrel",
82199
- body: ordargument(baseArg)
82200
- };
82201
- var supsub = {
82202
- type: "supsub",
82203
- mode: shiftedArg.mode,
82204
- base: baseOp,
82205
- sup: funcName === "\\underset" ? null : shiftedArg,
82206
- sub: funcName === "\\underset" ? shiftedArg : null
82207
- };
82208
- return {
82209
- type: "mclass",
82210
- mode: parser.mode,
82211
- mclass,
82212
- body: [supsub],
82213
- isCharacterBox: utils.isCharacterBox(supsub)
82214
- };
82215
- },
82216
- htmlBuilder: htmlBuilder$6,
82217
- mathmlBuilder: mathmlBuilder$5
82218
- });
82219
83756
  var htmlBuilder$5 = (group, options) => {
82220
83757
  var font = group.font;
82221
83758
  var newOptions = options.withFont(font);
@@ -83542,7 +85079,7 @@ img.ProseMirror-separator {
83542
85079
  var fontName = large ? "Size2-Regular" : "Size1-Regular";
83543
85080
  var stash = "";
83544
85081
  if (group.name === "\\oiint" || group.name === "\\oiiint") {
83545
- stash = group.name.substr(1);
85082
+ stash = group.name.slice(1);
83546
85083
  group.name = stash === "oiint" ? "\\iint" : "\\iiint";
83547
85084
  }
83548
85085
  base2 = buildCommon.makeSymbol(group.name, fontName, "math", options, ["mop", "op-symbol", large ? "large-op" : "small-op"]);
@@ -85341,7 +86878,7 @@ img.ProseMirror-separator {
85341
86878
  var next = context.expandAfterFuture().text;
85342
86879
  if (next in dotsByToken) {
85343
86880
  thedots = dotsByToken[next];
85344
- } else if (next.substr(0, 4) === "\\not") {
86881
+ } else if (next.slice(0, 4) === "\\not") {
85345
86882
  thedots = "\\dotsb";
85346
86883
  } else if (next in symbols.math) {
85347
86884
  if (utils.contains(["bin", "rel"], symbols.math[next].group)) {
@@ -85430,7 +86967,6 @@ img.ProseMirror-separator {
85430
86967
  defineMacro("\\pod", "\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");
85431
86968
  defineMacro("\\pmod", "\\pod{{\\rm mod}\\mkern6mu#1}");
85432
86969
  defineMacro("\\mod", "\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");
85433
- defineMacro("\\pmb", "\\html@mathml{\\@binrel{#1}{\\mathrlap{#1}\\kern0.5px#1}}{\\mathbf{#1}}");
85434
86970
  defineMacro("\\newline", "\\\\\\relax");
85435
86971
  defineMacro("\\TeX", "\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");
85436
86972
  var latexRaiseA = makeEm(fontMetricsData["Main-Regular"]["T".charCodeAt(0)][1] - 0.7 * fontMetricsData["Main-Regular"]["A".charCodeAt(0)][1]);
@@ -87067,7 +88603,7 @@ img.ProseMirror-separator {
87067
88603
  if (this.settings.strict && this.mode === "math") {
87068
88604
  this.settings.reportNonstrict("unicodeTextInMathMode", 'Accented Unicode text character "' + text2[0] + '" used in math mode', nucleus);
87069
88605
  }
87070
- text2 = unicodeSymbols[text2[0]] + text2.substr(1);
88606
+ text2 = unicodeSymbols[text2[0]] + text2.slice(1);
87071
88607
  }
87072
88608
  var match = combiningDiacriticalMarksEndRegex.exec(text2);
87073
88609
  if (match) {
@@ -87218,7 +88754,7 @@ img.ProseMirror-separator {
87218
88754
  }
87219
88755
  };
87220
88756
  var katex = {
87221
- version: "0.16.0",
88757
+ version: "0.16.2",
87222
88758
  render,
87223
88759
  renderToString,
87224
88760
  ParseError,