react-native-richify 1.0.2 → 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.
Files changed (114) hide show
  1. package/lib/commonjs/components/OverlayText.d.js.map +1 -1
  2. package/lib/commonjs/components/OverlayText.js +8 -2
  3. package/lib/commonjs/components/OverlayText.js.map +1 -1
  4. package/lib/commonjs/components/RichTextInput.d.js.map +1 -1
  5. package/lib/commonjs/components/RichTextInput.js +73 -45
  6. package/lib/commonjs/components/RichTextInput.js.map +1 -1
  7. package/lib/commonjs/components/Toolbar.d.js.map +1 -1
  8. package/lib/commonjs/components/Toolbar.js +4 -7
  9. package/lib/commonjs/components/Toolbar.js.map +1 -1
  10. package/lib/commonjs/components/ToolbarButton.d.js.map +1 -1
  11. package/lib/commonjs/components/ToolbarButton.js.map +1 -1
  12. package/lib/commonjs/constants/defaultStyles.d.js.map +1 -1
  13. package/lib/commonjs/constants/defaultStyles.js +26 -1
  14. package/lib/commonjs/constants/defaultStyles.js.map +1 -1
  15. package/lib/commonjs/context/RichTextContext.d.js.map +1 -1
  16. package/lib/commonjs/context/RichTextContext.js.map +1 -1
  17. package/lib/commonjs/hooks/useFormatting.d.js.map +1 -1
  18. package/lib/commonjs/hooks/useFormatting.js +7 -1
  19. package/lib/commonjs/hooks/useFormatting.js.map +1 -1
  20. package/lib/commonjs/hooks/useRichText.d.js.map +1 -1
  21. package/lib/commonjs/hooks/useRichText.js +62 -7
  22. package/lib/commonjs/hooks/useRichText.js.map +1 -1
  23. package/lib/commonjs/hooks/useSelection.d.js.map +1 -1
  24. package/lib/commonjs/hooks/useSelection.js.map +1 -1
  25. package/lib/commonjs/index.d.js +19 -0
  26. package/lib/commonjs/index.d.js.map +1 -1
  27. package/lib/commonjs/index.js +19 -0
  28. package/lib/commonjs/index.js.map +1 -1
  29. package/lib/commonjs/types/index.d.js.map +1 -1
  30. package/lib/commonjs/types/index.js.map +1 -1
  31. package/lib/commonjs/utils/formatter.d.js.map +1 -1
  32. package/lib/commonjs/utils/formatter.js +1 -4
  33. package/lib/commonjs/utils/formatter.js.map +1 -1
  34. package/lib/commonjs/utils/parser.d.js.map +1 -1
  35. package/lib/commonjs/utils/parser.js.map +1 -1
  36. package/lib/commonjs/utils/serializer.d.js +6 -0
  37. package/lib/commonjs/utils/serializer.d.js.map +1 -0
  38. package/lib/commonjs/utils/serializer.js +163 -0
  39. package/lib/commonjs/utils/serializer.js.map +1 -0
  40. package/lib/commonjs/utils/styleMapper.d.js.map +1 -1
  41. package/lib/commonjs/utils/styleMapper.js.map +1 -1
  42. package/lib/module/components/OverlayText.d.js.map +1 -1
  43. package/lib/module/components/OverlayText.js +8 -2
  44. package/lib/module/components/OverlayText.js.map +1 -1
  45. package/lib/module/components/RichTextInput.d.js.map +1 -1
  46. package/lib/module/components/RichTextInput.js +75 -48
  47. package/lib/module/components/RichTextInput.js.map +1 -1
  48. package/lib/module/components/Toolbar.d.js.map +1 -1
  49. package/lib/module/components/Toolbar.js +4 -7
  50. package/lib/module/components/Toolbar.js.map +1 -1
  51. package/lib/module/components/ToolbarButton.d.js.map +1 -1
  52. package/lib/module/components/ToolbarButton.js.map +1 -1
  53. package/lib/module/constants/defaultStyles.d.js.map +1 -1
  54. package/lib/module/constants/defaultStyles.js +26 -1
  55. package/lib/module/constants/defaultStyles.js.map +1 -1
  56. package/lib/module/context/RichTextContext.d.js.map +1 -1
  57. package/lib/module/context/RichTextContext.js.map +1 -1
  58. package/lib/module/hooks/useFormatting.d.js.map +1 -1
  59. package/lib/module/hooks/useFormatting.js +7 -1
  60. package/lib/module/hooks/useFormatting.js.map +1 -1
  61. package/lib/module/hooks/useRichText.d.js.map +1 -1
  62. package/lib/module/hooks/useRichText.js +62 -7
  63. package/lib/module/hooks/useRichText.js.map +1 -1
  64. package/lib/module/hooks/useSelection.d.js.map +1 -1
  65. package/lib/module/hooks/useSelection.js.map +1 -1
  66. package/lib/module/index.d.js +1 -0
  67. package/lib/module/index.d.js.map +1 -1
  68. package/lib/module/index.js +1 -0
  69. package/lib/module/index.js.map +1 -1
  70. package/lib/module/types/index.d.js.map +1 -1
  71. package/lib/module/types/index.js.map +1 -1
  72. package/lib/module/utils/formatter.d.js.map +1 -1
  73. package/lib/module/utils/formatter.js +1 -4
  74. package/lib/module/utils/formatter.js.map +1 -1
  75. package/lib/module/utils/parser.d.js.map +1 -1
  76. package/lib/module/utils/parser.js.map +1 -1
  77. package/lib/module/utils/serializer.d.js +4 -0
  78. package/lib/module/utils/serializer.d.js.map +1 -0
  79. package/lib/module/utils/serializer.js +157 -0
  80. package/lib/module/utils/serializer.js.map +1 -0
  81. package/lib/module/utils/styleMapper.d.js.map +1 -1
  82. package/lib/module/utils/styleMapper.js.map +1 -1
  83. package/lib/typescript/src/components/OverlayText.d.ts.map +1 -1
  84. package/lib/typescript/src/components/RichTextInput.d.ts +2 -13
  85. package/lib/typescript/src/components/RichTextInput.d.ts.map +1 -1
  86. package/lib/typescript/src/constants/defaultStyles.d.ts +2 -0
  87. package/lib/typescript/src/constants/defaultStyles.d.ts.map +1 -1
  88. package/lib/typescript/src/hooks/useFormatting.d.ts.map +1 -1
  89. package/lib/typescript/src/hooks/useRichText.d.ts.map +1 -1
  90. package/lib/typescript/src/index.d.ts +2 -1
  91. package/lib/typescript/src/index.d.ts.map +1 -1
  92. package/lib/typescript/src/types/index.d.ts +41 -11
  93. package/lib/typescript/src/types/index.d.ts.map +1 -1
  94. package/lib/typescript/src/utils/formatter.d.ts.map +1 -1
  95. package/lib/typescript/src/utils/serializer.d.ts +14 -0
  96. package/lib/typescript/src/utils/serializer.d.ts.map +1 -0
  97. package/package.json +1 -1
  98. package/src/components/OverlayText.tsx +11 -3
  99. package/src/components/RichTextInput.d.ts +3 -14
  100. package/src/components/RichTextInput.tsx +111 -48
  101. package/src/components/Toolbar.d.ts +1 -1
  102. package/src/components/Toolbar.tsx +5 -5
  103. package/src/components/ToolbarButton.d.ts +1 -1
  104. package/src/constants/defaultStyles.d.ts +4 -2
  105. package/src/constants/defaultStyles.ts +26 -1
  106. package/src/hooks/useFormatting.ts +14 -1
  107. package/src/hooks/useRichText.ts +103 -10
  108. package/src/index.d.ts +2 -1
  109. package/src/index.ts +8 -0
  110. package/src/types/index.d.ts +41 -11
  111. package/src/types/index.ts +44 -11
  112. package/src/utils/formatter.ts +1 -5
  113. package/src/utils/serializer.d.ts +13 -0
  114. package/src/utils/serializer.ts +223 -0
