@multiplatform.one/rich-text 7.34.4 → 7.36.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/dist/cjs/RichEditor.cjs +1 -4
- package/dist/cjs/RichEditor.native.js +1 -8
- package/dist/cjs/RichEditor.native.js.map +1 -1
- package/dist/cjs/RichTextEditor/index.cjs +1 -4
- package/dist/cjs/RichTextEditor/index.native.js +1 -4
- package/dist/cjs/RichTextEditor/index.native.js.map +1 -1
- package/dist/cjs/context.cjs +0 -1
- package/dist/cjs/context.native.js +0 -1
- package/dist/cjs/context.native.js.map +1 -1
- package/dist/cjs/editor/TiptapEditor.cjs +1 -2
- package/dist/cjs/editor/TiptapEditor.native.js +1 -2
- package/dist/cjs/editor/TiptapEditor.native.js.map +1 -1
- package/dist/cjs/editor/editorStyles.cjs +6 -4
- package/dist/cjs/editor/editorStyles.native.js +6 -4
- package/dist/cjs/editor/editorStyles.native.js.map +1 -1
- package/dist/cjs/editor/suggestionPopup.cjs +3 -1
- package/dist/cjs/editor/suggestionPopup.native.js +3 -1
- package/dist/cjs/editor/suggestionPopup.native.js.map +1 -1
- package/dist/cjs/styled.cjs +0 -20
- package/dist/cjs/styled.native.js +0 -20
- package/dist/cjs/styled.native.js.map +1 -1
- package/dist/cjs/toolbar/ColorPicker.cjs +3 -3
- package/dist/cjs/toolbar/FixedToolbar.native.js +6 -4
- package/dist/cjs/toolbar/FixedToolbar.native.js.map +1 -1
- package/dist/cjs/toolbar/HeadingPicker.cjs +0 -1
- package/dist/cjs/toolbar/HeadingPicker.native.js +0 -1
- package/dist/cjs/toolbar/HeadingPicker.native.js.map +1 -1
- package/dist/cjs/toolbar/ImageBubble.cjs +0 -1
- package/dist/cjs/toolbar/ImageBubble.native.js +0 -1
- package/dist/cjs/toolbar/ImageBubble.native.js.map +1 -1
- package/dist/cjs/toolbar/ImageDialog.cjs +3 -3
- package/dist/cjs/toolbar/ImageDialog.native.js +3 -2
- package/dist/cjs/toolbar/ImageDialog.native.js.map +1 -1
- package/dist/cjs/toolbar/LinkDialog.cjs +3 -3
- package/dist/cjs/toolbar/LinkDialog.native.js +3 -2
- package/dist/cjs/toolbar/LinkDialog.native.js.map +1 -1
- package/dist/cjs/toolbar/ToolbarButton.native.js +0 -6
- package/dist/cjs/toolbar/ToolbarButton.native.js.map +1 -1
- package/dist/esm/RichEditor.mjs +1 -4
- package/dist/esm/RichEditor.mjs.map +1 -1
- package/dist/esm/RichEditor.native.js +1 -8
- package/dist/esm/RichEditor.native.js.map +1 -1
- package/dist/esm/RichTextEditor/index.mjs +1 -4
- package/dist/esm/RichTextEditor/index.mjs.map +1 -1
- package/dist/esm/RichTextEditor/index.native.js +1 -4
- package/dist/esm/RichTextEditor/index.native.js.map +1 -1
- package/dist/esm/context.mjs +0 -1
- package/dist/esm/context.mjs.map +1 -1
- package/dist/esm/context.native.js +0 -1
- package/dist/esm/context.native.js.map +1 -1
- package/dist/esm/editor/TiptapEditor.mjs +2 -3
- package/dist/esm/editor/TiptapEditor.mjs.map +1 -1
- package/dist/esm/editor/TiptapEditor.native.js +2 -3
- package/dist/esm/editor/TiptapEditor.native.js.map +1 -1
- package/dist/esm/editor/editorStyles.mjs +6 -4
- package/dist/esm/editor/editorStyles.mjs.map +1 -1
- package/dist/esm/editor/editorStyles.native.js +6 -4
- package/dist/esm/editor/editorStyles.native.js.map +1 -1
- package/dist/esm/editor/suggestionPopup.mjs +3 -1
- package/dist/esm/editor/suggestionPopup.mjs.map +1 -1
- package/dist/esm/editor/suggestionPopup.native.js +3 -1
- package/dist/esm/editor/suggestionPopup.native.js.map +1 -1
- package/dist/esm/styled.mjs +0 -20
- package/dist/esm/styled.mjs.map +1 -1
- package/dist/esm/styled.native.js +0 -20
- package/dist/esm/styled.native.js.map +1 -1
- package/dist/esm/toolbar/ColorPicker.mjs +4 -4
- package/dist/esm/toolbar/ColorPicker.mjs.map +1 -1
- package/dist/esm/toolbar/FixedToolbar.native.js +7 -5
- package/dist/esm/toolbar/FixedToolbar.native.js.map +1 -1
- package/dist/esm/toolbar/HeadingPicker.mjs +0 -1
- package/dist/esm/toolbar/HeadingPicker.mjs.map +1 -1
- package/dist/esm/toolbar/HeadingPicker.native.js +0 -1
- package/dist/esm/toolbar/HeadingPicker.native.js.map +1 -1
- package/dist/esm/toolbar/ImageBubble.mjs +0 -1
- package/dist/esm/toolbar/ImageBubble.mjs.map +1 -1
- package/dist/esm/toolbar/ImageBubble.native.js +0 -1
- package/dist/esm/toolbar/ImageBubble.native.js.map +1 -1
- package/dist/esm/toolbar/ImageDialog.mjs +4 -4
- package/dist/esm/toolbar/ImageDialog.mjs.map +1 -1
- package/dist/esm/toolbar/ImageDialog.native.js +4 -3
- package/dist/esm/toolbar/ImageDialog.native.js.map +1 -1
- package/dist/esm/toolbar/LinkDialog.mjs +4 -4
- package/dist/esm/toolbar/LinkDialog.mjs.map +1 -1
- package/dist/esm/toolbar/LinkDialog.native.js +4 -3
- package/dist/esm/toolbar/LinkDialog.native.js.map +1 -1
- package/dist/esm/toolbar/ToolbarButton.native.js +0 -6
- package/dist/esm/toolbar/ToolbarButton.native.js.map +1 -1
- package/dist/jsx/RichEditor.mjs +1 -4
- package/dist/jsx/RichEditor.mjs.map +1 -1
- package/dist/jsx/RichEditor.native.js +1 -8
- package/dist/jsx/RichEditor.native.js.map +1 -1
- package/dist/jsx/RichTextEditor/index.mjs +1 -4
- package/dist/jsx/RichTextEditor/index.mjs.map +1 -1
- package/dist/jsx/RichTextEditor/index.native.js +1 -4
- package/dist/jsx/RichTextEditor/index.native.js.map +1 -1
- package/dist/jsx/context.mjs +0 -1
- package/dist/jsx/context.mjs.map +1 -1
- package/dist/jsx/context.native.js +0 -1
- package/dist/jsx/context.native.js.map +1 -1
- package/dist/jsx/editor/TiptapEditor.mjs +2 -3
- package/dist/jsx/editor/TiptapEditor.mjs.map +1 -1
- package/dist/jsx/editor/TiptapEditor.native.js +1 -2
- package/dist/jsx/editor/TiptapEditor.native.js.map +1 -1
- package/dist/jsx/editor/editorStyles.mjs +6 -4
- package/dist/jsx/editor/editorStyles.mjs.map +1 -1
- package/dist/jsx/editor/editorStyles.native.js +6 -4
- package/dist/jsx/editor/editorStyles.native.js.map +1 -1
- package/dist/jsx/editor/suggestionPopup.mjs +3 -1
- package/dist/jsx/editor/suggestionPopup.mjs.map +1 -1
- package/dist/jsx/editor/suggestionPopup.native.js +3 -1
- package/dist/jsx/editor/suggestionPopup.native.js.map +1 -1
- package/dist/jsx/styled.mjs +0 -20
- package/dist/jsx/styled.mjs.map +1 -1
- package/dist/jsx/styled.native.js +0 -20
- package/dist/jsx/styled.native.js.map +1 -1
- package/dist/jsx/toolbar/ColorPicker.mjs +4 -4
- package/dist/jsx/toolbar/ColorPicker.mjs.map +1 -1
- package/dist/jsx/toolbar/FixedToolbar.native.js +6 -4
- package/dist/jsx/toolbar/FixedToolbar.native.js.map +1 -1
- package/dist/jsx/toolbar/HeadingPicker.mjs +0 -1
- package/dist/jsx/toolbar/HeadingPicker.mjs.map +1 -1
- package/dist/jsx/toolbar/HeadingPicker.native.js +0 -1
- package/dist/jsx/toolbar/HeadingPicker.native.js.map +1 -1
- package/dist/jsx/toolbar/ImageBubble.mjs +0 -1
- package/dist/jsx/toolbar/ImageBubble.mjs.map +1 -1
- package/dist/jsx/toolbar/ImageBubble.native.js +0 -1
- package/dist/jsx/toolbar/ImageBubble.native.js.map +1 -1
- package/dist/jsx/toolbar/ImageDialog.mjs +4 -4
- package/dist/jsx/toolbar/ImageDialog.mjs.map +1 -1
- package/dist/jsx/toolbar/ImageDialog.native.js +3 -2
- package/dist/jsx/toolbar/ImageDialog.native.js.map +1 -1
- package/dist/jsx/toolbar/LinkDialog.mjs +4 -4
- package/dist/jsx/toolbar/LinkDialog.mjs.map +1 -1
- package/dist/jsx/toolbar/LinkDialog.native.js +3 -2
- package/dist/jsx/toolbar/LinkDialog.native.js.map +1 -1
- package/dist/jsx/toolbar/ToolbarButton.native.js +0 -6
- package/dist/jsx/toolbar/ToolbarButton.native.js.map +1 -1
- package/package.json +8 -8
- package/src/RichEditor.native.tsx +4 -15
- package/src/RichEditor.parts.stories.tsx +1 -4
- package/src/RichEditor.stories.tsx +0 -2
- package/src/RichEditor.tsx +1 -6
- package/src/RichTextEditor/index.tsx +1 -5
- package/src/RichTextEditor/richTextEditor.spec.tsx +6 -9
- package/src/context.ts +0 -2
- package/src/editor/TentapEditor.native.spec.tsx +4 -0
- package/src/editor/TiptapEditor.tsx +2 -5
- package/src/editor/editorStyles.spec.ts +3 -1
- package/src/editor/editorStyles.ts +7 -4
- package/src/editor/suggestionPopup.tsx +4 -1
- package/src/editor/tiptapEditor.spec.tsx +1 -7
- package/src/integration.spec.tsx +3 -3
- package/src/styled.ts +0 -20
- package/src/toolbar/CodeBlockBubble.spec.tsx +1 -1
- package/src/toolbar/ColorPicker.tsx +7 -3
- package/src/toolbar/FixedToolbar.native.tsx +7 -3
- package/src/toolbar/FixedToolbar.stories.tsx +1 -1
- package/src/toolbar/HeadingPicker.tsx +1 -1
- package/src/toolbar/ImageBubble.spec.tsx +1 -1
- package/src/toolbar/ImageBubble.tsx +1 -3
- package/src/toolbar/ImageDialog.native.tsx +4 -2
- package/src/toolbar/ImageDialog.tsx +7 -3
- package/src/toolbar/LinkBubble.spec.tsx +1 -1
- package/src/toolbar/LinkDialog.native.tsx +4 -2
- package/src/toolbar/LinkDialog.tsx +7 -3
- package/src/toolbar/StatusBar.spec.tsx +1 -1
- package/src/toolbar/StatusBar.stories.tsx +1 -1
- package/src/toolbar/TableBubble.spec.tsx +1 -1
- package/src/toolbar/ToolbarButton.native.tsx +0 -8
- package/src/toolbar/ToolbarButton.stories.tsx +1 -1
- package/src/toolbar/ToolbarGroup.stories.tsx +1 -1
- package/src/toolbar/bubbleToolbar.spec.tsx +1 -1
- package/src/toolbar/fixedToolbar.spec.tsx +1 -1
- package/src/toolbar/toolbarButtonRadius.spec.tsx +1 -1
- package/src/toolbar/toolbarPrimitives.spec.tsx +4 -4
- package/src/toolbar/toolbarSubComponents.spec.tsx +1 -1
- package/src/types.ts +0 -2
- package/types/RichEditor.d.ts +1 -3
- package/types/RichEditor.d.ts.map +1 -1
- package/types/RichEditor.native.d.ts +0 -2
- package/types/RichEditor.native.d.ts.map +1 -1
- package/types/RichTextEditor/index.d.ts +0 -2
- package/types/RichTextEditor/index.d.ts.map +1 -1
- package/types/context.d.ts +0 -1
- package/types/context.d.ts.map +1 -1
- package/types/editor/TiptapEditor.d.ts.map +1 -1
- package/types/editor/editorStyles.d.ts.map +1 -1
- package/types/editor/suggestionPopup.d.ts.map +1 -1
- package/types/styled.d.ts +3 -8
- package/types/styled.d.ts.map +1 -1
- package/types/toolbar/ColorPicker.d.ts.map +1 -1
- package/types/toolbar/FixedToolbar.native.d.ts.map +1 -1
- package/types/toolbar/ImageBubble.d.ts.map +1 -1
- package/types/toolbar/ImageDialog.d.ts.map +1 -1
- package/types/toolbar/ImageDialog.native.d.ts.map +1 -1
- package/types/toolbar/LinkDialog.d.ts.map +1 -1
- package/types/toolbar/LinkDialog.native.d.ts.map +1 -1
- package/types/toolbar/ToolbarButton.native.d.ts +2 -4
- package/types/toolbar/ToolbarButton.native.d.ts.map +1 -1
- package/types/types.d.ts +0 -2
- package/types/types.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useState","PopoverContent","useResolvedKnobs","Input","Popover","
|
|
1
|
+
{"version":3,"names":["useCallback","useState","PopoverContent","useResolvedKnobs","Input","Popover","SizableText","XStack","YStack","Button","ToolbarButton","LinkIcon","SHORTCUTS","t","normalizeUrl","jsx","jsxs","LinkDialog","editorRef","state","disabled","open","openProp","onOpenChange","knobProps","internalOpen","setInternalOpen","setOpen","next","linkUrl","setLinkUrl","handleSubmit","normalized","current","executeCommand","href","handleRemove","placement","children","Trigger","asChild","active","isLink","onPress","tooltip","link","panelPadding","Arrow","borderColor","backgroundColor","gap","minWidth","fontFamily","heading","size","sizeToken","placeholder","value","onChangeText","onSubmitEditing","autoFocus","justifyContent","error","theme","trim"],"sources":["../../../src/toolbar/LinkDialog.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -94,8 +94,9 @@ function LinkDialog(param) {
|
|
|
94
94
|
padding: "$4",
|
|
95
95
|
gap: "$3",
|
|
96
96
|
minWidth: 280,
|
|
97
|
-
children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.
|
|
98
|
-
|
|
97
|
+
children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.SizableText, {
|
|
98
|
+
fontFamily: "$heading",
|
|
99
|
+
size: "$4",
|
|
99
100
|
children: state.isLink ? (0, import_t.t)("Edit Link") : (0, import_t.t)("Add Link")
|
|
100
101
|
}), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Input, {
|
|
101
102
|
size: "$3",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["LinkDialog_native_exports","__export","LinkDialog","module","exports","__toCommonJS","import_jsx_runtime","require","import_react","import_react_native","import_tamagui","import_forms","import_ToolbarButton","import_icons","import_t","import_url","param","editorRef","state","disabled","open","setOpen","useState","linkUrl","setLinkUrl","handleSubmit","useCallback","normalized","normalizeUrl","_editorRef_current","current","executeCommand","href","handleRemove","jsxs","Fragment","children","jsx","ToolbarButton","active","isLink","onPress","t","LinkIcon","Modal","visible","transparent","animationType","onRequestClose","Pressable","style","styles","backdrop","sheet","e","stopPropagation","YStack","backgroundColor","borderRadius","padding","gap","minWidth","
|
|
1
|
+
{"version":3,"names":["LinkDialog_native_exports","__export","LinkDialog","module","exports","__toCommonJS","import_jsx_runtime","require","import_react","import_react_native","import_tamagui","import_forms","import_ToolbarButton","import_icons","import_t","import_url","param","editorRef","state","disabled","open","setOpen","useState","linkUrl","setLinkUrl","handleSubmit","useCallback","normalized","normalizeUrl","_editorRef_current","current","executeCommand","href","handleRemove","jsxs","Fragment","children","jsx","ToolbarButton","active","isLink","onPress","t","LinkIcon","Modal","visible","transparent","animationType","onRequestClose","Pressable","style","styles","backdrop","sheet","e","stopPropagation","YStack","backgroundColor","borderRadius","padding","gap","minWidth","SizableText","fontFamily","size","Input","placeholder","value","onChangeText","onSubmitEditing","autoFocus","autoCapitalize","keyboardType","XStack","justifyContent","Button","error","theme","trim","StyleSheet","create","flex","alignItems"],"sources":["../../../src/toolbar/LinkDialog.native.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -39,19 +39,16 @@ function ToolbarButton(param) {
|
|
|
39
39
|
onPress,
|
|
40
40
|
children,
|
|
41
41
|
size: sizeProp,
|
|
42
|
-
compact: compactProp,
|
|
43
42
|
"aria-pressed": ariaPressed,
|
|
44
43
|
...props
|
|
45
44
|
} = param;
|
|
46
45
|
var ctx = import_context.RichEditorContext.useStyledContext();
|
|
47
46
|
var size = sizeProp !== null && sizeProp !== void 0 ? sizeProp : ctx.size;
|
|
48
|
-
var compact = compactProp !== null && compactProp !== void 0 ? compactProp : ctx.compact;
|
|
49
47
|
var isDisabled = disabled !== null && disabled !== void 0 ? disabled : ctx.disabled;
|
|
50
48
|
var pressed = ariaPressed !== null && ariaPressed !== void 0 ? ariaPressed : active !== void 0 ? !!active : void 0;
|
|
51
49
|
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
52
50
|
chromeless: true,
|
|
53
51
|
size,
|
|
54
|
-
compact,
|
|
55
52
|
// DG-ST-03: aria-disabled explain, mirroring ToolbarButton.tsx —
|
|
56
53
|
// focusable, state announced, press swallowed, chrome dimmed.
|
|
57
54
|
"aria-disabled": isDisabled || void 0,
|
|
@@ -75,17 +72,14 @@ function ToolbarDropdownButton(param) {
|
|
|
75
72
|
onPress,
|
|
76
73
|
children,
|
|
77
74
|
size: sizeProp,
|
|
78
|
-
compact: compactProp,
|
|
79
75
|
...props
|
|
80
76
|
} = param;
|
|
81
77
|
var ctx = import_context.RichEditorContext.useStyledContext();
|
|
82
78
|
var size = sizeProp !== null && sizeProp !== void 0 ? sizeProp : ctx.size;
|
|
83
|
-
var compact = compactProp !== null && compactProp !== void 0 ? compactProp : ctx.compact;
|
|
84
79
|
var isDisabled = disabled !== null && disabled !== void 0 ? disabled : ctx.disabled;
|
|
85
80
|
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
86
81
|
chromeless: true,
|
|
87
82
|
size,
|
|
88
|
-
compact,
|
|
89
83
|
// DG-ST-03: aria-disabled explain (see ToolbarButton above).
|
|
90
84
|
"aria-disabled": isDisabled || void 0,
|
|
91
85
|
onPress: isDisabled ? void 0 : onPress,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ToolbarButton_native_exports","__export","ToolbarButton","ToolbarDropdownButton","module","exports","__toCommonJS","import_jsx_runtime","require","import_tamagui","import_forms","import_context","param","active","disabled","onPress","children","size","sizeProp","
|
|
1
|
+
{"version":3,"names":["ToolbarButton_native_exports","__export","ToolbarButton","ToolbarDropdownButton","module","exports","__toCommonJS","import_jsx_runtime","require","import_tamagui","import_forms","import_context","param","active","disabled","onPress","children","size","sizeProp","ariaPressed","props","ctx","RichEditorContext","useStyledContext","isDisabled","pressed","jsx","Button","chromeless","opacity","paddingHorizontal","theme","jsxs","XStack","alignItems","gap","Text","fontSize"],"sources":["../../../src/toolbar/ToolbarButton.native.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,4BAAA;AAAAC,QAAA,CAAAD,4BAAA;EAAAE,aAAA,EAAAA,CAAA,KAAAA,aAAA;EAAAC,qBAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAC,YAAA,CAAAN,4BAAA;AAAA,IAAAO,kBAAA,GAA2CC,OAAA;AAIvC,IAAAC,cAAA,GAA6BD,OAAA;AACjC,IAAAE,YAAA,GAAuBF,OAAA;AACvB,IAAAG,cAAA,GAAkCH,OAAA;AAO3B,SAASN,cAAcU,KAAA,EAAO;EACjC,IAAI;IAAEC,MAAA;IAAQC,QAAA;IAAUC,OAAA;IAASC,QAAA;IAAUC,IAAA,EAAMC,QAAA;IAAU,gBAAgBC,WAAA;IAAa,GAAGC;EAAM,IAAIR,KAAA;EACrG,IAAIS,GAAA,GAAMV,cAAA,CAAAW,iBAAA,CAAkBC,gBAAA,CAAiB;EAC7C,IAAIN,IAAA,GAAOC,QAAA,KAAa,QAAQA,QAAA,KAAa,SAASA,QAAA,GAAWG,GAAA,CAAIJ,IAAA;EACrE,IAAIO,UAAA,GAAaV,QAAA,KAAa,QAAQA,QAAA,KAAa,SAASA,QAAA,GAAWO,GAAA,CAAIP,QAAA;EAC3E,IAAIW,OAAA,GAAUN,WAAA,KAAgB,QAAQA,WAAA,KAAgB,SAASA,WAAA,GAAcN,MAAA,KAAW,SAAY,CAAC,CAACA,MAAA,GAAS;EAC/G,OAAqB,mBAAAN,kBAAA,CAAAmB,GAAA,EAAKhB,YAAA,CAAAiB,MAAA,EAAQ;IAC9BC,UAAA,EAAY;IACZX,IAAA;IAAA;IAAA;IAGA,iBAAiBO,UAAA,IAAc;IAC/BT,OAAA,EAASS,UAAA,GAAa,SAAYT,OAAA;IAClCc,OAAA,EAASL,UAAA,GAAa,MAAM;IAC5BM,iBAAA,EAAmB;IACnB,IAAGL,OAAA,KAAY,SAAY;MACvB,gBAAgBA;IACpB,IAAI;IACJ,IAAGZ,MAAA,GAAS;MACRkB,KAAA,EAAO;IACX,IAAI;IACJ,GAAGX,KAAA;IACHJ;EACJ,CAAC;AACL;AAIO,SAASb,sBAAsBS,KAAA,EAAO;EACzC,IAAI;IAAEC,MAAA;IAAQC,QAAA;IAAUC,OAAA;IAASC,QAAA;IAAUC,IAAA,EAAMC,QAAA;IAAU,GAAGE;EAAM,IAAIR,KAAA;EACxE,IAAIS,GAAA,GAAMV,cAAA,CAAAW,iBAAA,CAAkBC,gBAAA,CAAiB;EAC7C,IAAIN,IAAA,GAAOC,QAAA,KAAa,QAAQA,QAAA,KAAa,SAASA,QAAA,GAAWG,GAAA,CAAIJ,IAAA;EACrE,IAAIO,UAAA,GAAaV,QAAA,KAAa,QAAQA,QAAA,KAAa,SAASA,QAAA,GAAWO,GAAA,CAAIP,QAAA;EAC3E,OAAqB,mBAAAP,kBAAA,CAAAmB,GAAA,EAAKhB,YAAA,CAAAiB,MAAA,EAAQ;IAC9BC,UAAA,EAAY;IACZX,IAAA;IAAA;IAEA,iBAAiBO,UAAA,IAAc;IAC/BT,OAAA,EAASS,UAAA,GAAa,SAAYT,OAAA;IAClCc,OAAA,EAASL,UAAA,GAAa,MAAM;IAC5B,IAAGX,MAAA,GAAS;MACRkB,KAAA,EAAO;IACX,IAAI;IACJ,GAAGX,KAAA;IACHJ,QAAA,EAAwB,mBAAAT,kBAAA,CAAAyB,IAAA,EAAMvB,cAAA,CAAAwB,MAAA,EAAQ;MAClCC,UAAA,EAAY;MACZC,GAAA,EAAK;MACLnB,QAAA,EAAU,CACNA,QAAA,EACc,mBAAAT,kBAAA,CAAAmB,GAAA,EAAKjB,cAAA,CAAA2B,IAAA,EAAM;QACrBC,QAAA,EAAU;QACVrB,QAAA,EAAU;MACd,CAAC;IAET,CAAC;EACL,CAAC;AACL","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@multiplatform.one/rich-text",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.36.0",
|
|
4
4
|
"description": "Cross-platform rich text editor with markdown support and syntax highlighting",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cross-platform",
|
|
@@ -57,10 +57,10 @@
|
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
59
|
"@10play/tentap-editor": "^1.0.1",
|
|
60
|
-
"@multiplatform.one/components": "^7.
|
|
61
|
-
"@multiplatform.one/forms": "^7.
|
|
62
|
-
"@multiplatform.one/markdown": "^7.
|
|
63
|
-
"@multiplatform.one/theme": "^7.
|
|
60
|
+
"@multiplatform.one/components": "^7.36.0",
|
|
61
|
+
"@multiplatform.one/forms": "^7.36.0",
|
|
62
|
+
"@multiplatform.one/markdown": "^7.36.0",
|
|
63
|
+
"@multiplatform.one/theme": "^7.36.0",
|
|
64
64
|
"@phosphor-icons/react": "^2.1.10",
|
|
65
65
|
"@tamagui/constants": "2.7.6",
|
|
66
66
|
"@tamagui/linear-gradient": "2.7.6",
|
|
@@ -102,9 +102,9 @@
|
|
|
102
102
|
"turndown": "^7.2.4"
|
|
103
103
|
},
|
|
104
104
|
"devDependencies": {
|
|
105
|
-
"@multiplatform.one/config": "7.
|
|
106
|
-
"@multiplatform.one/storybook": "7.
|
|
107
|
-
"@multiplatform.one/test-utils": "7.
|
|
105
|
+
"@multiplatform.one/config": "7.36.0",
|
|
106
|
+
"@multiplatform.one/storybook": "7.36.0",
|
|
107
|
+
"@multiplatform.one/test-utils": "7.36.0",
|
|
108
108
|
"@tamagui/build": "2.7.6",
|
|
109
109
|
"@testing-library/jest-dom": "^7.0.1",
|
|
110
110
|
"@testing-library/react": "^16.3.3",
|
|
@@ -59,8 +59,6 @@ import { t } from "./shared/t";
|
|
|
59
59
|
export interface RichEditorCombinedProps extends RichEditorProps {
|
|
60
60
|
/** Size token for the editor */
|
|
61
61
|
size?: SizeTokens;
|
|
62
|
-
/** Use compact sizing for tighter controls */
|
|
63
|
-
compact?: boolean;
|
|
64
62
|
/** Show the fixed toolbar (default: true) */
|
|
65
63
|
showToolbar?: boolean;
|
|
66
64
|
/** Show the bubble toolbar on text selection (not supported on native, ignored) */
|
|
@@ -216,7 +214,6 @@ const RichEditorImpl = forwardRef<RichEditorRef, RichEditorCombinedProps>(
|
|
|
216
214
|
(
|
|
217
215
|
{
|
|
218
216
|
size,
|
|
219
|
-
compact = false,
|
|
220
217
|
showToolbar = true,
|
|
221
218
|
showBubbleToolbar: _showBubbleToolbar,
|
|
222
219
|
fullscreen: fullscreenProp,
|
|
@@ -269,7 +266,6 @@ const RichEditorImpl = forwardRef<RichEditorRef, RichEditorCombinedProps>(
|
|
|
269
266
|
const { knobProps } = useResolvedKnobs({
|
|
270
267
|
component: "RichEditor",
|
|
271
268
|
size,
|
|
272
|
-
compact,
|
|
273
269
|
});
|
|
274
270
|
const editGlyphColor = useGlyphColor("$color11");
|
|
275
271
|
|
|
@@ -412,7 +408,7 @@ const RichEditorImpl = forwardRef<RichEditorRef, RichEditorCombinedProps>(
|
|
|
412
408
|
|
|
413
409
|
if (inlineEditing) {
|
|
414
410
|
return (
|
|
415
|
-
<RichEditorContext.Provider size={sizeToken}
|
|
411
|
+
<RichEditorContext.Provider size={sizeToken} disabled={disabled}>
|
|
416
412
|
<EditorFrame
|
|
417
413
|
hasError={hasError}
|
|
418
414
|
borderRadius={cappedRadius}
|
|
@@ -462,7 +458,7 @@ const RichEditorImpl = forwardRef<RichEditorRef, RichEditorCombinedProps>(
|
|
|
462
458
|
// -----------------------------------------------------------------------
|
|
463
459
|
|
|
464
460
|
return (
|
|
465
|
-
<RichEditorContext.Provider size={sizeToken}
|
|
461
|
+
<RichEditorContext.Provider size={sizeToken} disabled={disabled}>
|
|
466
462
|
{/*
|
|
467
463
|
RN Text/YStack steal taps from Tamagui View onPress, so the preview
|
|
468
464
|
open target is a core Pressable. EditorFrame stays visual-only.
|
|
@@ -486,7 +482,7 @@ const RichEditorImpl = forwardRef<RichEditorRef, RichEditorCombinedProps>(
|
|
|
486
482
|
>
|
|
487
483
|
<YStack padding={knobProps.panelPadding.padding} paddingRight="$6" gap="$1.5" flex={1}>
|
|
488
484
|
{!TentapEditor && (
|
|
489
|
-
<Text color="$orange10" fontSize={12}
|
|
485
|
+
<Text color="$orange10" fontSize={12}>
|
|
490
486
|
{t("Editor unavailable — tap for details")}
|
|
491
487
|
</Text>
|
|
492
488
|
)}
|
|
@@ -535,19 +531,12 @@ const RichEditorImpl = forwardRef<RichEditorRef, RichEditorCombinedProps>(
|
|
|
535
531
|
<Button
|
|
536
532
|
chromeless
|
|
537
533
|
size={sizeToken}
|
|
538
|
-
compact={compact}
|
|
539
534
|
onPress={handleCancel}
|
|
540
535
|
aria-label={t("Cancel")}
|
|
541
536
|
>
|
|
542
537
|
<Text color="$color11">{t("Cancel")}</Text>
|
|
543
538
|
</Button>
|
|
544
|
-
<Button
|
|
545
|
-
chromeless
|
|
546
|
-
size={sizeToken}
|
|
547
|
-
compact={compact}
|
|
548
|
-
onPress={handleDone}
|
|
549
|
-
aria-label={t("Done")}
|
|
550
|
-
>
|
|
539
|
+
<Button chromeless size={sizeToken} onPress={handleDone} aria-label={t("Done")}>
|
|
551
540
|
<Text color="$color12" fontWeight="700">
|
|
552
541
|
{t("Done")}
|
|
553
542
|
</Text>
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* Forms/RichTextEditor covers the FIELD: label, helper text, validation,
|
|
9
9
|
* form binding. This covers what the field wraps — the frame, the toolbar,
|
|
10
10
|
* the status bar and the resize handle — and the props that only exist at
|
|
11
|
-
* this level (showStatusBar, resizable, capabilities, size
|
|
11
|
+
* this level (showStatusBar, resizable, capabilities, size). Without
|
|
12
12
|
* it the shell's own knobs are reachable from no story in the catalog.
|
|
13
13
|
*/
|
|
14
14
|
import type { Meta, StoryObj } from "@storybook/react-native-web-vite";
|
|
@@ -30,7 +30,6 @@ const meta: Meta<RichEditorCombinedProps> = {
|
|
|
30
30
|
},
|
|
31
31
|
argTypes: {
|
|
32
32
|
size: { control: "select", options: ["$2", "$3", "$4", "$5"] },
|
|
33
|
-
compact: { control: "boolean" },
|
|
34
33
|
showToolbar: { control: "boolean" },
|
|
35
34
|
showBubbleToolbar: { control: "boolean" },
|
|
36
35
|
showStatusBar: { control: "boolean" },
|
|
@@ -52,7 +51,6 @@ const meta: Meta<RichEditorCombinedProps> = {
|
|
|
52
51
|
showStatusBar: true,
|
|
53
52
|
resizable: true,
|
|
54
53
|
editable: true,
|
|
55
|
-
compact: false,
|
|
56
54
|
capabilities: "full",
|
|
57
55
|
onChange: (html: string) => action("onChange")(html.slice(0, 120)),
|
|
58
56
|
},
|
|
@@ -132,7 +130,6 @@ export const WithError: Story = {
|
|
|
132
130
|
|
|
133
131
|
export const Compact: Story = {
|
|
134
132
|
args: {
|
|
135
|
-
compact: true,
|
|
136
133
|
size: "$2",
|
|
137
134
|
minHeight: 160,
|
|
138
135
|
},
|
|
@@ -32,7 +32,6 @@ const meta: Meta<typeof RichTextEditor> = {
|
|
|
32
32
|
readOnly: { control: "boolean" },
|
|
33
33
|
showToolbar: { control: "boolean" },
|
|
34
34
|
showBubbleToolbar: { control: "boolean" },
|
|
35
|
-
compact: { control: "boolean" },
|
|
36
35
|
skeleton: { control: "boolean" },
|
|
37
36
|
defaultFullscreen: { control: "boolean" },
|
|
38
37
|
fullscreen: { control: false },
|
|
@@ -69,7 +68,6 @@ export const Main: Story = {
|
|
|
69
68
|
minHeight: 200,
|
|
70
69
|
showToolbar: true,
|
|
71
70
|
showBubbleToolbar: false,
|
|
72
|
-
compact: false,
|
|
73
71
|
skeleton: false,
|
|
74
72
|
},
|
|
75
73
|
};
|
package/src/RichEditor.tsx
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* - RichEditor.BubbleToolbar
|
|
8
8
|
* - RichEditor.Editor
|
|
9
9
|
*
|
|
10
|
-
* Root provides RichEditorContext with resolved size
|
|
10
|
+
* Root provides RichEditorContext with the resolved size and disabled state.
|
|
11
11
|
* Uses useResolvedKnobs for knobs integration and clampRadiusForLargeComponent
|
|
12
12
|
* for radius clamping (max $4).
|
|
13
13
|
*/
|
|
@@ -49,8 +49,6 @@ import { StatusBar } from "./toolbar/StatusBar";
|
|
|
49
49
|
export interface RichEditorCombinedProps extends RichEditorProps {
|
|
50
50
|
/** Size token for the editor */
|
|
51
51
|
size?: SizeTokens;
|
|
52
|
-
/** Use compact sizing for tighter controls */
|
|
53
|
-
compact?: boolean;
|
|
54
52
|
/** Show the fixed toolbar (default: true) */
|
|
55
53
|
showToolbar?: boolean;
|
|
56
54
|
/** Show the bubble toolbar on text selection (default: false, web only) */
|
|
@@ -83,7 +81,6 @@ const RichEditorImpl = forwardRef<RichEditorRef, RichEditorCombinedProps>(
|
|
|
83
81
|
(
|
|
84
82
|
{
|
|
85
83
|
size,
|
|
86
|
-
compact = false,
|
|
87
84
|
showToolbar = true,
|
|
88
85
|
showBubbleToolbar = false,
|
|
89
86
|
resizable = true,
|
|
@@ -113,7 +110,6 @@ const RichEditorImpl = forwardRef<RichEditorRef, RichEditorCombinedProps>(
|
|
|
113
110
|
const { knobProps } = useResolvedKnobs({
|
|
114
111
|
component: "RichEditor",
|
|
115
112
|
size,
|
|
116
|
-
compact,
|
|
117
113
|
});
|
|
118
114
|
|
|
119
115
|
const handleStateChange = useCallback(
|
|
@@ -235,7 +231,6 @@ const RichEditorImpl = forwardRef<RichEditorRef, RichEditorCombinedProps>(
|
|
|
235
231
|
return (
|
|
236
232
|
<RichEditorContext.Provider
|
|
237
233
|
size={(knobProps.sizeToken ?? "$true") as any}
|
|
238
|
-
compact={compact}
|
|
239
234
|
disabled={disabled}
|
|
240
235
|
>
|
|
241
236
|
<EditorFrame
|
|
@@ -163,8 +163,6 @@ export type RichTextEditorProps<
|
|
|
163
163
|
id?: string;
|
|
164
164
|
/** Show the formatting toolbar (default: true) */
|
|
165
165
|
showToolbar?: boolean;
|
|
166
|
-
/** Use compact sizing for toolbar (default: false) */
|
|
167
|
-
compact?: boolean;
|
|
168
166
|
/** Show the bubble toolbar on text selection (default: false, web only) */
|
|
169
167
|
showBubbleToolbar?: boolean;
|
|
170
168
|
/** Toolbar sections to display (shows all when omitted) */
|
|
@@ -236,7 +234,6 @@ export function RichTextEditor<
|
|
|
236
234
|
onChange,
|
|
237
235
|
onBlur,
|
|
238
236
|
showToolbar = true,
|
|
239
|
-
compact = false,
|
|
240
237
|
showBubbleToolbar = false,
|
|
241
238
|
sections,
|
|
242
239
|
capabilities,
|
|
@@ -251,7 +248,7 @@ export function RichTextEditor<
|
|
|
251
248
|
} = props;
|
|
252
249
|
|
|
253
250
|
const placeholder = placeholderProp ?? t("Write something...");
|
|
254
|
-
const { resolvedForm, knobProps, id } = useFormField({ form, id: idProp
|
|
251
|
+
const { resolvedForm, knobProps, id } = useFormField({ form, id: idProp });
|
|
255
252
|
const resolvedValidators = useResolvedValidators(
|
|
256
253
|
required,
|
|
257
254
|
validators,
|
|
@@ -326,7 +323,6 @@ export function RichTextEditor<
|
|
|
326
323
|
capabilities={capabilities}
|
|
327
324
|
hasError={hasError}
|
|
328
325
|
size={size}
|
|
329
|
-
compact={compact}
|
|
330
326
|
fullscreen={fullscreen}
|
|
331
327
|
defaultFullscreen={defaultFullscreen}
|
|
332
328
|
onFullscreenChange={onFullscreenChange}
|
|
@@ -49,7 +49,7 @@ vi.mock("@multiplatform.one/forms", async () => {
|
|
|
49
49
|
: undefined;
|
|
50
50
|
return propError ?? fieldError;
|
|
51
51
|
},
|
|
52
|
-
useFormField: ({ form, id
|
|
52
|
+
useFormField: ({ form, id }: any) => ({
|
|
53
53
|
resolvedForm: form || undefined,
|
|
54
54
|
knobProps: {
|
|
55
55
|
body: {},
|
|
@@ -61,7 +61,7 @@ vi.mock("@multiplatform.one/forms", async () => {
|
|
|
61
61
|
textAccentColor: "$color",
|
|
62
62
|
transition: undefined,
|
|
63
63
|
heading: {},
|
|
64
|
-
gap: { gap:
|
|
64
|
+
gap: { gap: "$2" },
|
|
65
65
|
},
|
|
66
66
|
id: id || "test-id",
|
|
67
67
|
}),
|
|
@@ -113,7 +113,7 @@ vi.mock("../RichEditor", () => ({
|
|
|
113
113
|
return (
|
|
114
114
|
<div
|
|
115
115
|
data-testid="editor-content"
|
|
116
|
-
data-
|
|
116
|
+
data-size={props.size}
|
|
117
117
|
data-editable={String(props.editable !== false)}
|
|
118
118
|
data-initial={props.initialContent}
|
|
119
119
|
data-bubble={props.showBubbleToolbar ? "true" : undefined}
|
|
@@ -190,13 +190,10 @@ describe("RichTextEditor form-integrated field", () => {
|
|
|
190
190
|
expect(editor).toHaveAttribute("data-sections", JSON.stringify(["formatting", "list"]));
|
|
191
191
|
});
|
|
192
192
|
|
|
193
|
-
it("
|
|
194
|
-
const { getByTestId
|
|
193
|
+
it("forwards the size token to the editor and keeps the layout gap role", () => {
|
|
194
|
+
const { getByTestId } = renderWithProviders(<RichTextEditor label="Content" size="$3" />);
|
|
195
195
|
expect(getByTestId("field-layout")).toHaveAttribute("data-gap", "$2");
|
|
196
|
-
expect(getByTestId("editor-content")).toHaveAttribute("data-
|
|
197
|
-
rerender(<RichTextEditor label="Content" compact />);
|
|
198
|
-
expect(getByTestId("field-layout")).toHaveAttribute("data-gap", "$1");
|
|
199
|
-
expect(getByTestId("editor-content")).toHaveAttribute("data-compact", "true");
|
|
196
|
+
expect(getByTestId("editor-content")).toHaveAttribute("data-size", "$3");
|
|
200
197
|
});
|
|
201
198
|
|
|
202
199
|
it("pushes controlled value changes into the editor after mount", () => {
|
package/src/context.ts
CHANGED
|
@@ -7,10 +7,8 @@ import { createStyledContext } from "tamagui";
|
|
|
7
7
|
|
|
8
8
|
export const RichEditorContext = createStyledContext<{
|
|
9
9
|
size: FontSizeTokens;
|
|
10
|
-
compact: boolean;
|
|
11
10
|
disabled: boolean;
|
|
12
11
|
}>({
|
|
13
12
|
size: "$true" as FontSizeTokens,
|
|
14
|
-
compact: false,
|
|
15
13
|
disabled: false,
|
|
16
14
|
});
|
|
@@ -16,6 +16,10 @@ const state = vi.hoisted(() => ({
|
|
|
16
16
|
},
|
|
17
17
|
}));
|
|
18
18
|
|
|
19
|
+
vi.mock("@multiplatform.one/theme", async () => {
|
|
20
|
+
const { animationConfig } = await import("../../../theme/src/theme/animations/css");
|
|
21
|
+
return { cssAnimationConfig: animationConfig };
|
|
22
|
+
});
|
|
19
23
|
vi.mock("react-native", () => ({
|
|
20
24
|
StyleSheet: { create: (styles: any) => styles },
|
|
21
25
|
useColorScheme: () => state.os,
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
import { useEditor, EditorContent } from "@tiptap/react";
|
|
23
23
|
import { View, getTokens, styled, useTheme, useThemeName } from "tamagui";
|
|
24
24
|
import { isWeb } from "@tamagui/constants";
|
|
25
|
-
import { menuRowFrame, useResolvedKnobs } from "@multiplatform.one/theme";
|
|
25
|
+
import { motionDurationMs, menuRowFrame, useResolvedKnobs } from "@multiplatform.one/theme";
|
|
26
26
|
import { clampRadiusForLargeComponent } from "@multiplatform.one/forms";
|
|
27
27
|
import type { RichEditorProps, RichEditorRef, EditorCommand } from "../types";
|
|
28
28
|
import { defaultEditorState } from "../types";
|
|
@@ -44,9 +44,6 @@ import { ImageBubble } from "../toolbar/ImageBubble";
|
|
|
44
44
|
import { TableBubble } from "../toolbar/TableBubble";
|
|
45
45
|
import { MathBubble } from "../toolbar/MathBubble";
|
|
46
46
|
|
|
47
|
-
/** Enter/exit fade for bubbles and suggestion popups (0 when animation none) */
|
|
48
|
-
const MOTION_MS = 120;
|
|
49
|
-
|
|
50
47
|
// ===========================================================================
|
|
51
48
|
// Types
|
|
52
49
|
// ===========================================================================
|
|
@@ -119,7 +116,7 @@ export const TiptapEditor = memo(
|
|
|
119
116
|
const theme = useTheme();
|
|
120
117
|
const themeName = useThemeName();
|
|
121
118
|
const { knobProps } = useResolvedKnobs();
|
|
122
|
-
const motionMs = knobProps.transition
|
|
119
|
+
const motionMs = motionDurationMs(knobProps.motion.overlay.transition);
|
|
123
120
|
const scopeClass = `rt-scope-${useId().replace(/[^a-zA-Z0-9-]/g, "")}`;
|
|
124
121
|
|
|
125
122
|
// Mention wiring is captured at mount (the extension list is fixed);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { cssAnimationConfig } from "@multiplatform.one/theme";
|
|
2
3
|
import { getEditorCSS } from "./editorStyles";
|
|
3
4
|
|
|
4
5
|
describe("getEditorCSS", () => {
|
|
@@ -52,7 +53,8 @@ describe("getEditorCSS", () => {
|
|
|
52
53
|
|
|
53
54
|
it("default motion pairs enter and exit transitions on bubbles (LC-24)", () => {
|
|
54
55
|
const css = getEditorCSS({ motionMs: 120 });
|
|
55
|
-
expect(css).toContain(
|
|
56
|
+
expect(css).toContain(`opacity ${cssAnimationConfig.quicker}`);
|
|
57
|
+
expect(css).not.toMatch(/transition:\s*all/);
|
|
56
58
|
// destination-state selector keeps the exit fade visible
|
|
57
59
|
expect(css).toContain('[style*="visibility: visible"]');
|
|
58
60
|
});
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
* for theme awareness.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
+
import { cssAnimationConfig } from "@multiplatform.one/theme";
|
|
10
|
+
|
|
9
11
|
export interface EditorCSSOptions {
|
|
10
12
|
/** Minimum height of the editor in pixels */
|
|
11
13
|
minHeight?: number;
|
|
@@ -33,6 +35,7 @@ export function getEditorCSS(options: EditorCSSOptions = {}): string {
|
|
|
33
35
|
motionMs = 120,
|
|
34
36
|
scopeClass,
|
|
35
37
|
} = options;
|
|
38
|
+
const motionTiming = cssAnimationConfig.quicker.replace(/\d+ms/, `${motionMs}ms`);
|
|
36
39
|
const bodyFont = bodyFontFamily || "inherit";
|
|
37
40
|
const headingFont = headingFontFamily || bodyFont;
|
|
38
41
|
const bubbleScope = scopeClass ? `.${scopeClass} .rt-bubble-menu` : ".rt-bubble-menu";
|
|
@@ -47,11 +50,11 @@ export function getEditorCSS(options: EditorCSSOptions = {}): string {
|
|
|
47
50
|
(animation none) silences both.
|
|
48
51
|
*/
|
|
49
52
|
${bubbleScope} {
|
|
50
|
-
transition: opacity ${
|
|
53
|
+
transition: opacity ${motionTiming}, transform ${motionTiming},
|
|
51
54
|
visibility 0s linear ${motionMs}ms;
|
|
52
55
|
}
|
|
53
56
|
${bubbleScope}[style*="visibility: visible"] {
|
|
54
|
-
transition: opacity ${
|
|
57
|
+
transition: opacity ${motionTiming}, transform ${motionTiming}, visibility 0s;
|
|
55
58
|
}
|
|
56
59
|
|
|
57
60
|
.ProseMirror {
|
|
@@ -259,7 +262,7 @@ export function getEditorCSS(options: EditorCSSOptions = {}): string {
|
|
|
259
262
|
|
|
260
263
|
/* Block drag handle (decorative fade stops at animation none) */
|
|
261
264
|
.block-drag-handle {
|
|
262
|
-
transition: opacity ${
|
|
265
|
+
transition: opacity ${motionTiming};
|
|
263
266
|
}
|
|
264
267
|
.block-drag-handle:hover {
|
|
265
268
|
background-color: var(--color4);
|
|
@@ -392,7 +395,7 @@ export function getEditorCSS(options: EditorCSSOptions = {}): string {
|
|
|
392
395
|
.ProseMirror [data-type="details"] > button::before {
|
|
393
396
|
content: "\\25B8";
|
|
394
397
|
display: block;
|
|
395
|
-
transition: transform ${
|
|
398
|
+
transition: transform ${motionTiming};
|
|
396
399
|
}
|
|
397
400
|
.ProseMirror [data-type="details"].is-open > button::before {
|
|
398
401
|
transform: rotate(90deg);
|
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
* animation knob is "none".
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
|
+
import { cssAnimationConfig } from "@multiplatform.one/theme";
|
|
21
|
+
|
|
20
22
|
import {
|
|
21
23
|
forwardRef,
|
|
22
24
|
useCallback,
|
|
@@ -308,7 +310,8 @@ function createPopup(editorDom: HTMLElement, motionMs: number): PopupHandle {
|
|
|
308
310
|
if (motionMs > 0) {
|
|
309
311
|
popup.style.opacity = "0";
|
|
310
312
|
popup.style.transform = "translateY(4px)";
|
|
311
|
-
|
|
313
|
+
const motionTiming = cssAnimationConfig.quicker.replace(/\d+ms/, `${motionMs}ms`);
|
|
314
|
+
popup.style.transition = `opacity ${motionTiming}, transform ${motionTiming}`;
|
|
312
315
|
requestAnimationFrame(() => {
|
|
313
316
|
popup.style.opacity = "1";
|
|
314
317
|
popup.style.transform = "translateY(0)";
|
|
@@ -88,14 +88,10 @@ import { getEditorCSS } from "./editorStyles";
|
|
|
88
88
|
|
|
89
89
|
const { TiptapEditor } = await import("./TiptapEditor");
|
|
90
90
|
|
|
91
|
-
function withContext(
|
|
92
|
-
ui: React.ReactElement,
|
|
93
|
-
ctxProps?: { size?: any; compact?: boolean; disabled?: boolean },
|
|
94
|
-
) {
|
|
91
|
+
function withContext(ui: React.ReactElement, ctxProps?: { size?: any; disabled?: boolean }) {
|
|
95
92
|
return (
|
|
96
93
|
<RichEditorContext.Provider
|
|
97
94
|
size={ctxProps?.size ?? "$true"}
|
|
98
|
-
compact={ctxProps?.compact ?? false}
|
|
99
95
|
disabled={ctxProps?.disabled ?? false}
|
|
100
96
|
>
|
|
101
97
|
{ui}
|
|
@@ -119,11 +115,9 @@ describe("TiptapEditor", () => {
|
|
|
119
115
|
});
|
|
120
116
|
|
|
121
117
|
it("reads styling from RichEditorContext.useStyledContext()", () => {
|
|
122
|
-
// Render with compact and disabled context
|
|
123
118
|
const { container } = renderWithProviders(
|
|
124
119
|
withContext(<TiptapEditor />, {
|
|
125
120
|
size: "$2",
|
|
126
|
-
compact: true,
|
|
127
121
|
disabled: false,
|
|
128
122
|
}),
|
|
129
123
|
);
|
package/src/integration.spec.tsx
CHANGED
|
@@ -224,7 +224,7 @@ describe("ToolbarButton disabled state from context", () => {
|
|
|
224
224
|
it("inherits disabled state from RichEditorContext", () => {
|
|
225
225
|
const onPress = vi.fn();
|
|
226
226
|
const { getByRole } = renderWithProviders(
|
|
227
|
-
<RichEditorContext.Provider size="$true"
|
|
227
|
+
<RichEditorContext.Provider size="$true" disabled>
|
|
228
228
|
<ToolbarButton onPress={onPress} aria-label="Test">
|
|
229
229
|
T
|
|
230
230
|
</ToolbarButton>
|
|
@@ -252,7 +252,7 @@ describe("EditorState flows to FixedToolbar active states", () => {
|
|
|
252
252
|
};
|
|
253
253
|
|
|
254
254
|
const { container } = renderWithProviders(
|
|
255
|
-
<RichEditorContext.Provider size="$true"
|
|
255
|
+
<RichEditorContext.Provider size="$true" disabled={false}>
|
|
256
256
|
<FixedToolbar editorRef={{ current: null }} state={boldActiveState} />
|
|
257
257
|
</RichEditorContext.Provider>,
|
|
258
258
|
);
|
|
@@ -271,7 +271,7 @@ describe("EditorState flows to FixedToolbar active states", () => {
|
|
|
271
271
|
describe("FixedToolbar sections edge case", () => {
|
|
272
272
|
it("hides all groups when sections is an empty array", () => {
|
|
273
273
|
const { container } = renderWithProviders(
|
|
274
|
-
<RichEditorContext.Provider size="$true"
|
|
274
|
+
<RichEditorContext.Provider size="$true" disabled={false}>
|
|
275
275
|
<FixedToolbar
|
|
276
276
|
editorRef={{ current: null }}
|
|
277
277
|
state={defaultEditorState}
|
package/src/styled.ts
CHANGED
|
@@ -29,10 +29,6 @@ export const EditorFrame = styled(View, {
|
|
|
29
29
|
return {};
|
|
30
30
|
},
|
|
31
31
|
},
|
|
32
|
-
compact: {
|
|
33
|
-
true: {},
|
|
34
|
-
false: {},
|
|
35
|
-
},
|
|
36
32
|
disabled: {
|
|
37
33
|
true: {
|
|
38
34
|
opacity: 0.5,
|
|
@@ -64,10 +60,6 @@ export const ToolbarFrame = styled(XStack, {
|
|
|
64
60
|
size: {
|
|
65
61
|
"...size": () => ({}),
|
|
66
62
|
},
|
|
67
|
-
compact: {
|
|
68
|
-
true: {},
|
|
69
|
-
false: {},
|
|
70
|
-
},
|
|
71
63
|
disabled: {
|
|
72
64
|
true: {},
|
|
73
65
|
false: {},
|
|
@@ -89,10 +81,6 @@ export const ToolbarGroupFrame = styled(XStack, {
|
|
|
89
81
|
size: {
|
|
90
82
|
"...size": () => ({}),
|
|
91
83
|
},
|
|
92
|
-
compact: {
|
|
93
|
-
true: {},
|
|
94
|
-
false: {},
|
|
95
|
-
},
|
|
96
84
|
disabled: {
|
|
97
85
|
true: {},
|
|
98
86
|
false: {},
|
|
@@ -117,10 +105,6 @@ export const ToolbarSeparatorFrame = styled(Separator, {
|
|
|
117
105
|
size: {
|
|
118
106
|
"...size": () => ({}),
|
|
119
107
|
},
|
|
120
|
-
compact: {
|
|
121
|
-
true: {},
|
|
122
|
-
false: {},
|
|
123
|
-
},
|
|
124
108
|
disabled: {
|
|
125
109
|
true: {},
|
|
126
110
|
false: {},
|
|
@@ -172,10 +156,6 @@ export const DropdownMenuItemFrame = styled(XStack, {
|
|
|
172
156
|
size: {
|
|
173
157
|
"...size": () => ({}),
|
|
174
158
|
},
|
|
175
|
-
compact: {
|
|
176
|
-
true: {},
|
|
177
|
-
false: {},
|
|
178
|
-
},
|
|
179
159
|
disabled: {
|
|
180
160
|
true: {},
|
|
181
161
|
false: {},
|