smoodly 0.0.9 → 0.0.11
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 +167 -18
- package/dist/admin/client-ops.js +1 -0
- package/dist/admin/editor/CanvasOverlay.d.ts +21 -0
- package/dist/admin/editor/CanvasOverlay.js +39 -0
- package/dist/admin/editor/EditorView.js +56 -237
- package/dist/admin/editor/InsertPicker.d.ts +18 -0
- package/dist/admin/editor/InsertPicker.js +18 -0
- package/dist/admin/editor/NoticePane.d.ts +4 -0
- package/dist/admin/editor/NoticePane.js +4 -0
- package/dist/admin/editor/Outline.d.ts +18 -0
- package/dist/admin/editor/Outline.js +12 -0
- package/dist/admin/editor/locale-url.d.ts +12 -0
- package/dist/admin/editor/locale-url.js +32 -0
- package/dist/admin/editor/overlay-geometry.d.ts +14 -0
- package/dist/admin/editor/overlay-geometry.js +27 -0
- package/dist/admin/editor/useCanvasBridge.d.ts +15 -0
- package/dist/admin/editor/useCanvasBridge.js +53 -0
- package/dist/admin/editor/usePageLocale.d.ts +23 -0
- package/dist/admin/editor/usePageLocale.js +88 -0
- package/dist/admin/forms/CropEditor.d.ts +10 -0
- package/dist/admin/forms/CropEditor.js +61 -0
- package/dist/admin/forms/FieldWidget.js +8 -26
- package/dist/admin/forms/MediaGrid.d.ts +11 -0
- package/dist/admin/forms/MediaGrid.js +16 -0
- package/dist/admin/forms/MediaPicker.d.ts +8 -0
- package/dist/admin/forms/MediaPicker.js +44 -0
- package/dist/admin/forms/MediaWidget.d.ts +9 -0
- package/dist/admin/forms/MediaWidget.js +83 -0
- package/dist/admin/forms/RichtextToolbar.d.ts +20 -0
- package/dist/admin/forms/RichtextToolbar.js +37 -0
- package/dist/admin/forms/RichtextWidget.d.ts +5 -0
- package/dist/admin/forms/RichtextWidget.js +123 -0
- package/dist/admin/forms/assets-context.d.ts +19 -0
- package/dist/admin/forms/assets-context.js +35 -0
- package/dist/admin/forms/crop-editor.d.ts +13 -0
- package/dist/admin/forms/crop-editor.js +72 -0
- package/dist/admin/forms/measure.d.ts +2 -0
- package/dist/admin/forms/measure.js +39 -0
- package/dist/admin/forms/richtext-extensions.d.ts +5 -0
- package/dist/admin/forms/richtext-extensions.js +74 -0
- package/dist/admin/forms/richtext-paste.d.ts +22 -0
- package/dist/admin/forms/richtext-paste.js +59 -0
- package/dist/admin/forms/upload.d.ts +17 -0
- package/dist/admin/forms/upload.js +33 -0
- package/dist/admin/index.d.ts +1 -2
- package/dist/admin/index.js +0 -1
- package/dist/admin/next/create-admin.d.ts +3 -7
- package/dist/admin/next/create-admin.js +14 -5
- package/dist/admin/next/op-handler.d.ts +3 -0
- package/dist/admin/next/op-handler.js +1 -0
- package/dist/admin/ops-impl.d.ts +3 -0
- package/dist/admin/ops-impl.js +83 -2
- package/dist/admin/ops.d.ts +27 -0
- package/dist/admin/richtext-doc.d.ts +7 -0
- package/dist/admin/richtext-doc.js +18 -0
- package/dist/admin/serialize.d.ts +5 -0
- package/dist/admin/serialize.js +1 -0
- package/dist/admin/shell/AdminApp.d.ts +1 -2
- package/dist/admin/shell/AdminApp.js +18 -19
- package/dist/admin/shell/EntriesList.js +3 -2
- package/dist/admin/shell/EntryForm.js +8 -24
- package/dist/admin/shell/IconRail.d.ts +7 -0
- package/dist/admin/shell/IconRail.js +73 -0
- package/dist/admin/shell/ListView.js +3 -1
- package/dist/admin/shell/MediaScreen.d.ts +8 -0
- package/dist/admin/shell/MediaScreen.js +86 -0
- package/dist/admin/shell/PagesList.js +3 -2
- package/dist/admin/shell/RouteLink.d.ts +4 -0
- package/dist/admin/shell/RouteLink.js +12 -0
- package/dist/admin/shell/SharedForm.js +3 -21
- package/dist/admin/shell/media-list.d.ts +8 -0
- package/dist/admin/shell/media-list.js +14 -0
- package/dist/admin/shell/router.d.ts +37 -0
- package/dist/admin/shell/router.js +84 -0
- package/dist/admin/shell/session.js +3 -1
- package/dist/admin/ui/Modal.d.ts +8 -0
- package/dist/admin/ui/Modal.js +15 -0
- package/dist/admin/ui/primitives.d.ts +3 -2
- package/dist/admin/ui/primitives.js +8 -6
- package/dist/admin/ui/theme.d.ts +1 -1
- package/dist/admin/ui/theme.js +133 -24
- package/dist/admin/validate.js +16 -0
- package/dist/asset-store.d.ts +86 -0
- package/dist/asset-store.js +141 -0
- package/dist/collections.d.ts +0 -14
- package/dist/collections.js +2 -10
- package/dist/config.d.ts +12 -0
- package/dist/config.js +17 -5
- package/dist/fields.d.ts +10 -11
- package/dist/fields.js +16 -2
- package/dist/image/SmoodlyImage.d.ts +18 -0
- package/dist/image/SmoodlyImage.js +16 -0
- package/dist/image/SmoodlyVideo.d.ts +7 -0
- package/dist/image/SmoodlyVideo.js +5 -0
- package/dist/image/crop-math.d.ts +14 -0
- package/dist/image/crop-math.js +38 -0
- package/dist/image/index.d.ts +6 -0
- package/dist/image/index.js +5 -0
- package/dist/image/loaders.d.ts +15 -0
- package/dist/image/loaders.js +5 -0
- package/dist/image/next-config.d.ts +15 -0
- package/dist/image/next-config.js +27 -0
- package/dist/image-dimensions.d.ts +4 -0
- package/dist/image-dimensions.js +25 -0
- package/dist/index.d.ts +12 -4
- package/dist/index.js +8 -2
- package/dist/media.d.ts +108 -0
- package/dist/media.js +129 -0
- package/dist/refs.d.ts +2 -0
- package/dist/refs.js +25 -4
- package/dist/resolve.d.ts +19 -4
- package/dist/resolve.js +55 -2
- package/dist/site.d.ts +2 -0
- package/dist/site.js +21 -3
- package/dist/sql-space.d.ts +8 -1
- package/dist/sql-space.js +28 -0
- package/dist/sql.js +30 -0
- package/dist/store.js +3 -0
- package/dist/supabase-asset-store.d.ts +21 -0
- package/dist/supabase-asset-store.js +170 -0
- package/dist/toolset.d.ts +30 -0
- package/dist/toolset.js +49 -0
- package/package.json +15 -1
- package/dist/admin/richtext.d.ts +0 -16
- package/dist/admin/richtext.js +0 -98
package/dist/admin/richtext.js
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
const textOf = (s) => (s ? [{ type: "text", text: s }] : []);
|
|
2
|
-
function paragraph(lines) {
|
|
3
|
-
const content = [];
|
|
4
|
-
lines.forEach((line, i) => {
|
|
5
|
-
if (i > 0)
|
|
6
|
-
content.push({ type: "hardBreak" });
|
|
7
|
-
content.push(...textOf(line));
|
|
8
|
-
});
|
|
9
|
-
return content.length > 0 ? { type: "paragraph", content } : { type: "paragraph" };
|
|
10
|
-
}
|
|
11
|
-
const listItem = (s) => ({ type: "listItem", content: [paragraph([s])] });
|
|
12
|
-
const HEADING = /^(#{1,6}) (.*)$/;
|
|
13
|
-
const BULLET = /^- /;
|
|
14
|
-
const ORDERED = /^\d+\. /;
|
|
15
|
-
const QUOTE = /^> ?/;
|
|
16
|
-
export function plainToRichtext(text) {
|
|
17
|
-
const lines = text.replace(/\r\n?/g, "\n").split("\n");
|
|
18
|
-
const content = [];
|
|
19
|
-
let para = [];
|
|
20
|
-
const flush = () => {
|
|
21
|
-
if (para.length > 0)
|
|
22
|
-
content.push(paragraph(para));
|
|
23
|
-
para = [];
|
|
24
|
-
};
|
|
25
|
-
let i = 0;
|
|
26
|
-
while (i < lines.length) {
|
|
27
|
-
const line = lines[i];
|
|
28
|
-
if (line.trim() === "") {
|
|
29
|
-
flush();
|
|
30
|
-
i++;
|
|
31
|
-
continue;
|
|
32
|
-
}
|
|
33
|
-
const heading = HEADING.exec(line);
|
|
34
|
-
if (heading) {
|
|
35
|
-
flush();
|
|
36
|
-
content.push({ type: "heading", attrs: { level: heading[1].length }, content: textOf(heading[2]) });
|
|
37
|
-
i++;
|
|
38
|
-
continue;
|
|
39
|
-
}
|
|
40
|
-
if (BULLET.test(line) || ORDERED.test(line)) {
|
|
41
|
-
flush();
|
|
42
|
-
const ordered = ORDERED.test(line);
|
|
43
|
-
const re = ordered ? ORDERED : BULLET;
|
|
44
|
-
const items = [];
|
|
45
|
-
while (i < lines.length && re.test(lines[i])) {
|
|
46
|
-
items.push(listItem(lines[i].replace(re, "")));
|
|
47
|
-
i++;
|
|
48
|
-
}
|
|
49
|
-
content.push({ type: ordered ? "orderedList" : "bulletList", content: items });
|
|
50
|
-
continue;
|
|
51
|
-
}
|
|
52
|
-
if (QUOTE.test(line)) {
|
|
53
|
-
flush();
|
|
54
|
-
const paras = [];
|
|
55
|
-
while (i < lines.length && QUOTE.test(lines[i])) {
|
|
56
|
-
paras.push(paragraph([lines[i].replace(QUOTE, "")]));
|
|
57
|
-
i++;
|
|
58
|
-
}
|
|
59
|
-
content.push({ type: "blockquote", content: paras });
|
|
60
|
-
continue;
|
|
61
|
-
}
|
|
62
|
-
para.push(line);
|
|
63
|
-
i++;
|
|
64
|
-
}
|
|
65
|
-
flush();
|
|
66
|
-
return { type: "doc", content };
|
|
67
|
-
}
|
|
68
|
-
/** Inline text of a node: text runs joined, a hard break as a newline, marks ignored. */
|
|
69
|
-
function inline(node) {
|
|
70
|
-
if (node.type === "text")
|
|
71
|
-
return node.text ?? "";
|
|
72
|
-
if (node.type === "hardBreak")
|
|
73
|
-
return "\n";
|
|
74
|
-
return (node.content ?? []).map(inline).join("");
|
|
75
|
-
}
|
|
76
|
-
/** Inline text of a node, with hard breaks flattened to spaces so the line syntax stays intact. A hard break cannot survive inside a prefixed line (list item, blockquote, or heading), so it flattens to a space (DESIGN.md §3 Richtext records the loss). */
|
|
77
|
-
function oneLine(node) {
|
|
78
|
-
return inline(node).replace(/\n/g, " ");
|
|
79
|
-
}
|
|
80
|
-
const itemText = (li) => (li.content ?? []).map(oneLine).join(" ");
|
|
81
|
-
function block(node) {
|
|
82
|
-
switch (node.type) {
|
|
83
|
-
case "heading": {
|
|
84
|
-
const level = Math.min(6, Math.max(1, Math.round(Number(node.attrs?.level ?? 1) || 1)));
|
|
85
|
-
return `${"#".repeat(level)} ${oneLine(node)}`;
|
|
86
|
-
}
|
|
87
|
-
case "bulletList": return (node.content ?? []).map((li) => `- ${itemText(li)}`).join("\n");
|
|
88
|
-
case "orderedList": return (node.content ?? []).map((li, i) => `${i + 1}. ${itemText(li)}`).join("\n");
|
|
89
|
-
case "blockquote": return (node.content ?? []).map((p) => `> ${oneLine(p)}`).join("\n");
|
|
90
|
-
default: return inline(node);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
export function richtextToPlain(doc) {
|
|
94
|
-
const d = doc;
|
|
95
|
-
if (!d || typeof d !== "object" || d.type !== "doc" || !Array.isArray(d.content))
|
|
96
|
-
return "";
|
|
97
|
-
return d.content.map(block).filter((b) => b !== "").join("\n\n");
|
|
98
|
-
}
|