@clevertask/scribe 0.1.29 → 0.1.31

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 (94) hide show
  1. package/README.md +39 -53
  2. package/dist/BarMenu-Bm5IfWVV.js +302 -0
  3. package/dist/components/Menu/BarMenu.d.ts.map +1 -1
  4. package/dist/components/Menu/BarMenu.js +1 -2
  5. package/dist/components/Menu/BubbleMenu.js +2 -2
  6. package/dist/components/Menu/CalloutBubbleMenu.js +2 -2
  7. package/dist/components/Menu/LinkBubbleMenu.d.ts.map +1 -1
  8. package/dist/components/Menu/LinkBubbleMenu.js +113 -103
  9. package/dist/components/Menu/LinkEditor.d.ts +0 -7
  10. package/dist/components/Menu/LinkEditor.d.ts.map +1 -1
  11. package/dist/components/Menu/LinkEditor.js +148 -157
  12. package/dist/components/Menu/Mobile/ListOptionBar.js +1 -1
  13. package/dist/components/Menu/TableBubbleMenu.js +3 -3
  14. package/dist/components/Menu/TableHeightSettings.js +3 -11
  15. package/dist/components/Menu/TableLayoutOptions.js +1 -5
  16. package/dist/components/Menu/linkBubbleMenuPlugin.d.ts.map +1 -1
  17. package/dist/components/Menu/linkBubbleMenuPlugin.js +9 -5
  18. package/dist/components/Scribe/extension/callout.js +7 -7
  19. package/dist/components/Scribe/extension/emoji/suggest.js +2 -2
  20. package/dist/components/Scribe/extension/extension-link.js +1 -2
  21. package/dist/components/Scribe/extension/extension-markdown-paste.js +2 -2
  22. package/dist/components/Scribe/extension/extension-selectedText.js +1 -1
  23. package/dist/components/Scribe/extension/external-link-preview/attributes.d.ts +0 -7
  24. package/dist/components/Scribe/extension/external-link-preview/attributes.d.ts.map +1 -1
  25. package/dist/components/Scribe/extension/external-link-preview/attributes.js +26 -51
  26. package/dist/components/Scribe/extension/external-link-preview/commands.d.ts +5 -12
  27. package/dist/components/Scribe/extension/external-link-preview/commands.d.ts.map +1 -1
  28. package/dist/components/Scribe/extension/external-link-preview/commands.js +56 -121
  29. package/dist/components/Scribe/extension/external-link-preview/index.d.ts +4 -6
  30. package/dist/components/Scribe/extension/external-link-preview/index.d.ts.map +1 -1
  31. package/dist/components/Scribe/extension/external-link-preview/index.js +5 -41
  32. package/dist/components/Scribe/extension/external-link-preview/render-html.d.ts +1 -0
  33. package/dist/components/Scribe/extension/external-link-preview/render-html.d.ts.map +1 -1
  34. package/dist/components/Scribe/extension/external-link-preview/render-html.js +17 -60
  35. package/dist/components/Scribe/extension/external-link-preview/schema.d.ts +2 -2
  36. package/dist/components/Scribe/extension/external-link-preview/schema.js +1 -1
  37. package/dist/components/Scribe/extension/external-link-preview/serialization.d.ts.map +1 -1
  38. package/dist/components/Scribe/extension/external-link-preview/serialization.js +29 -51
  39. package/dist/components/Scribe/extension/external-link-preview/types.d.ts +14 -17
  40. package/dist/components/Scribe/extension/external-link-preview/types.d.ts.map +1 -1
  41. package/dist/components/Scribe/extension/index.js +1 -2
  42. package/dist/components/Scribe/extension/resizable-table.js +2 -2
  43. package/dist/components/Scribe/extension/slashCommand/SlashCommandList.js +10 -14
  44. package/dist/components/Scribe/extension/slashCommand/index.js +2 -2
  45. package/dist/components/Scribe/extension/slashCommand/renderItems.js +2 -2
  46. package/dist/components/Scribe/extension/table-layout.js +1 -2
  47. package/dist/components/Scribe/extension/tableOfContents.js +1 -1
  48. package/dist/components/Scribe/index.d.ts +3 -9
  49. package/dist/components/Scribe/index.d.ts.map +1 -1
  50. package/dist/components/Scribe/index.js +7 -21
  51. package/dist/{dist-DnVcys79.js → dist-BoAzo5MN.js} +491 -598
  52. package/dist/{dist-CDJRm4fL.js → dist-BqlzKS-_.js} +9 -17
  53. package/dist/{dist-B0xwy1Q5.js → dist-SM4NoN4h.js} +174 -385
  54. package/dist/document-node-capabilities.js +1 -1
  55. package/dist/{extension-BPeoqfHR.js → extension-dz0CIf3r.js} +1 -1
  56. package/dist/extension-link-DxIXGCtV.js +931 -0
  57. package/dist/{html-to-markdown-DF93it73.js → html-to-markdown-DeRG9OPm.js} +1 -1
  58. package/dist/main.css +1 -141
  59. package/dist/main.js +2 -2
  60. package/dist/{markdown-to-html-BoK5O_j-.js → markdown-to-html-tCPjQ5u6.js} +23 -70
  61. package/dist/{menus-scgppp2C.js → menus-BKxcTUsl.js} +36 -118
  62. package/dist/{purify.es-q6CUdJQi.js → purify.es-CSWcs7f1.js} +1 -23
  63. package/dist/{schema-extensions-ITR9LEgX.js → schema-extensions-B9hR1VrD.js} +1335 -1360
  64. package/dist/schema-extensions.js +1 -2
  65. package/dist/schema.js +1 -1
  66. package/dist/{table-layout-iVolql5p.js → table-layout-ClqaGg1E.js} +36 -36
  67. package/dist/{tippy.esm-MjWnmeEn.js → tippy.esm-C8V6GlaF.js} +5 -17
  68. package/dist/utils/create-scribe-editor.d.ts +1 -1
  69. package/dist/utils/create-scribe-editor.d.ts.map +1 -1
  70. package/dist/utils/create-scribe-editor.js +1 -2
  71. package/dist/utils/html-to-markdown.js +1 -2
  72. package/dist/utils/index.js +4 -4
  73. package/dist/utils/markdown-to-html.js +1 -2
  74. package/package.json +10 -10
  75. package/dist/BarMenu-BC8XoC6e.js +0 -302
  76. package/dist/components/Menu/ExternalLinkDisplayOptions.d.ts +0 -13
  77. package/dist/components/Menu/ExternalLinkDisplayOptions.d.ts.map +0 -1
  78. package/dist/components/Menu/ExternalLinkDisplayOptions.js +0 -90
  79. package/dist/components/Scribe/extension/external-link-preview/node-view.d.ts +0 -3
  80. package/dist/components/Scribe/extension/external-link-preview/node-view.d.ts.map +0 -1
  81. package/dist/components/Scribe/extension/external-link-preview/node-view.js +0 -97
  82. package/dist/components/Scribe/extension/external-link-preview/normalization.d.ts +0 -7
  83. package/dist/components/Scribe/extension/external-link-preview/normalization.d.ts.map +0 -1
  84. package/dist/components/Scribe/extension/external-link-preview/normalization.js +0 -21
  85. package/dist/components/Scribe/extension/external-link-preview/paste.d.ts +0 -8
  86. package/dist/components/Scribe/extension/external-link-preview/paste.d.ts.map +0 -1
  87. package/dist/components/Scribe/extension/external-link-preview/paste.js +0 -53
  88. package/dist/components/Scribe/extension/external-link-preview/policy.d.ts +0 -7
  89. package/dist/components/Scribe/extension/external-link-preview/policy.d.ts.map +0 -1
  90. package/dist/components/Scribe/extension/external-link-preview/policy.js +0 -38
  91. package/dist/components/Scribe/extension/external-link-preview/resolver.d.ts +0 -23
  92. package/dist/components/Scribe/extension/external-link-preview/resolver.d.ts.map +0 -1
  93. package/dist/components/Scribe/extension/external-link-preview/resolver.js +0 -118
  94. package/dist/extension-link-RvaqaDqr.js +0 -934
