@expensify/react-native-live-markdown 0.1.3 → 0.1.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 (53) hide show
  1. package/lib/commonjs/MarkdownTextInput.js +5 -55
  2. package/lib/commonjs/MarkdownTextInput.js.map +1 -1
  3. package/lib/commonjs/MarkdownTextInput.web.js +399 -9
  4. package/lib/commonjs/MarkdownTextInput.web.js.map +1 -1
  5. package/lib/commonjs/react-native-web.d.js +2 -0
  6. package/lib/commonjs/react-native-web.d.js.map +1 -0
  7. package/lib/commonjs/styleUtils.js +61 -0
  8. package/lib/commonjs/styleUtils.js.map +1 -0
  9. package/lib/commonjs/web/InputHistory.js +92 -0
  10. package/lib/commonjs/web/InputHistory.js.map +1 -0
  11. package/lib/commonjs/web/MarkdownTextInput.css +24 -0
  12. package/lib/commonjs/web/cursorUtils.js +90 -0
  13. package/lib/commonjs/web/cursorUtils.js.map +1 -0
  14. package/lib/commonjs/web/parserUtils.js +170 -0
  15. package/lib/commonjs/web/parserUtils.js.map +1 -0
  16. package/lib/module/MarkdownTextInput.js +3 -55
  17. package/lib/module/MarkdownTextInput.js.map +1 -1
  18. package/lib/module/MarkdownTextInput.web.js +399 -12
  19. package/lib/module/MarkdownTextInput.web.js.map +1 -1
  20. package/lib/module/react-native-web.d.js +2 -0
  21. package/lib/module/react-native-web.d.js.map +1 -0
  22. package/lib/module/styleUtils.js +56 -0
  23. package/lib/module/styleUtils.js.map +1 -0
  24. package/lib/module/web/InputHistory.js +85 -0
  25. package/lib/module/web/InputHistory.js.map +1 -0
  26. package/lib/module/web/MarkdownTextInput.css +24 -0
  27. package/lib/module/web/cursorUtils.js +83 -0
  28. package/lib/module/web/cursorUtils.js.map +1 -0
  29. package/lib/module/web/parserUtils.js +162 -0
  30. package/lib/module/web/parserUtils.js.map +1 -0
  31. package/lib/parser/react-native-live-markdown-parser.js +34 -0
  32. package/lib/typescript/src/MarkdownTextInput.d.ts +3 -6
  33. package/lib/typescript/src/MarkdownTextInput.d.ts.map +1 -1
  34. package/lib/typescript/src/MarkdownTextInput.web.d.ts +9 -2
  35. package/lib/typescript/src/MarkdownTextInput.web.d.ts.map +1 -1
  36. package/lib/typescript/src/styleUtils.d.ts +9 -0
  37. package/lib/typescript/src/styleUtils.d.ts.map +1 -0
  38. package/lib/typescript/src/web/InputHistory.d.ts +24 -0
  39. package/lib/typescript/src/web/InputHistory.d.ts.map +1 -0
  40. package/lib/typescript/src/web/cursorUtils.d.ts +8 -0
  41. package/lib/typescript/src/web/cursorUtils.d.ts.map +1 -0
  42. package/lib/typescript/src/web/parserUtils.d.ts +16 -0
  43. package/lib/typescript/src/web/parserUtils.d.ts.map +1 -0
  44. package/package.json +6 -3
  45. package/parser/react-native-live-markdown-parser.js +7 -7
  46. package/src/MarkdownTextInput.tsx +9 -69
  47. package/src/MarkdownTextInput.web.tsx +516 -16
  48. package/src/react-native-web.d.ts +1 -0
  49. package/src/styleUtils.ts +70 -0
  50. package/src/web/InputHistory.ts +114 -0
  51. package/src/web/MarkdownTextInput.css +24 -0
  52. package/src/web/cursorUtils.ts +87 -0
  53. package/src/web/parserUtils.ts +194 -0
