@multiplatform.one/frappe-ui 6.3.0 → 6.4.1
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/cjs/FrappeDashboard.cjs +12 -2
- package/dist/cjs/FrappeDashboard.native.js +12 -2
- package/dist/cjs/FrappeDashboard.native.js.map +1 -1
- package/dist/cjs/FrappeLikedBy.cjs +2 -1
- package/dist/cjs/FrappeLikedBy.native.js +3 -1
- package/dist/cjs/FrappeLikedBy.native.js.map +1 -1
- package/dist/cjs/FrappeListView.cjs +10 -1
- package/dist/cjs/FrappeListView.native.js +10 -1
- package/dist/cjs/FrappeListView.native.js.map +1 -1
- package/dist/cjs/fieldRegistry.cjs +1 -1
- package/dist/cjs/fieldRegistry.native.js +1 -1
- package/dist/cjs/fieldRegistry.native.js.map +1 -1
- package/dist/cjs/fields/MarkdownEditor/index.cjs +33 -108
- package/dist/cjs/fields/MarkdownEditor/index.native.js +3 -3
- package/dist/cjs/fields/MarkdownEditor/index.native.js.map +1 -1
- package/dist/esm/FrappeDashboard.mjs +13 -3
- package/dist/esm/FrappeDashboard.mjs.map +1 -1
- package/dist/esm/FrappeDashboard.native.js +13 -3
- package/dist/esm/FrappeDashboard.native.js.map +1 -1
- package/dist/esm/FrappeLikedBy.mjs +3 -2
- package/dist/esm/FrappeLikedBy.mjs.map +1 -1
- package/dist/esm/FrappeLikedBy.native.js +4 -2
- package/dist/esm/FrappeLikedBy.native.js.map +1 -1
- package/dist/esm/FrappeListView.mjs +11 -2
- package/dist/esm/FrappeListView.mjs.map +1 -1
- package/dist/esm/FrappeListView.native.js +11 -2
- package/dist/esm/FrappeListView.native.js.map +1 -1
- package/dist/esm/fieldRegistry.mjs +1 -1
- package/dist/esm/fieldRegistry.mjs.map +1 -1
- package/dist/esm/fieldRegistry.native.js +1 -1
- package/dist/esm/fieldRegistry.native.js.map +1 -1
- package/dist/esm/fields/MarkdownEditor/index.mjs +36 -100
- package/dist/esm/fields/MarkdownEditor/index.mjs.map +1 -1
- package/dist/esm/fields/MarkdownEditor/index.native.js.map +1 -1
- package/dist/jsx/FrappeDashboard.mjs +13 -3
- package/dist/jsx/FrappeDashboard.mjs.map +1 -1
- package/dist/jsx/FrappeDashboard.native.js +12 -2
- package/dist/jsx/FrappeDashboard.native.js.map +1 -1
- package/dist/jsx/FrappeLikedBy.mjs +3 -2
- package/dist/jsx/FrappeLikedBy.mjs.map +1 -1
- package/dist/jsx/FrappeLikedBy.native.js +3 -1
- package/dist/jsx/FrappeLikedBy.native.js.map +1 -1
- package/dist/jsx/FrappeListView.mjs +11 -2
- package/dist/jsx/FrappeListView.mjs.map +1 -1
- package/dist/jsx/FrappeListView.native.js +10 -1
- package/dist/jsx/FrappeListView.native.js.map +1 -1
- package/dist/jsx/fieldRegistry.mjs +1 -1
- package/dist/jsx/fieldRegistry.mjs.map +1 -1
- package/dist/jsx/fieldRegistry.native.js +1 -1
- package/dist/jsx/fieldRegistry.native.js.map +1 -1
- package/dist/jsx/fields/MarkdownEditor/index.mjs +36 -100
- package/dist/jsx/fields/MarkdownEditor/index.mjs.map +1 -1
- package/dist/jsx/fields/MarkdownEditor/index.native.js +3 -3
- package/dist/jsx/fields/MarkdownEditor/index.native.js.map +1 -1
- package/package.json +22 -15
- package/src/FrappeDashboard.stories.tsx +3 -1
- package/src/FrappeDashboard.tsx +21 -1
- package/src/FrappeLikedBy.tsx +13 -2
- package/src/FrappeListView.tsx +21 -1
- package/src/FrappeTable.stories.tsx +91 -12
- package/src/fieldRegistry.ts +1 -1
- package/src/fields/Date/index.tsx +47 -3
- package/src/fields/MarkdownEditor/MarkdownEditor.spec.tsx +56 -32
- package/src/fields/MarkdownEditor/MarkdownEditor.stories.tsx +5 -5
- package/src/fields/MarkdownEditor/index.native.tsx +292 -0
- package/src/fields/MarkdownEditor/index.tsx +64 -139
- package/types/FrappeDashboard.d.ts.map +1 -1
- package/types/FrappeLikedBy.d.ts.map +1 -1
- package/types/FrappeListView.d.ts.map +1 -1
- package/types/fieldRegistry.d.ts.map +1 -1
- package/types/fields/MarkdownEditor/index.d.ts +11 -5
- package/types/fields/MarkdownEditor/index.d.ts.map +1 -1
- package/types/fields/MarkdownEditor/index.native.d.ts +47 -0
- package/types/fields/MarkdownEditor/index.native.d.ts.map +1 -0
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MarkdownEditorField — dedicated renderer for the Frappe `Markdown Editor`
|
|
3
|
-
* fieldtype:
|
|
4
|
-
* (
|
|
5
|
-
*
|
|
3
|
+
* fieldtype: the canonical house rich text editor constrained to markdown
|
|
4
|
+
* capabilities (LC-52 MARKDOWN-EXPRESSIBLE-EDITING). WYSIWYG editing whose
|
|
5
|
+
* surface is exactly what GFM can express — no highlight, underline, text
|
|
6
|
+
* color, or alignment — with `value`/`onChange` staying markdown strings
|
|
7
|
+
* (Frappe stores markdown text for this fieldtype).
|
|
6
8
|
*
|
|
7
9
|
* Full field contract: three-branch render (skeleton → standalone →
|
|
8
10
|
* form-integrated), canonical `onChange(value)` (LC-14), FieldLayout slot
|
|
9
11
|
* order, chromeless inside table cells (useIsInTableCell).
|
|
12
|
+
*
|
|
13
|
+
* Native renders the markdown source + preview fallback (see
|
|
14
|
+
* `index.native.tsx`) — 10Tap cannot honestly express the capability
|
|
15
|
+
* constraint, and a lookalike would violate the honest-gating posture.
|
|
10
16
|
*/
|
|
11
17
|
|
|
12
18
|
import {
|
|
13
19
|
Field,
|
|
14
20
|
FieldLayout,
|
|
15
21
|
Skeleton,
|
|
16
|
-
TextArea,
|
|
17
|
-
formCommonColors,
|
|
18
22
|
getFieldError,
|
|
19
23
|
mergeFieldHandler,
|
|
20
24
|
useFormField,
|
|
@@ -22,84 +26,13 @@ import {
|
|
|
22
26
|
useResolvedValidators,
|
|
23
27
|
type AnyFormApi,
|
|
24
28
|
} from "@multiplatform.one/forms";
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import type {
|
|
28
|
-
import {
|
|
29
|
-
import { useResolvedKnobs } from "@multiplatform.one/theme";
|
|
30
|
-
import { EditorPreviewPanes, PreviewSurface } from "../shared/EditorPreviewPanes";
|
|
31
|
-
|
|
32
|
-
// ---------------------------------------------------------------------------
|
|
33
|
-
// Preview (lazy house Markdown renderer)
|
|
34
|
-
// ---------------------------------------------------------------------------
|
|
35
|
-
|
|
36
|
-
type MarkdownComponent = ComponentType<{ children?: string }>;
|
|
37
|
-
|
|
38
|
-
// Module-level cache so the renderer loads once per session, not per field.
|
|
39
|
-
let markdownRendererCache: MarkdownComponent | null = null;
|
|
29
|
+
import { RichEditor, type RichEditorRef } from "@multiplatform.one/rich-text";
|
|
30
|
+
import { useEffect, useRef, useState, type ReactNode } from "react";
|
|
31
|
+
import type { LabelProps, SizeTokens } from "tamagui";
|
|
32
|
+
import { YStack } from "tamagui";
|
|
40
33
|
|
|
41
|
-
/**
|
|
42
|
-
|
|
43
|
-
* renders (same optional-dependency pattern as the components shiki
|
|
44
|
-
* Highlighter): `@multiplatform.one/markdown` reaches consumers transitively
|
|
45
|
-
* via `@multiplatform.one/rich-text`, and a failed import degrades to a
|
|
46
|
-
* plain-text preview instead of crashing the field.
|
|
47
|
-
*/
|
|
48
|
-
function useMarkdownRenderer(enabled: boolean): MarkdownComponent | null {
|
|
49
|
-
const [renderer, setRenderer] = useState<MarkdownComponent | null>(markdownRendererCache);
|
|
50
|
-
|
|
51
|
-
useEffect(() => {
|
|
52
|
-
if (!enabled || renderer) return;
|
|
53
|
-
let cancelled = false;
|
|
54
|
-
import("@multiplatform.one/markdown")
|
|
55
|
-
.then((mod) => {
|
|
56
|
-
markdownRendererCache = mod.Markdown as MarkdownComponent;
|
|
57
|
-
if (!cancelled) setRenderer(() => markdownRendererCache);
|
|
58
|
-
})
|
|
59
|
-
.catch(() => {
|
|
60
|
-
// Renderer unavailable — the plain-text fallback below stays up.
|
|
61
|
-
});
|
|
62
|
-
return () => {
|
|
63
|
-
cancelled = true;
|
|
64
|
-
};
|
|
65
|
-
}, [enabled, renderer]);
|
|
66
|
-
|
|
67
|
-
return renderer;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
interface MarkdownPreviewProps {
|
|
71
|
-
value: string;
|
|
72
|
-
compact?: boolean;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
function MarkdownPreview({ value, compact }: MarkdownPreviewProps) {
|
|
76
|
-
const { t } = useTranslation();
|
|
77
|
-
const { knobProps } = useResolvedKnobs({ compact });
|
|
78
|
-
const Renderer = useMarkdownRenderer(!!value);
|
|
79
|
-
// Content type scale follows the size knob (same idiom as CodeBlock).
|
|
80
|
-
const textSize = knobProps.sizeToken as FontSizeTokens;
|
|
81
|
-
|
|
82
|
-
return (
|
|
83
|
-
<PreviewSurface compact={compact}>
|
|
84
|
-
{!value ? (
|
|
85
|
-
<Paragraph color={formCommonColors.muted} size={textSize}>
|
|
86
|
-
{t("Nothing to preview")}
|
|
87
|
-
</Paragraph>
|
|
88
|
-
) : Renderer ? (
|
|
89
|
-
<Renderer>{value}</Renderer>
|
|
90
|
-
) : (
|
|
91
|
-
// Loading / renderer unavailable: honest plain-text fallback.
|
|
92
|
-
<Paragraph size={textSize} whiteSpace="pre-wrap">
|
|
93
|
-
{value}
|
|
94
|
-
</Paragraph>
|
|
95
|
-
)}
|
|
96
|
-
</PreviewSurface>
|
|
97
|
-
);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// ---------------------------------------------------------------------------
|
|
101
|
-
// MarkdownEditorField
|
|
102
|
-
// ---------------------------------------------------------------------------
|
|
34
|
+
/** Approximate source-row height used to map the row props onto the editor */
|
|
35
|
+
const ROW_HEIGHT = 24;
|
|
103
36
|
|
|
104
37
|
export interface MarkdownEditorFieldProps {
|
|
105
38
|
name?: string;
|
|
@@ -122,9 +55,9 @@ export interface MarkdownEditorFieldProps {
|
|
|
122
55
|
onChange?: (value: string) => void;
|
|
123
56
|
onBlur?: (...args: any[]) => void;
|
|
124
57
|
placeholder?: string;
|
|
125
|
-
/** Minimum visible
|
|
58
|
+
/** Minimum visible content rows (default 6). */
|
|
126
59
|
minRows?: number;
|
|
127
|
-
/** Maximum
|
|
60
|
+
/** Maximum content rows before the editor scrolls (default 16). */
|
|
128
61
|
maxRows?: number;
|
|
129
62
|
"aria-label"?: string;
|
|
130
63
|
}
|
|
@@ -153,21 +86,28 @@ export function MarkdownEditorField({
|
|
|
153
86
|
maxRows = 16,
|
|
154
87
|
"aria-label": ariaLabel,
|
|
155
88
|
}: MarkdownEditorFieldProps) {
|
|
156
|
-
const { t } = useTranslation();
|
|
157
89
|
const { resolvedForm, knobProps, id } = useFormField({ form: formProp, id: idProp, compact });
|
|
158
90
|
const resolvedValidators = useResolvedValidators(required, validators, label, name);
|
|
159
91
|
const inTableCell = useIsInTableCell();
|
|
160
92
|
|
|
161
|
-
|
|
162
|
-
//
|
|
93
|
+
const editorRef = useRef<RichEditorRef>(null);
|
|
94
|
+
// Last markdown the editor emitted (or was seeded with) — distinguishes
|
|
95
|
+
// echo renders from real external value changes so programmatic sync
|
|
96
|
+
// never clobbers the caret.
|
|
97
|
+
const lastEmittedRef = useRef<string>(value ?? defaultValue ?? "");
|
|
163
98
|
const [internalValue, setInternalValue] = useState(value ?? defaultValue ?? "");
|
|
99
|
+
|
|
100
|
+
// External (controlled) value change: push into the editor without
|
|
101
|
+
// emitting onChange back (setMarkdown is emitUpdate: false).
|
|
164
102
|
useEffect(() => {
|
|
165
|
-
if (value
|
|
103
|
+
if (value === undefined) return;
|
|
104
|
+
setInternalValue(value);
|
|
105
|
+
if (value !== lastEmittedRef.current) {
|
|
106
|
+
lastEmittedRef.current = value;
|
|
107
|
+
editorRef.current?.setMarkdown(value);
|
|
108
|
+
}
|
|
166
109
|
}, [value]);
|
|
167
110
|
|
|
168
|
-
const accessibleName =
|
|
169
|
-
ariaLabel ?? (typeof label === "string" ? label : undefined) ?? placeholder;
|
|
170
|
-
|
|
171
111
|
if (skeleton) {
|
|
172
112
|
return (
|
|
173
113
|
<YStack {...knobProps.gap} width="100%">
|
|
@@ -177,60 +117,39 @@ export function MarkdownEditorField({
|
|
|
177
117
|
);
|
|
178
118
|
}
|
|
179
119
|
|
|
180
|
-
const
|
|
181
|
-
|
|
182
|
-
handleChange?: (
|
|
120
|
+
const renderControl = (
|
|
121
|
+
markdownValue: string,
|
|
122
|
+
handleChange?: (markdown: string) => void,
|
|
123
|
+
handleFieldBlur?: () => void,
|
|
183
124
|
hasError?: boolean,
|
|
184
125
|
) => (
|
|
185
|
-
<
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
126
|
+
<RichEditor
|
|
127
|
+
ref={editorRef}
|
|
128
|
+
capabilities="markdown"
|
|
129
|
+
initialContent={markdownValue}
|
|
130
|
+
onChange={(markdown) => {
|
|
189
131
|
if (disabled || readOnly) return;
|
|
190
|
-
|
|
191
|
-
|
|
132
|
+
lastEmittedRef.current = markdown;
|
|
133
|
+
handleChange?.(markdown);
|
|
134
|
+
onChange?.(markdown);
|
|
192
135
|
}}
|
|
136
|
+
onBlur={handleFieldBlur}
|
|
193
137
|
placeholder={placeholder}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
compact={compact}
|
|
138
|
+
editable={!disabled && !readOnly}
|
|
139
|
+
minHeight={minRows * ROW_HEIGHT}
|
|
140
|
+
maxHeight={maxRows * ROW_HEIGHT}
|
|
141
|
+
hasError={hasError}
|
|
199
142
|
size={size}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
autoCapitalize: "none",
|
|
205
|
-
autoCorrect: false,
|
|
206
|
-
spellCheck: false,
|
|
207
|
-
...(accessibleName ? { "aria-label": accessibleName } : {}),
|
|
208
|
-
}}
|
|
143
|
+
compact={compact || inTableCell}
|
|
144
|
+
// Table cells stay chromeless: no fixed toolbar, bubble on selection.
|
|
145
|
+
showToolbar={!inTableCell}
|
|
146
|
+
showBubbleToolbar={inTableCell}
|
|
209
147
|
/>
|
|
210
148
|
);
|
|
211
149
|
|
|
212
|
-
// Table cells get the chromeless source pane only (no tabs/preview chrome);
|
|
213
|
-
// InputParts inside the forms TextArea detects the cell context itself.
|
|
214
|
-
const renderControl = (
|
|
215
|
-
textValue: string,
|
|
216
|
-
handleChange?: (text: string) => void,
|
|
217
|
-
hasError?: boolean,
|
|
218
|
-
) => {
|
|
219
|
-
if (inTableCell) return renderSource(textValue, handleChange, hasError);
|
|
220
|
-
return (
|
|
221
|
-
<EditorPreviewPanes
|
|
222
|
-
editor={renderSource(textValue, handleChange, hasError)}
|
|
223
|
-
preview={<MarkdownPreview value={textValue} compact={compact} />}
|
|
224
|
-
editTabLabel={t("Write")}
|
|
225
|
-
previewTabLabel={t("Preview")}
|
|
226
|
-
compact={compact}
|
|
227
|
-
defaultPreview={!!readOnly}
|
|
228
|
-
/>
|
|
229
|
-
);
|
|
230
|
-
};
|
|
231
|
-
|
|
232
150
|
if (!resolvedForm || !name) {
|
|
233
|
-
|
|
151
|
+
const standaloneControl = renderControl(internalValue, setInternalValue, onBlur, !!error);
|
|
152
|
+
if (inTableCell) return standaloneControl;
|
|
234
153
|
return (
|
|
235
154
|
<FieldLayout
|
|
236
155
|
id={id}
|
|
@@ -246,7 +165,7 @@ export function MarkdownEditorField({
|
|
|
246
165
|
aria-label={ariaLabel}
|
|
247
166
|
placeholder={placeholder}
|
|
248
167
|
>
|
|
249
|
-
{
|
|
168
|
+
{standaloneControl}
|
|
250
169
|
</FieldLayout>
|
|
251
170
|
);
|
|
252
171
|
}
|
|
@@ -261,8 +180,14 @@ export function MarkdownEditorField({
|
|
|
261
180
|
{(field) => {
|
|
262
181
|
const resolvedError = getFieldError(field, error);
|
|
263
182
|
const fieldValue = typeof field.state.value === "string" ? field.state.value : "";
|
|
264
|
-
const handleChange = (
|
|
265
|
-
|
|
183
|
+
const handleChange = (markdown: string) => field.handleChange(markdown as any);
|
|
184
|
+
const formControl = renderControl(
|
|
185
|
+
fieldValue,
|
|
186
|
+
handleChange,
|
|
187
|
+
() => field.handleBlur(),
|
|
188
|
+
!!resolvedError,
|
|
189
|
+
);
|
|
190
|
+
if (inTableCell) return formControl;
|
|
266
191
|
return (
|
|
267
192
|
<FieldLayout
|
|
268
193
|
id={id}
|
|
@@ -278,7 +203,7 @@ export function MarkdownEditorField({
|
|
|
278
203
|
aria-label={ariaLabel}
|
|
279
204
|
placeholder={placeholder}
|
|
280
205
|
>
|
|
281
|
-
{
|
|
206
|
+
{formControl}
|
|
282
207
|
</FieldLayout>
|
|
283
208
|
);
|
|
284
209
|
}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrappeDashboard.d.ts","sourceRoot":"","sources":["../src/FrappeDashboard.tsx"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,cAAc,EAEnB,KAAK,eAAe,EACrB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,KAA4D,MAAM,OAAO,CAAC;AAGjF,OAAO,EAAgC,KAAK,WAAW,EAAM,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"FrappeDashboard.d.ts","sourceRoot":"","sources":["../src/FrappeDashboard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrappeLikedBy.d.ts","sourceRoot":"","sources":["../src/FrappeLikedBy.tsx"],"names":[],"mappings":"AAmBA,OAAO,
|
|
1
|
+
{"version":3,"file":"FrappeLikedBy.d.ts","sourceRoot":"","sources":["../src/FrappeLikedBy.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAAiD,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAU1F;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAanD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,IAAI,EAAE,MAAM,GACX;IAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,CAKlC;AAYD,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,MAAM,CAAC;IAChF,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wDAAwD;IACxD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACxD;AA2PD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,2CAMtD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrappeListView.d.ts","sourceRoot":"","sources":["../src/FrappeListView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,KAAoD,MAAM,OAAO,CAAC;AAGzE,OAAO,EASL,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"FrappeListView.d.ts","sourceRoot":"","sources":["../src/FrappeListView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,KAAoD,MAAM,OAAO,CAAC;AAGzE,OAAO,EASL,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AA4BjB,UAAU,eAAe;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,KAAK,CAAC,SAAS,CAAC;CACpD;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC;AAE5C,MAAM,WAAW,mBAAmB,CAAC,IAAI,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAE,SAAQ,IAAI,CAC/F,WAAW,EACX,UAAU,CACX;IACC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,IAAI,GAAG,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxE,eAAe,CAAC,EAAE,YAAY,CAAC;IAC/B,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;IAC3C,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAiED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,EAC7E,OAAO,EACP,MAAM,EACN,OAAO,EACP,eAAwB,EACxB,WAAW,EACX,KAAK,EACL,OAAO,EACP,aAAa,EACb,WAAkB,EAClB,iBAAyB,EAEzB,kBAAkB,EAAE,mBAAmB,EACvC,OAAO,EACP,IAAI,EACJ,WAAW,EACX,GAAG,UAAU,EACd,EAAE,mBAAmB,CAAC,IAAI,CAAC,2CAyf3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fieldRegistry.d.ts","sourceRoot":"","sources":["../src/fieldRegistry.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"fieldRegistry.d.ts","sourceRoot":"","sources":["../src/fieldRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MarkdownEditorField — dedicated renderer for the Frappe `Markdown Editor`
|
|
3
|
-
* fieldtype:
|
|
4
|
-
* (
|
|
5
|
-
*
|
|
3
|
+
* fieldtype: the canonical house rich text editor constrained to markdown
|
|
4
|
+
* capabilities (LC-52 MARKDOWN-EXPRESSIBLE-EDITING). WYSIWYG editing whose
|
|
5
|
+
* surface is exactly what GFM can express — no highlight, underline, text
|
|
6
|
+
* color, or alignment — with `value`/`onChange` staying markdown strings
|
|
7
|
+
* (Frappe stores markdown text for this fieldtype).
|
|
6
8
|
*
|
|
7
9
|
* Full field contract: three-branch render (skeleton → standalone →
|
|
8
10
|
* form-integrated), canonical `onChange(value)` (LC-14), FieldLayout slot
|
|
9
11
|
* order, chromeless inside table cells (useIsInTableCell).
|
|
12
|
+
*
|
|
13
|
+
* Native renders the markdown source + preview fallback (see
|
|
14
|
+
* `index.native.tsx`) — 10Tap cannot honestly express the capability
|
|
15
|
+
* constraint, and a lookalike would violate the honest-gating posture.
|
|
10
16
|
*/
|
|
11
17
|
import { type AnyFormApi } from "@multiplatform.one/forms";
|
|
12
18
|
import { type ReactNode } from "react";
|
|
@@ -32,9 +38,9 @@ export interface MarkdownEditorFieldProps {
|
|
|
32
38
|
onChange?: (value: string) => void;
|
|
33
39
|
onBlur?: (...args: any[]) => void;
|
|
34
40
|
placeholder?: string;
|
|
35
|
-
/** Minimum visible
|
|
41
|
+
/** Minimum visible content rows (default 6). */
|
|
36
42
|
minRows?: number;
|
|
37
|
-
/** Maximum
|
|
43
|
+
/** Maximum content rows before the editor scrolls (default 16). */
|
|
38
44
|
maxRows?: number;
|
|
39
45
|
"aria-label"?: string;
|
|
40
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/MarkdownEditor/index.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/MarkdownEditor/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EASL,KAAK,UAAU,EAChB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAMtD,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,IAAI,EAAE,QAAQ,EACd,UAAU,EACV,KAAK,EACL,UAAU,EACV,UAAU,EACV,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,EAAE,EAAE,MAAM,EACV,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,WAAW,EACX,OAAW,EACX,OAAY,EACZ,YAAY,EAAE,SAAS,GACxB,EAAE,wBAAwB,2CA4H1B"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MarkdownEditorField (NATIVE fallback) — markdown source pane with a live
|
|
3
|
+
* rendered preview (house `@multiplatform.one/markdown` renderer).
|
|
4
|
+
*
|
|
5
|
+
* The web tier renders the canonical rich text editor constrained to
|
|
6
|
+
* markdown capabilities (LC-52 MARKDOWN-EXPRESSIBLE-EDITING). On native the
|
|
7
|
+
* 10Tap WebView cannot express that constraint honestly tonight (extension
|
|
8
|
+
* gating + markdown serialization live in the web bundle), so this tier
|
|
9
|
+
* keeps plain markdown source editing — documented fallback, not a parallel
|
|
10
|
+
* WYSIWYG implementation.
|
|
11
|
+
*
|
|
12
|
+
* Full field contract: three-branch render (skeleton → standalone →
|
|
13
|
+
* form-integrated), canonical `onChange(value)` (LC-14), FieldLayout slot
|
|
14
|
+
* order, chromeless inside table cells (useIsInTableCell).
|
|
15
|
+
*/
|
|
16
|
+
import { type AnyFormApi } from "@multiplatform.one/forms";
|
|
17
|
+
import { type ReactNode } from "react";
|
|
18
|
+
import type { LabelProps, SizeTokens } from "tamagui";
|
|
19
|
+
export interface MarkdownEditorFieldProps {
|
|
20
|
+
name?: string;
|
|
21
|
+
form?: AnyFormApi;
|
|
22
|
+
validators?: Record<string, unknown>;
|
|
23
|
+
label?: ReactNode;
|
|
24
|
+
labelProps?: Omit<LabelProps, "htmlFor" | "ref">;
|
|
25
|
+
helperText?: string;
|
|
26
|
+
error?: string | boolean;
|
|
27
|
+
required?: boolean;
|
|
28
|
+
disabled?: boolean;
|
|
29
|
+
readOnly?: boolean;
|
|
30
|
+
skeleton?: boolean;
|
|
31
|
+
compact?: boolean;
|
|
32
|
+
size?: SizeTokens;
|
|
33
|
+
id?: string;
|
|
34
|
+
value?: string;
|
|
35
|
+
defaultValue?: string;
|
|
36
|
+
/** Canonical change contract (LC-14): emits the markdown source string. */
|
|
37
|
+
onChange?: (value: string) => void;
|
|
38
|
+
onBlur?: (...args: any[]) => void;
|
|
39
|
+
placeholder?: string;
|
|
40
|
+
/** Minimum visible source rows (default 6). */
|
|
41
|
+
minRows?: number;
|
|
42
|
+
/** Maximum source rows before the textarea scrolls (default 16). */
|
|
43
|
+
maxRows?: number;
|
|
44
|
+
"aria-label"?: string;
|
|
45
|
+
}
|
|
46
|
+
export declare function MarkdownEditorField({ name, form: formProp, validators, label, labelProps, helperText, error, required, disabled, readOnly, skeleton, compact, size, id: idProp, value, defaultValue, onChange, onBlur, placeholder, minRows, maxRows, "aria-label": ariaLabel, }: MarkdownEditorFieldProps): import("react/jsx-runtime").JSX.Element;
|
|
47
|
+
//# sourceMappingURL=index.native.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.native.d.ts","sourceRoot":"","sources":["../../../src/fields/MarkdownEditor/index.native.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAWL,KAAK,UAAU,EAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAA2C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEhF,OAAO,KAAK,EAAkB,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AA6EtE,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,IAAI,EAAE,QAAQ,EACd,UAAU,EACV,KAAK,EACL,UAAU,EACV,UAAU,EACV,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,EAAE,EAAE,MAAM,EACV,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,WAAW,EACX,OAAW,EACX,OAAY,EACZ,YAAY,EAAE,SAAS,GACxB,EAAE,wBAAwB,2CAoI1B"}
|