@mx-space/cli 0.14.0 → 0.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/{Lexical.dev-DTxuYHmG.mjs → Lexical.dev-CtGmYDoh.mjs} +770 -271
  2. package/dist/{Lexical.node-BlCLnfA6.mjs → Lexical.node-8sRFmq2X.mjs} +15 -5
  3. package/dist/Lexical.prod-D-VfeKDz.mjs +7200 -0
  4. package/dist/{LexicalClipboard.dev-CdFkLR_D.mjs → LexicalClipboard.dev-CzQ15z6E.mjs} +6 -6
  5. package/dist/{LexicalClipboard.node-ktUajxsv.mjs → LexicalClipboard.node-D4gMGws6.mjs} +2 -2
  6. package/dist/{LexicalClipboard.prod-DliyLofW.mjs → LexicalClipboard.prod-CltkQpzS.mjs} +10 -8
  7. package/dist/{LexicalCodeCore.dev-CL9tHWJX.mjs → LexicalCodeCore.dev-DkYBZRGB.mjs} +11 -9
  8. package/dist/{LexicalCodeCore.prod-BoMSJc29.mjs → LexicalCodeCore.prod-COc3_QL8.mjs} +178 -167
  9. package/dist/{LexicalDragon.dev-CqW7Aq5H.mjs → LexicalDragon.dev-Dv5_WUae.mjs} +3 -3
  10. package/dist/{LexicalDragon.node-DLXctJyy.mjs → LexicalDragon.node-DgjrmWkd.mjs} +2 -2
  11. package/dist/{LexicalDragon.prod-DHI3T6n5.mjs → LexicalDragon.prod-DnpbDe-_.mjs} +5 -4
  12. package/dist/{LexicalExtension.dev-BP-18zns.mjs → LexicalExtension.dev-JMH_6-OZ.mjs} +73 -52
  13. package/dist/{LexicalExtension.node-BWH6xbzG.mjs → LexicalExtension.node-BUozzx4t.mjs} +4 -2
  14. package/dist/{LexicalExtension.prod-Cs6OgrDn.mjs → LexicalExtension.prod-UiyDgmou.mjs} +370 -347
  15. package/dist/{LexicalHeadless.dev-DJp__UcP.mjs → LexicalHeadless.dev-BfLGciiX.mjs} +2 -2
  16. package/dist/{LexicalHeadless.prod-o0v9cIu5.mjs → LexicalHeadless.prod-CWF7edmQ.mjs} +2 -2
  17. package/dist/{LexicalHtml.dev-DoymwFpG.mjs → LexicalHtml.dev-D5EF5PGW.mjs} +13 -11
  18. package/dist/{LexicalHtml.node-CVkbWtUA.mjs → LexicalHtml.node-BYbzHNVe.mjs} +4 -4
  19. package/dist/{LexicalHtml.prod-C2b3z99k.mjs → LexicalHtml.prod-D_FfkvVD.mjs} +330 -299
  20. package/dist/{LexicalLink.dev-7cgLOLIe.mjs → LexicalLink.dev-D3Pgh6ik.mjs} +53 -23
  21. package/dist/{LexicalLink.prod-DWFgoXHR.mjs → LexicalLink.prod-XZoAYVYD.mjs} +217 -198
  22. package/dist/{LexicalList.dev-Ci2iOxFx.mjs → LexicalList.dev-B5d3ObhB.mjs} +49 -44
  23. package/dist/LexicalList.prod-OQDpVAEb.mjs +967 -0
  24. package/dist/{LexicalMarkdown.dev-C0ZYCyuR.mjs → LexicalMarkdown.dev-BkM8G3DG.mjs} +61 -42
  25. package/dist/{LexicalMarkdown.prod-0M-Nc-rh.mjs → LexicalMarkdown.prod-DcVXCex6.mjs} +254 -202
  26. package/dist/{LexicalRichText.dev-Cnr1kDym.mjs → LexicalRichText.dev-DppD7IrA.mjs} +337 -52
  27. package/dist/{LexicalRichText.node-BUJZAiap.mjs → LexicalRichText.node-CPSn7dkg.mjs} +12 -8
  28. package/dist/LexicalRichText.prod-h7JPxFNp.mjs +718 -0
  29. package/dist/{LexicalSelection.dev-C4L7l8OB.mjs → LexicalSelection.dev-CD0SLbxP.mjs} +48 -17
  30. package/dist/{LexicalSelection.node-CLKroUMQ.mjs → LexicalSelection.node-CGlJgUlZ.mjs} +5 -4
  31. package/dist/{LexicalSelection.prod-DzFqpTlw.mjs → LexicalSelection.prod-DbVZN5AV.mjs} +101 -92
  32. package/dist/{LexicalTable.dev-Cc9-zqKa.mjs → LexicalTable.dev-D0HU14UV.mjs} +340 -138
  33. package/dist/LexicalTable.prod-BcPNSrxP.mjs +2468 -0
  34. package/dist/{LexicalUtils.dev-BRgK0L6G.mjs → LexicalUtils.dev-iKy_TrRT.mjs} +15 -19
  35. package/dist/{LexicalUtils.node-BVAwOkL4.mjs → LexicalUtils.node-CIgMS8cG.mjs} +6 -6
  36. package/dist/{LexicalUtils.prod-C1gtvVDP.mjs → LexicalUtils.prod-DIAsKJzu.mjs} +155 -159
  37. package/dist/bin/mxs.mjs +1 -1
  38. package/dist/esm-CH7CrOvh.mjs +2 -0
  39. package/dist/{esm-BNu4sUWV.mjs → esm-CwXl1N0a.mjs} +1801 -6013
  40. package/dist/index.d.mts +57 -62
  41. package/dist/index.mjs +1 -1
  42. package/dist/{mxs-BUqt-N3N.mjs → mxs-iW9DgqSZ.mjs} +14960 -9235
  43. package/dist/rolldown-runtime-JspESFgx.mjs +35 -0
  44. package/dist/vendor/litexml/cli.mjs +6693 -5762
  45. package/dist/vendor/litexml/litexml-html-preview-client.js +11912 -8698
  46. package/package.json +31 -30
  47. package/LICENSE +0 -33
  48. package/dist/Lexical.prod-CeB9UQuo.mjs +0 -6816
  49. package/dist/LexicalList.prod-D0xX5d3G.mjs +0 -944
  50. package/dist/LexicalRichText.prod-BfbMQ9uM.mjs +0 -538
  51. package/dist/LexicalTable.prod-BgO4nCxy.mjs +0 -2336
  52. package/dist/esm-jbwcVZth.mjs +0 -2