@@ -1,15 +1,402 @@
1
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
- import { TextInput } from 'react-native';
3
- import React from 'react';
4
-
5
- // eslint-disable-next-line @typescript-eslint/no-empty-interface
6
-
7
- // eslint-disable-next-line arrow-body-style
8
- const MarkdownTextInput = /*#__PURE__*/React.forwardRef((props, ref) => {
9
- // TODO: add web implementation here
10
- return /*#__PURE__*/React.createElement(TextInput, _extends({}, props, {
11
- ref: ref
12
- }));
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+
3
+ import React, { useEffect, useRef, useCallback, useMemo } from 'react';
4
+ import { StyleSheet } from 'react-native';
5
+ import * as ParseUtils from './web/parserUtils';
6
+ import * as CursorUtils from './web/cursorUtils';
7
+ import * as StyleUtils from './styleUtils';
8
+ import './web/MarkdownTextInput.css';
9
+ import InputHistory from './web/InputHistory';
10
+ require('../parser/react-native-live-markdown-parser.js');
11
+ let createReactDOMStyle;
12
+ try {
13
+ createReactDOMStyle =
14
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
15
+ require('react-native-web/dist/exports/StyleSheet/compiler/createReactDOMStyle').default;
16
+ } catch (e) {
17
+ throw new Error('[react-native-live-markdown] Function `createReactDOMStyle` from react-native-web not found. Please make sure that you are using React Native Web 0.18 or newer.');
18
+ }
19
+ let preprocessStyle;
20
+ try {
21
+ preprocessStyle =
22
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
23
+ require('react-native-web/dist/exports/StyleSheet/preprocess').default;
24
+ } catch (e) {
25
+ throw new Error('[react-native-live-markdown] Function `preprocessStyle` from react-native-web not found.');
26
+ }
27
+ let dangerousStyleValue;
28
+ try {
29
+ dangerousStyleValue =
30
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
31
+ require('react-native-web/dist/modules/setValueForStyles/dangerousStyleValue').default;
32
+ } catch (e) {
33
+ throw new Error('[react-native-live-markdown] Function `dangerousStyleValue` from react-native-web not found.');
34
+ }
35
+ let focusTimeout = null;
36
+
37
+ // Removes one '\n' from the end of the string that were added by contentEditable div
38
+ function normalizeValue(value) {
39
+ return value.replace(/\n$/, '');
40
+ }
41
+
42
+ // If an Input Method Editor is processing key input, the 'keyCode' is 229.
43
+ // https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode
44
+ function isEventComposing(nativeEvent) {
45
+ return nativeEvent.isComposing || nativeEvent.keyCode === 229;
46
+ }
47
+ const ZERO_WIDTH_SPACE = '\u200B';
48
+ function getPlaceholderValue(placeholder) {
49
+ if (!placeholder) {
50
+ return ZERO_WIDTH_SPACE;
51
+ }
52
+ return placeholder.length ? placeholder : ZERO_WIDTH_SPACE;
53
+ }
54
+ function processUnitsInMarkdownStyle(input) {
55
+ const output = JSON.parse(JSON.stringify(input));
56
+ Object.keys(output).forEach(key => {
57
+ const obj = output[key];
58
+ Object.keys(obj).forEach(prop => {
59
+ obj[prop] = dangerousStyleValue(prop, obj[prop], false);
60
+ });
61
+ });
62
+ return output;
63
+ }
64
+ function processMarkdownStyle(input) {
65
+ return processUnitsInMarkdownStyle(StyleUtils.mergeMarkdownStyleWithDefault(input));
66
+ }
67
+ function getElementHeight(node, styles, numberOfLines) {
68
+ if (numberOfLines) {
69
+ const tempElement = document.createElement('div');
70
+ tempElement.setAttribute('contenteditable', 'true');
71
+ Object.assign(tempElement.style, styles);
72
+ tempElement.innerText = Array(numberOfLines).fill('A').join('\n');
73
+ if (node.parentElement) {
74
+ node.parentElement.appendChild(tempElement);
75
+ const height = tempElement.clientHeight;
76
+ node.parentElement.removeChild(tempElement);
77
+ return `${height}px`;
78
+ }
79
+ }
80
+ return `${styles.height}px` || 'auto';
81
+ }
82
+ const MarkdownTextInput = /*#__PURE__*/React.forwardRef(({
83
+ accessibilityLabel,
84
+ accessibilityLabelledBy,
85
+ accessibilityRole,
86
+ autoCapitalize = 'sentences',
87
+ autoCorrect = true,
88
+ blurOnSubmit = false,
89
+ clearTextOnFocus,
90
+ dir = 'auto',
91
+ disabled = false,
92
+ numberOfLines,
93
+ multiline = false,
94
+ markdownStyle,
95
+ onBlur,
96
+ onChange,
97
+ onChangeText,
98
+ onClick,
99
+ onFocus,
100
+ onKeyPress,
101
+ onSelectionChange,
102
+ onSubmitEditing,
103
+ placeholder,
104
+ placeholderTextColor = `rgba(0,0,0,0.2)`,
105
+ selectTextOnFocus,
106
+ spellCheck,
107
+ style = {},
108
+ value
109
+ }, ref) => {
110
+ const divRef = useRef(null);
111
+ const currentlyFocusedField = useRef(null);
112
+ const contentSelection = useRef(null);
113
+ const className = `react-native-live-markdown-input-${multiline ? 'multiline' : 'singleline'}`;
114
+ const history = useRef();
115
+ if (!history.current) {
116
+ history.current = new InputHistory(100);
117
+ }
118
+ const flattenedStyle = useMemo(() => StyleSheet.flatten(style), [style]);
119
+
120
+ // Empty placeholder would collapse the div, so we need to use zero-width space to prevent it
121
+ const heightSafePlaceholder = useMemo(() => getPlaceholderValue(placeholder), [placeholder]);
122
+ const parseText = useCallback((target, text, customMarkdownStyles, cursorPosition = null, shouldAddToHistory = true) => {
123
+ if (text === null) {
124
+ return {
125
+ text: target.innerText,
126
+ cursorPosition: null
127
+ };
128
+ }
129
+ const parsedText = ParseUtils.parseText(target, text, cursorPosition, customMarkdownStyles, !multiline);
130
+ if (history.current && shouldAddToHistory) {
131
+ history.current.debouncedAdd(parsedText.text, parsedText.cursorPosition);
132
+ }
133
+ if (parsedText.cursorPosition !== null) {
134
+ contentSelection.current = {
135
+ start: parsedText.cursorPosition,
136
+ end: parsedText.cursorPosition
137
+ };
138
+ }
139
+ return parsedText;
140
+ }, [multiline]);
141
+ const processedMarkdownStyle = useMemo(() => {
142
+ const newMarkdownStyle = processMarkdownStyle(markdownStyle);
143
+ if (divRef.current) {
144
+ parseText(divRef.current, divRef.current.innerText, newMarkdownStyle);
145
+ }
146
+ return newMarkdownStyle;
147
+ }, [markdownStyle]);
148
+ const inputStyles = useMemo(() => StyleSheet.flatten([styles.defaultInputStyles, flattenedStyle && {
149
+ caretColor: flattenedStyle.color || 'black'
150
+ }, disabled && styles.disabledInputStyles, createReactDOMStyle(preprocessStyle(flattenedStyle))]), [flattenedStyle, disabled]);
151
+ const undo = useCallback(target => {
152
+ if (!history.current) return '';
153
+ const item = history.current.undo();
154
+ return parseText(target, item ? item.text : null, processedMarkdownStyle, item ? item.cursorPosition : null, false).text;
155
+ }, [processedMarkdownStyle]);
156
+ const redo = useCallback(target => {
157
+ if (!history.current) return '';
158
+ const item = history.current.redo();
159
+ return parseText(target, item ? item.text : null, processedMarkdownStyle, item ? item.cursorPosition : null, false).text;
160
+ }, [processedMarkdownStyle]);
161
+
162
+ // We have to process value property since contentEditable div adds one additional '\n' at the end of the text if we are entering new line
163
+ const processedValue = useMemo(() => {
164
+ if (value && value[value.length - 1] === '\n') {
165
+ return `${value}\n`;
166
+ }
167
+ return value;
168
+ }, [value]);
169
+ const setEventProps = useCallback(e => {
170
+ if (divRef.current) {
171
+ const text = normalizeValue(divRef.current.innerText || '');
172
+ if (typeof e.target !== 'number') {
173
+ // TODO: change the logic here so every event have value property
174
+ e.target.value = text;
175
+ }
176
+ e.nativeEvent.text = text;
177
+ }
178
+ return e;
179
+ }, []);
180
+
181
+ // Placeholder text color logic
182
+ const updateTextColor = useCallback((node, text) => {
183
+ // eslint-disable-next-line no-param-reassign -- we need to change the style of the node, so we need to modify it
184
+ node.style.color = String(placeholder && (text === '' || text === '\n') ? placeholderTextColor : flattenedStyle.color || 'black');
185
+ }, []);
186
+ const handleOnChangeText = useCallback(e => {
187
+ if (!divRef.current || !(e.target instanceof HTMLElement)) {
188
+ return;
189
+ }
190
+ let text = '';
191
+ const nativeEvent = e.nativeEvent;
192
+ switch (nativeEvent.inputType) {
193
+ case 'historyUndo':
194
+ text = undo(divRef.current);
195
+ break;
196
+ case 'historyRedo':
197
+ text = redo(divRef.current);
198
+ break;
199
+ default:
200
+ text = parseText(divRef.current, e.target.innerText, processedMarkdownStyle).text;
201
+ }
202
+ updateTextColor(divRef.current, e.target.innerText);
203
+ if (onChange) {
204
+ const event = e;
205
+ setEventProps(event);
206
+ onChange(event);
207
+ }
208
+ if (onChangeText) {
209
+ const normalizedText = normalizeValue(text);
210
+ onChangeText(normalizedText);
211
+ }
212
+ }, [multiline, onChange, onChangeText, setEventProps, processedMarkdownStyle]);
213
+ const handleKeyPress = useCallback(e => {
214
+ if (!divRef.current) {
215
+ return;
216
+ }
217
+ const hostNode = e.target;
218
+ e.stopPropagation();
219
+ if (e.key === 'z' && e.metaKey) {
220
+ e.preventDefault();
221
+ const nativeEvent = e.nativeEvent;
222
+ if (e.shiftKey) {
223
+ nativeEvent.inputType = 'historyRedo';
224
+ } else {
225
+ nativeEvent.inputType = 'historyUndo';
226
+ }
227
+ handleOnChangeText(e);
228
+ return;
229
+ }
230
+ const blurOnSubmitDefault = !multiline;
231
+ const shouldBlurOnSubmit = blurOnSubmit === null ? blurOnSubmitDefault : blurOnSubmit;
232
+ const nativeEvent = e.nativeEvent;
233
+ const isComposing = isEventComposing(nativeEvent);
234
+ const event = e;
235
+ setEventProps(event);
236
+ if (onKeyPress) {
237
+ onKeyPress(event);
238
+ }
239
+ if (e.key === 'Enter' && !e.shiftKey &&
240
+ // Do not call submit if composition is occuring.
241
+ !isComposing && !e.isDefaultPrevented()) {
242
+ // prevent "Enter" from inserting a newline or submitting a form
243
+ e.preventDefault();
244
+ if ((blurOnSubmit || !multiline) && onSubmitEditing) {
245
+ onSubmitEditing(event);
246
+ } else {
247
+ e.preventDefault();
248
+ // We need to change normal behavior of "Enter" key to insert a line breaks, to prevent wrapping contentEditable text in <div> tags.
249
+ // Thanks to that in every situation we have proper amount of new lines in our parsed text. Without it pressing enter in empty lines will add 2 more new lines.
250
+ if (multiline) {
251
+ document.execCommand('insertLineBreak');
252
+ }
253
+ }
254
+ if (shouldBlurOnSubmit && hostNode !== null || !multiline) {
255
+ setTimeout(() => divRef.current && divRef.current.blur(), 0);
256
+ }
257
+ }
258
+ }, [onKeyPress]);
259
+ const handleSelectionChange = useCallback(event => {
260
+ const e = event;
261
+ setEventProps(e);
262
+ const selection = CursorUtils.getCurrentCursorPosition(e.target);
263
+ contentSelection.current = selection;
264
+ if (onSelectionChange) {
265
+ e.nativeEvent.selection = selection;
266
+ onSelectionChange(e);
267
+ }
268
+ }, [onSelectionChange, setEventProps]);
269
+ const handleFocus = useCallback(event => {
270
+ const e = event;
271
+ const hostNode = e.target;
272
+ currentlyFocusedField.current = hostNode;
273
+ setEventProps(e);
274
+ if (divRef.current && contentSelection.current) {
275
+ CursorUtils.setCursorPosition(divRef.current, contentSelection.current.start || divRef.current.innerText.length, !multiline);
276
+ }
277
+ if (onFocus) {
278
+ setEventProps(e);
279
+ onFocus(e);
280
+ }
281
+ if (hostNode !== null) {
282
+ if (clearTextOnFocus && divRef.current) {
283
+ divRef.current.innerText = '';
284
+ }
285
+ if (selectTextOnFocus) {
286
+ // Safari requires selection to occur in a setTimeout
287
+ if (focusTimeout !== null) {
288
+ clearTimeout(focusTimeout);
289
+ }
290
+ focusTimeout = setTimeout(() => {
291
+ if (hostNode === null) {
292
+ return;
293
+ }
294
+ document.execCommand('selectAll', false, '');
295
+ }, 0);
296
+ }
297
+ }
298
+ }, [clearTextOnFocus, multiline, onFocus, selectTextOnFocus, setEventProps]);
299
+ const handleBlur = useCallback(event => {
300
+ const e = event;
301
+ currentlyFocusedField.current = null;
302
+ if (onBlur) {
303
+ setEventProps(e);
304
+ onBlur(e);
305
+ }
306
+ }, [onBlur, setEventProps]);
307
+ const handleClick = useCallback(e => {
308
+ if (!onClick || !divRef.current) {
309
+ return;
310
+ }
311
+ e.target.value = normalizeValue(divRef.current.innerText || '');
312
+ onClick(e);
313
+ }, [onClick]);
314
+ const setRef = currentRef => {
315
+ const r = currentRef;
316
+ if (r) {
317
+ r.isFocused = () => document.activeElement === r;
318
+ r.clear = () => {
319
+ r.innerText = '';
320
+ updateTextColor(r, '');
321
+ };
322
+ if (value === '' || value === undefined) {
323
+ // update to placeholder color when value is empty
324
+ updateTextColor(r, r.innerText);
325
+ }
326
+ }
327
+ if (ref) {
328
+ if (typeof ref === 'object') {
329
+ // eslint-disable-next-line no-param-reassign
330
+ ref.current = r;
331
+ } else if (typeof ref === 'function') {
332
+ ref(r);
333
+ }
334
+ }
335
+ divRef.current = r;
336
+ };
337
+ useEffect(() => {
338
+ if (!divRef.current || processedValue === divRef.current.innerText) {
339
+ return;
340
+ }
341
+ if (value === undefined) {
342
+ parseText(divRef.current, divRef.current.innerText, processedMarkdownStyle);
343
+ return;
344
+ }
345
+ const text = processedValue !== undefined ? processedValue : '';
346
+ parseText(divRef.current, text, processedMarkdownStyle, text.length);
347
+ updateTextColor(divRef.current, value);
348
+ }, [multiline, processedMarkdownStyle, processedValue]);
349
+ useEffect(() => {
350
+ if (!divRef.current || !multiline) {
351
+ return;
352
+ }
353
+ const elementHeight = getElementHeight(divRef.current, inputStyles, numberOfLines);
354
+ divRef.current.style.height = elementHeight;
355
+ divRef.current.style.maxHeight = elementHeight;
356
+ }, [numberOfLines]);
357
+ return (
358
+ /*#__PURE__*/
359
+ // eslint-disable-next-line jsx-a11y/no-static-element-interactions
360
+ React.createElement("div", {
361
+ ref: setRef,
362
+ contentEditable: !disabled,
363
+ style: inputStyles,
364
+ role: accessibilityRole || 'textbox',
365
+ "aria-label": accessibilityLabel,
366
+ "aria-labelledby": `${accessibilityLabelledBy}`,
367
+ "aria-placeholder": heightSafePlaceholder,
368
+ "aria-multiline": multiline,
369
+ autoCorrect: autoCorrect ? 'on' : 'off',
370
+ autoCapitalize: autoCapitalize,
371
+ className: className,
372
+ onKeyDown: handleKeyPress,
373
+ onInput: handleOnChangeText,
374
+ onSelect: handleSelectionChange,
375
+ onClick: handleClick,
376
+ onFocus: handleFocus,
377
+ onBlur: handleBlur,
378
+ placeholder: heightSafePlaceholder,
379
+ spellCheck: spellCheck,
380
+ dir: dir
381
+ })
382
+ );
383
+ });
384
+ const styles = StyleSheet.create({
385
+ defaultInputStyles: {
386
+ borderColor: 'black',
387
+ borderWidth: 1,
388
+ borderStyle: 'solid',
389
+ fontFamily: 'sans-serif',
390
+ boxSizing: 'border-box',
391
+ whiteSpace: 'pre-wrap',
392
+ overflowY: 'scroll',
393
+ overflowX: 'scroll',
394
+ overflowWrap: 'break-word'
395
+ },
396
+ disabledInputStyles: {
397
+ opacity: 0.75,
398
+ cursor: 'default'
399
+ }
13
400
  });
14
401
  export default MarkdownTextInput;
15
402
  //# sourceMappingURL=MarkdownTextInput.web.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["TextInput","React","MarkdownTextInput","forwardRef","props","ref","createElement","_extends"],"sourceRoot":"../../src","sources":["MarkdownTextInput.web.tsx"],"mappings":";AAAA,SAAQA,SAAS,QAAO,cAAc;AAEtC,OAAOC,KAAK,MAAM,OAAO;;AAGzB;;AAKA;AACA,MAAMC,iBAAiB,gBAAGD,KAAK,CAACE,UAAU,CAAoC,CAACC,KAAK,EAAEC,GAAG,KAAK;EAC5F;EACA,oBACEJ,KAAA,CAAAK,aAAA,CAACN,SAAS,EAAAO,QAAA,KACJH,KAAK;IACTC,GAAG,EAAEA;EAAI,EACV,CAAC;AAEN,CAAC,CAAC;AAEF,eAAeH,iBAAiB"}
1
+ {"version":3,"names":["React","useEffect","useRef","useCallback","useMemo","StyleSheet","ParseUtils","CursorUtils","StyleUtils","InputHistory","require","createReactDOMStyle","default","e","Error","preprocessStyle","dangerousStyleValue","focusTimeout","normalizeValue","value","replace","isEventComposing","nativeEvent","isComposing","keyCode","ZERO_WIDTH_SPACE","getPlaceholderValue","placeholder","length","processUnitsInMarkdownStyle","input","output","JSON","parse","stringify","Object","keys","forEach","key","obj","prop","processMarkdownStyle","mergeMarkdownStyleWithDefault","getElementHeight","node","styles","numberOfLines","tempElement","document","createElement","setAttribute","assign","style","innerText","Array","fill","join","parentElement","appendChild","height","clientHeight","removeChild","MarkdownTextInput","forwardRef","accessibilityLabel","accessibilityLabelledBy","accessibilityRole","autoCapitalize","autoCorrect","blurOnSubmit","clearTextOnFocus","dir","disabled","multiline","markdownStyle","onBlur","onChange","onChangeText","onClick","onFocus","onKeyPress","onSelectionChange","onSubmitEditing","placeholderTextColor","selectTextOnFocus","spellCheck","ref","divRef","currentlyFocusedField","contentSelection","className","history","current","flattenedStyle","flatten","heightSafePlaceholder","parseText","target","text","customMarkdownStyles","cursorPosition","shouldAddToHistory","parsedText","debouncedAdd","start","end","processedMarkdownStyle","newMarkdownStyle","inputStyles","defaultInputStyles","caretColor","color","disabledInputStyles","undo","item","redo","processedValue","setEventProps","updateTextColor","String","handleOnChangeText","HTMLElement","inputType","event","normalizedText","handleKeyPress","hostNode","stopPropagation","metaKey","preventDefault","shiftKey","blurOnSubmitDefault","shouldBlurOnSubmit","isDefaultPrevented","execCommand","setTimeout","blur","handleSelectionChange","selection","getCurrentCursorPosition","handleFocus","setCursorPosition","clearTimeout","handleBlur","handleClick","setRef","currentRef","r","isFocused","activeElement","clear","undefined","elementHeight","maxHeight","contentEditable","role","onKeyDown","onInput","onSelect","create","borderColor","borderWidth","borderStyle","fontFamily","boxSizing","whiteSpace","overflowY","overflowX","overflowWrap","opacity","cursor"],"sourceRoot":"../../src","sources":["MarkdownTextInput.web.tsx"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=react-native-web.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["react-native-web.d.ts"],"mappings":""}
@@ -0,0 +1,56 @@
1
+ import { Platform } from 'react-native';
2
+ const FONT_FAMILY_MONOSPACE = Platform.select({
3
+ ios: 'Courier',
4
+ default: 'monospace'
5
+ });
6
+ function makeDefaultMarkdownStyle() {
7
+ return {
8
+ syntax: {
9
+ color: 'gray'
10
+ },
11
+ link: {
12
+ color: 'blue'
13
+ },
14
+ h1: {
15
+ fontSize: 25
16
+ },
17
+ blockquote: {
18
+ borderColor: 'gray',
19
+ borderWidth: 6,
20
+ marginLeft: 6,
21
+ paddingLeft: 6
22
+ },
23
+ code: {
24
+ fontFamily: FONT_FAMILY_MONOSPACE,
25
+ color: 'black',
26
+ backgroundColor: 'lightgray'
27
+ },
28
+ pre: {
29
+ fontFamily: FONT_FAMILY_MONOSPACE,
30
+ color: 'black',
31
+ backgroundColor: 'lightgray'
32
+ },
33
+ mentionHere: {
34
+ color: 'green',
35
+ backgroundColor: 'lime'
36
+ },
37
+ mentionUser: {
38
+ color: 'blue',
39
+ backgroundColor: 'cyan'
40
+ }
41
+ };
42
+ }
43
+ function mergeMarkdownStyleWithDefault(input) {
44
+ const output = makeDefaultMarkdownStyle();
45
+ if (input !== undefined) {
46
+ Object.keys(input).forEach(key => {
47
+ if (!(key in output)) {
48
+ return;
49
+ }
50
+ Object.assign(output[key], input[key]);
51
+ });
52
+ }
53
+ return output;
54
+ }
55
+ export { mergeMarkdownStyleWithDefault };
56
+ //# sourceMappingURL=styleUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","FONT_FAMILY_MONOSPACE","select","ios","default","makeDefaultMarkdownStyle","syntax","color","link","h1","fontSize","blockquote","borderColor","borderWidth","marginLeft","paddingLeft","code","fontFamily","backgroundColor","pre","mentionHere","mentionUser","mergeMarkdownStyleWithDefault","input","output","undefined","Object","keys","forEach","key","assign"],"sourceRoot":"../../src","sources":["styleUtils.ts"],"mappings":"AAAA,SAAQA,QAAQ,QAAO,cAAc;AASrC,MAAMC,qBAAqB,GAAGD,QAAQ,CAACE,MAAM,CAAC;EAC5CC,GAAG,EAAE,SAAS;EACdC,OAAO,EAAE;AACX,CAAC,CAAC;AAEF,SAASC,wBAAwBA,CAAA,EAAkB;EACjD,OAAO;IACLC,MAAM,EAAE;MACNC,KAAK,EAAE;IACT,CAAC;IACDC,IAAI,EAAE;MACJD,KAAK,EAAE;IACT,CAAC;IACDE,EAAE,EAAE;MACFC,QAAQ,EAAE;IACZ,CAAC;IACDC,UAAU,EAAE;MACVC,WAAW,EAAE,MAAM;MACnBC,WAAW,EAAE,CAAC;MACdC,UAAU,EAAE,CAAC;MACbC,WAAW,EAAE;IACf,CAAC;IACDC,IAAI,EAAE;MACJC,UAAU,EAAEhB,qBAAqB;MACjCM,KAAK,EAAE,OAAO;MACdW,eAAe,EAAE;IACnB,CAAC;IACDC,GAAG,EAAE;MACHF,UAAU,EAAEhB,qBAAqB;MACjCM,KAAK,EAAE,OAAO;MACdW,eAAe,EAAE;IACnB,CAAC;IACDE,WAAW,EAAE;MACXb,KAAK,EAAE,OAAO;MACdW,eAAe,EAAE;IACnB,CAAC;IACDG,WAAW,EAAE;MACXd,KAAK,EAAE,MAAM;MACbW,eAAe,EAAE;IACnB;EACF,CAAC;AACH;AAEA,SAASI,6BAA6BA,CAACC,KAAuC,EAAiB;EAC7F,MAAMC,MAAM,GAAGnB,wBAAwB,CAAC,CAAC;EAEzC,IAAIkB,KAAK,KAAKE,SAAS,EAAE;IACvBC,MAAM,CAACC,IAAI,CAACJ,KAAK,CAAC,CAACK,OAAO,CAAEC,GAAG,IAAK;MAClC,IAAI,EAAEA,GAAG,IAAIL,MAAM,CAAC,EAAE;QACpB;MACF;MACAE,MAAM,CAACI,MAAM,CAACN,MAAM,CAACK,GAAG,CAAwB,EAAEN,KAAK,CAACM,GAAG,CAAwB,CAAC;IACtF,CAAC,CAAC;EACJ;EAEA,OAAOL,MAAM;AACf;AAIA,SAAQF,6BAA6B"}
@@ -0,0 +1,85 @@
1
+ export default class InputHistory {
2
+ currentText = null;
3
+ timeout = null;
4
+ constructor(depth, debounceTime = 200) {
5
+ this.depth = depth;
6
+ this.history = [];
7
+ this.historyIndex = 0;
8
+ this.debounceTime = debounceTime;
9
+ }
10
+ getCurrentItem() {
11
+ return this.history[this.historyIndex] || null;
12
+ }
13
+ setHistory(newHistory) {
14
+ this.history = newHistory.slice(newHistory.length - this.depth);
15
+ this.historyIndex = newHistory.length - 1;
16
+ }
17
+ setHistoryIndex(index) {
18
+ this.historyIndex = index;
19
+ }
20
+ clear() {
21
+ this.history = [];
22
+ this.historyIndex = 0;
23
+ }
24
+ debouncedAdd(text, cursorPosition) {
25
+ this.currentText = text;
26
+ if (this.timeout) {
27
+ clearTimeout(this.timeout);
28
+ }
29
+ this.timeout = setTimeout(() => {
30
+ if (this.currentText == null) {
31
+ return;
32
+ }
33
+ this.add(this.currentText, cursorPosition);
34
+ this.currentText = null;
35
+ }, this.debounceTime);
36
+ }
37
+ add(text, cursorPosition) {
38
+ if (this.history.length > 0) {
39
+ const lastItem = this.history[this.history.length - 1];
40
+ if (lastItem && text === lastItem.text) {
41
+ return;
42
+ }
43
+ }
44
+ if (this.historyIndex < this.history.length - 1) {
45
+ this.history.splice(this.historyIndex + 1);
46
+ }
47
+ this.history.push({
48
+ text,
49
+ cursorPosition
50
+ });
51
+ if (this.history.length > this.depth) {
52
+ this.history.shift();
53
+ }
54
+ this.historyIndex = this.history.length - 1;
55
+ }
56
+ undo() {
57
+ if (this.currentText !== null && this.timeout) {
58
+ clearTimeout(this.timeout);
59
+ return this.history[this.history.length - 1] || null;
60
+ }
61
+ if (this.history.length === 0 || this.historyIndex - 1 < 0) {
62
+ return null;
63
+ }
64
+ if (this.historyIndex > 0) {
65
+ this.historyIndex -= 1;
66
+ }
67
+ return this.history[this.historyIndex] || null;
68
+ }
69
+ redo() {
70
+ if (this.currentText !== null && this.timeout) {
71
+ clearTimeout(this.timeout);
72
+ return this.history[this.history.length - 1] || null;
73
+ }
74
+ if (this.history.length === 0 || this.historyIndex + 1 > this.history.length) {
75
+ return null;
76
+ }
77
+ if (this.historyIndex < this.history.length - 1) {
78
+ this.historyIndex += 1;
79
+ } else {
80
+ return null;
81
+ }
82
+ return this.history[this.historyIndex] || null;
83
+ }
84
+ }
85
+ //# sourceMappingURL=InputHistory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["InputHistory","currentText","timeout","constructor","depth","debounceTime","history","historyIndex","getCurrentItem","setHistory","newHistory","slice","length","setHistoryIndex","index","clear","debouncedAdd","text","cursorPosition","clearTimeout","setTimeout","add","lastItem","splice","push","shift","undo","redo"],"sourceRoot":"../../../src","sources":["web/InputHistory.ts"],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ .react-native-live-markdown-input-singleline {
2
+ white-space: nowrap;
3
+ overflow: auto;
4
+ }
5
+
6
+ .react-native-live-markdown-input-singleline::-webkit-scrollbar {
7
+ display: none;
8
+ }
9
+
10
+ .react-native-live-markdown-input-singleline br {
11
+ display: none;
12
+ }
13
+
14
+ .react-native-live-markdown-input-singleline * {
15
+ display: inline;
16
+ white-space: nowrap;
17
+ }
18
+
19
+ .react-native-live-markdown-input-singleline:empty::before,
20
+ .react-native-live-markdown-input-multiline:empty::before {
21
+ pointer-events: none;
22
+ display: block; /* For Firefox */
23
+ content: attr(placeholder);
24
+ }