@@ -1,90 +0,0 @@
1
- import { Button as e, Flex as t, Text as n } from "@radix-ui/themes";
2
- import { useCallback as r, useId as i } from "react";
3
- import { jsx as a, jsxs as o } from "react/jsx-runtime";
4
- //#region lib/components/Menu/ExternalLinkDisplayOptions.tsx
5
- var s = [
6
- {
7
- description: "Show a regular text link.",
8
- display: "plain",
9
- label: "Plain link"
10
- },
11
- {
12
- description: "Show a concise label without fetching metadata.",
13
- display: "compact",
14
- label: "Compact"
15
- },
16
- {
17
- description: "Show an image, title, and description.",
18
- display: "card",
19
- label: "Preview card"
20
- }
21
- ], c = (e) => e.commands, l = (e) => e.can(), u = ({ currentDisplay: u, editor: d, executeDisplayChange: f, onDisplayChange: p, targetPosition: m }) => {
22
- let h = i(), g = c(d), _ = l(d), v = typeof g.setExternalLinkDisplay == "function", y = (e) => typeof m == "number" ? !!_.setExternalLinkDisplay?.(e, m) : !!_.setExternalLinkDisplay?.(e), b = {
23
- plain: u === "plain" || y("plain"),
24
- compact: u === "compact" || y("compact"),
25
- card: u === "card" || y("card")
26
- }, x = v && b.compact, S = v && b.card, C = u !== "plain" || x || S, w = r((e) => {
27
- e !== u && (f?.(e) ?? (typeof m == "number" ? d.chain().focus().setExternalLinkDisplay(e, m).run() : c(d).setExternalLinkDisplay?.(e))) && p?.(e);
28
- }, [
29
- u,
30
- d,
31
- f,
32
- p,
33
- m
34
- ]);
35
- return !v || !C ? null : /* @__PURE__ */ o(t, {
36
- direction: "column",
37
- gap: "2",
38
- children: [/* @__PURE__ */ a(n, {
39
- as: "p",
40
- size: "2",
41
- weight: "medium",
42
- children: "Display as"
43
- }), /* @__PURE__ */ a(t, {
44
- role: "group",
45
- "aria-label": "Display as",
46
- direction: "column",
47
- gap: "1",
48
- children: s.map((r) => {
49
- let i = u === r.display, s = b[r.display], c = `${h}-${r.display}-description`, l = r.display === "card" && !s ? "Preview cards require metadata support and their own line." : r.description;
50
- return /* @__PURE__ */ a(e, {
51
- type: "button",
52
- "aria-describedby": c,
53
- "aria-label": r.label,
54
- "aria-pressed": i,
55
- color: "gray",
56
- disabled: !s,
57
- variant: i ? "soft" : "ghost",
58
- onClick: () => w(r.display),
59
- style: {
60
- height: "auto",
61
- justifyContent: "flex-start",
62
- paddingBottom: 8,
63
- paddingTop: 8,
64
- textAlign: "left",
65
- width: "100%"
66
- },
67
- children: /* @__PURE__ */ o(t, {
68
- direction: "column",
69
- gap: "1",
70
- align: "start",
71
- children: [/* @__PURE__ */ a(n, {
72
- as: "span",
73
- size: "2",
74
- weight: "medium",
75
- children: r.label
76
- }), /* @__PURE__ */ a(n, {
77
- id: c,
78
- as: "span",
79
- size: "1",
80
- color: "gray",
81
- children: l
82
- })]
83
- })
84
- }, r.display);
85
- })
86
- })]
87
- });
88
- };
89
- //#endregion
90
- export { u as default };
@@ -1,3 +0,0 @@
1
- import { type NodeViewProps } from "@tiptap/react";
2
- export declare const ExternalLinkPreviewNodeView: ({ editor, getPos, node }: NodeViewProps) => import("react").JSX.Element;
3
- //# sourceMappingURL=node-view.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"node-view.d.ts","sourceRoot":"","sources":["../../../../../lib/components/Scribe/extension/external-link-preview/node-view.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,aAAa,EAAkB,MAAM,eAAe,CAAC;AAiCpF,eAAO,MAAM,2BAA2B,6BAA8B,aAAa,gCAgGlF,CAAC"}
@@ -1,97 +0,0 @@
1
- import { getExternalLinkPreviewHostname as e, getExternalLinkPreviewTitle as t, normalizeExternalLinkPreviewAttributes as n } from "./attributes.js";
2
- import { n as r, s as i } from "../../../../dist-B0xwy1Q5.js";
3
- import { showLinkBubbleMenu as a } from "../../../Menu/linkBubbleMenuPlugin.js";
4
- import { jsx as o, jsxs as s } from "react/jsx-runtime";
5
- //#region lib/components/Scribe/extension/external-link-preview/node-view.tsx
6
- var c = (e, t) => {
7
- let n = e.state.doc.resolve(t), r = e.state.doc.nodeAt(t);
8
- return !!(r && n.parent.isTextblock && n.parent.childCount === 1 && n.parent.content.size === r.nodeSize);
9
- }, l = () => /* @__PURE__ */ o("svg", {
10
- "aria-hidden": "true",
11
- viewBox: "0 0 24 24",
12
- width: "16",
13
- height: "16",
14
- children: /* @__PURE__ */ o("path", {
15
- d: "M9.5 14.5l5-5m-7.25 7.25-1 1a3.18 3.18 0 004.5 4.5l3-3a3.18 3.18 0 000-4.5m3-7.5 1-1a3.18 3.18 0 014.5 4.5l-3 3a3.18 3.18 0 01-4.5 0",
16
- fill: "none",
17
- stroke: "currentColor",
18
- strokeLinecap: "round",
19
- strokeWidth: "1.5"
20
- })
21
- }), u = ({ editor: u, getPos: d, node: f }) => {
22
- let p = n(f.attrs), m = i({
23
- editor: u,
24
- selector: ({ editor: e }) => {
25
- let t = d();
26
- return typeof t == "number" ? {
27
- isEditable: e.isEditable,
28
- isSoleTextblockContent: c(e, t)
29
- } : {
30
- isEditable: e.isEditable,
31
- isSoleTextblockContent: !1
32
- };
33
- }
34
- });
35
- if (!p) return /* @__PURE__ */ o(r, {
36
- as: "span",
37
- className: "scribe-external-link-preview scribe-external-link-preview--invalid",
38
- "data-type": "external-link-preview",
39
- children: "Invalid external link"
40
- });
41
- let h = p.display === "card" && m.isSoleTextblockContent ? "card" : "compact", g = t(p, h), _ = h === "card" ? p.siteName || e(p.href) : null;
42
- return /* @__PURE__ */ o(r, {
43
- as: "span",
44
- className: `scribe-external-link-preview scribe-external-link-preview--${h}`,
45
- "data-type": "external-link-preview",
46
- "data-display": h,
47
- "data-configured-display": p.display,
48
- contentEditable: !1,
49
- children: /* @__PURE__ */ s("a", {
50
- "data-link-preview-target": "",
51
- href: p.href,
52
- target: "_blank",
53
- rel: "noopener noreferrer",
54
- "aria-haspopup": m.isEditable ? "dialog" : void 0,
55
- onClick: (e) => {
56
- if (!m.isEditable) return;
57
- e.preventDefault();
58
- let t = d();
59
- typeof t == "number" && u.chain().focus().setNodeSelection(t).run() && a(u, "dialog");
60
- },
61
- children: [h === "card" && p.imageUrl ? /* @__PURE__ */ o("img", {
62
- "data-link-preview-image": "",
63
- src: p.imageUrl,
64
- alt: ""
65
- }) : null, /* @__PURE__ */ s("span", {
66
- "data-link-preview-main": "",
67
- children: [h === "card" && p.faviconUrl ? /* @__PURE__ */ o("img", {
68
- "data-link-preview-favicon": "",
69
- src: p.faviconUrl,
70
- alt: ""
71
- }) : /* @__PURE__ */ o("span", {
72
- "data-link-preview-favicon-fallback": "",
73
- "aria-hidden": "true",
74
- children: /* @__PURE__ */ o(l, {})
75
- }), /* @__PURE__ */ s("span", {
76
- "data-link-preview-copy": "",
77
- children: [
78
- /* @__PURE__ */ o("span", {
79
- "data-link-preview-title": "",
80
- children: g
81
- }),
82
- _ ? /* @__PURE__ */ o("span", {
83
- "data-link-preview-site": "",
84
- children: _
85
- }) : null,
86
- h === "card" && p.description ? /* @__PURE__ */ o("span", {
87
- "data-link-preview-description": "",
88
- children: p.description
89
- }) : null
90
- ]
91
- })]
92
- })]
93
- })
94
- });
95
- };
96
- //#endregion
97
- export { u as ExternalLinkPreviewNodeView };
@@ -1,7 +0,0 @@
1
- import { Plugin, PluginKey } from "@tiptap/pm/state";
2
- import type { EditorState } from "@tiptap/pm/state";
3
- export declare const externalLinkPreviewNormalizationPluginKey: PluginKey<any>;
4
- export declare const createExternalLinkPreviewNormalizationTransaction: (state: EditorState) => import("@tiptap/pm/state").Transaction | null;
5
- /** Keep the persisted display contract aligned with Card's sole-textblock requirement. */
6
- export declare const createExternalLinkPreviewNormalizationPlugin: () => Plugin<any>;
7
- //# sourceMappingURL=normalization.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalization.d.ts","sourceRoot":"","sources":["../../../../../lib/components/Scribe/extension/external-link-preview/normalization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,eAAO,MAAM,yCAAyC,gBAErD,CAAC;AAEF,eAAO,MAAM,iDAAiD,UAAW,WAAW,kDA2BnF,CAAC;AAEF,0FAA0F;AAC1F,eAAO,MAAM,4CAA4C,mBAerD,CAAC"}
@@ -1,21 +0,0 @@
1
- import "./attributes.js";
2
- import { Plugin as e, PluginKey as t } from "@tiptap/pm/state";
3
- //#region lib/components/Scribe/extension/external-link-preview/normalization.ts
4
- var n = new t("scribeExternalLinkPreviewNormalization"), r = (e) => {
5
- let t = e.tr, r = !1;
6
- return e.doc.descendants((n, i) => {
7
- if (n.type.name !== "externalLinkPreview" || n.attrs.display !== "card") return;
8
- let a = e.doc.resolve(i);
9
- a.parent.isTextblock && a.parent.childCount === 1 && a.parent.content.size === n.nodeSize || (t.setNodeMarkup(i, void 0, {
10
- ...n.attrs,
11
- display: "compact"
12
- }), r = !0);
13
- }), r ? t.setMeta(n, !0) : null;
14
- }, i = () => new e({
15
- key: n,
16
- appendTransaction(e, t, i) {
17
- return !e.some((e) => e.docChanged) || e.some((e) => e.getMeta(n)) ? null : r(i);
18
- }
19
- });
20
- //#endregion
21
- export { i as createExternalLinkPreviewNormalizationPlugin, r as createExternalLinkPreviewNormalizationTransaction, n as externalLinkPreviewNormalizationPluginKey };
@@ -1,8 +0,0 @@
1
- import type { NodeType } from "@tiptap/pm/model";
2
- import { Plugin } from "@tiptap/pm/state";
3
- export declare const createExternalLinkPreviewPastePlugin: ({ previewType, autoPreviewOnPaste, shouldPreview, }: {
4
- previewType: NodeType;
5
- autoPreviewOnPaste: boolean;
6
- shouldPreview?: (href: string) => boolean;
7
- }) => Plugin<any>;
8
- //# sourceMappingURL=paste.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paste.d.ts","sourceRoot":"","sources":["../../../../../lib/components/Scribe/extension/external-link-preview/paste.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAiB,MAAM,EAAa,MAAM,kBAAkB,CAAC;AA6EpE,eAAO,MAAM,oCAAoC,wDAI9C;IACD,WAAW,EAAE,QAAQ,CAAC;IACtB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CAC3C,gBAgEG,CAAC"}
@@ -1,53 +0,0 @@
1
- import { normalizeExternalLinkPreviewAttributes as e, normalizeExternalLinkPreviewHref as t } from "./attributes.js";
2
- import { normalizeLinkUrl as n } from "../../../Menu/linkUrl.js";
3
- import { NodeSelection as r, Plugin as i, PluginKey as a } from "@tiptap/pm/state";
4
- //#region lib/components/Scribe/extension/external-link-preview/paste.ts
5
- var o = new a("scribeExternalLinkPreviewPaste"), s = (e) => {
6
- let t = e.clipboardData?.getData("text/plain");
7
- if (!t) return null;
8
- let n = t.trim();
9
- return n && !/[\r\n]/.test(n) ? n : null;
10
- }, c = (e, t) => {
11
- let { selection: n, schema: r } = e.state, i = r.marks.link;
12
- if (n.empty || !i) return !1;
13
- let a = e.state.tr.setMeta("preventAutolink", !0), o = !1;
14
- return e.state.doc.nodesBetween(n.from, n.to, (e, r, s) => {
15
- if (!e.isText || !s?.isTextblock || !s.type.allowsMarkType(i)) return;
16
- let c = Math.max(r, n.from), l = Math.min(r + e.nodeSize, n.to);
17
- c < l && (a.addMark(c, l, i.create({ href: t })), o = !0);
18
- }), o ? (e.dispatch(a), !0) : !1;
19
- }, l = (e, t) => {
20
- let { selection: n } = e.state, r = !0;
21
- return n.$from.parent.forEach((e) => {
22
- (!e.isText || e.textContent.trim()) && (r = !1);
23
- }), !n.empty || n.$from.parent.type.name !== "paragraph" || !r ? !1 : n.$from.parent.canReplaceWith(0, n.$from.parent.childCount, t);
24
- }, u = ({ previewType: a, autoPreviewOnPaste: u, shouldPreview: d }) => new i({
25
- key: o,
26
- props: { handlePaste(i, o) {
27
- let f = s(o);
28
- if (!f) return !1;
29
- let p = n(f);
30
- if (!i.state.selection.empty && p) {
31
- let e = c(i, p);
32
- return e && o.preventDefault(), e;
33
- }
34
- let m = t(f);
35
- if (!u || !m || !l(i, a)) return !1;
36
- try {
37
- if (d && !d(m)) return !1;
38
- } catch {
39
- return !1;
40
- }
41
- let h = e({
42
- href: m,
43
- linkText: f,
44
- display: "compact"
45
- });
46
- if (!h) return !1;
47
- o.preventDefault();
48
- let g = i.state.selection.$from.start(), _ = g + i.state.selection.$from.parent.content.size, v = g, y = i.state.tr.replaceWith(g, _, a.create(h));
49
- return y.setSelection(r.create(y.doc, v)), i.dispatch(y.scrollIntoView()), !0;
50
- } }
51
- });
52
- //#endregion
53
- export { u as createExternalLinkPreviewPastePlugin };
@@ -1,7 +0,0 @@
1
- import type { EditorState, Transaction } from "@tiptap/pm/state";
2
- import { Plugin, PluginKey } from "@tiptap/pm/state";
3
- export declare const externalLinkPreviewPolicyPluginKey: PluginKey<any>;
4
- /** Convert previews rejected by a consumer policy into safe, ordinary link text. */
5
- export declare const createExternalLinkPreviewPolicyTransaction: (state: EditorState, shouldPreview?: (href: string) => boolean) => Transaction | null;
6
- export declare const createExternalLinkPreviewPolicyPlugin: (shouldPreview?: (href: string) => boolean) => Plugin<any>;
7
- //# sourceMappingURL=policy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../../../../lib/components/Scribe/extension/external-link-preview/policy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAMrD,eAAO,MAAM,kCAAkC,gBAAmD,CAAC;AA+BnG,oFAAoF;AACpF,eAAO,MAAM,0CAA0C,UAC9C,WAAW,kBACF,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,KACxC,WAAW,GAAG,IA2ChB,CAAC;AAEF,eAAO,MAAM,qCAAqC,mBAAoB,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,gBAa3F,CAAC"}
@@ -1,38 +0,0 @@
1
- import { normalizeExternalLinkPreviewAttributes as e } from "./attributes.js";
2
- import { Plugin as t, PluginKey as n } from "@tiptap/pm/state";
3
- //#region lib/components/Scribe/extension/external-link-preview/policy.ts
4
- var r = new n("scribeExternalLinkPreviewPolicy"), i = (e, t) => {
5
- try {
6
- return t(e);
7
- } catch {
8
- return !1;
9
- }
10
- }, a = (t, n, r, i) => {
11
- let a = e(n.attrs);
12
- if (!a) return null;
13
- let o = t.doc.resolve(r).parent, s = i && o.type.allowsMarkType(i) ? [i.create({ href: a.href })] : [];
14
- return t.schema.text(a.linkText, s);
15
- }, o = (t, n) => {
16
- if (!n) return null;
17
- let o = [];
18
- if (t.doc.descendants((t, r) => {
19
- if (t.type.name !== "externalLinkPreview") return;
20
- let a = e(t.attrs);
21
- (!a || !i(a.href, n)) && o.push({
22
- node: t,
23
- position: r
24
- });
25
- }), !o.length) return null;
26
- let s = t.tr, c = t.schema.marks.link, l = !1;
27
- return o.sort((e, t) => t.position - e.position).forEach(({ node: e, position: n }) => {
28
- let r = a(t, e, n, c);
29
- r && (s.replaceWith(n, n + e.nodeSize, r), l = !0);
30
- }), l ? s.setMeta(r, !0).setMeta("addToHistory", !1) : null;
31
- }, s = (e) => new t({
32
- key: r,
33
- appendTransaction(t, n, i) {
34
- return !t.some((e) => e.docChanged) || t.some((e) => e.getMeta(r)) ? null : o(i, e);
35
- }
36
- });
37
- //#endregion
38
- export { s as createExternalLinkPreviewPolicyPlugin, o as createExternalLinkPreviewPolicyTransaction, r as externalLinkPreviewPolicyPluginKey };
@@ -1,23 +0,0 @@
1
- import type { Editor } from "@tiptap/core";
2
- import type { EditorState, Transaction } from "@tiptap/pm/state";
3
- import { Plugin, PluginKey } from "@tiptap/pm/state";
4
- import type { ExternalLinkPreviewResolutionStatus, ExternalLinkPreviewResolver } from "./types";
5
- interface ExternalLinkPreviewRequest {
6
- href: string;
7
- position: number;
8
- status: Exclude<ExternalLinkPreviewResolutionStatus, "idle">;
9
- token: number;
10
- }
11
- interface ExternalLinkPreviewResolverState {
12
- nextToken: number;
13
- requests: Map<number, ExternalLinkPreviewRequest>;
14
- }
15
- export declare const externalLinkPreviewResolverPluginKey: PluginKey<ExternalLinkPreviewResolverState>;
16
- export declare const startExternalLinkPreviewResolution: (transaction: Transaction, position: number, href: string) => Transaction;
17
- export declare const getExternalLinkPreviewResolutionStatus: (state: EditorState, position: number) => ExternalLinkPreviewResolutionStatus;
18
- export declare const createExternalLinkPreviewResolverPlugin: ({ editor, resolve, }: {
19
- editor: Editor;
20
- resolve?: ExternalLinkPreviewResolver;
21
- }) => Plugin<ExternalLinkPreviewResolverState>;
22
- export {};
23
- //# sourceMappingURL=resolver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../../../lib/components/Scribe/extension/external-link-preview/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAiB,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAOpE,OAAO,KAAK,EAAE,mCAAmC,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAEhG,UAAU,0BAA0B;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC,mCAAmC,EAAE,MAAM,CAAC,CAAC;IAC7D,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,gCAAgC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;CACnD;AAOD,eAAO,MAAM,oCAAoC,6CAEhD,CAAC;AAUF,eAAO,MAAM,kCAAkC,gBAChC,WAAW,YACd,MAAM,QACV,MAAM,gBASb,CAAC;AAEF,eAAO,MAAM,sCAAsC,UAC1C,WAAW,YACR,MAAM,KACf,mCAWF,CAAC;AAyHF,eAAO,MAAM,uCAAuC,yBAGjD;IACD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,2BAA2B,CAAC;CACvC,6CAkEA,CAAC"}
@@ -1,118 +0,0 @@
1
- import { normalizeExternalLinkPreviewAttributes as e, normalizeExternalLinkPreviewMetadataPatch as t } from "./attributes.js";
2
- import { NodeSelection as n, Plugin as r, PluginKey as i } from "@tiptap/pm/state";
3
- //#region lib/components/Scribe/extension/external-link-preview/resolver.ts
4
- var a = new i("scribeExternalLinkPreviewResolver"), o = (e, t) => e?.type.name === "externalLinkPreview" && e.attrs.display === "card" && e.attrs.href === t, s = (e, t) => Array.from(e.requests.values()).find((e) => e.token === t), c = (e, t, n) => (e.setMeta(a, {
5
- type: "start",
6
- href: n,
7
- position: t
8
- }), e), l = (e, t) => {
9
- let n = a.getState(e);
10
- return n ? Array.from(n.requests.values()).find((e) => e.position === t)?.status ?? "idle" : "idle";
11
- }, u = (e, t) => {
12
- let n = /* @__PURE__ */ new Map();
13
- t.requests.forEach((t) => {
14
- let r = e.mapping.mapResult(t.position, 1), i = e.doc.nodeAt(r.pos);
15
- !r.deleted && o(i, t.href) && n.set(t.token, {
16
- ...t,
17
- position: r.pos
18
- });
19
- });
20
- let r = e.getMeta(a), i = t.nextToken;
21
- if (!r) return {
22
- nextToken: i,
23
- requests: n
24
- };
25
- if (r.type === "start") n.forEach((e, t) => {
26
- e.position === r.position && n.delete(t);
27
- }), o(e.doc.nodeAt(r.position), r.href) && (i += 1, n.set(i, {
28
- href: r.href,
29
- position: r.position,
30
- status: "loading",
31
- token: i
32
- }));
33
- else if (r.type === "complete") n.delete(r.token);
34
- else {
35
- let e = s({
36
- nextToken: i,
37
- requests: n
38
- }, r.token);
39
- e && n.set(e.token, {
40
- ...e,
41
- status: "error"
42
- });
43
- }
44
- return {
45
- nextToken: i,
46
- requests: n
47
- };
48
- }, d = (e, t) => {
49
- e.isDestroyed || e.dispatch(e.state.tr.setMeta(a, t).setMeta("addToHistory", !1));
50
- }, f = (r, i, c) => {
51
- if (r.isDestroyed) return;
52
- let l = a.getState(r.state), u = l ? s(l, i.token) : void 0;
53
- if (!u || u.status !== "loading" || !c) {
54
- u && !c && d(r, {
55
- type: "error",
56
- token: i.token
57
- });
58
- return;
59
- }
60
- let f = r.state.doc.nodeAt(u.position);
61
- if (!o(f, u.href) || !f) return;
62
- let p = e({
63
- ...f.attrs,
64
- ...t(c)
65
- });
66
- if (!p) {
67
- d(r, {
68
- type: "error",
69
- token: i.token
70
- });
71
- return;
72
- }
73
- let m = r.state.selection instanceof n && r.state.selection.from === u.position && r.state.selection.node.type.name === "externalLinkPreview", h = r.state.tr.setNodeMarkup(u.position, void 0, p).setMeta(a, {
74
- type: "complete",
75
- token: i.token
76
- }).setMeta("addToHistory", !1);
77
- m && h.setSelection(n.create(h.doc, u.position)), r.dispatch(h);
78
- }, p = ({ editor: e, resolve: t }) => {
79
- let n = /* @__PURE__ */ new Map(), i = (r) => {
80
- let i = a.getState(r.state), o = new Set(Array.from(i?.requests.values() ?? []).filter((e) => e.status === "loading").map((e) => e.token));
81
- n.forEach((e, t) => {
82
- o.has(t) || (e.abort(), n.delete(t));
83
- }), t && !e.isDestroyed && i && i.requests.forEach((e) => {
84
- if (e.status !== "loading" || n.has(e.token)) return;
85
- let i = new AbortController();
86
- n.set(e.token, i), Promise.resolve().then(() => t(e.href, { signal: i.signal })).then((t) => {
87
- i.signal.aborted || f(r, e, t);
88
- }).catch(() => {
89
- i.signal.aborted || d(r, {
90
- type: "error",
91
- token: e.token
92
- });
93
- }).finally(() => {
94
- n.delete(e.token);
95
- });
96
- });
97
- };
98
- return new r({
99
- key: a,
100
- state: {
101
- init: () => ({
102
- nextToken: 0,
103
- requests: /* @__PURE__ */ new Map()
104
- }),
105
- apply: u
106
- },
107
- view(e) {
108
- return i(e), {
109
- update: i,
110
- destroy() {
111
- n.forEach((e) => e.abort()), n.clear();
112
- }
113
- };
114
- }
115
- });
116
- };
117
- //#endregion
118
- export { p as createExternalLinkPreviewResolverPlugin, a as externalLinkPreviewResolverPluginKey, l as getExternalLinkPreviewResolutionStatus, c as startExternalLinkPreviewResolution };