@@ -1 +1 @@
1
- {"version":3,"names":["React","Text","View","segmentToTextStyle","DEFAULT_THEME","jsx","_jsx","OverlayText","memo","segments","baseTextStyle","theme","resolvedTheme","overlayStyle","overlayContainerStyle","style","pointerEvents","children","map","segment","index","text","length","textStyle","slice","displayName"],"sourceRoot":"..\\..\\..\\src","sources":["components/OverlayText.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AAEzC,SAASC,kBAAkB,QAAQ,sBAAsB;AACzD,SAASC,aAAa,QAAQ,4BAA4B;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AANA,SAAAC,GAAA,IAAAC,IAAA;AAOA,OAAO,MAAMC,WAAuC,gBAAGP,KAAK,CAACQ,IAAI,CAC/D,CAAC;EAAEC,QAAQ;EAAEC,aAAa;EAAEC;AAAM,CAAC,KAAK;EACtC,MAAMC,aAAa,GAAGD,KAAK,IAAIP,aAAa;EAC5C,MAAMS,YAAY,GAChBD,aAAa,CAACE,qBAAqB,IACnCV,aAAa,CAACU,qBAAqB;EAErC,oBACER,IAAA,CAACJ,IAAI;IAACa,KAAK,EAAEF,YAAa;IAACG,aAAa,EAAC,MAAM;IAAAC,QAAA,eAC7CX,IAAA,CAACL,IAAI;MAAAgB,QAAA,EACFR,QAAQ,CAACS,GAAG,CAAC,CAACC,OAAO,EAAEC,KAAK,KAAK;QAChC,IAAID,OAAO,CAACE,IAAI,CAACC,MAAM,KAAK,CAAC,IAAIb,QAAQ,CAACa,MAAM,GAAG,CAAC,EAAE;UACpD,OAAO,IAAI;QACb;QAEA,MAAMC,SAAS,GAAGpB,kBAAkB,CAACgB,OAAO,EAAEP,aAAa,CAAC;QAE5D,oBACEN,IAAA,CAACL,IAAI;UAEHc,KAAK,EAAE,CAACL,aAAa,EAAEa,SAAS,CAAE;UAAAN,QAAA,EAEjCE,OAAO,CAACE;QAAI,GAHR,GAAGD,KAAK,IAAID,OAAO,CAACE,IAAI,CAACG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAIrC,CAAC;MAEX,CAAC;IAAC,CACE;EAAC,CACH,CAAC;AAEX,CACF,CAAC;AAEDjB,WAAW,CAACkB,WAAW,GAAG,aAAa","ignoreList":[]}
1
+ {"version":3,"names":["React","Text","View","segmentToTextStyle","DEFAULT_THEME","jsx","_jsx","OverlayText","memo","segments","baseTextStyle","theme","resolvedTheme","overlayStyle","overlayContainerStyle","resolvedBaseTextStyle","overlayTheme","style","pointerEvents","children","map","segment","index","text","length","textStyle","slice","displayName"],"sourceRoot":"../../../src","sources":["components/OverlayText.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AAEzC,SAASC,kBAAkB,QAAQ,sBAAsB;AACzD,SAASC,aAAa,QAAQ,4BAA4B;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AANA,SAAAC,GAAA,IAAAC,IAAA;AAOA,OAAO,MAAMC,WAAuC,gBAAGP,KAAK,CAACQ,IAAI,CAC/D,CAAC;EAAEC,QAAQ;EAAEC,aAAa;EAAEC;AAAM,CAAC,KAAK;EACtC,MAAMC,aAAa,GAAGD,KAAK,IAAIP,aAAa;EAC5C,MAAMS,YAAY,GAChBD,aAAa,CAACE,qBAAqB,IACnCV,aAAa,CAACU,qBAAqB;EACrC,MAAMC,qBAAqB,GACzBL,aAAa,IACbE,aAAa,CAACF,aAAa,IAC3BN,aAAa,CAACM,aAAa;EAC7B,MAAMM,YAAY,GAAG;IACnB,GAAGJ,aAAa;IAChBF,aAAa,EAAEK;EACjB,CAAC;EAED,oBACET,IAAA,CAACJ,IAAI;IAACe,KAAK,EAAEJ,YAAa;IAACK,aAAa,EAAC,MAAM;IAAAC,QAAA,eAC7Cb,IAAA,CAACL,IAAI;MAACgB,KAAK,EAAEF,qBAAsB;MAAAI,QAAA,EAChCV,QAAQ,CAACW,GAAG,CAAC,CAACC,OAAO,EAAEC,KAAK,KAAK;QAChC,IAAID,OAAO,CAACE,IAAI,CAACC,MAAM,KAAK,CAAC,IAAIf,QAAQ,CAACe,MAAM,GAAG,CAAC,EAAE;UACpD,OAAO,IAAI;QACb;QAEA,MAAMC,SAAS,GAAGtB,kBAAkB,CAACkB,OAAO,EAAEL,YAAY,CAAC;QAE3D,oBACEV,IAAA,CAACL,IAAI;UAEHgB,KAAK,EAAEQ,SAAU;UAAAN,QAAA,EAEhBE,OAAO,CAACE;QAAI,GAHR,GAAGD,KAAK,IAAID,OAAO,CAACE,IAAI,CAACG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAIrC,CAAC;MAEX,CAAC;IAAC,CACE;EAAC,CACH,CAAC;AAEX,CACF,CAAC;AAEDnB,WAAW,CAACoB,WAAW,GAAG,aAAa","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"..\\..\\..\\src","sources":["components/RichTextInput.d.ts"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["components/RichTextInput.d.ts"],"mappings":"","ignoreList":[]}
@@ -1,31 +1,22 @@
1
1
  "use strict";
2
2
 
3
- import React, { useEffect, useCallback } from 'react';
4
- import { View, TextInput, StyleSheet } from 'react-native';
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 { OverlayText } from './OverlayText';
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 Overlay Technique:
15
- * - A transparent `TextInput` on top captures user input and selection
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
- }, [onReady, actions]);
62
-
63
- // Build plain text for the TextInput value
54
+ }, [actions, onReady]);
64
55
  const plainText = segmentsToPlainText(state.segments);