@@ -1,8 +1,8 @@
1
- import { f as namedSignals, l as effect } from "./LexicalExtension.node-BWH6xbzG.mjs";
2
- import { $ as $insertNodeToNearestRootAtCaret, $n as PASTE_COMMAND, A as $getChildCaret, Ct as $normalizeCaret, Dt as $rewindSiblingCaret, Kr as isHTMLAnchorElement, Mt as $setSelection, R as $getNearestNodeFromDOMNode, Vr as isDOMNode, W as $getSelection, Yt as COMMAND_PRIORITY_LOW, _t as $isSiblingCaret, ai as safeCast, at as $isElementNode, b as $findMatchingParent, br as defineExtension, bt as $isTextNode, dn as ElementNode, dt as $isNodeSelection, fr as TextNode, gr as createCommand, hr as configExtension, i as $caretFromPoint, jr as getNearestEditorFromDOMNode, jt as $setPointFromCaret, l as $copyNode, li as shallowMergeConfig, n as $applyNodeReplacement, ni as mergeRegister, pr as addClassNamesToElement, pt as $isRangeSelection, qt as COMMAND_PRIORITY_EDITOR, ut as $isLineBreakNode, v as $createTextNode, wt as $normalizeSelection__EXPERIMENTAL } from "./Lexical.node-BlCLnfA6.mjs";
3
- import { c as DOMImportExtension, h as defineImportRule, s as CoreImportExtension, t as $distributeInlineWrapper, v as sel } from "./LexicalHtml.node-CVkbWtUA.mjs";
4
- import { h as objectKlassEquals } from "./LexicalUtils.node-BVAwOkL4.mjs";
5
- //#region ../../node_modules/.pnpm/@lexical+link@0.46.0_typescript@6.0.3/node_modules/@lexical/link/dist/LexicalLink.dev.mjs
1
+ import { f as namedSignals, l as effect } from "./LexicalExtension.node-BUozzx4t.mjs";
2
+ import { $t as COMMAND_PRIORITY_LOW, A as $getChildCaret, At as $rewindSiblingCaret, Dt as $normalizeSelection__EXPERIMENTAL, Et as $normalizeCaret, Ft as $setSelection, G as $getSelection, I as $getDocument, Lr as getNearestEditorFromDOMNode, Pt as $setPointFromCaret, Qr as isHTMLAnchorElement, St as $isTextNode, Tr as defineExtension, Zt as COMMAND_PRIORITY_EDITOR, _i as shallowMergeConfig, _r as TextNode, b as $findMatchingParent, br as configExtension, ci as mergeRegister, di as registerEventListeners, dt as $isLineBreakNode, et as $insertNodeToNearestRootAtCaret, ft as $isNodeSelection, hn as ElementNode, i as $caretFromPoint, l as $copyNode, mt as $isRangeSelection, n as $applyNodeReplacement, ot as $isElementNode, pi as safeCast, qr as isDOMNode, rr as PASTE_COMMAND, v as $createTextNode, vr as addClassNamesToElement, xr as createCommand, yt as $isSiblingCaret, z as $getNearestNodeFromDOMNode } from "./Lexical.node-8sRFmq2X.mjs";
3
+ import { c as CoreImportExtension, g as defineImportRule, l as DOMImportExtension, t as $distributeInlineWrapper, y as sel } from "./LexicalHtml.node-BYbzHNVe.mjs";
4
+ import { m as objectKlassEquals } from "./LexicalUtils.node-CIgMS8cG.mjs";
5
+ //#region ../../node_modules/.pnpm/@lexical+link@0.48.0_typescript@6.0.3/node_modules/@lexical/link/dist/LexicalLink.dev.mjs
6
6
  /**
7
7
  * Copyright (c) Meta Platforms, Inc. and affiliates.
8
8
  *
@@ -63,7 +63,7 @@ var LinkNode = class LinkNode extends ElementNode {
63
63
  this.__title = prevNode.__title;
64
64
  }
65
65
  createDOM(config) {
66
- const element = document.createElement("a");
66
+ const element = $getDocument().createElement("a");
67
67
  this.updateLinkDOM(null, element, config);
68
68
  addClassNamesToElement(element, config.theme.link);
69
69
  return element;
@@ -100,12 +100,14 @@ var LinkNode = class LinkNode extends ElementNode {
100
100
  return super.updateFromJSON(serializedNode).setURL(serializedNode.url).setRel(serializedNode.rel || null).setTarget(serializedNode.target || null).setTitle(serializedNode.title || null);
101
101
  }
102
102
  sanitizeUrl(url) {
103
+ const rawUrl = url;
103
104
  url = formatUrl(url);
104
105
  try {
105
106
  const parsedUrl = new URL(formatUrl(url));
106
107
  if (!SUPPORTED_URL_PROTOCOLS.has(parsedUrl.protocol)) return "about:blank";
107
108
  } catch (_unused) {
108
- return url;
109
+ const schemeMatch = rawUrl.replace(/[\u0000-\u001F\u007F\s]/g, "").match(/^([a-z][a-z0-9+.-]*):/i);
110
+ if (schemeMatch != null && !SUPPORTED_URL_PROTOCOLS.has(`${schemeMatch[1].toLowerCase()}:`)) return "about:blank";
109
111
  }
110
112
  return url;
111
113
  }
@@ -325,7 +327,7 @@ var AutoLinkNode = class AutoLinkNode extends LinkNode {
325
327
  return self;
326
328
  }
327
329
  createDOM(config) {
328
- if (this.__isUnlinked) return document.createElement("span");
330
+ if (this.__isUnlinked) return $getDocument().createElement("span");
329
331
  else return super.createDOM(config);
330
332
  }
331
333
  updateDOM(prevNode, anchor, config) {
@@ -723,11 +725,13 @@ function registerClickableLink(editor, stores, eventOptions = {}) {
723
725
  if (nearestEditor === null) return;
724
726
  let url = null;
725
727
  let urlTarget = null;
728
+ let isUnlinkedAutolink = false;
726
729
  nearestEditor.update(() => {
727
730
  const clickedNode = $getNearestNodeFromDOMNode(target);
728
731
  if (clickedNode !== null) {
729
732
  const maybeLinkNode = $findMatchingParent(clickedNode, $isElementNode);
730
733
  if (!stores.disabled.peek()) if ($isLinkNode(maybeLinkNode)) {
734
+ isUnlinkedAutolink = $isAutoLinkNode(maybeLinkNode) && maybeLinkNode.getIsUnlinked();
731
735
  url = maybeLinkNode.sanitizeUrl(maybeLinkNode.getURL());
732
736
  urlTarget = maybeLinkNode.getTarget();
733
737
  } else {
@@ -739,7 +743,7 @@ function registerClickableLink(editor, stores, eventOptions = {}) {
739
743
  }
740
744
  }
741
745
  });
742
- if (url === null || url === "") return;
746
+ if (url === null || url === "" || isUnlinkedAutolink) return;
743
747
  const selection = editor.read("latest", $getSelection);
744
748
  if ($isRangeSelection(selection) && !selection.isCollapsed()) {
745
749
  event.preventDefault();
@@ -753,14 +757,10 @@ function registerClickableLink(editor, stores, eventOptions = {}) {
753
757
  if (event.button === 1) onClick(event);
754
758
  };
755
759
  return editor.registerRootListener((rootElement) => {
756
- if (rootElement) {
757
- rootElement.addEventListener("click", onClick, eventOptions);
758
- rootElement.addEventListener("mouseup", onMouseUp, eventOptions);
759
- return () => {
760
- rootElement.removeEventListener("click", onClick);
761
- rootElement.removeEventListener("mouseup", onMouseUp);
762
- };
763
- }
760
+ if (rootElement) return registerEventListeners(rootElement, {
761
+ click: onClick,
762
+ mouseup: onMouseUp
763
+ }, eventOptions);
764
764
  });
765
765
  }
766
766
  /**
@@ -818,6 +818,37 @@ function createLinkMatcherWithRegExp(regExp, urlTransformer = (text) => text) {
818
818
  };
819
819
  };
820
820
  }
821
+ const URL_REGEX = /((https?:\/\/(www\.)?)|(www\.))[-\p{L}\p{N}@:%._+~#=]{1,256}\.[\p{L}\p{N}]{1,6}(?:[-\p{L}\p{N}()@:%_+.~#?&//=]*[\p{L}\p{N}()@_~#?&//=])?/u;
822
+ const EMAIL_REGEX = /(([^<>()[\]\\.,;:\s@"]{1,64}(\.[^<>()[\]\\.,;:\s@"]{1,64}){0,63})|(".{1,255}"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]{1,63}\.){1,127}[a-zA-Z]{2,63}))/;
823
+ /**
824
+ * A ready-to-use {@link LinkMatcher} for URLs with full Unicode support
825
+ * (`\\p{L}`, `\\p{N}`). Handles parenthesis balancing so that Wikipedia-style
826
+ * URLs like `https://en.wikipedia.org/wiki/Fish_(disambiguation)` are matched
827
+ * correctly even when wrapped in prose parentheses.
828
+ */
829
+ const autoLinkUrlMatcher = (text) => {
830
+ const match = URL_REGEX.exec(text);
831
+ if (match === null) return null;
832
+ let matched = match[0];
833
+ let depth = 0;
834
+ for (const ch of matched) if (ch === "(") depth++;
835
+ else if (ch === ")") depth--;
836
+ while (depth < 0 && matched.endsWith(")")) {
837
+ matched = matched.slice(0, -1);
838
+ depth++;
839
+ }
840
+ return {
841
+ index: match.index,
842
+ length: matched.length,
843
+ text: matched,
844
+ url: matched.startsWith("http") ? matched : `https://${matched}`
845
+ };
846
+ };
847
+ /**
848
+ * A ready-to-use {@link LinkMatcher} for email addresses. Bounded quantifiers
849
+ * keep matching linear-time; the limits comfortably exceed RFC 5321 maximums.
850
+ */
851
+ const autoLinkEmailMatcher = createLinkMatcherWithRegExp(EMAIL_REGEX, (text) => `mailto:${text}`);
821
852
  function findFirstMatch(text, matchers) {
822
853
  for (let i = 0; i < matchers.length; i++) {
823
854
  const match = matchers[i](text);
@@ -1095,11 +1126,10 @@ function registerAutoLink(editor, config = defaultConfig) {
1095
1126
  }
1096
1127
  /**
1097
1128
  * An extension to automatically create AutoLinkNode from text
1098
- * that matches the configured matchers. No default implementation
1099
- * is provided for any matcher, see {@link createLinkMatcherWithRegExp}
1100
- * for a helper function to create a matcher from a RegExp, and the
1101
- * Playground's [AutoLinkPlugin](https://github.com/facebook/lexical/blob/main/packages/lexical-playground/src/plugins/AutoLinkPlugin/index.tsx)
1102
- * for some example RegExps that could be used.
1129
+ * that matches the configured matchers. For ready-to-use matchers see
1130
+ * {@link autoLinkUrlMatcher} (Unicode URL detection with parenthesis
1131
+ * balancing) and {@link autoLinkEmailMatcher} (email addresses). To build
1132
+ * a custom matcher from a RegExp, see {@link createLinkMatcherWithRegExp}.
1103
1133
  *
1104
1134
  * The given `matchers` and `changeHandlers` will be merged by
1105
1135
  * concatenating the configured arrays.
@@ -1124,4 +1154,4 @@ const AutoLinkExtension = /* @__PURE__ */ defineExtension({
1124
1154
  register: registerAutoLink
1125
1155
  });
1126
1156
  //#endregion
1127
- export { $createAutoLinkNode, $createLinkNode, $isAutoLinkNode, $isLinkNode, $toggleLink, AutoLinkExtension, AutoLinkNode, ClickableLinkExtension, LinkExtension, LinkImportExtension, LinkImportRules, LinkNode, TOGGLE_LINK_COMMAND, createLinkMatcherWithRegExp, formatUrl, registerAutoLink, registerClickableLink, registerLink };
1157
+ export { $createAutoLinkNode, $createLinkNode, $isAutoLinkNode, $isLinkNode, $toggleLink, AutoLinkExtension, AutoLinkNode, ClickableLinkExtension, LinkExtension, LinkImportExtension, LinkImportRules, LinkNode, TOGGLE_LINK_COMMAND, autoLinkEmailMatcher, autoLinkUrlMatcher, createLinkMatcherWithRegExp, formatUrl, registerAutoLink, registerClickableLink, registerLink };