@kerebron/legacy-compat 0.8.7 → 0.8.9

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.
package/dist/kerebron.js CHANGED
@@ -7117,8 +7117,43 @@ function setPathValue(e, t, n) {
7117
7117
  }
7118
7118
  }
7119
7119
  //#endregion
7120
- //#region ../editor/src/search/query.ts
7121
- var SearchQuery = class {
7120
+ //#region \0deno::TypeScript::@kerebron/editor/frontmatter::/home/runner/work/kerebron/kerebron/packages/editor/src/utilities/frontmatter.ts
7121
+ var FrontmatterMap = class extends Map {
7122
+ origMap;
7123
+ origString = "";
7124
+ constructor() {
7125
+ super();
7126
+ }
7127
+ }, FrontmatterServiceImpl = class {
7128
+ constructor(e) {
7129
+ this.yamlService = e;
7130
+ }
7131
+ parse(e) {
7132
+ let t = new FrontmatterMap();
7133
+ t.origString = e;
7134
+ let n = e.indexOf("\n---\n", 4);
7135
+ if (e.startsWith("---\n") && n > -1) {
7136
+ let r = this.yamlService.parse(e.substring(4, n));
7137
+ if (r instanceof Map) {
7138
+ t.origMap = r;
7139
+ for (let [e, n] of r) t.set(e, structuredClone(n));
7140
+ }
7141
+ }
7142
+ return t;
7143
+ }
7144
+ stringify(e) {
7145
+ return e ? e.origMap?.entries === e.entries ? e.origString : `---
7146
+ ${this.yamlService.stringify(e)}
7147
+ ---
7148
+ ` : "";
7149
+ }
7150
+ }, BlankFrontmatterServiceImpl = class {
7151
+ constructor() {}
7152
+ parse(e) {}
7153
+ stringify(e) {
7154
+ return "";
7155
+ }
7156
+ }, SearchQuery = class {
7122
7157
  search;
7123
7158
  caseSensitive;
7124
7159
  literal;
@@ -7581,7 +7616,7 @@ var ExtensionManager = class {
7581
7616
  }
7582
7617
  }
7583
7618
  for (let t of a) e.ci.register(t.name, t);
7584
- e.ci.register("yaml", yaml_exports), e.ci.register("workspace", new WorkspaceImpl()), this.initPlugins(e, t);
7619
+ e.ci.register("yaml", yaml_exports), e.ci.register("frontmatter", new FrontmatterServiceImpl(yaml_exports)), e.ci.register("workspace", new WorkspaceImpl()), this.initPlugins(e, t);
7585
7620
  for (let e of this.extensions) e.created();
7586
7621
  }
7587
7622
  };
@@ -7613,7 +7648,22 @@ function createChainableState(e, t) {
7613
7648
  }
7614
7649
  //#endregion
7615
7650
  //#region ../editor/src/commands/baseCommandFactories.ts