65
-
66
- // Handle selection change from TextInput
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
- // Input style
89
- const inputStyle = [styles.textInput, resolvedTheme.inputStyle ?? DEFAULT_THEME.inputStyle];
90
-
91
- // Toolbar component
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(OverlayText, {
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,
@@ -130,7 +142,24 @@ export const RichTextInput = ({
130
142
  autoFocus: autoFocus,
131
143
  selectionColor: resolvedTheme.colors?.cursor ?? DEFAULT_THEME.colors?.cursor,
132
144
  textAlignVertical: "top",
133
- scrollEnabled: true
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
+ })
134
163
  })]
135
164
  }), toolbarPosition === 'bottom' && toolbarComponent && /*#__PURE__*/_jsx(View, {
136
165
  style: toolbarBorderStyle,
@@ -144,12 +173,10 @@ const styles = StyleSheet.create({
144
173
  position: 'relative'
145
174
  },
146
175
  textInput: {
147
- // The TextInput must be transparent so the overlay text shows through.
148
- // Only the caret/cursor and selection highlight are visible.
149
- color: 'transparent',
150
- // Ensure it matches the overlay text positioning exactly.
151
- position: 'relative',
152
- zIndex: 1
176
+ position: 'relative'
177
+ },
178
+ outputAnimatedWrapper: {
179
+ overflow: 'hidden'
153
180
  }
154
181
  });
155
182
  //# sourceMappingURL=RichTextInput.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useCallback","View","TextInput","StyleSheet","DEFAULT_THEME","segmentsToPlainText","useRichText","OverlayText","Toolbar","jsx","_jsx","jsxs","_jsxs","RichTextInput","initialSegments","onChangeSegments","onChangeText","placeholder","editable","maxLength","showToolbar","toolbarPosition","toolbarItems","theme","multiline","minHeight","maxHeight","autoFocus","textInputProps","renderToolbar","onReady","resolvedTheme","state","actions","plainText","segments","onSelectionChange","e","start","end","nativeEvent","selection","handleSelectionChange","containerStyle","inputAreaStyle","styles","inputArea","undefined","inputStyle","textInput","toolbarComponent","items","toolbarBorderStyle","borderBottomWidth","borderBottomColor","colors","toolbarBorder","borderTopWidth","borderTopColor","style","children","baseTextStyle","value","handleTextChange","placeholderTextColor","selectionColor","cursor","textAlignVertical","scrollEnabled","displayName","create","position","color","zIndex"],"sourceRoot":"..\\..\\..\\src","sources":["components/RichTextInput.tsx"],"mappings":"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","ignoreList":[]}
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":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"..\\..\\..\\src","sources":["components/Toolbar.d.ts"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["components/Toolbar.d.ts"],"mappings":"","ignoreList":[]}
@@ -28,24 +28,21 @@ export const Toolbar = /*#__PURE__*/React.memo(({
28
28
 
29
29
  // Compute active state for each item
30
30
  const enrichedItems = useMemo(() => {
31
+ const selectionStyle = actions.getSelectionStyle();
31
32
  return toolbarItems.map(item => {
32
33
  let isActive = false;
33
34
  if (item.format) {
34
- // Check if the format is currently active
35
- const {
36
- activeStyles
37
- } = state;
38
- isActive = !!activeStyles[item.format];
35
+ isActive = actions.isFormatActive(item.format);
39
36
  }
40
37
  if (item.heading) {
41
- isActive = state.activeStyles.heading === item.heading;
38
+ isActive = selectionStyle.heading === item.heading;
42
39
  }
43
40
  return {
44
41
  ...item,
45
42
  active: item.active ?? isActive
46
43
  };
47
44
  });
48
- }, [toolbarItems, state]);
45
+ }, [actions, toolbarItems]);
49
46
 
50
47
  // Custom render
51
48
  if (renderToolbar) {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useMemo","View","ScrollView","StyleSheet","DEFAULT_THEME","DEFAULT_TOOLBAR_ITEMS","ToolbarButton","jsx","_jsx","Toolbar","memo","actions","state","items","theme","visible","renderToolbar","resolvedTheme","toolbarItems","enrichedItems","map","item","isActive","format","activeStyles","heading","active","toolbarStyle","style","children","horizontal","showsHorizontalScrollIndicator","keyboardShouldPersistTaps","contentContainerStyle","styles","scrollContent","label","renderButton","onPress","toggleFormat","setHeading","id","displayName","create","flexDirection","alignItems","gap"],"sourceRoot":"..\\..\\..\\src","sources":["components/Toolbar.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useMemo","View","ScrollView","StyleSheet","DEFAULT_THEME","DEFAULT_TOOLBAR_ITEMS","ToolbarButton","jsx","_jsx","Toolbar","memo","actions","state","items","theme","visible","renderToolbar","resolvedTheme","toolbarItems","enrichedItems","selectionStyle","getSelectionStyle","map","item","isActive","format","isFormatActive","heading","active","toolbarStyle","style","children","horizontal","showsHorizontalScrollIndicator","keyboardShouldPersistTaps","contentContainerStyle","styles","scrollContent","label","renderButton","onPress","toggleFormat","setHeading","id","displayName","create","flexDirection","alignItems","gap"],"sourceRoot":"../../../src","sources":["components/Toolbar.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"..\\..\\..\\src","sources":["components/ToolbarButton.d.ts"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["components/ToolbarButton.d.ts"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["React","TouchableOpacity","Text","StyleSheet","DEFAULT_THEME","jsx","_jsx","ToolbarButton","memo","label","active","onPress","theme","renderButton","resolvedTheme","buttonStyle","toolbarButtonStyle","toolbarButtonActiveStyle","textStyle","toolbarButtonTextStyle","toolbarButtonActiveTextStyle","styles","italicLabel","underlineLabel","strikethroughLabel","style","activeOpacity","accessibilityRole","accessibilityLabel","accessibilityState","selected","children","displayName","create","fontStyle","textDecorationLine"],"sourceRoot":"..\\..\\..\\src","sources":["components/ToolbarButton.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,gBAAgB,EAAEC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AAEjE,SAASC,aAAa,QAAQ,4BAA4B;;AAE1D;AACA;AACA;AACA;AAHA,SAAAC,GAAA,IAAAC,IAAA;AAIA,OAAO,MAAMC,aAA2C,gBAAGP,KAAK,CAACQ,IAAI,CACnE,CAAC;EAAEC,KAAK;EAAEC,MAAM;EAAEC,OAAO;EAAEC,KAAK;EAAEC;AAAa,CAAC,KAAK;EACnD;EACA,IAAIA,YAAY,EAAE;IAChB,OAAOA,YAAY,CAAC;MAAEH,MAAM;MAAEC,OAAO;MAAEF;IAAM,CAAC,CAAC;EACjD;EAEA,MAAMK,aAAa,GAAGF,KAAK,IAAIR,aAAa;EAE5C,MAAMW,WAAW,GAAG,CAClBD,aAAa,CAACE,kBAAkB,IAAIZ,aAAa,CAACY,kBAAkB,EACpEN,MAAM,KACLI,aAAa,CAACG,wBAAwB,IACrCb,aAAa,CAACa,wBAAwB,CAAC,CAC1C;EAED,MAAMC,SAAS,GAAG,CAChBJ,aAAa,CAACK,sBAAsB,IACpCf,aAAa,CAACe,sBAAsB,EACpCT,MAAM,KACLI,aAAa,CAACM,4BAA4B,IACzChB,aAAa,CAACgB,4BAA4B,CAAC;EAC7C;EACAX,KAAK,KAAK,GAAG,IAAIY,MAAM,CAACC,WAAW,EACnCb,KAAK,KAAK,GAAG,IAAIY,MAAM,CAACE,cAAc,EACtCd,KAAK,KAAK,GAAG,IAAIY,MAAM,CAACG,kBAAkB,CAC3C;EAED,oBACElB,IAAA,CAACL,gBAAgB;IACfwB,KAAK,EAAEV,WAAY;IACnBJ,OAAO,EAAEA,OAAQ;IACjBe,aAAa,EAAE,GAAI;IACnBC,iBAAiB,EAAC,QAAQ;IAC1BC,kBAAkB,EAAE,UAAUnB,KAAK,EAAG;IACtCoB,kBAAkB,EAAE;MAAEC,QAAQ,EAAEpB;IAAO,CAAE;IAAAqB,QAAA,eAEzCzB,IAAA,CAACJ,IAAI;MAACuB,KAAK,EAAEP,SAAU;MAAAa,QAAA,EAAEtB;IAAK,CAAO;EAAC,CACtB,CAAC;AAEvB,CACF,CAAC;AAEDF,aAAa,CAACyB,WAAW,GAAG,eAAe;AAE3C,MAAMX,MAAM,GAAGlB,UAAU,CAAC8B,MAAM,CAAC;EAC/BX,WAAW,EAAE;IACXY,SAAS,EAAE;EACb,CAAC;EACDX,cAAc,EAAE;IACdY,kBAAkB,EAAE;EACtB,CAAC;EACDX,kBAAkB,EAAE;IAClBW,kBAAkB,EAAE;EACtB;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","TouchableOpacity","Text","StyleSheet","DEFAULT_THEME","jsx","_jsx","ToolbarButton","memo","label","active","onPress","theme","renderButton","resolvedTheme","buttonStyle","toolbarButtonStyle","toolbarButtonActiveStyle","textStyle","toolbarButtonTextStyle","toolbarButtonActiveTextStyle","styles","italicLabel","underlineLabel","strikethroughLabel","style","activeOpacity","accessibilityRole","accessibilityLabel","accessibilityState","selected","children","displayName","create","fontStyle","textDecorationLine"],"sourceRoot":"../../../src","sources":["components/ToolbarButton.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,gBAAgB,EAAEC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AAEjE,SAASC,aAAa,QAAQ,4BAA4B;;AAE1D;AACA;AACA;AACA;AAHA,SAAAC,GAAA,IAAAC,IAAA;AAIA,OAAO,MAAMC,aAA2C,gBAAGP,KAAK,CAACQ,IAAI,CACnE,CAAC;EAAEC,KAAK;EAAEC,MAAM;EAAEC,OAAO;EAAEC,KAAK;EAAEC;AAAa,CAAC,KAAK;EACnD;EACA,IAAIA,YAAY,EAAE;IAChB,OAAOA,YAAY,CAAC;MAAEH,MAAM;MAAEC,OAAO;MAAEF;IAAM,CAAC,CAAC;EACjD;EAEA,MAAMK,aAAa,GAAGF,KAAK,IAAIR,aAAa;EAE5C,MAAMW,WAAW,GAAG,CAClBD,aAAa,CAACE,kBAAkB,IAAIZ,aAAa,CAACY,kBAAkB,EACpEN,MAAM,KACLI,aAAa,CAACG,wBAAwB,IACrCb,aAAa,CAACa,wBAAwB,CAAC,CAC1C;EAED,MAAMC,SAAS,GAAG,CAChBJ,aAAa,CAACK,sBAAsB,IACpCf,aAAa,CAACe,sBAAsB,EACpCT,MAAM,KACLI,aAAa,CAACM,4BAA4B,IACzChB,aAAa,CAACgB,4BAA4B,CAAC;EAC7C;EACAX,KAAK,KAAK,GAAG,IAAIY,MAAM,CAACC,WAAW,EACnCb,KAAK,KAAK,GAAG,IAAIY,MAAM,CAACE,cAAc,EACtCd,KAAK,KAAK,GAAG,IAAIY,MAAM,CAACG,kBAAkB,CAC3C;EAED,oBACElB,IAAA,CAACL,gBAAgB;IACfwB,KAAK,EAAEV,WAAY;IACnBJ,OAAO,EAAEA,OAAQ;IACjBe,aAAa,EAAE,GAAI;IACnBC,iBAAiB,EAAC,QAAQ;IAC1BC,kBAAkB,EAAE,UAAUnB,KAAK,EAAG;IACtCoB,kBAAkB,EAAE;MAAEC,QAAQ,EAAEpB;IAAO,CAAE;IAAAqB,QAAA,eAEzCzB,IAAA,CAACJ,IAAI;MAACuB,KAAK,EAAEP,SAAU;MAAAa,QAAA,EAAEtB;IAAK,CAAO;EAAC,CACtB,CAAC;AAEvB,CACF,CAAC;AAEDF,aAAa,CAACyB,WAAW,GAAG,eAAe;AAE3C,MAAMX,MAAM,GAAGlB,UAAU,CAAC8B,MAAM,CAAC;EAC/BX,WAAW,EAAE;IACXY,SAAS,EAAE;EACb,CAAC;EACDX,cAAc,EAAE;IACdY,kBAAkB,EAAE;EACtB,CAAC;EACDX,kBAAkB,EAAE;IAClBW,kBAAkB,EAAE;EACtB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"..\\..\\..\\src","sources":["constants/defaultStyles.d.ts"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["constants/defaultStyles.d.ts"],"mappings":"","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: 'transparent',
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","fontWeight","toolbarButtonActiveTextStyle","codeStyle","colors","DEFAULT_TOOLBAR_ITEMS","id","label","format"],"sourceRoot":"..\\..\\..\\src","sources":["constants/defaultStyles.ts"],"mappings":"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","ignoreList":[]}
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":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"..\\..\\..\\src","sources":["context/RichTextContext.d.ts"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["context/RichTextContext.d.ts"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["React","createContext","useContext","useRichText","jsx","_jsx","RichTextContext","RichTextProvider","children","options","richText","Provider","value","displayName","useRichTextContext","context","Error"],"sourceRoot":"..\\..\\..\\src","sources":["context/RichTextContext.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAEC,UAAU,QAAQ,OAAO;AAExD,SAASC,WAAW,QAAiC,sBAAsB;;AAE3E;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAEA,MAAMC,eAAe,gBAAGL,aAAa,CAA2B,IAAI,CAAC;;AAErE;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMM,gBAAiD,GAAGA,CAAC;EAChEC,QAAQ;EACR,GAAGC;AACL,CAAC,KAAK;EACJ,MAAMC,QAAQ,GAAGP,WAAW,CAACM,OAAO,CAAC;EAErC,oBACEJ,IAAA,CAACC,eAAe,CAACK,QAAQ;IAACC,KAAK,EAAEF,QAAS;IAAAF,QAAA,EACvCA;EAAQ,CACe,CAAC;AAE/B,CAAC;AAEDD,gBAAgB,CAACM,WAAW,GAAG,kBAAkB;;AAEjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAAA,EAAsB;EACtD,MAAMC,OAAO,GAAGb,UAAU,CAACI,eAAe,CAAC;EAC3C,IAAI,CAACS,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CACb,+DAA+D,GAC/D,oEACF,CAAC;EACH;EACA,OAAOD,OAAO;AAChB","ignoreList":[]}
1
+ {"version":3,"names":["React","createContext","useContext","useRichText","jsx","_jsx","RichTextContext","RichTextProvider","children","options","richText","Provider","value","displayName","useRichTextContext","context","Error"],"sourceRoot":"../../../src","sources":["context/RichTextContext.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAEC,UAAU,QAAQ,OAAO;AAExD,SAASC,WAAW,QAAiC,sBAAsB;;AAE3E;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAEA,MAAMC,eAAe,gBAAGL,aAAa,CAA2B,IAAI,CAAC;;AAErE;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMM,gBAAiD,GAAGA,CAAC;EAChEC,QAAQ;EACR,GAAGC;AACL,CAAC,KAAK;EACJ,MAAMC,QAAQ,GAAGP,WAAW,CAACM,OAAO,CAAC;EAErC,oBACEJ,IAAA,CAACC,eAAe,CAACK,QAAQ;IAACC,KAAK,EAAEF,QAAS;IAAAF,QAAA,EACvCA;EAAQ,CACe,CAAC;AAE/B,CAAC;AAEDD,gBAAgB,CAACM,WAAW,GAAG,kBAAkB;;AAEjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAAA,EAAsB;EACtD,MAAMC,OAAO,GAAGb,UAAU,CAACI,eAAe,CAAC;EAC3C,IAAI,CAACS,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CACb,+DAA+D,GAC/D,oEACF,CAAC;EACH;EACA,OAAOD,OAAO;AAChB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"..\\..\\..\\src","sources":["hooks/useFormatting.d.ts"],"mappings":";;AAQA;AACA;AACA;AACA;AACA;AACA;;AAWA","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["hooks/useFormatting.d.ts"],"mappings":";;AAQA;AACA;AACA;AACA;AACA;AACA;;AAWA","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
- }, [segments, selection, onSegmentsChange]);
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":"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","ignoreList":[]}
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":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"..\\..\\..\\src","sources":["hooks/useRichText.d.ts"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["hooks/useRichText.d.ts"],"mappings":"","ignoreList":[]}
@@ -3,6 +3,8 @@
3
3
  import { useState, useCallback, useRef } from 'react';
4
4
  import { EMPTY_FORMAT_STYLE } from '../constants/defaultStyles';
5
5
  import { createSegment, segmentsToPlainText, reconcileTextChange, findPositionInSegments } from '../utils/parser';
6
+ import { getSelectionStyle } from '../utils/formatter';
7
+ import { serializeSegments } from '../utils/serializer';
6
8
  import { useSelection } from '../hooks/useSelection';
7
9
  import { useFormatting } from '../hooks/useFormatting';
8
10
  /**
@@ -37,8 +39,11 @@ export function useRichText(options = {}) {
37
39
  // Refs for stable access in callbacks
38
40
  const segmentsRef = useRef(segments);
39
41
  segmentsRef.current = segments;
42
+ const selectionRef = useRef(selection);
43
+ selectionRef.current = selection;
40
44
  const activeStylesRef = useRef(activeStyles);
41
45
  activeStylesRef.current = activeStyles;
46
+ const preserveActiveStylesRef = useRef(false);
42
47
 
43
48
  // ─── Segment Change Handler ──────────────────────────────────────────────
44
49
 
@@ -62,7 +67,8 @@ export function useRichText(options = {}) {
62
67
 
63
68
  const handleTextChange = useCallback(newText => {
64
69
  const currentSegments = segmentsRef.current;
65
- const currentActiveStyles = activeStylesRef.current;
70
+ const currentSelection = selectionRef.current;
71
+ const currentActiveStyles = currentSelection.start === currentSelection.end ? activeStylesRef.current : getSelectionStyle(currentSegments, currentSelection);
66
72
  const newSegments = reconcileTextChange(currentSegments, newText, currentActiveStyles);
67
73
  updateSegments(newSegments);
68
74
  }, [updateSegments]);
@@ -70,7 +76,13 @@ export function useRichText(options = {}) {
70
76
  // ─── Selection Change Handler ────────────────────────────────────────────
71
77
 
72
78
  const onSelectionChange = useCallback(newSelection => {
79
+ const previousSelection = selectionRef.current;
73
80
  handleSelectionChange(newSelection);
81
+ const shouldPreserveActiveStyles = preserveActiveStylesRef.current && previousSelection.start === previousSelection.end && newSelection.start === newSelection.end && newSelection.start >= previousSelection.start && newSelection.start - previousSelection.start <= 1;
82
+ if (shouldPreserveActiveStyles) {
83
+ return;
84
+ }
85
+ preserveActiveStylesRef.current = false;
74
86
 
75
87
  // Update active styles based on cursor position
76
88
  if (newSelection.start === newSelection.end) {
@@ -89,6 +101,9 @@ export function useRichText(options = {}) {
89
101
  const getPlainText = useCallback(() => {
90
102
  return segmentsToPlainText(segmentsRef.current);
91
103
  }, []);
104
+ const getOutput = useCallback((format = 'markdown') => {
105
+ return serializeSegments(segmentsRef.current, format);
106
+ }, []);
92
107
  const exportJSON = useCallback(() => {
93
108
  return JSON.parse(JSON.stringify(segmentsRef.current));
94
109
  }, []);
@@ -101,7 +116,44 @@ export function useRichText(options = {}) {
101
116
  setActiveStyles({
102
117
  ...EMPTY_FORMAT_STYLE
103
118
  });
119
+ preserveActiveStylesRef.current = false;
104
120
  }, [updateSegments]);
121
+ const toggleFormat = useCallback(format => {
122
+ if (selectionRef.current.start === selectionRef.current.end) {
123
+ preserveActiveStylesRef.current = true;
124
+ }
125
+ formatting.toggleFormat(format);
126
+ }, [formatting]);
127
+ const setStyleProperty = useCallback((key, value) => {
128
+ if (selectionRef.current.start === selectionRef.current.end) {
129
+ preserveActiveStylesRef.current = true;
130
+ }
131
+ formatting.setStyleProperty(key, value);
132
+ }, [formatting]);
133
+ const setHeading = useCallback(level => {
134
+ if (selectionRef.current.start === selectionRef.current.end) {
135
+ preserveActiveStylesRef.current = true;
136
+ }
137
+ formatting.setHeading(level);
138
+ }, [formatting]);
139
+ const setColor = useCallback(color => {
140
+ if (selectionRef.current.start === selectionRef.current.end) {
141
+ preserveActiveStylesRef.current = true;
142
+ }
143
+ formatting.setColor(color);
144
+ }, [formatting]);
145
+ const setBackgroundColor = useCallback(color => {
146
+ if (selectionRef.current.start === selectionRef.current.end) {
147
+ preserveActiveStylesRef.current = true;
148
+ }
149
+ formatting.setBackgroundColor(color);
150
+ }, [formatting]);
151
+ const setFontSize = useCallback(size => {
152
+ if (selectionRef.current.start === selectionRef.current.end) {
153
+ preserveActiveStylesRef.current = true;
154
+ }
155
+ formatting.setFontSize(size);
156
+ }, [formatting]);
105
157
 
106
158
  // ─── Build Return Value ──────────────────────────────────────────────────
107
159
 
@@ -111,14 +163,17 @@ export function useRichText(options = {}) {
111
163
  activeStyles
112
164
  };
113
165
  const actions = {
114
- toggleFormat: formatting.toggleFormat,
115
- setStyleProperty: formatting.setStyleProperty,
116
- setHeading: formatting.setHeading,
117
- setColor: formatting.setColor,
118
- setBackgroundColor: formatting.setBackgroundColor,
119
- setFontSize: formatting.setFontSize,
166
+ toggleFormat,
167
+ setStyleProperty,
168
+ setHeading,
169
+ setColor,
170
+ setBackgroundColor,
171
+ setFontSize,
120
172
  handleTextChange,
121
173
  handleSelectionChange: onSelectionChange,
174
+ isFormatActive: formatting.isFormatActive,
175
+ getSelectionStyle: formatting.currentSelectionStyle,
176
+ getOutput,
122
177
  getPlainText,
123
178
  exportJSON,
124
179
  importJSON,