react-native-richify 1.0.3 → 1.0.4
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/lib/commonjs/components/RichTextInput.js +71 -46
- package/lib/commonjs/components/RichTextInput.js.map +1 -1
- package/lib/commonjs/constants/defaultStyles.js +26 -1
- package/lib/commonjs/constants/defaultStyles.js.map +1 -1
- package/lib/commonjs/hooks/useFormatting.js +7 -1
- package/lib/commonjs/hooks/useFormatting.js.map +1 -1
- package/lib/commonjs/hooks/useRichText.js +55 -6
- package/lib/commonjs/hooks/useRichText.js.map +1 -1
- package/lib/commonjs/index.d.js +19 -0
- package/lib/commonjs/index.d.js.map +1 -1
- package/lib/commonjs/index.js +19 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/utils/formatter.js +1 -4
- package/lib/commonjs/utils/formatter.js.map +1 -1
- package/lib/commonjs/utils/serializer.d.js +6 -0
- package/lib/commonjs/utils/serializer.d.js.map +1 -0
- package/lib/commonjs/utils/serializer.js +163 -0
- package/lib/commonjs/utils/serializer.js.map +1 -0
- package/lib/module/components/RichTextInput.js +73 -49
- package/lib/module/components/RichTextInput.js.map +1 -1
- package/lib/module/constants/defaultStyles.js +26 -1
- package/lib/module/constants/defaultStyles.js.map +1 -1
- package/lib/module/hooks/useFormatting.js +7 -1
- package/lib/module/hooks/useFormatting.js.map +1 -1
- package/lib/module/hooks/useRichText.js +55 -6
- package/lib/module/hooks/useRichText.js.map +1 -1
- package/lib/module/index.d.js +1 -0
- package/lib/module/index.d.js.map +1 -1
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/formatter.js +1 -4
- package/lib/module/utils/formatter.js.map +1 -1
- package/lib/module/utils/serializer.d.js +4 -0
- package/lib/module/utils/serializer.d.js.map +1 -0
- package/lib/module/utils/serializer.js +157 -0
- package/lib/module/utils/serializer.js.map +1 -0
- package/lib/typescript/src/components/RichTextInput.d.ts +2 -13
- package/lib/typescript/src/components/RichTextInput.d.ts.map +1 -1
- package/lib/typescript/src/constants/defaultStyles.d.ts +2 -0
- package/lib/typescript/src/constants/defaultStyles.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useFormatting.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useRichText.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +2 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/types/index.d.ts +19 -1
- package/lib/typescript/src/types/index.d.ts.map +1 -1
- package/lib/typescript/src/utils/formatter.d.ts.map +1 -1
- package/lib/typescript/src/utils/serializer.d.ts +14 -0
- package/lib/typescript/src/utils/serializer.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/components/RichTextInput.d.ts +3 -14
- package/src/components/RichTextInput.tsx +107 -50
- package/src/constants/defaultStyles.d.ts +3 -1
- package/src/constants/defaultStyles.ts +26 -1
- package/src/hooks/useFormatting.ts +14 -1
- package/src/hooks/useRichText.ts +92 -6
- package/src/index.d.ts +2 -1
- package/src/index.ts +6 -0
- package/src/types/index.d.ts +19 -1
- package/src/types/index.ts +20 -1
- package/src/utils/formatter.ts +1 -5
- package/src/utils/serializer.d.ts +13 -0
- package/src/utils/serializer.ts +223 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_parser","require","
|
|
1
|
+
{"version":3,"names":["_parser","require","toggleFormatOnSelection","segments","selection","format","start","end","normalizeSelection","selectedSegments","extractSegmentsInRange","allHaveFormat","every","s","styles","applyStyleToRange","setStyleOnSelection","key","value","setHeadingOnLine","level","plainText","segmentsToPlainText","lineStart","lineEnd","getLineRange","headingStyle","heading","undefined","isFormatActiveInSelection","selected","length","getSelectionStyle","pos","findPositionInSegments","segmentIndex","result","i","bold","italic","underline","strikethrough","code","color","backgroundColor","fontSize","Math","min","max","seg","segStart","segEnd","text","overlapStart","overlapEnd","push","createSegment","slice","styleDelta","newStyles","mergeAdjacentSegments","position"],"sourceRoot":"../../../src","sources":["utils/formatter.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["utils/serializer.d.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.segmentsToHTML = segmentsToHTML;
|
|
7
|
+
exports.segmentsToMarkdown = segmentsToMarkdown;
|
|
8
|
+
exports.serializeSegments = serializeSegments;
|
|
9
|
+
/**
|
|
10
|
+
* Serialize styled segments as Markdown or HTML.
|
|
11
|
+
*/
|
|
12
|
+
function serializeSegments(segments, format = 'markdown') {
|
|
13
|
+
const lines = splitSegmentsByLine(segments);
|
|
14
|
+
return lines.map(line => serializeLine(line, format)).join('\n');
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Convenience wrapper for Markdown output.
|
|
19
|
+
*/
|
|
20
|
+
function segmentsToMarkdown(segments) {
|
|
21
|
+
return serializeSegments(segments, 'markdown');
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Convenience wrapper for HTML output.
|
|
26
|
+
*/
|
|
27
|
+
function segmentsToHTML(segments) {
|
|
28
|
+
return serializeSegments(segments, 'html');
|
|
29
|
+
}
|
|
30
|
+
function splitSegmentsByLine(segments) {
|
|
31
|
+
const lines = [[]];
|
|
32
|
+
for (const segment of segments) {
|
|
33
|
+
const parts = segment.text.split('\n');
|
|
34
|
+
parts.forEach((part, index) => {
|
|
35
|
+
if (part.length > 0) {
|
|
36
|
+
lines[lines.length - 1]?.push({
|
|
37
|
+
text: part,
|
|
38
|
+
styles: {
|
|
39
|
+
...segment.styles
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
if (index < parts.length - 1) {
|
|
44
|
+
lines.push([]);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
return lines;
|
|
49
|
+
}
|
|
50
|
+
function serializeLine(line, format) {
|
|
51
|
+
const heading = getLineHeading(line);
|
|
52
|
+
const content = line.map(fragment => serializeFragment(fragment, format, heading)).join('');
|
|
53
|
+
if (format === 'html') {
|
|
54
|
+
const blockTag = heading ?? 'p';
|
|
55
|
+
return `<${blockTag}>${content}</${blockTag}>`;
|
|
56
|
+
}
|
|
57
|
+
const headingPrefix = getHeadingPrefix(heading);
|
|
58
|
+
if (!headingPrefix) {
|
|
59
|
+
return content;
|
|
60
|
+
}
|
|
61
|
+
return content.length > 0 ? `${headingPrefix} ${content}` : headingPrefix;
|
|
62
|
+
}
|
|
63
|
+
function serializeFragment(fragment, format, lineHeading) {
|
|
64
|
+
const normalizedStyles = {
|
|
65
|
+
...fragment.styles,
|
|
66
|
+
heading: undefined,
|
|
67
|
+
// Markdown headings already express emphasis at the block level.
|
|
68
|
+
bold: lineHeading && lineHeading !== 'none' ? false : fragment.styles.bold
|
|
69
|
+
};
|
|
70
|
+
return format === 'html' ? serializeHtmlFragment(fragment.text, normalizedStyles) : serializeMarkdownFragment(fragment.text, normalizedStyles);
|
|
71
|
+
}
|
|
72
|
+
function serializeHtmlFragment(text, styles) {
|
|
73
|
+
let result = escapeHtml(text);
|
|
74
|
+
if (styles.code) {
|
|
75
|
+
result = `<code>${result}</code>`;
|
|
76
|
+
}
|
|
77
|
+
if (styles.bold) {
|
|
78
|
+
result = `<strong>${result}</strong>`;
|
|
79
|
+
}
|
|
80
|
+
if (styles.italic) {
|
|
81
|
+
result = `<em>${result}</em>`;
|
|
82
|
+
}
|
|
83
|
+
if (styles.underline) {
|
|
84
|
+
result = `<u>${result}</u>`;
|
|
85
|
+
}
|
|
86
|
+
if (styles.strikethrough) {
|
|
87
|
+
result = `<s>${result}</s>`;
|
|
88
|
+
}
|
|
89
|
+
const styleAttribute = buildInlineStyle(styles);
|
|
90
|
+
if (styleAttribute) {
|
|
91
|
+
result = `<span style="${styleAttribute}">${result}</span>`;
|
|
92
|
+
}
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
95
|
+
function serializeMarkdownFragment(text, styles) {
|
|
96
|
+
let result = escapeMarkdown(text);
|
|
97
|
+
if (styles.code) {
|
|
98
|
+
result = wrapInlineCode(text);
|
|
99
|
+
}
|
|
100
|
+
if (styles.bold) {
|
|
101
|
+
result = `**${result}**`;
|
|
102
|
+
}
|
|
103
|
+
if (styles.italic) {
|
|
104
|
+
result = `*${result}*`;
|
|
105
|
+
}
|
|
106
|
+
if (styles.strikethrough) {
|
|
107
|
+
result = `~~${result}~~`;
|
|
108
|
+
}
|
|
109
|
+
if (styles.underline) {
|
|
110
|
+
result = `<u>${result}</u>`;
|
|
111
|
+
}
|
|
112
|
+
const styleAttribute = buildInlineStyle(styles);
|
|
113
|
+
if (styleAttribute) {
|
|
114
|
+
result = `<span style="${styleAttribute}">${result}</span>`;
|
|
115
|
+
}
|
|
116
|
+
return result;
|
|
117
|
+
}
|
|
118
|
+
function buildInlineStyle(styles) {
|
|
119
|
+
const cssRules = [];
|
|
120
|
+
if (styles.color) {
|
|
121
|
+
cssRules.push(`color: ${styles.color}`);
|
|
122
|
+
}
|
|
123
|
+
if (styles.backgroundColor) {
|
|
124
|
+
cssRules.push(`background-color: ${styles.backgroundColor}`);
|
|
125
|
+
}
|
|
126
|
+
if (styles.fontSize) {
|
|
127
|
+
cssRules.push(`font-size: ${styles.fontSize}px`);
|
|
128
|
+
}
|
|
129
|
+
return cssRules.join('; ');
|
|
130
|
+
}
|
|
131
|
+
function getLineHeading(line) {
|
|
132
|
+
for (const fragment of line) {
|
|
133
|
+
if (fragment.styles.heading && fragment.styles.heading !== 'none') {
|
|
134
|
+
return fragment.styles.heading;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return undefined;
|
|
138
|
+
}
|
|
139
|
+
function getHeadingPrefix(heading) {
|
|
140
|
+
switch (heading) {
|
|
141
|
+
case 'h1':
|
|
142
|
+
return '#';
|
|
143
|
+
case 'h2':
|
|
144
|
+
return '##';
|
|
145
|
+
case 'h3':
|
|
146
|
+
return '###';
|
|
147
|
+
default:
|
|
148
|
+
return undefined;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
function escapeHtml(text) {
|
|
152
|
+
return text.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>').replaceAll('"', '"').replaceAll("'", ''');
|
|
153
|
+
}
|
|
154
|
+
function escapeMarkdown(text) {
|
|
155
|
+
return text.replace(/([\\`*_~[\]])/g, '\\$1');
|
|
156
|
+
}
|
|
157
|
+
function wrapInlineCode(text) {
|
|
158
|
+
const matches = text.match(/`+/g);
|
|
159
|
+
const longestBacktickRun = matches?.reduce((max, match) => Math.max(max, match.length), 0) ?? 0;
|
|
160
|
+
const fence = '`'.repeat(longestBacktickRun + 1);
|
|
161
|
+
return `${fence}${text}${fence}`;
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=serializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["serializeSegments","segments","format","lines","splitSegmentsByLine","map","line","serializeLine","join","segmentsToMarkdown","segmentsToHTML","segment","parts","text","split","forEach","part","index","length","push","styles","heading","getLineHeading","content","fragment","serializeFragment","blockTag","headingPrefix","getHeadingPrefix","lineHeading","normalizedStyles","undefined","bold","serializeHtmlFragment","serializeMarkdownFragment","result","escapeHtml","code","italic","underline","strikethrough","styleAttribute","buildInlineStyle","escapeMarkdown","wrapInlineCode","cssRules","color","backgroundColor","fontSize","replaceAll","replace","matches","match","longestBacktickRun","reduce","max","Math","fence","repeat"],"sourceRoot":"../../../src","sources":["utils/serializer.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,31 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React, { useEffect, useCallback } from 'react';
|
|
4
|
-
import {
|
|
3
|
+
import React, { useEffect, useCallback, useMemo, useRef } from 'react';
|
|
4
|
+
import { Animated, Easing, ScrollView, StyleSheet, Text, TextInput, View } from 'react-native';
|
|
5
5
|
import { DEFAULT_THEME } from '../constants/defaultStyles';
|
|
6
|
-
import { segmentsToPlainText } from '../utils/parser';
|
|
7
6
|
import { useRichText } from '../hooks/useRichText';
|
|
8
|
-
import {
|
|
7
|
+
import { segmentsToPlainText } from '../utils/parser';
|
|
8
|
+
import { serializeSegments } from '../utils/serializer';
|
|
9
9
|
import { Toolbar } from './Toolbar';
|
|
10
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
+
const OUTPUT_PANEL_HEIGHT = 180;
|
|
12
|
+
const isJestRuntime = typeof globalThis.process?.env?.JEST_WORKER_ID === 'string';
|
|
10
13
|
|
|
11
14
|
/**
|
|
12
15
|
* RichTextInput — The main rich text editor component.
|
|
13
16
|
*
|
|
14
|
-
* Uses the
|
|
15
|
-
*
|
|
16
|
-
* - A styled `<Text>` layer behind it renders the formatted content
|
|
17
|
-
* - Both share identical font metrics for pixel-perfect alignment
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ```tsx
|
|
21
|
-
* <RichTextInput
|
|
22
|
-
* placeholder="Start typing..."
|
|
23
|
-
* showToolbar
|
|
24
|
-
* onChangeSegments={(segments) => console.log(segments)}
|
|
25
|
-
* />
|
|
26
|
-
* ```
|
|
17
|
+
* Uses a plain `TextInput` for editing and renders the serialized rich output
|
|
18
|
+
* below it as Markdown or HTML.
|
|
27
19
|
*/
|
|
28
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
29
20
|
export const RichTextInput = ({
|
|
30
21
|
initialSegments,
|
|
31
22
|
onChangeSegments,
|
|
@@ -37,6 +28,9 @@ export const RichTextInput = ({
|
|
|
37
28
|
toolbarPosition = 'top',
|
|
38
29
|
toolbarItems,
|
|
39
30
|
theme,
|
|
31
|
+
showOutputPreview = true,
|
|
32
|
+
outputFormat = 'markdown',
|
|
33
|
+
onChangeOutput,
|
|
40
34
|
multiline = true,
|
|
41
35
|
minHeight = 120,
|
|
42
36
|
maxHeight,
|
|
@@ -46,6 +40,7 @@ export const RichTextInput = ({
|
|
|
46
40
|
onReady
|
|
47
41
|
}) => {
|
|
48
42
|
const resolvedTheme = theme ?? DEFAULT_THEME;
|
|
43
|
+
const previewProgress = useRef(new Animated.Value(0)).current;
|
|
49
44
|
const {
|
|
50
45
|
state,
|
|
51
46
|
actions
|
|
@@ -54,16 +49,27 @@ export const RichTextInput = ({
|
|
|
54
49
|
onChangeSegments,
|
|
55
50
|
onChangeText
|
|
56
51
|
});
|
|
57
|
-
|
|
58
|
-
// Expose actions via onReady callback
|
|
59
52
|
useEffect(() => {
|
|
60
53
|
onReady?.(actions);
|
|
61
|
-
}, [
|
|
62
|
-
|
|
63
|
-
// Build plain text for the TextInput value
|
|
54
|
+
}, [actions, onReady]);
|
|
64
55
|
const plainText = segmentsToPlainText(state.segments);
|
|
65
|
-
|
|
66
|
-
|
|
56
|
+
const serializedOutput = useMemo(() => serializeSegments(state.segments, outputFormat), [outputFormat, state.segments]);
|
|
57
|
+
const shouldShowOutputPreview = showOutputPreview && plainText.length > 0;
|
|
58
|
+
useEffect(() => {
|
|
59
|
+
onChangeOutput?.(serializedOutput, outputFormat);
|
|
60
|
+
}, [onChangeOutput, outputFormat, serializedOutput]);
|
|
61
|
+
useEffect(() => {
|
|
62
|
+
if (isJestRuntime) {
|
|
63
|
+
previewProgress.setValue(shouldShowOutputPreview ? 1 : 0);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
Animated.timing(previewProgress, {
|
|
67
|
+
toValue: shouldShowOutputPreview ? 1 : 0,
|
|
68
|
+
duration: 180,
|
|
69
|
+
easing: Easing.out(Easing.cubic),
|
|
70
|
+
useNativeDriver: false
|
|
71
|
+
}).start();
|
|
72
|
+
}, [previewProgress, shouldShowOutputPreview]);
|
|
67
73
|
const onSelectionChange = useCallback(e => {
|
|
68
74
|
const {
|
|
69
75
|
start,
|
|
@@ -74,21 +80,33 @@ export const RichTextInput = ({
|
|
|
74
80
|
end
|
|
75
81
|
});
|
|
76
82
|
}, [actions]);
|
|
77
|
-
|
|
78
|
-
// Container style
|
|
79
83
|
const containerStyle = [resolvedTheme.containerStyle ?? DEFAULT_THEME.containerStyle];
|
|
80
|
-
|
|
81
|
-
// Input area style
|
|
82
84
|
const inputAreaStyle = [styles.inputArea, {
|
|
83
85
|
minHeight
|
|
84
86
|
}, maxHeight ? {
|
|
85
87
|
maxHeight
|
|
86
88
|
} : undefined];
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
const inputStyle = [styles.textInput, resolvedTheme.baseTextStyle ?? DEFAULT_THEME.baseTextStyle, resolvedTheme.inputStyle ?? DEFAULT_THEME.inputStyle, textInputProps?.style];
|
|
90
|
+
const outputAnimatedStyle = {
|
|
91
|
+
maxHeight: previewProgress.interpolate({
|
|
92
|
+
inputRange: [0, 1],
|
|
93
|
+
outputRange: [0, OUTPUT_PANEL_HEIGHT]
|
|
94
|
+
}),
|
|
95
|
+
opacity: previewProgress,
|
|
96
|
+
marginTop: previewProgress.interpolate({
|
|
97
|
+
inputRange: [0, 1],
|
|
98
|
+
outputRange: [0, 12]
|
|
99
|
+
}),
|
|
100
|
+
transform: [{
|
|
101
|
+
translateY: previewProgress.interpolate({
|
|
102
|
+
inputRange: [0, 1],
|
|
103
|
+
outputRange: [-8, 0]
|
|
104
|
+
})
|
|
105
|
+
}]
|
|
106
|
+
};
|
|
107
|
+
const outputContainerStyle = [resolvedTheme.outputContainerStyle ?? DEFAULT_THEME.outputContainerStyle];
|
|
108
|
+
const outputLabelStyle = [resolvedTheme.outputLabelStyle ?? DEFAULT_THEME.outputLabelStyle];
|
|
109
|
+
const outputTextStyle = [resolvedTheme.outputTextStyle ?? DEFAULT_THEME.outputTextStyle];
|
|
92
110
|
const toolbarComponent = showToolbar ? /*#__PURE__*/_jsx(Toolbar, {
|
|
93
111
|
actions: actions,
|
|
94
112
|
state: state,
|
|
@@ -96,8 +114,6 @@ export const RichTextInput = ({
|
|
|
96
114
|
theme: resolvedTheme,
|
|
97
115
|
renderToolbar: renderToolbar
|
|
98
116
|
}) : null;
|
|
99
|
-
|
|
100
|
-
// Toolbar border
|
|
101
117
|
const toolbarBorderStyle = toolbarPosition === 'top' ? {
|
|
102
118
|
borderBottomWidth: 1,
|
|
103
119
|
borderBottomColor: resolvedTheme.colors?.toolbarBorder ?? DEFAULT_THEME.colors?.toolbarBorder
|
|
@@ -112,11 +128,7 @@ export const RichTextInput = ({
|
|
|
112
128
|
children: toolbarComponent
|
|
113
129
|
}), /*#__PURE__*/_jsxs(View, {
|
|
114
130
|
style: inputAreaStyle,
|
|
115
|
-
children: [/*#__PURE__*/_jsx(
|
|
116
|
-
segments: state.segments,
|
|
117
|
-
baseTextStyle: resolvedTheme.baseTextStyle,
|
|
118
|
-
theme: resolvedTheme
|
|
119
|
-
}), /*#__PURE__*/_jsx(TextInput, {
|
|
131
|
+
children: [/*#__PURE__*/_jsx(TextInput, {
|
|
120
132
|
...textInputProps,
|
|
121
133
|
style: inputStyle,
|
|
122
134
|
value: plainText,
|
|
@@ -128,10 +140,26 @@ export const RichTextInput = ({
|
|
|
128
140
|
editable: editable,
|
|
129
141
|
maxLength: maxLength,
|
|
130
142
|
autoFocus: autoFocus,
|
|
131
|
-
underlineColorAndroid: "transparent",
|
|
132
143
|
selectionColor: resolvedTheme.colors?.cursor ?? DEFAULT_THEME.colors?.cursor,
|
|
133
144
|
textAlignVertical: "top",
|
|
134
145
|
scrollEnabled: typeof maxHeight === 'number'
|
|
146
|
+
}), showOutputPreview && /*#__PURE__*/_jsx(Animated.View, {
|
|
147
|
+
pointerEvents: shouldShowOutputPreview ? 'auto' : 'none',
|
|
148
|
+
style: [styles.outputAnimatedWrapper, outputAnimatedStyle],
|
|
149
|
+
children: /*#__PURE__*/_jsxs(View, {
|
|
150
|
+
style: outputContainerStyle,
|
|
151
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
152
|
+
style: outputLabelStyle,
|
|
153
|
+
children: outputFormat === 'html' ? 'HTML output' : 'Markdown output'
|
|
154
|
+
}), /*#__PURE__*/_jsx(ScrollView, {
|
|
155
|
+
showsVerticalScrollIndicator: false,
|
|
156
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
157
|
+
selectable: true,
|
|
158
|
+
style: outputTextStyle,
|
|
159
|
+
children: serializedOutput
|
|
160
|
+
})
|
|
161
|
+
})]
|
|
162
|
+
})
|
|
135
163
|
})]
|
|
136
164
|
}), toolbarPosition === 'bottom' && toolbarComponent && /*#__PURE__*/_jsx(View, {
|
|
137
165
|
style: toolbarBorderStyle,
|
|
@@ -145,14 +173,10 @@ const styles = StyleSheet.create({
|
|
|
145
173
|
position: 'relative'
|
|
146
174
|
},
|
|
147
175
|
textInput: {
|
|
148
|
-
position: 'relative'
|
|
149
|
-
zIndex: 1
|
|
176
|
+
position: 'relative'
|
|
150
177
|
},
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
color: 'transparent',
|
|
154
|
-
backgroundColor: 'transparent',
|
|
155
|
-
textShadowColor: 'transparent'
|
|
178
|
+
outputAnimatedWrapper: {
|
|
179
|
+
overflow: 'hidden'
|
|
156
180
|
}
|
|
157
181
|
});
|
|
158
182
|
//# sourceMappingURL=RichTextInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useCallback","
|
|
1
|
+
{"version":3,"names":["React","useEffect","useCallback","useMemo","useRef","Animated","Easing","ScrollView","StyleSheet","Text","TextInput","View","DEFAULT_THEME","useRichText","segmentsToPlainText","serializeSegments","Toolbar","jsx","_jsx","jsxs","_jsxs","OUTPUT_PANEL_HEIGHT","isJestRuntime","globalThis","process","env","JEST_WORKER_ID","RichTextInput","initialSegments","onChangeSegments","onChangeText","placeholder","editable","maxLength","showToolbar","toolbarPosition","toolbarItems","theme","showOutputPreview","outputFormat","onChangeOutput","multiline","minHeight","maxHeight","autoFocus","textInputProps","renderToolbar","onReady","resolvedTheme","previewProgress","Value","current","state","actions","plainText","segments","serializedOutput","shouldShowOutputPreview","length","setValue","timing","toValue","duration","easing","out","cubic","useNativeDriver","start","onSelectionChange","e","end","nativeEvent","selection","handleSelectionChange","containerStyle","inputAreaStyle","styles","inputArea","undefined","inputStyle","textInput","baseTextStyle","style","outputAnimatedStyle","interpolate","inputRange","outputRange","opacity","marginTop","transform","translateY","outputContainerStyle","outputLabelStyle","outputTextStyle","toolbarComponent","items","toolbarBorderStyle","borderBottomWidth","borderBottomColor","colors","toolbarBorder","borderTopWidth","borderTopColor","children","value","handleTextChange","placeholderTextColor","selectionColor","cursor","textAlignVertical","scrollEnabled","pointerEvents","outputAnimatedWrapper","showsVerticalScrollIndicator","selectable","displayName","create","position","overflow"],"sourceRoot":"../../../src","sources":["components/RichTextInput.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,6 +10,8 @@ export const DEFAULT_COLORS = {
|
|
|
10
10
|
placeholder: '#9CA3AF',
|
|
11
11
|
toolbarBackground: '#F9FAFB',
|
|
12
12
|
toolbarBorder: '#E5E7EB',
|
|
13
|
+
outputBackground: '#F8FAFC',
|
|
14
|
+
outputLabel: '#475569',
|
|
13
15
|
cursor: '#6366F1',
|
|
14
16
|
activeButtonBg: '#EEF2FF',
|
|
15
17
|
codeBackground: '#F3F4F6'
|
|
@@ -64,7 +66,7 @@ export const DEFAULT_THEME = {
|
|
|
64
66
|
inputStyle: {
|
|
65
67
|
fontSize: DEFAULT_BASE_TEXT_STYLE.fontSize,
|
|
66
68
|
lineHeight: DEFAULT_BASE_TEXT_STYLE.lineHeight,
|
|
67
|
-
color:
|
|
69
|
+
color: DEFAULT_COLORS.text,
|
|
68
70
|
paddingHorizontal: 16,
|
|
69
71
|
paddingVertical: 12,
|
|
70
72
|
textAlignVertical: 'top'
|
|
@@ -83,6 +85,29 @@ export const DEFAULT_THEME = {
|
|
|
83
85
|
lineHeight: DEFAULT_BASE_TEXT_STYLE.lineHeight,
|
|
84
86
|
color: DEFAULT_COLORS.text
|
|
85
87
|
},
|
|
88
|
+
outputContainerStyle: {
|
|
89
|
+
marginHorizontal: 12,
|
|
90
|
+
marginBottom: 12,
|
|
91
|
+
padding: 12,
|
|
92
|
+
borderRadius: 10,
|
|
93
|
+
borderWidth: 1,
|
|
94
|
+
borderColor: DEFAULT_COLORS.toolbarBorder,
|
|
95
|
+
backgroundColor: DEFAULT_COLORS.outputBackground
|
|
96
|
+
},
|
|
97
|
+
outputLabelStyle: {
|
|
98
|
+
marginBottom: 8,
|
|
99
|
+
fontSize: 12,
|
|
100
|
+
fontWeight: '700',
|
|
101
|
+
letterSpacing: 0.4,
|
|
102
|
+
color: DEFAULT_COLORS.outputLabel,
|
|
103
|
+
textTransform: 'uppercase'
|
|
104
|
+
},
|
|
105
|
+
outputTextStyle: {
|
|
106
|
+
fontSize: 14,
|
|
107
|
+
lineHeight: 20,
|
|
108
|
+
color: DEFAULT_COLORS.text,
|
|
109
|
+
fontFamily: 'monospace'
|
|
110
|
+
},
|
|
86
111
|
toolbarStyle: {
|
|
87
112
|
flexDirection: 'row',
|
|
88
113
|
alignItems: 'center',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DEFAULT_COLORS","primary","background","text","placeholder","toolbarBackground","toolbarBorder","cursor","activeButtonBg","codeBackground","HEADING_FONT_SIZES","h1","h2","h3","none","DEFAULT_BASE_TEXT_STYLE","fontSize","lineHeight","color","fontFamily","undefined","EMPTY_FORMAT_STYLE","bold","italic","underline","strikethrough","code","backgroundColor","heading","DEFAULT_THEME","containerStyle","borderWidth","borderColor","borderRadius","overflow","inputStyle","paddingHorizontal","paddingVertical","textAlignVertical","overlayContainerStyle","position","top","left","right","bottom","baseTextStyle","toolbarStyle","flexDirection","alignItems","gap","toolbarButtonStyle","minWidth","justifyContent","toolbarButtonActiveStyle","toolbarButtonTextStyle","
|
|
1
|
+
{"version":3,"names":["DEFAULT_COLORS","primary","background","text","placeholder","toolbarBackground","toolbarBorder","outputBackground","outputLabel","cursor","activeButtonBg","codeBackground","HEADING_FONT_SIZES","h1","h2","h3","none","DEFAULT_BASE_TEXT_STYLE","fontSize","lineHeight","color","fontFamily","undefined","EMPTY_FORMAT_STYLE","bold","italic","underline","strikethrough","code","backgroundColor","heading","DEFAULT_THEME","containerStyle","borderWidth","borderColor","borderRadius","overflow","inputStyle","paddingHorizontal","paddingVertical","textAlignVertical","overlayContainerStyle","position","top","left","right","bottom","baseTextStyle","outputContainerStyle","marginHorizontal","marginBottom","padding","outputLabelStyle","fontWeight","letterSpacing","textTransform","outputTextStyle","toolbarStyle","flexDirection","alignItems","gap","toolbarButtonStyle","minWidth","justifyContent","toolbarButtonActiveStyle","toolbarButtonTextStyle","toolbarButtonActiveTextStyle","codeStyle","colors","DEFAULT_TOOLBAR_ITEMS","id","label","format"],"sourceRoot":"../../../src","sources":["constants/defaultStyles.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -40,9 +40,15 @@ export function useFormatting({
|
|
|
40
40
|
}
|
|
41
41
|
}, [segments, selection, activeStyles, onSegmentsChange, onActiveStylesChange]);
|
|
42
42
|
const setHeading = useCallback(level => {
|
|
43
|
+
if (selection.start === selection.end) {
|
|
44
|
+
onActiveStylesChange({
|
|
45
|
+
...activeStyles,
|
|
46
|
+
heading: level === 'none' ? undefined : level
|
|
47
|
+
});
|
|
48
|
+
}
|
|
43
49
|
const newSegments = setHeadingOnLine(segments, selection, level);
|
|
44
50
|
onSegmentsChange(newSegments);
|
|
45
|
-
}, [
|
|
51
|
+
}, [activeStyles, onActiveStylesChange, onSegmentsChange, segments, selection]);
|
|
46
52
|
const setColor = useCallback(color => {
|
|
47
53
|
setStyleProperty('color', color);
|
|
48
54
|
}, [setStyleProperty]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","toggleFormatOnSelection","setStyleOnSelection","setHeadingOnLine","isFormatActiveInSelection","getSelectionStyle","useFormatting","segments","selection","activeStyles","onSegmentsChange","onActiveStylesChange","toggleFormat","format","start","end","newSegments","setStyleProperty","key","value","setHeading","level","setColor","color","setBackgroundColor","setFontSize","size","isFormatActive","currentSelectionStyle"],"sourceRoot":"../../../src","sources":["hooks/useFormatting.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,OAAO;AAQnC,SACEC,uBAAuB,EACvBC,mBAAmB,EACnBC,gBAAgB,EAChBC,yBAAyB,EACzBC,iBAAiB,QACZ,oBAAoB;AAU3B;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAAC;EAC5BC,QAAQ;EACRC,SAAS;EACTC,YAAY;EACZC,gBAAgB;EAChBC;AACoB,CAAC,EAAE;EACvB,MAAMC,YAAY,GAAGZ,WAAW,CAC7Ba,MAAkB,IAAK;IACtB,IAAIL,SAAS,CAACM,KAAK,KAAKN,SAAS,CAACO,GAAG,EAAE;MACrC;MACAJ,oBAAoB,CAAC;QACnB,GAAGF,YAAY;QACf,CAACI,MAAM,GAAG,CAACJ,YAAY,CAACI,MAAM;MAChC,CAAC,CAAC;IACJ,CAAC,MAAM;MACL;MACA,MAAMG,WAAW,GAAGf,uBAAuB,CACzCM,QAAQ,EACRC,SAAS,EACTK,MACF,CAAC;MACDH,gBAAgB,CAACM,WAAW,CAAC;IAC/B;EACF,CAAC,EACD,CAACT,QAAQ,EAAEC,SAAS,EAAEC,YAAY,EAAEC,gBAAgB,EAAEC,oBAAoB,CAC5E,CAAC;EAED,MAAMM,gBAAgB,GAAGjB,WAAW,CAClC,CAA8BkB,GAAM,EAAEC,KAAqB,KAAK;IAC9D,IAAIX,SAAS,CAACM,KAAK,KAAKN,SAAS,CAACO,GAAG,EAAE;MACrCJ,oBAAoB,CAAC;QACnB,GAAGF,YAAY;QACf,CAACS,GAAG,GAAGC;MACT,CAAC,CAAC;IACJ,CAAC,MAAM;MACL,MAAMH,WAAW,GAAGd,mBAAmB,CACrCK,QAAQ,EACRC,SAAS,EACTU,GAAG,EACHC,KACF,CAAC;MACDT,gBAAgB,CAACM,WAAW,CAAC;IAC/B;EACF,CAAC,EACD,CAACT,QAAQ,EAAEC,SAAS,EAAEC,YAAY,EAAEC,gBAAgB,EAAEC,oBAAoB,CAC5E,CAAC;EAED,MAAMS,UAAU,GAAGpB,WAAW,CAC3BqB,KAAmB,IAAK;IACvB,MAAML,WAAW,GAAGb,gBAAgB,CAACI,QAAQ,EAAEC,SAAS,EAAEa,KAAK,CAAC;IAChEX,gBAAgB,CAACM,WAAW,CAAC;EAC/B,CAAC,EACD,
|
|
1
|
+
{"version":3,"names":["useCallback","toggleFormatOnSelection","setStyleOnSelection","setHeadingOnLine","isFormatActiveInSelection","getSelectionStyle","useFormatting","segments","selection","activeStyles","onSegmentsChange","onActiveStylesChange","toggleFormat","format","start","end","newSegments","setStyleProperty","key","value","setHeading","level","heading","undefined","setColor","color","setBackgroundColor","setFontSize","size","isFormatActive","currentSelectionStyle"],"sourceRoot":"../../../src","sources":["hooks/useFormatting.ts"],"mappings":"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","ignoreList":[]}
|