@mx-space/cli 0.14.1 → 0.15.0
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/README.md +35 -11
- package/dist/{Lexical.dev-DTxuYHmG.mjs → Lexical.dev-Cck4n26y.mjs} +998 -584
- package/dist/{Lexical.node-BlCLnfA6.mjs → Lexical.node-D6wf2D5M.mjs} +15 -5
- package/dist/Lexical.prod-DCwS1oTq.mjs +7170 -0
- package/dist/{LexicalClipboard.dev-CdFkLR_D.mjs → LexicalClipboard.dev-CMkPHV7O.mjs} +6 -6
- package/dist/{LexicalClipboard.node-ktUajxsv.mjs → LexicalClipboard.node-m4nZ7IYw.mjs} +2 -2
- package/dist/{LexicalClipboard.prod-DliyLofW.mjs → LexicalClipboard.prod-B_rN1vE1.mjs} +10 -8
- package/dist/{LexicalCodeCore.dev-CL9tHWJX.mjs → LexicalCodeCore.dev-DyJw3i8V.mjs} +62 -72
- package/dist/{LexicalCodeCore.prod-BoMSJc29.mjs → LexicalCodeCore.prod-DPXLHQLF.mjs} +212 -213
- package/dist/{LexicalDragon.dev-CqW7Aq5H.mjs → LexicalDragon.dev-ZkNfMwrE.mjs} +3 -3
- package/dist/{LexicalDragon.node-DLXctJyy.mjs → LexicalDragon.node-Ds9oLUFh.mjs} +2 -2
- package/dist/{LexicalDragon.prod-DHI3T6n5.mjs → LexicalDragon.prod-B58ic2av.mjs} +5 -4
- package/dist/{LexicalExtension.dev-BP-18zns.mjs → LexicalExtension.dev-DvwHs1Xv.mjs} +79 -67
- package/dist/{LexicalExtension.node-BWH6xbzG.mjs → LexicalExtension.node-5OymZQfy.mjs} +4 -2
- package/dist/{LexicalExtension.prod-Cs6OgrDn.mjs → LexicalExtension.prod-Ce0T5smQ.mjs} +372 -358
- package/dist/{LexicalHeadless.dev-DJp__UcP.mjs → LexicalHeadless.dev-DA0WldSR.mjs} +2 -2
- package/dist/{LexicalHeadless.prod-o0v9cIu5.mjs → LexicalHeadless.prod-1kQgKB6c.mjs} +2 -2
- package/dist/{LexicalHtml.dev-DoymwFpG.mjs → LexicalHtml.dev-BDB7CUrx.mjs} +14 -12
- package/dist/{LexicalHtml.node-CVkbWtUA.mjs → LexicalHtml.node-DpVNt7It.mjs} +4 -4
- package/dist/{LexicalHtml.prod-C2b3z99k.mjs → LexicalHtml.prod-HkxM5scw.mjs} +331 -300
- package/dist/{LexicalLink.dev-7cgLOLIe.mjs → LexicalLink.dev-C5zNJlrm.mjs} +65 -59
- package/dist/{LexicalLink.prod-DWFgoXHR.mjs → LexicalLink.prod-Bkt9hQAt.mjs} +196 -201
- package/dist/{LexicalList.dev-Ci2iOxFx.mjs → LexicalList.dev-B7VgME-m.mjs} +55 -82
- package/dist/LexicalList.prod-B8c7TDjH.mjs +951 -0
- package/dist/{LexicalMarkdown.dev-C0ZYCyuR.mjs → LexicalMarkdown.dev-B5z9kLbV.mjs} +62 -42
- package/dist/{LexicalMarkdown.prod-0M-Nc-rh.mjs → LexicalMarkdown.prod-wKzw7FFH.mjs} +255 -202
- package/dist/{LexicalRichText.dev-Cnr1kDym.mjs → LexicalRichText.dev-CUd6Li5F.mjs} +399 -120
- package/dist/{LexicalRichText.node-BUJZAiap.mjs → LexicalRichText.node-BKfaQ-CH.mjs} +12 -8
- package/dist/LexicalRichText.prod-SBewjJHx.mjs +708 -0
- package/dist/{LexicalSelection.dev-C4L7l8OB.mjs → LexicalSelection.dev-D27JOCqj.mjs} +48 -17
- package/dist/{LexicalSelection.node-CLKroUMQ.mjs → LexicalSelection.node-DBEwPjBu.mjs} +5 -4
- package/dist/{LexicalSelection.prod-DzFqpTlw.mjs → LexicalSelection.prod-OaYhXHOL.mjs} +101 -92
- package/dist/{LexicalTable.dev-Cc9-zqKa.mjs → LexicalTable.dev-6IFFOAE0.mjs} +590 -259
- package/dist/LexicalTable.prod-2CaLZ7fH.mjs +2524 -0
- package/dist/{LexicalUtils.dev-BRgK0L6G.mjs → LexicalUtils.dev-DJA7J_7v.mjs} +15 -19
- package/dist/{LexicalUtils.node-BVAwOkL4.mjs → LexicalUtils.node-Df9oPTlA.mjs} +6 -6
- package/dist/{LexicalUtils.prod-C1gtvVDP.mjs → LexicalUtils.prod-Bb7V4Ewg.mjs} +155 -159
- package/dist/bin/mxs.mjs +1 -1
- package/dist/esm-CDcJmHkG.mjs +2 -0
- package/dist/{esm-BNu4sUWV.mjs → esm-DLzrv7gD.mjs} +1837 -6015
- package/dist/index.d.mts +57 -62
- package/dist/index.mjs +1 -1
- package/dist/{mxs-CMX2yklg.mjs → mxs-BIRW5Axj.mjs} +13579 -8682
- package/dist/rolldown-runtime-JspESFgx.mjs +35 -0
- package/dist/vendor/litexml/cli.mjs +7043 -6207
- package/dist/vendor/litexml/litexml-html-preview-client.css +80 -47
- package/dist/vendor/litexml/litexml-html-preview-client.js +14422 -10838
- package/dist/vendor/litexml/style.css +6 -2
- package/package.json +23 -23
- package/skills/commands-ai.md +45 -12
- package/skills/overview.md +1 -1
- package/dist/Lexical.prod-CeB9UQuo.mjs +0 -6816
- package/dist/LexicalList.prod-D0xX5d3G.mjs +0 -944
- package/dist/LexicalRichText.prod-BfbMQ9uM.mjs +0 -538
- package/dist/LexicalTable.prod-BgO4nCxy.mjs +0 -2336
- package/dist/esm-jbwcVZth.mjs +0 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { f as namedSignals, l as effect } from "./LexicalExtension.node-
|
|
2
|
-
import { $ as
|
|
3
|
-
import { c as
|
|
4
|
-
import {
|
|
5
|
-
//#region ../../node_modules/.pnpm/@lexical+link@0.
|
|
1
|
+
import { f as namedSignals, l as effect } from "./LexicalExtension.node-5OymZQfy.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-D6wf2D5M.mjs";
|
|
3
|
+
import { c as CoreImportExtension, g as defineImportRule, l as DOMImportExtension, t as $distributeInlineWrapper, y as sel } from "./LexicalHtml.node-DpVNt7It.mjs";
|
|
4
|
+
import { m as objectKlassEquals } from "./LexicalUtils.node-Df9oPTlA.mjs";
|
|
5
|
+
//#region ../../node_modules/.pnpm/@lexical+link@0.49.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
|
*
|
|
@@ -28,7 +28,7 @@ const SUPPORTED_URL_PROTOCOLS = /* @__PURE__ */ new Set([
|
|
|
28
28
|
"tel:"
|
|
29
29
|
]);
|
|
30
30
|
/** @noInheritDoc */
|
|
31
|
-
var LinkNode = class
|
|
31
|
+
var LinkNode = class extends ElementNode {
|
|
32
32
|
/** @internal */
|
|
33
33
|
__url;
|
|
34
34
|
/** @internal */
|
|
@@ -37,15 +37,14 @@ var LinkNode = class LinkNode extends ElementNode {
|
|
|
37
37
|
__rel;
|
|
38
38
|
/** @internal */
|
|
39
39
|
__title;
|
|
40
|
-
|
|
41
|
-
return "link"
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}, node.__key);
|
|
40
|
+
$config() {
|
|
41
|
+
return this.config("link", {
|
|
42
|
+
extends: ElementNode,
|
|
43
|
+
importDOM: { a: () => ({
|
|
44
|
+
conversion: $convertAnchorElement,
|
|
45
|
+
priority: 1
|
|
46
|
+
}) }
|
|
47
|
+
});
|
|
49
48
|
}
|
|
50
49
|
constructor(url = "", attributes = {}, key) {
|
|
51
50
|
super(key);
|
|
@@ -63,7 +62,7 @@ var LinkNode = class LinkNode extends ElementNode {
|
|
|
63
62
|
this.__title = prevNode.__title;
|
|
64
63
|
}
|
|
65
64
|
createDOM(config) {
|
|
66
|
-
const element =
|
|
65
|
+
const element = $getDocument().createElement("a");
|
|
67
66
|
this.updateLinkDOM(null, element, config);
|
|
68
67
|
addClassNamesToElement(element, config.theme.link);
|
|
69
68
|
return element;
|
|
@@ -87,25 +86,18 @@ var LinkNode = class LinkNode extends ElementNode {
|
|
|
87
86
|
this.updateLinkDOM(prevNode, anchor, config);
|
|
88
87
|
return false;
|
|
89
88
|
}
|
|
90
|
-
static importDOM() {
|
|
91
|
-
return { a: (node) => ({
|
|
92
|
-
conversion: $convertAnchorElement,
|
|
93
|
-
priority: 1
|
|
94
|
-
}) };
|
|
95
|
-
}
|
|
96
|
-
static importJSON(serializedNode) {
|
|
97
|
-
return $createLinkNode().updateFromJSON(serializedNode);
|
|
98
|
-
}
|
|
99
89
|
updateFromJSON(serializedNode) {
|
|
100
90
|
return super.updateFromJSON(serializedNode).setURL(serializedNode.url).setRel(serializedNode.rel || null).setTarget(serializedNode.target || null).setTitle(serializedNode.title || null);
|
|
101
91
|
}
|
|
102
92
|
sanitizeUrl(url) {
|
|
93
|
+
const rawUrl = url;
|
|
103
94
|
url = formatUrl(url);
|
|
104
95
|
try {
|
|
105
96
|
const parsedUrl = new URL(formatUrl(url));
|
|
106
97
|
if (!SUPPORTED_URL_PROTOCOLS.has(parsedUrl.protocol)) return "about:blank";
|
|
107
98
|
} catch (_unused) {
|
|
108
|
-
|
|
99
|
+
const schemeMatch = rawUrl.replace(/[\u0000-\u001F\u007F\s]/g, "").match(/^([a-z][a-z0-9+.-]*):/i);
|
|
100
|
+
if (schemeMatch != null && !SUPPORTED_URL_PROTOCOLS.has(`${schemeMatch[1].toLowerCase()}:`)) return "about:blank";
|
|
109
101
|
}
|
|
110
102
|
return url;
|
|
111
103
|
}
|
|
@@ -290,7 +282,7 @@ function $createLinkNode(url = "", attributes) {
|
|
|
290
282
|
function $isLinkNode(node) {
|
|
291
283
|
return node instanceof LinkNode;
|
|
292
284
|
}
|
|
293
|
-
var AutoLinkNode = class
|
|
285
|
+
var AutoLinkNode = class extends LinkNode {
|
|
294
286
|
/** @internal */
|
|
295
287
|
/** Indicates whether the autolink was ever unlinked. **/
|
|
296
288
|
__isUnlinked;
|
|
@@ -302,16 +294,8 @@ var AutoLinkNode = class AutoLinkNode extends LinkNode {
|
|
|
302
294
|
super.afterCloneFrom(prevNode);
|
|
303
295
|
this.__isUnlinked = prevNode.__isUnlinked;
|
|
304
296
|
}
|
|
305
|
-
|
|
306
|
-
return "autolink";
|
|
307
|
-
}
|
|
308
|
-
static clone(node) {
|
|
309
|
-
return new AutoLinkNode(node.__url, {
|
|
310
|
-
isUnlinked: node.__isUnlinked,
|
|
311
|
-
rel: node.__rel,
|
|
312
|
-
target: node.__target,
|
|
313
|
-
title: node.__title
|
|
314
|
-
}, node.__key);
|
|
297
|
+
$config() {
|
|
298
|
+
return this.config("autolink", { extends: LinkNode });
|
|
315
299
|
}
|
|
316
300
|
shouldMergeAdjacentLink(_otherLink) {
|
|
317
301
|
return false;
|
|
@@ -325,21 +309,15 @@ var AutoLinkNode = class AutoLinkNode extends LinkNode {
|
|
|
325
309
|
return self;
|
|
326
310
|
}
|
|
327
311
|
createDOM(config) {
|
|
328
|
-
if (this.__isUnlinked) return
|
|
312
|
+
if (this.__isUnlinked) return $getDocument().createElement("span");
|
|
329
313
|
else return super.createDOM(config);
|
|
330
314
|
}
|
|
331
315
|
updateDOM(prevNode, anchor, config) {
|
|
332
316
|
return super.updateDOM(prevNode, anchor, config) || prevNode.__isUnlinked !== this.__isUnlinked;
|
|
333
317
|
}
|
|
334
|
-
static importJSON(serializedNode) {
|
|
335
|
-
return $createAutoLinkNode().updateFromJSON(serializedNode);
|
|
336
|
-
}
|
|
337
318
|
updateFromJSON(serializedNode) {
|
|
338
319
|
return super.updateFromJSON(serializedNode).setIsUnlinked(serializedNode.isUnlinked || false);
|
|
339
320
|
}
|
|
340
|
-
static importDOM() {
|
|
341
|
-
return null;
|
|
342
|
-
}
|
|
343
321
|
exportJSON() {
|
|
344
322
|
return {
|
|
345
323
|
...super.exportJSON(),
|
|
@@ -723,11 +701,13 @@ function registerClickableLink(editor, stores, eventOptions = {}) {
|
|
|
723
701
|
if (nearestEditor === null) return;
|
|
724
702
|
let url = null;
|
|
725
703
|
let urlTarget = null;
|
|
704
|
+
let isUnlinkedAutolink = false;
|
|
726
705
|
nearestEditor.update(() => {
|
|
727
706
|
const clickedNode = $getNearestNodeFromDOMNode(target);
|
|
728
707
|
if (clickedNode !== null) {
|
|
729
708
|
const maybeLinkNode = $findMatchingParent(clickedNode, $isElementNode);
|
|
730
709
|
if (!stores.disabled.peek()) if ($isLinkNode(maybeLinkNode)) {
|
|
710
|
+
isUnlinkedAutolink = $isAutoLinkNode(maybeLinkNode) && maybeLinkNode.getIsUnlinked();
|
|
731
711
|
url = maybeLinkNode.sanitizeUrl(maybeLinkNode.getURL());
|
|
732
712
|
urlTarget = maybeLinkNode.getTarget();
|
|
733
713
|
} else {
|
|
@@ -739,7 +719,7 @@ function registerClickableLink(editor, stores, eventOptions = {}) {
|
|
|
739
719
|
}
|
|
740
720
|
}
|
|
741
721
|
});
|
|
742
|
-
if (url === null || url === "") return;
|
|
722
|
+
if (url === null || url === "" || isUnlinkedAutolink) return;
|
|
743
723
|
const selection = editor.read("latest", $getSelection);
|
|
744
724
|
if ($isRangeSelection(selection) && !selection.isCollapsed()) {
|
|
745
725
|
event.preventDefault();
|
|
@@ -753,14 +733,10 @@ function registerClickableLink(editor, stores, eventOptions = {}) {
|
|
|
753
733
|
if (event.button === 1) onClick(event);
|
|
754
734
|
};
|
|
755
735
|
return editor.registerRootListener((rootElement) => {
|
|
756
|
-
if (rootElement) {
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
rootElement.removeEventListener("click", onClick);
|
|
761
|
-
rootElement.removeEventListener("mouseup", onMouseUp);
|
|
762
|
-
};
|
|
763
|
-
}
|
|
736
|
+
if (rootElement) return registerEventListeners(rootElement, {
|
|
737
|
+
click: onClick,
|
|
738
|
+
mouseup: onMouseUp
|
|
739
|
+
}, eventOptions);
|
|
764
740
|
});
|
|
765
741
|
}
|
|
766
742
|
/**
|
|
@@ -818,6 +794,37 @@ function createLinkMatcherWithRegExp(regExp, urlTransformer = (text) => text) {
|
|
|
818
794
|
};
|
|
819
795
|
};
|
|
820
796
|
}
|
|
797
|
+
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;
|
|
798
|
+
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}))/;
|
|
799
|
+
/**
|
|
800
|
+
* A ready-to-use {@link LinkMatcher} for URLs with full Unicode support
|
|
801
|
+
* (`\\p{L}`, `\\p{N}`). Handles parenthesis balancing so that Wikipedia-style
|
|
802
|
+
* URLs like `https://en.wikipedia.org/wiki/Fish_(disambiguation)` are matched
|
|
803
|
+
* correctly even when wrapped in prose parentheses.
|
|
804
|
+
*/
|
|
805
|
+
const autoLinkUrlMatcher = (text) => {
|
|
806
|
+
const match = URL_REGEX.exec(text);
|
|
807
|
+
if (match === null) return null;
|
|
808
|
+
let matched = match[0];
|
|
809
|
+
let depth = 0;
|
|
810
|
+
for (const ch of matched) if (ch === "(") depth++;
|
|
811
|
+
else if (ch === ")") depth--;
|
|
812
|
+
while (depth < 0 && matched.endsWith(")")) {
|
|
813
|
+
matched = matched.slice(0, -1);
|
|
814
|
+
depth++;
|
|
815
|
+
}
|
|
816
|
+
return {
|
|
817
|
+
index: match.index,
|
|
818
|
+
length: matched.length,
|
|
819
|
+
text: matched,
|
|
820
|
+
url: matched.startsWith("http") ? matched : `https://${matched}`
|
|
821
|
+
};
|
|
822
|
+
};
|
|
823
|
+
/**
|
|
824
|
+
* A ready-to-use {@link LinkMatcher} for email addresses. Bounded quantifiers
|
|
825
|
+
* keep matching linear-time; the limits comfortably exceed RFC 5321 maximums.
|
|
826
|
+
*/
|
|
827
|
+
const autoLinkEmailMatcher = createLinkMatcherWithRegExp(EMAIL_REGEX, (text) => `mailto:${text}`);
|
|
821
828
|
function findFirstMatch(text, matchers) {
|
|
822
829
|
for (let i = 0; i < matchers.length; i++) {
|
|
823
830
|
const match = matchers[i](text);
|
|
@@ -1095,11 +1102,10 @@ function registerAutoLink(editor, config = defaultConfig) {
|
|
|
1095
1102
|
}
|
|
1096
1103
|
/**
|
|
1097
1104
|
* An extension to automatically create AutoLinkNode from text
|
|
1098
|
-
* that matches the configured matchers.
|
|
1099
|
-
*
|
|
1100
|
-
*
|
|
1101
|
-
*
|
|
1102
|
-
* for some example RegExps that could be used.
|
|
1105
|
+
* that matches the configured matchers. For ready-to-use matchers see
|
|
1106
|
+
* {@link autoLinkUrlMatcher} (Unicode URL detection with parenthesis
|
|
1107
|
+
* balancing) and {@link autoLinkEmailMatcher} (email addresses). To build
|
|
1108
|
+
* a custom matcher from a RegExp, see {@link createLinkMatcherWithRegExp}.
|
|
1103
1109
|
*
|
|
1104
1110
|
* The given `matchers` and `changeHandlers` will be merged by
|
|
1105
1111
|
* concatenating the configured arrays.
|
|
@@ -1124,4 +1130,4 @@ const AutoLinkExtension = /* @__PURE__ */ defineExtension({
|
|
|
1124
1130
|
register: registerAutoLink
|
|
1125
1131
|
});
|
|
1126
1132
|
//#endregion
|
|
1127
|
-
export { $createAutoLinkNode, $createLinkNode, $isAutoLinkNode, $isLinkNode, $toggleLink, AutoLinkExtension, AutoLinkNode, ClickableLinkExtension, LinkExtension, LinkImportExtension, LinkImportRules, LinkNode, TOGGLE_LINK_COMMAND, createLinkMatcherWithRegExp, formatUrl, registerAutoLink, registerClickableLink, registerLink };
|
|
1133
|
+
export { $createAutoLinkNode, $createLinkNode, $isAutoLinkNode, $isLinkNode, $toggleLink, AutoLinkExtension, AutoLinkNode, ClickableLinkExtension, LinkExtension, LinkImportExtension, LinkImportRules, LinkNode, TOGGLE_LINK_COMMAND, autoLinkEmailMatcher, autoLinkUrlMatcher, createLinkMatcherWithRegExp, formatUrl, registerAutoLink, registerClickableLink, registerLink };
|