7616
- var wrapInList = (e, t = null) => function(n, r, a) {
7651
+ var liftListItemParagraph = () => (e, t) => {
7652
+ let { $cursor: n } = e.selection;
7653
+ if (!n || n.parentOffset > 0 || !n.parent.isTextblock) return !1;
7654
+ for (let r = n.depth; r > 0; r--) {
7655
+ let a = n.node(r);
7656
+ if (a.type.name === "list_item" || a.type.name === "bullet_list" || a.type.name === "task_item" || a.type.name === "task_list") {
7657
+ let o = a.type.name === "list_item" ? r : r - 1;
7658
+ if (a.type.name === "list_item" || n.node(r - 1), n.index(o) === 0) return !1;
7659
+ let s = n.blockRange();
7660
+ if (!s) return !1;
7661
+ let c = liftTarget(s);
7662
+ return c == null ? !1 : (t && t(e.tr.lift(s, c).scrollIntoView()), !0);
7663
+ }
7664
+ }
7665
+ return !1;
7666
+ }, wrapInList = (e, t = null) => function(n, r, a) {
7617
7667
  let { $from: o, $to: s } = n.selection, c = o.blockRange(s);
7618
7668
  if (!c) return !1;
7619
7669
  let l = r ? n.tr : null;
@@ -7987,7 +8037,26 @@ function toggleMark(e, t = null, n) {
7987
8037
  return !0;
7988
8038
  };
7989
8039
  }
7990
- var undoInputRule = () => undoInputRuleCommand, command = (e) => (...t) => e.apply(void 0, t), baseCommandFactories = {
8040
+ var isList$1 = (e) => e.type.name === "bullet_list" || e.type.name === "ordered_list" || e.type.name === "task_list", keepRange = (e, t) => (n, r) => {
8041
+ let a = n.doc.resolve(e), o = n.doc.resolve(t);
8042
+ for (let t = a.depth; t > 0; t--) if (isList$1(a.node(t))) {
8043
+ e = a.before(t);
8044
+ break;
8045
+ }
8046
+ for (let e = o.depth; e > 0; e--) if (isList$1(o.node(e))) {
8047
+ t = o.after(e);
8048
+ break;
8049
+ }
8050
+ if (!r) return !0;
8051
+ let s = n.doc.slice(e, t), c = n.tr.replace(0, n.doc.content.size, s);
8052
+ return c = c.setSelection(TextSelection.atStart(c.doc)), r && r(c), !0;
8053
+ }, keepSelection = () => (e, t) => {
8054
+ if (!t) return !0;
8055
+ let n = e.selection.content(), r = e.tr.replace(0, e.doc.content.size, n);
8056
+ return r.setSelection(TextSelection.atStart(r.doc)), t && t(r), !0;
8057
+ }, undoInputRule = () => undoInputRuleCommand, command = (e) => (...t) => e.apply(void 0, t), baseCommandFactories = {
8058
+ keepRange,
8059
+ keepSelection,
7991
8060
  wrapInList,
7992
8061
  wrapRangeInList,
7993
8062
  deleteSelection,
@@ -7998,6 +8067,7 @@ var undoInputRule = () => undoInputRuleCommand, command = (e) => (...t) => e.app
7998
8067
  joinUp,
7999
8068
  joinDown,
8000
8069
  lift,
8070
+ liftListItemParagraph,
8001
8071
  newlineInCode,
8002
8072
  exitCode,
8003
8073
  createParagraphNear,
@@ -8030,7 +8100,7 @@ function firstCommand(...e) {
8030
8100
  }
8031
8101
  //#endregion
8032
8102
  //#region ../editor/src/commands/keyCommandFactories.ts
8033
- var backspace = firstCommand(baseCommandFactories.undoInputRule(), baseCommandFactories.deleteSelection(), baseCommandFactories.joinBackward(), baseCommandFactories.selectNodeBackward()), del = firstCommand(baseCommandFactories.deleteSelection(), baseCommandFactories.joinForward(), baseCommandFactories.selectNodeForward()), enter = firstCommand(baseCommandFactories.newlineInCode(), baseCommandFactories.createParagraphNear(), baseCommandFactories.liftEmptyBlock(), baseCommandFactories.splitBlock()), keyCommandFactories = {
8103
+ var backspace = firstCommand(baseCommandFactories.undoInputRule(), baseCommandFactories.deleteSelection(), baseCommandFactories.liftListItemParagraph(), baseCommandFactories.joinBackward(), baseCommandFactories.selectNodeBackward()), del = firstCommand(baseCommandFactories.deleteSelection(), baseCommandFactories.joinForward(), baseCommandFactories.selectNodeForward()), enter = firstCommand(baseCommandFactories.newlineInCode(), baseCommandFactories.createParagraphNear(), baseCommandFactories.liftEmptyBlock(), baseCommandFactories.splitBlock()), keyCommandFactories = {
8034
8104
  backspace: () => backspace,
8035
8105
  del: () => del,
8036
8106
  enter: () => enter
@@ -8463,10 +8533,18 @@ var CoreEditor = class e extends EventTarget {
8463
8533
  return a.createView(o), a.setupPlugins(), a.dispatchEvent(new CustomEvent("ready")), a;
8464
8534
  }
8465
8535
  clone(t) {
8466
- let n = new ExtensionManager(this.extensionManager.editorKits, (t || this.config).debug), r = new e({ ...t }, this.schema, n);
8536
+ let n = new ExtensionManager(this.extensionManager.editorKits, (t || this.config).debug), r = new e({
8537
+ assetLoad: this.config.assetLoad,
8538
+ ...t
8539
+ }, this.schema, n);
8467
8540
  n.created(r, this.schema);
8468
- let a = this.getJSON();
8469
- return r.createView(a), r.setupPlugins(), r;
8541
+ let a = this.getJSON(), o = this.state.selection;
8542
+ r.createView(a, o), r.setupPlugins();
8543
+ {
8544
+ let e = this.state, t = r.state.tr.setMeta("cloned", e);
8545
+ r.dispatchTransaction(t);
8546
+ }
8547
+ return r;
8470
8548
  }
8471
8549
  getExtension(e) {
8472
8550
  return this.ci.resolve(e);
@@ -8508,9 +8586,12 @@ var CoreEditor = class e extends EventTarget {
8508
8586
  unlink() {
8509
8587
  this.linkListener && this.linkSource && (this.linkSource.removeEventListener("changed", this.linkListener), this.linkListener = void 0, this.linkSource = void 0);
8510
8588
  }
8511
- createView(e) {
8512
- let t = createNodeFromObject(e, this.schema);
8513
- if (this.state = EditorState.create({ doc: t }), this.config.element) {
8589
+ createView(e, t) {
8590
+ let n = createNodeFromObject(e, this.schema);
8591
+ if (this.state = EditorState.create({
8592
+ doc: n,
8593
+ selection: t
8594
+ }), this.config.element) {
8514
8595
  let e = new EditorView(this.config.element, {
8515
8596
  state: this.state,
8516
8597
  attributes: { class: "kb-editor" },
@@ -8529,11 +8610,11 @@ var CoreEditor = class e extends EventTarget {
8529
8610
  state: this.state,
8530
8611
  dispatchTransaction: (e) => this.dispatchTransaction(e)
8531
8612
  });
8532
- let n = new CustomEvent("doc:loaded", { detail: {
8613
+ let r = new CustomEvent("doc:loaded", { detail: {
8533
8614
  editor: this,
8534
- doc: t
8615
+ doc: n
8535
8616
  } });
8536
- this.dispatchEvent(n);
8617
+ this.dispatchEvent(r);
8537
8618
  }
8538
8619
  dispatchTransaction(e) {
8539
8620
  if (this.state = this.state.apply(e), e.docChanged && this.version++, this.view) {
@@ -8588,15 +8669,19 @@ var CoreEditor = class e extends EventTarget {
8588
8669
  doc: n,
8589
8670
  plugins: this.state.plugins,
8590
8671
  storedMarks: this.state.storedMarks
8591
- });
8592
- runInputRulesTexts()(r, (e) => {
8672
+ }), a = (e) => {
8593
8673
  r = r.apply(e);
8594
- }), this.state = r, this.view && (this.view.updateState(this.state), this.view.dispatch(this.view.state.tr));
8595
- let a = new CustomEvent("doc:loaded", { detail: {
8674
+ };
8675
+ {
8676
+ let e = this.state;
8677
+ a(r.tr.setMeta("cloned", e));
8678
+ }
8679
+ runInputRulesTexts()(r, a), this.state = r, this.view && (this.view.updateState(this.state), this.view.dispatch(this.view.state.tr));
8680
+ let o = new CustomEvent("doc:loaded", { detail: {
8596
8681
  editor: this,
8597
8682
  doc: this.state.doc
8598
8683
  } });
8599
- this.dispatchEvent(a);
8684
+ this.dispatchEvent(o);
8600
8685
  }
8601
8686
  async saveDocument(e) {
8602
8687
  let t = this.getConverter(e), n = this.state.doc.toJSON(), r = Node$3.fromJSON(this.state.schema, n);
@@ -9542,6 +9627,7 @@ function createMediaUploadPlugin(e = {}) {
9542
9627
  }
9543
9628
  },
9544
9629
  handlePaste(t, n, r) {
9630
+ if ((n.clipboardData?.types || []).includes("text/html")) return;
9545
9631
  let a = Array.from(n.clipboardData?.items || []).filter((e) => e.type.startsWith("image/"));
9546
9632
  if (a.length > 0) {
9547
9633
  n.preventDefault();
@@ -9657,15 +9743,32 @@ var PasteState = class {
9657
9743
  key: PastePluginKey,
9658
9744
  state: {
9659
9745
  init() {
9660
- return PastePluginKey.getState(e.state) || new PasteState(e);
9746
+ return new PasteState(e);
9661
9747
  },
9662
9748
  apply(e, t, n, r) {
9663
9749
  if (e.isGeneric) return t;
9664
- let a = e.getMeta(PastePluginKey);
9665
- return t.handleCommands(a, e), t;
9750
+ let a = e.getMeta("cloned");
9751
+ if (a) {
9752
+ let e = PastePluginKey.getState(a);
9753
+ if (e) return e;
9754
+ }
9755
+ let o = e.getMeta(PastePluginKey);
9756
+ return t.handleCommands(o, e), t;
9666
9757
  }
9667
9758
  },
9668
9759
  props: {
9760
+ handleDOMEvents: { copy(t, n) {
9761
+ if (!n.clipboardData) return !1;
9762
+ let r = e.clone();
9763
+ return n.preventDefault(), (async () => {
9764
+ r.state.selection instanceof AllSelection || r.ci.register("frontmatter", new BlankFrontmatterServiceImpl()), r.chain().keepSelection().run();
9765
+ let e = new TextDecoder().decode(await r.saveDocument("text/x-markdown")), t = new TextDecoder().decode(await r.saveDocument("text/html"));
9766
+ await navigator.clipboard.write([new ClipboardItem({
9767
+ "text/plain": new Blob([e], { type: "text/plain" }),
9768
+ "text/html": new Blob([t], { type: "text/html" })
9769
+ })]);
9770
+ })(), !1;
9771
+ } },
9669
9772
  handlePaste(t, n, r) {
9670
9773
  let { clipboardData: a } = n;
9671
9774
  if (!a) return !1;
@@ -12377,6 +12480,9 @@ function getInlineTokensHandlers() {
12377
12480
  if (e.meta === "noEscText") t.current.log(e.content);
12378
12481
  else for (let n of escapeMarkdown(e)) t.current.log(n[0], n[1]);
12379
12482
  }],
12483
+ entity: [(e, t) => {
12484
+ t.current.log(e.content);
12485
+ }],
12380
12486
  strong_open: [(e, t) => {
12381
12487
  t.current.log(e.markup || "**", e);
12382
12488
  }],
@@ -12493,6 +12599,9 @@ function getHtmlInlineTokensHandlers() {
12493
12599
  text: [(e, t) => {
12494
12600
  t.current.log(escapeHtml$1(e.content), e);
12495
12601
  }],
12602
+ entity: [(e, t) => {
12603
+ t.current.log(e.content, e);
12604
+ }],
12496
12605
  ...getHtmlInlineFormatTokensHandlers(),
12497
12606
  link_open: [(e, t) => {
12498
12607
  t.stash("getHtmlInlineTokensHandlers.link_open");
@@ -13430,7 +13539,7 @@ async function extPmToMdConverter(e, t, n, r) {
13430
13539
  doc(e) {
13431
13540
  return { open: async (e, n, r) => {
13432
13541
  let a = new Token("frontmatter", "frontmatter", 0);
13433
- return e.attrs.meta && (t.yaml ? a.content = `---\n${t.yaml.stringify(e.attrs.meta)}\n---\n` : a.content = "---\n# No yaml service\n---\n"), a;
13542
+ return e.attrs.meta && (t.frontmatter ? a.content = t.frontmatter.stringify(e.attrs.meta) : a.content = "---\n# No frontmatter service\n---\n"), a;
13434
13543
  } };
13435
13544
  },
13436
13545
  paragraph(e) {
@@ -13710,6 +13819,10 @@ function elementFromString(e) {
13710
13819
  let t = `<html lang="en"><body>${e}</body></html>`, n = new globalThis.DOMParser().parseFromString(t, "text/html").body;
13711
13820
  return removeWhitespaces(n);
13712
13821
  }
13822
+ function decodeEntity(e) {
13823
+ let t = `<html lang="en"><body>${e}</body></html>`;
13824
+ return new globalThis.DOMParser().parseFromString(t, "text/html").body.innerText;
13825
+ }
13713
13826
  //#endregion
13714
13827
  //#region ../extension-markdown/src/MarkdownParser.ts
13715
13828
  function maybeMerge(e, t) {
@@ -16038,6 +16151,17 @@ function treeToTokens(e, t, n) {
16038
16151
  case "text":
16039
16152
  l(o(u) ?? "", u);
16040
16153
  break;
16154
+ case "entity_reference":
16155
+ {
16156
+ let e = o(u) ?? "", t = [
16157
+ n.row + u.startPosition?.row,
16158
+ n.row + u.endPosition?.row,
16159
+ 0,
16160
+ 0
16161
+ ], r = new Token("entity", "entity", 0);
16162
+ r.map = t, r.content = e, s(r, "entity");
16163
+ }
16164
+ break;
16041
16165
  case "latex_block":
16042
16166
  {
16043
16167
  let t = u.children.find((e) => e?.type === "latex_span_delimiter"), n = u.children.filter((e) => e?.type !== "latex_span_delimiter").map((e) => o(e)).join("");
@@ -16150,7 +16274,13 @@ function treeToTokens(e, t, n) {
16150
16274
  t.map = e, t.meta = "noEscText", t.content = o(u) ?? "", s(t, "backslash_escape");
16151
16275
  }
16152
16276
  break;
16153
- default: throw console.debug("inline_node", u), Error(`Unhandled inline node type: ${u.type}`);
16277
+ default:
16278
+ {
16279
+ console.debug(`Unhandled inline node type: ${u.type}`, u);
16280
+ let t = new Token("text", "", 0);
16281
+ t.map = e, t.meta = "noEscText", t.content = `Error: Unhandled inline node type: ${u.type} ${JSON.stringify(u)}`, s(t, "backslash_escape");
16282
+ }
16283
+ break;
16154
16284
  }
16155
16285
  }
16156
16286
  }, l = (e, n = {
@@ -16423,15 +16553,12 @@ async function mdToPmConverterText(e, t, n) {
16423
16553
  let r = new MarkdownParser(n, await sitterTokenizer(t.assetLoad), {
16424
16554
  frontmatter: { custom: (e, n) => {
16425
16555
  let r = e.stack[0];
16426
- if (r?.type.name === "doc") {
16427
- let e = n.content, a = e.indexOf("\n---\n", 4);
16428
- if (e.startsWith("---\n") && a > -1) {
16429
- let n = t.yaml?.parse(e.substring(4, a)) || void 0;
16430
- r.attrs = {
16431
- ...r.attrs,
16432
- meta: n
16433
- };
16434
- }
16556
+ if (r?.type.name === "doc" && t.frontmatter) {
16557
+ let e = t.frontmatter.parse(n.content) || void 0;
16558
+ r.attrs = {
16559
+ ...r.attrs,
16560
+ meta: e
16561
+ };
16435
16562
  }
16436
16563
  } },
16437
16564
  blockquote: { block: "blockquote" },
@@ -16481,6 +16608,9 @@ async function mdToPmConverterText(e, t, n) {
16481
16608
  };
16482
16609
  }
16483
16610
  },
16611
+ entity: { custom: (e, t, n, r) => {
16612
+ e.addText(decodeEntity(t.content));
16613
+ } },
16484
16614
  hardbreak: { node: "br" },
16485
16615
  em: { mark: "em" },
16486
16616
  underline: { mark: "underline" },
@@ -16511,8 +16641,61 @@ async function mdToPmConverterText(e, t, n) {
16511
16641
  return o.doc;
16512
16642
  }
16513
16643
  //#endregion
16514
- //#region ../extension-markdown/src/preprocess/addEmptyLines.ts
16515
- var addEmptyLines = (e, t) => {
16644
+ //#region ../extension-markdown/src/MarkdownContentMapper.ts
16645
+ var MarkdownContentMapper = class e {
16646
+ result;
16647
+ rawTextArr;
16648
+ constructor(e, t) {
16649
+ this.result = t, this.rawTextArr = [];
16650
+ for (let e of t.rawTextMap) e.nodeIdx >= 0 && this.rawTextArr.push({
16651
+ nodeIdx: e.nodeIdx,
16652
+ maxNodeIdx: e.nodeIdx,
16653
+ targetPos: e.targetPos,
16654
+ targetRow: e.targetRow,
16655
+ targetCol: e.targetCol
16656
+ });
16657
+ this.rawTextArr.sort((e, t) => e.nodeIdx - t.nodeIdx);
16658
+ for (let t = 0; t < this.rawTextArr.length; t++) {
16659
+ let n = t + 1;
16660
+ n < this.rawTextArr.length ? this.rawTextArr[t].maxNodeIdx = this.rawTextArr[n].nodeIdx - 1 : this.rawTextArr[t].maxNodeIdx = e;
16661
+ }
16662
+ }
16663
+ getTextContent() {
16664
+ return this.result.content;
16665
+ }
16666
+ toRawTextPos(e) {
16667
+ for (let t = 0; t < this.rawTextArr.length; t++) {
16668
+ let n = this.rawTextArr[t];
16669
+ if (e >= n.nodeIdx && e <= n.maxNodeIdx) return n.targetPos + e - n.nodeIdx;
16670
+ }
16671
+ return -1;
16672
+ }
16673
+ toRawTextLineCol(e) {
16674
+ for (let t = 0; t < this.rawTextArr.length; t++) {
16675
+ let n = this.rawTextArr[t];
16676
+ if (e >= n.nodeIdx && e <= n.maxNodeIdx) return [n.targetRow, n.targetCol + e - n.nodeIdx];
16677
+ }
16678
+ return [0, 0];
16679
+ }
16680
+ fromLineChar(e, t) {
16681
+ for (let n = 0; n < this.rawTextArr.length; n++) {
16682
+ let r = this.rawTextArr[n], a = r.maxNodeIdx - r.nodeIdx + 1;
16683
+ if (r.targetRow === e) {
16684
+ if (t >= r.targetCol && t < r.targetCol + a) {
16685
+ let e = t - r.targetCol;
16686
+ return r.nodeIdx + e;
16687
+ }
16688
+ let e = this.rawTextArr[n + 1];
16689
+ if ((!e || e.targetRow > r.targetRow) && t >= r.targetCol + a) return r.maxNodeIdx;
16690
+ }
16691
+ }
16692
+ return -1;
16693
+ }
16694
+ static async create(t, n) {
16695
+ let r = await extPmToMdConverter(t.doc, n, t.schema, new EventTarget());
16696
+ return new e(t.doc.nodeSize, r);
16697
+ }
16698
+ }, addEmptyLines = (e, t) => {
16516
16699
  let n = e.doc, r = e.tr, a = e.schema.nodes.br, o = e.schema.nodes.softbreak;
16517
16700
  function s(e, t, n = 0, c = 0) {
16518
16701
  let l = 0, u = !1;
@@ -16746,65 +16929,15 @@ function getDefaultsPreProcessFilters(e) {
16746
16929
  ];
16747
16930
  }
16748
16931
  //#endregion
16749
- //#region ../extension-markdown/src/MarkdownContentMapper.ts
16750
- var MarkdownContentMapper = class e {
16751
- result;
16752
- rawTextArr;
16753
- constructor(e, t) {
16754
- this.result = t, this.rawTextArr = [];
16755
- for (let e of t.rawTextMap) e.nodeIdx >= 0 && this.rawTextArr.push({
16756
- nodeIdx: e.nodeIdx,
16757
- maxNodeIdx: e.nodeIdx,
16758
- targetPos: e.targetPos,
16759
- targetRow: e.targetRow,
16760
- targetCol: e.targetCol
16761
- });
16762
- this.rawTextArr.sort((e, t) => e.nodeIdx - t.nodeIdx);
16763
- for (let t = 0; t < this.rawTextArr.length; t++) {
16764
- let n = t + 1;
16765
- n < this.rawTextArr.length ? this.rawTextArr[t].maxNodeIdx = this.rawTextArr[n].nodeIdx - 1 : this.rawTextArr[t].maxNodeIdx = e;
16766
- }
16767
- }
16768
- getTextContent() {
16769
- return this.result.content;
16770
- }
16771
- toRawTextPos(e) {
16772
- for (let t = 0; t < this.rawTextArr.length; t++) {
16773
- let n = this.rawTextArr[t];
16774
- if (e >= n.nodeIdx && e <= n.maxNodeIdx) return n.targetPos + e - n.nodeIdx;
16775
- }
16776
- return -1;
16777
- }
16778
- toRawTextLineCol(e) {
16779
- for (let t = 0; t < this.rawTextArr.length; t++) {
16780
- let n = this.rawTextArr[t];
16781
- if (e >= n.nodeIdx && e <= n.maxNodeIdx) return [n.targetRow, n.targetCol + e - n.nodeIdx];
16782
- }
16783
- return [0, 0];
16784
- }
16785
- fromLineChar(e, t) {
16786
- for (let n = 0; n < this.rawTextArr.length; n++) {
16787
- let r = this.rawTextArr[n], a = r.maxNodeIdx - r.nodeIdx + 1;
16788
- if (r.targetRow === e) {
16789
- if (t >= r.targetCol && t < r.targetCol + a) {
16790
- let e = t - r.targetCol;
16791
- return r.nodeIdx + e;
16792
- }
16793
- let e = this.rawTextArr[n + 1];
16794
- if ((!e || e.targetRow > r.targetRow) && t >= r.targetCol + a) return r.maxNodeIdx;
16795
- }
16796
- }
16797
- return -1;
16798
- }
16799
- static async create(t, n) {
16800
- let r = await extPmToMdConverter(t.doc, n, t.schema, new EventTarget());
16801
- return new e(t.doc.nodeSize, r);
16802
- }
16803
- }, MarkdownPluginState = class {
16932
+ //#region ../extension-markdown/src/createMarkdownPlugin.ts
16933
+ var MarkdownPluginState = class {
16804
16934
  editor;
16805
16935
  extensionMarkdown;
16806
- capturing = !1;
16936
+ capturing = !0;
16807
16937
  workspace;
16938
+ hooks = {};
16939
+ urlFromRewriter;
16940
+ urlToRewriter;
16808
16941
  constructor(e, t) {
16809
16942
  this.editor = e, this.extensionMarkdown = t, this.workspace = e.ci.resolve("workspace"), this.performSnapshot = debounce(this.performSnapshot.bind(this), 800);
16810
16943
  }
@@ -16815,7 +16948,10 @@ var MarkdownContentMapper = class e {
16815
16948
  version: e,
16816
16949
  state: this.editor.state,
16817
16950
  materialized: void 0
16818
- }, r = async () => (n.materialized ||= await MarkdownContentMapper.create(n.state, this.extensionMarkdown.config), n.materialized);
16951
+ }, r = async () => (n.materialized ||= await MarkdownContentMapper.create(n.state, {
16952
+ ...this.extensionMarkdown.config,
16953
+ sourceMap: !0
16954
+ }), n.materialized);
16819
16955
  this.workspace.getFile(t) ? this.workspace.modifyFile({
16820
16956
  uri: t,
16821
16957
  lang: "markdown",
@@ -16828,15 +16964,38 @@ var MarkdownContentMapper = class e {
16828
16964
  getContentMapper: r
16829
16965
  });
16830
16966
  }
16831
- };
16967
+ handleCommands(e, t) {
16968
+ if (!e) return !1;
16969
+ if (e.setMarkdownHooks) {
16970
+ let { type: t, hooks: n } = e.setMarkdownHooks;
16971
+ return this.hooks[t] = n, !0;
16972
+ }
16973
+ if (e.setFromMarkdownUrlRewriter) {
16974
+ let { urlRewriter: t } = e.setFromMarkdownUrlRewriter;
16975
+ return this.urlFromRewriter = t, !0;
16976
+ }
16977
+ if (e.setToMarkdownUrlRewriter) {
16978
+ let { urlRewriter: t } = e.setToMarkdownUrlRewriter;
16979
+ return this.urlToRewriter = t, !0;
16980
+ }
16981
+ }
16982
+ }, MarkdownPluginKey = new PluginKey("markdown");
16832
16983
  function createMarkdownPlugin(e, t) {
16833
16984
  return new Plugin({
16985
+ key: MarkdownPluginKey,
16834
16986
  state: {
16835
- init() {
16836
- return new MarkdownPluginState(t, e);
16987
+ init(n, r) {
16988
+ let a = new MarkdownPluginState(t, e);
16989
+ return r.schema.topNodeType.name === "doc" ? a.hooks["pm2md.pre"] = getDefaultsPreProcessFilters({ getUrlRewriter: () => a.urlToRewriter }) : a.hooks["pm2md.pre"] = [], a.hooks["md2pm.post"] = [rewriteUrls(() => a.urlFromRewriter)], a;
16837
16990
  },
16838
16991
  apply(e, t, n, r) {
16839
- return e.docChanged && t.capturing && t.performSnapshot(), t;
16992
+ let a = e.getMeta("cloned");
16993
+ if (a) {
16994
+ let e = MarkdownPluginKey.getState(a);
16995
+ if (e) return e;
16996
+ }
16997
+ let o = e.getMeta(MarkdownPluginKey);
16998
+ return t.handleCommands(o, e) || e.docChanged && t.capturing && t.performSnapshot(), t;
16840
16999
  }
16841
17000
  },
16842
17001
  view() {
@@ -16852,35 +17011,38 @@ function createMarkdownPlugin(e, t) {
16852
17011
  var ExtensionMarkdown = class extends Extension {
16853
17012
  config;
16854
17013
  name = "markdown";
16855
- hooks = {};
16856
- urlFromRewriter;
16857
- urlToRewriter;
16858
17014
  constructor(e = {}) {
16859
17015
  super(e), this.config = e;
16860
17016
  }
16861
17017
  getConverters(e, t) {
16862
17018
  let n = { "text/x-markdown": {
16863
- fromDoc: (n) => pmToMdConverter(n, {
16864
- assetLoad: this.editor.config.assetLoad,
16865
- ...this.config,
16866
- urlRewriter: this.urlToRewriter,
16867
- hooks: this.hooks["pm2md.pre"],
16868
- yaml: e.ci.resolve("yaml")
16869
- }, t, e),
16870
- toDoc: (n) => mdToPmConverter(n, {
16871
- assetLoad: this.editor.config.assetLoad,
16872
- ...this.config,
16873
- urlRewriter: this.urlFromRewriter,
16874
- hooks: this.hooks["md2pm.post"],
16875
- yaml: e.ci.resolve("yaml")
16876
- }, t)
17019
+ fromDoc: (n) => {
17020
+ let r = MarkdownPluginKey.getState(e.state);
17021
+ return pmToMdConverter(n, {
17022
+ assetLoad: this.editor.config.assetLoad,
17023
+ ...this.config,
17024
+ urlRewriter: r.urlToRewriter,
17025
+ hooks: r.hooks["pm2md.pre"],
17026
+ frontmatter: e.ci.resolve("frontmatter")
17027
+ }, t, e);
17028
+ },
17029
+ toDoc: (n) => {
17030
+ let r = MarkdownPluginKey.getState(e.state);
17031
+ return mdToPmConverter(n, {
17032
+ assetLoad: this.editor.config.assetLoad,
17033
+ ...this.config,
17034
+ urlRewriter: r.urlFromRewriter,
17035
+ hooks: r.hooks["md2pm.post"],
17036
+ frontmatter: e.ci.resolve("frontmatter")
17037
+ }, t);
17038
+ }
16877
17039
  } };
16878
17040
  return n["text/markdown"] = n["text/x-markdown"], n;
16879
17041
  }
16880
17042
  toMarkdown(e) {
16881
17043
  return extPmToMdConverter(e, {
16882
17044
  sourceMap: !0,
16883
- yaml: this.editor.ci.resolve("yaml")
17045
+ frontmatter: this.editor.ci.resolve("frontmatter")
16884
17046
  }, this.editor.schema, this.editor);
16885
17047
  }
16886
17048
  async fromMarkdown(e) {
@@ -16894,15 +17056,18 @@ var ExtensionMarkdown = class extends Extension {
16894
17056
  }
16895
17057
  return new Slice(t, 0, 0);
16896
17058
  }
16897
- created() {
16898
- this.editor.schema.topNodeType.name === "doc" ? this.hooks["pm2md.pre"] = getDefaultsPreProcessFilters({ getUrlRewriter: () => this.urlToRewriter }) : this.hooks["pm2md.pre"] = [], this.hooks["md2pm.post"] = [rewriteUrls(() => this.urlFromRewriter)];
16899
- }
16900
17059
  getCommandFactories() {
16901
17060
  return {
16902
- getMarkdownHooks: (e, t) => () => (t(this.hooks[e]), !0),
16903
- setMarkdownHooks: (e, t) => () => (this.hooks[e] = t, !0),
16904
- setFromMarkdownUrlRewriter: (e) => () => (this.urlFromRewriter = e, !0),
16905
- setToMarkdownUrlRewriter: (e) => () => (this.urlToRewriter = e, !0)
17061
+ getMarkdownHooks: (e, t) => (n, r) => {
17062
+ let a = MarkdownPluginKey.getState(n);
17063
+ return t(a ? a.hooks[e] : []), !0;
17064
+ },
17065
+ setMarkdownHooks: (e, t) => (n, r) => (r && r(n.tr.setMeta(MarkdownPluginKey, { setMarkdownHooks: {
17066
+ type: e,
17067
+ hooks: t
17068
+ } })), !0),
17069
+ setFromMarkdownUrlRewriter: (e) => (t, n) => (n && n(t.tr.setMeta(MarkdownPluginKey, { setFromMarkdownUrlRewriter: { urlRewriter: e } })), !0),
17070
+ setToMarkdownUrlRewriter: (e) => (t, n) => (n && n(t.tr.setMeta(MarkdownPluginKey, { setToMarkdownUrlRewriter: { urlRewriter: e } })), !0)
16906
17071
  };
16907
17072
  }
16908
17073
  getProseMirrorPlugins() {