@herca/rn-kit 0.1.54 → 0.1.55

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.
@@ -29,7 +29,6 @@ const TextEditor = /*#__PURE__*/forwardRef(({
29
29
  saveLinkButtonText = 'Simpan',
30
30
  cancelLinkButtonText = 'Batal'
31
31
  }, ref) => {
32
- const [keyboardHeight, setKeyboardHeight] = useState(0);
33
32
  const [showToolbar, setShowToolbar] = useState(false);
34
33
  const [activeFormats, setActiveFormats] = useState(new Set());
35
34
  const [characterCount, setCharacterCount] = useState(0);
@@ -39,9 +38,11 @@ const TextEditor = /*#__PURE__*/forwardRef(({
39
38
  const [isEditingLink, setIsEditingLink] = useState(false);
40
39
  const webviewRef = useRef(null);
41
40
  const inputUrlRef = useRef(null);
41
+
42
+ // Sekarang handleOnChange hanya dipanggil sebagai fallback
42
43
  const handleOnChange = data => {
43
- // Remove HTML tags untuk hitung karakter
44
- const textOnly = data.replace(/<[^>]*>/g, '');
44
+ // Fallback jika message bukan JSON
45
+ const textOnly = data.replace(/<[^>]*>/g, '').trim();
45
46
  setCharacterCount(textOnly.length);
46
47
  if (maxLength && textOnly.length > maxLength) {
47
48
  return;
@@ -91,6 +92,7 @@ const TextEditor = /*#__PURE__*/forwardRef(({
91
92
  width: 99.9%;
92
93
  height: 100%;
93
94
  overflow-x: hidden;
95
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
94
96
  }
95
97
  #editor {
96
98
  height: 100%;
@@ -148,13 +150,29 @@ const TextEditor = /*#__PURE__*/forwardRef(({
148
150
  editor.classList.remove('placeholder');
149
151
  }
150
152
 
153
+ // Kirim initial character count saat load
154
+ setTimeout(() => {
155
+ const charCount = editor.textContent.trim().length;
156
+ window.ReactNativeWebView.postMessage(JSON.stringify({
157
+ type: 'initialCount',
158
+ characterCount: charCount
159
+ }));
160
+ }, 100);
161
+
151
162
  editor.addEventListener("input", () => {
152
163
  if (editor.textContent.trim()) {
153
164
  editor.classList.remove('placeholder');
154
165
  } else {
155
166
  editor.classList.add('placeholder');
156
167
  }
157
- window.ReactNativeWebView.postMessage(editor.innerHTML);
168
+
169
+ // Kirim HTML dan character count
170
+ const charCount = editor.textContent.trim().length;
171
+ window.ReactNativeWebView.postMessage(JSON.stringify({
172
+ type: 'content',
173
+ html: editor.innerHTML,
174
+ characterCount: charCount
175
+ }));
158
176
  });
159
177
 
160
178
  editor.addEventListener("focus", () => {
@@ -277,7 +295,14 @@ const TextEditor = /*#__PURE__*/forwardRef(({
277
295
  range.collapse(true);
278
296
  selection.removeAllRanges();
279
297
  selection.addRange(range);
280
- window.ReactNativeWebView.postMessage(editor.innerHTML);
298
+
299
+ // Update content dan character count
300
+ const charCount = editor.textContent.trim().length;
301
+ window.ReactNativeWebView.postMessage(JSON.stringify({
302
+ type: 'content',
303
+ html: editor.innerHTML,
304
+ characterCount: charCount
305
+ }));
281
306
  return;
282
307
  }
283
308
  }
@@ -298,7 +323,14 @@ const TextEditor = /*#__PURE__*/forwardRef(({
298
323
  selection.removeAllRanges();
299
324
  selection.addRange(range);
300
325
  }
301
- window.ReactNativeWebView.postMessage(editor.innerHTML);
326
+
327
+ // Update content dan character count
328
+ const charCount = editor.textContent.trim().length;
329
+ window.ReactNativeWebView.postMessage(JSON.stringify({
330
+ type: 'content',
331
+ html: editor.innerHTML,
332
+ characterCount: charCount
333
+ }));
302
334
  } else {
303
335
  editor.focus();
304
336
  document.execCommand(command, false, null);
@@ -323,32 +355,40 @@ const TextEditor = /*#__PURE__*/forwardRef(({
323
355
  if (webviewRef.current) {
324
356
  if (Platform.OS === 'ios') {
325
357
  webviewRef.current.injectJavaScript(`
326
- document.execCommand('${command}', false, null);
327
- const formats = [];
328
- if (document.queryCommandState('bold')) formats.push('bold');
329
- if (document.queryCommandState('italic')) formats.push('italic');
330
- if (document.queryCommandState('underline')) formats.push('underline');
331
- if (document.queryCommandState('strikeThrough')) formats.push('strikeThrough');
332
- window.ReactNativeWebView.postMessage(JSON.stringify({
333
- type: 'formats',
334
- formats: formats
335
- }));
336
- true;
337
- `);
358
+ const editor = document.getElementById('editor');
359
+ editor.focus();
360
+ document.execCommand('${command}', false, null);
361
+
362
+ // Force update formats after command
363
+ setTimeout(() => {
364
+ const formats = [];
365
+ if (document.queryCommandState('bold')) formats.push('bold');
366
+ if (document.queryCommandState('italic')) formats.push('italic');
367
+ if (document.queryCommandState('underline')) formats.push('underline');
368
+ if (document.queryCommandState('strikeThrough')) formats.push('strikeThrough');
369
+ window.ReactNativeWebView.postMessage(JSON.stringify({
370
+ type: 'formats',
371
+ formats: formats
372
+ }));
373
+ window.ReactNativeWebView.postMessage(editor.innerHTML);
374
+ }, 50);
375
+ true;
376
+ `);
338
377
  } else {
339
378
  webviewRef.current.postMessage(command);
340
379
  }
341
380
  }
342
381
  };
343
382
  const openLinkModal = () => {
344
- // Get selected text first
345
383
  if (webviewRef.current) {
346
384
  webviewRef.current.postMessage('getSelectedText');
347
385
  }
348
- setShowLinkModal(true);
386
+ setTimeout(() => {
387
+ setShowLinkModal(true);
388
+ }, 50);
349
389
  setTimeout(() => {
350
390
  inputUrlRef.current?.focus();
351
- }, 300);
391
+ }, 350);
352
392
  };
353
393
  const insertLink = () => {
354
394
  if (!linkUrl.trim()) {
@@ -356,7 +396,6 @@ const TextEditor = /*#__PURE__*/forwardRef(({
356
396
  return;
357
397
  }
358
398
  let finalUrl = linkUrl.trim();
359
- // Add https:// if no protocol
360
399
  if (!finalUrl.match(/^https?:\/\//i)) {
361
400
  finalUrl = 'https://' + finalUrl;
362
401
  }
@@ -368,61 +407,71 @@ const TextEditor = /*#__PURE__*/forwardRef(({
368
407
  if (webviewRef.current) {
369
408
  if (Platform.OS === 'ios') {
370
409
  webviewRef.current.injectJavaScript(`
371
- const linkData = ${linkData};
372
- const editor = document.getElementById('editor');
373
- editor.focus();
374
- const selection = window.getSelection();
375
-
376
- if (selection && selection.rangeCount > 0) {
377
- const range = selection.getRangeAt(0);
410
+ const linkData = ${linkData};
411
+ const editor = document.getElementById('editor');
412
+ editor.focus();
413
+ const selection = window.getSelection();
378
414
 
379
- // If editing existing link
380
- if (linkData.isExisting) {
381
- let linkElement = null;
382
- let node = range.startContainer;
415
+ if (selection && selection.rangeCount > 0) {
416
+ const range = selection.getRangeAt(0);
383
417
 
384
- while (node && node !== editor) {
385
- if (node.nodeName === 'A') {
386
- linkElement = node;
387
- break;
388
- }
389
- node = node.parentNode;
390
- }
418
+ if (linkData.isExisting) {
419
+ let linkElement = null;
420
+ let node = range.startContainer;
391
421
 
392
- if (!linkElement && range.commonAncestorContainer.nodeType === 1) {
393
- linkElement = range.commonAncestorContainer.querySelector('a');
422
+ while (node && node !== editor) {
423
+ if (node.nodeName === 'A') {
424
+ linkElement = node;
425
+ break;
394
426
  }
427
+ node = node.parentNode;
428
+ }
395
429
 
396
- if (linkElement) {
397
- linkElement.href = linkData.url;
398
- linkElement.textContent = linkData.text;
399
- range.setStartAfter(linkElement);
400
- range.collapse(true);
401
- selection.removeAllRanges();
402
- selection.addRange(range);
403
- window.ReactNativeWebView.postMessage(editor.innerHTML);
404
- true;
405
- return;
406
- }
430
+ if (!linkElement && range.commonAncestorContainer.nodeType === 1) {
431
+ linkElement = range.commonAncestorContainer.querySelector('a');
407
432
  }
408
433
 
409
- // Create new link
410
- const link = document.createElement('a');
411
- link.href = linkData.url;
412
- link.textContent = linkData.text;
413
- link.target = '_blank';
414
- range.deleteContents();
415
- range.insertNode(link);
416
- const space = document.createTextNode(' ');
417
- link.parentNode.insertBefore(space, link.nextSibling);
418
- range.setStartAfter(space);
419
- range.collapse(true);
420
- selection.removeAllRanges();
421
- selection.addRange(range);
434
+ if (linkElement) {
435
+ linkElement.href = linkData.url;
436
+ linkElement.textContent = linkData.text;
437
+ range.setStartAfter(linkElement);
438
+ range.collapse(true);
439
+ selection.removeAllRanges();
440
+ selection.addRange(range);
441
+
442
+ const charCount = editor.textContent.trim().length;
443
+ window.ReactNativeWebView.postMessage(JSON.stringify({
444
+ type: 'content',
445
+ html: editor.innerHTML,
446
+ characterCount: charCount
447
+ }));
448
+ true;
449
+ return;
450
+ }
422
451
  }
423
- window.ReactNativeWebView.postMessage(editor.innerHTML);
424
- true;
425
- `);
452
+
453
+ const link = document.createElement('a');
454
+ link.href = linkData.url;
455
+ link.textContent = linkData.text;
456
+ link.target = '_blank';
457
+ range.deleteContents();
458
+ range.insertNode(link);
459
+ const space = document.createTextNode(' ');
460
+ link.parentNode.insertBefore(space, link.nextSibling);
461
+ range.setStartAfter(space);
462
+ range.collapse(true);
463
+ selection.removeAllRanges();
464
+ selection.addRange(range);
465
+ }
466
+
467
+ const charCount = editor.textContent.trim().length;
468
+ window.ReactNativeWebView.postMessage(JSON.stringify({
469
+ type: 'content',
470
+ html: editor.innerHTML,
471
+ characterCount: charCount
472
+ }));
473
+ true;
474
+ `);
426
475
  } else {
427
476
  webviewRef.current.postMessage('insertLink:' + linkData);
428
477
  }
@@ -434,39 +483,59 @@ const TextEditor = /*#__PURE__*/forwardRef(({
434
483
  };
435
484
  const closeLinkModal = () => {
436
485
  setShowLinkModal(false);
437
- setLinkText('');
438
- setLinkUrl('');
439
- setIsEditingLink(false);
486
+ setTimeout(() => {
487
+ setLinkText('');
488
+ setLinkUrl('');
489
+ setIsEditingLink(false);
490
+ }, 300);
440
491
  };
441
492
  const handleWebViewMessage = event => {
442
493
  const data = event.nativeEvent.data;
443
494
  try {
444
495
  const parsed = JSON.parse(data);
445
496
  if (parsed.type === 'formats') {
446
- setActiveFormats(new Set(parsed.formats));
497
+ requestAnimationFrame(() => {
498
+ setActiveFormats(new Set(parsed.formats));
499
+ });
447
500
  } else if (parsed.type === 'focus') {
448
- onFocus?.();
501
+ requestAnimationFrame(() => {
502
+ onFocus?.();
503
+ });
449
504
  } else if (parsed.type === 'blur') {
450
- onBlur?.();
505
+ requestAnimationFrame(() => {
506
+ onBlur?.();
507
+ });
451
508
  } else if (parsed.type === 'selectedText') {
452
- setLinkText(parsed.text);
453
- // Clean URL (remove protocol prefix for editing)
454
- const cleanUrl = parsed.url.replace(/^https?:\/\//, '');
455
- setLinkUrl(cleanUrl);
456
- setIsEditingLink(parsed.isExisting || false);
509
+ requestAnimationFrame(() => {
510
+ setLinkText(parsed.text);
511
+ const cleanUrl = parsed.url.replace(/^https?:\/\//, '');
512
+ setLinkUrl(cleanUrl);
513
+ setIsEditingLink(parsed.isExisting || false);
514
+ });
515
+ } else if (parsed.type === 'initialCount') {
516
+ // Set initial character count saat pertama load
517
+ setCharacterCount(parsed.characterCount);
518
+ } else if (parsed.type === 'content') {
519
+ // Update character count dari WebView
520
+ setCharacterCount(parsed.characterCount);
521
+
522
+ // Cek maxLength
523
+ if (maxLength && parsed.characterCount > maxLength) {
524
+ // Optional: bisa tambahkan alert atau prevent
525
+ return;
526
+ }
527
+ onChange?.(parsed.html);
457
528
  }
458
529
  } catch {
459
- // Jika bukan JSON, berarti itu HTML content
530
+ // Fallback ke cara lama jika bukan JSON (untuk backward compatibility)
460
531
  handleOnChange(data);
461
532
  }
462
533
  };
463
534
  useEffect(() => {
464
- const showSub = Keyboard.addListener('keyboardDidShow', e => {
465
- setKeyboardHeight(e.endCoordinates.height - 35);
535
+ const showSub = Keyboard.addListener('keyboardDidShow', () => {
466
536
  setShowToolbar(true);
467
537
  });
468
538
  const hideSub = Keyboard.addListener('keyboardDidHide', () => {
469
- setKeyboardHeight(0);
470
539
  setShowToolbar(false);
471
540
  });
472
541
  return () => {
@@ -474,7 +543,6 @@ const TextEditor = /*#__PURE__*/forwardRef(({
474
543
  hideSub.remove();
475
544
  };
476
545
  }, []);
477
- const gap = Platform.OS === 'ios' ? 200 : 185;
478
546
  const isFormatActive = format => activeFormats.has(format);
479
547
  const toolbarButtons = [{
480
548
  command: 'bold',
@@ -492,12 +560,9 @@ const TextEditor = /*#__PURE__*/forwardRef(({
492
560
  command: 'strikeThrough',
493
561
  icon: 'strike-through',
494
562
  label: 'Strike'
495
- }, {
496
- command: 'link',
497
- icon: 'Link',
498
- label: 'Link',
499
- isSpecial: true
500
- }, {
563
+ },
564
+ // { command: 'link', icon: 'Link', label: 'Link', isSpecial: true },
565
+ {
501
566
  command: 'insertUnorderedList',
502
567
  icon: 'list-un-ordered',
503
568
  label: 'Bullet'
@@ -556,25 +621,26 @@ const TextEditor = /*#__PURE__*/forwardRef(({
556
621
  weight: "medium",
557
622
  children: [characterCount, "/", maxLength]
558
623
  })]
559
- }) : null, showToolbar ? /*#__PURE__*/_jsx(SafeAreaView, {
560
- style: [styles.toolbar, {
561
- top: Dimensions.get('screen').height - keyboardHeight - gap
562
- }],
563
- children: /*#__PURE__*/_jsx(ScrollView, {
564
- horizontal: true,
565
- showsHorizontalScrollIndicator: false,
566
- contentContainerStyle: styles.toolbarContent,
567
- children: toolbarButtons.map(button => /*#__PURE__*/_jsx(TouchableOpacity, {
568
- onPress: () => button.isSpecial ? openLinkModal() : formatText(button.command),
569
- style: [styles.toolButton, isFormatActive(button.command) && styles.toolButtonActive],
570
- children: /*#__PURE__*/_jsx(Icon, {
571
- name: button.icon,
572
- size: 20,
573
- color: isFormatActive(button.command) ? '#fff' : Color.gray[900]
574
- })
575
- }, button.command))
624
+ }) : null, showToolbar && /*#__PURE__*/_jsx(KeyboardAvoidingView, {
625
+ behavior: Platform.OS === 'ios' ? 'position' : 'padding',
626
+ children: /*#__PURE__*/_jsx(SafeAreaView, {
627
+ style: [styles.toolbar, Platform?.OS === 'android' && Platform.Version < 35 ? styles.mt10p : undefined],
628
+ children: /*#__PURE__*/_jsx(ScrollView, {
629
+ horizontal: true,
630
+ showsHorizontalScrollIndicator: false,
631
+ contentContainerStyle: styles.toolbarContent,
632
+ children: toolbarButtons.map(button => /*#__PURE__*/_jsx(TouchableOpacity, {
633
+ onPress: () => button.isSpecial ? openLinkModal() : formatText(button.command),
634
+ style: [styles.toolButton, isFormatActive(button.command) && styles.toolButtonActive],
635
+ children: /*#__PURE__*/_jsx(Icon, {
636
+ name: button.icon,
637
+ size: 20,
638
+ color: isFormatActive(button.command) ? '#fff' : Color.gray[900]
639
+ })
640
+ }, button.command))
641
+ })
576
642
  })
577
- }) : null, /*#__PURE__*/_jsxs(BottomSheet, {
643
+ }), /*#__PURE__*/_jsxs(BottomSheet, {
578
644
  isOpen: showLinkModal,
579
645
  onClose: () => setShowLinkModal(false),
580
646
  children: [/*#__PURE__*/_jsxs(View, {
@@ -679,6 +745,9 @@ const styles = StyleSheet.create({
679
745
  },
680
746
  flex1: {
681
747
  flex: 1
748
+ },
749
+ mt10p: {
750
+ marginTop: '10%'
682
751
  }
683
752
  });
684
753
  //# sourceMappingURL=TextEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["forwardRef","useEffect","useImperativeHandle","useRef","useState","Alert","Dimensions","Keyboard","KeyboardAvoidingView","Platform","SafeAreaView","ScrollView","StyleSheet","TouchableOpacity","View","WebView","BottomSheet","Button","Color","Icon","Input","LabelForm","Typography","jsx","_jsx","jsxs","_jsxs","TextEditor","label","hasError","hint","onChange","height","initialValue","placeholder","maxLength","onFocus","onBlur","inputLinkTextPlacholder","inputLinkUrlPlacholder","inputLabelLinkText","inputLabelLinkUrl","saveLinkButtonText","cancelLinkButtonText","ref","keyboardHeight","setKeyboardHeight","showToolbar","setShowToolbar","activeFormats","setActiveFormats","Set","characterCount","setCharacterCount","showLinkModal","setShowLinkModal","linkText","setLinkText","linkUrl","setLinkUrl","isEditingLink","setIsEditingLink","webviewRef","inputUrlRef","handleOnChange","data","textOnly","replace","length","getContent","current","postMessage","setContent","html","escapedHtml","injectJavaScript","clearContent","htmlEditor","gray","formatText","command","OS","openLinkModal","setTimeout","focus","insertLink","trim","alert","finalUrl","match","linkData","JSON","stringify","text","url","isExisting","closeLinkModal","handleWebViewMessage","event","nativeEvent","parsed","parse","type","formats","cleanUrl","showSub","addListener","e","endCoordinates","hideSub","remove","gap","isFormatActive","format","has","toolbarButtons","icon","isSpecial","style","styles","container","children","title","editorWrapper","minHeight","behavior","undefined","originWhitelist","source","onMessage","webview","javaScriptEnabled","domStorageEnabled","mixedContentMode","allowUniversalAccessFromFileURLs","allowFileAccess","scrollEnabled","hintContainer","color","danger","variant","weight","toolbar","top","get","horizontal","showsHorizontalScrollIndicator","contentContainerStyle","toolbarContent","map","button","onPress","toolButton","toolButtonActive","name","size","isOpen","onClose","modalBody","value","onChangeText","autoCapitalize","keyboardType","modalActions","flex1","displayName","create","backgroundColor","position","flex","borderWidth","borderColor","borderRadius","overflow","paddingVertical","paddingHorizontal","flexDirection","justifyContent","alignItems","borderTopWidth","left","width","padding","marginHorizontal","minWidth","primary","marginTop"],"sourceRoot":"../../../src","sources":["TextEditor/TextEditor.tsx"],"mappings":"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AACA;AACA;AACA;AACA;AACA,wBAAwB3C,WAAW;AACnC,qBAAqBhB,KAAK,CAAC4D,IAAI,CAAC,GAAG,CAAC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE7C,YAAY;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;EAEC,MAAM8C,UAAU,GAAIC,OAAe,IAAK;IACtC,IAAIlB,UA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","ignoreList":[]}
1
+ {"version":3,"names":["forwardRef","useEffect","useImperativeHandle","useRef","useState","Alert","Dimensions","Keyboard","KeyboardAvoidingView","Platform","SafeAreaView","ScrollView","StyleSheet","TouchableOpacity","View","WebView","BottomSheet","Button","Color","Icon","Input","LabelForm","Typography","jsx","_jsx","jsxs","_jsxs","TextEditor","label","hasError","hint","onChange","height","initialValue","placeholder","maxLength","onFocus","onBlur","inputLinkTextPlacholder","inputLinkUrlPlacholder","inputLabelLinkText","inputLabelLinkUrl","saveLinkButtonText","cancelLinkButtonText","ref","showToolbar","setShowToolbar","activeFormats","setActiveFormats","Set","characterCount","setCharacterCount","showLinkModal","setShowLinkModal","linkText","setLinkText","linkUrl","setLinkUrl","isEditingLink","setIsEditingLink","webviewRef","inputUrlRef","handleOnChange","data","textOnly","replace","trim","length","getContent","current","postMessage","setContent","html","escapedHtml","injectJavaScript","clearContent","htmlEditor","gray","formatText","command","OS","openLinkModal","setTimeout","focus","insertLink","alert","finalUrl","match","linkData","JSON","stringify","text","url","isExisting","closeLinkModal","handleWebViewMessage","event","nativeEvent","parsed","parse","type","requestAnimationFrame","formats","cleanUrl","showSub","addListener","hideSub","remove","isFormatActive","format","has","toolbarButtons","icon","style","styles","container","children","title","editorWrapper","minHeight","behavior","undefined","originWhitelist","source","onMessage","webview","javaScriptEnabled","domStorageEnabled","mixedContentMode","allowUniversalAccessFromFileURLs","allowFileAccess","scrollEnabled","hintContainer","color","danger","variant","weight","toolbar","Version","mt10p","horizontal","showsHorizontalScrollIndicator","contentContainerStyle","toolbarContent","map","button","onPress","isSpecial","toolButton","toolButtonActive","name","size","isOpen","onClose","modalBody","value","onChangeText","autoCapitalize","keyboardType","modalActions","flex1","displayName","create","backgroundColor","gap","position","flex","borderWidth","borderColor","borderRadius","overflow","paddingVertical","paddingHorizontal","flexDirection","justifyContent","alignItems","borderTopWidth","left","width","get","padding","marginHorizontal","minWidth","primary","marginTop"],"sourceRoot":"../../../src","sources":["TextEditor/TextEditor.tsx"],"mappings":"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AW;AACnC,qBAAqBhB,KAAK,CAAC2D,IAAI,CAAC,GAAG,CAAC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE5C,YAAY;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"TextEditor.d.ts","sourceRoot":"","sources":["../../../../src/TextEditor/TextEditor.tsx"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,UAAU,sBAAuB,SAAQ,cAAc;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAqBD,QAAA,MAAM,UAAU,kHAgoBf,CAAC;AAIF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"TextEditor.d.ts","sourceRoot":"","sources":["../../../../src/TextEditor/TextEditor.tsx"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,UAAU,sBAAuB,SAAQ,cAAc;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAqBD,QAAA,MAAM,UAAU,kHA2sBf,CAAC;AAIF,eAAe,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@herca/rn-kit",
3
- "version": "0.1.54",
3
+ "version": "0.1.55",
4
4
  "description": "React Native UI Kit",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -17,7 +17,6 @@ import {
17
17
  TextInput,
18
18
  TouchableOpacity,
19
19
  View,
20
- type KeyboardEvent,
21
20
  } from 'react-native';
22
21
  import { WebView } from 'react-native-webview';
23
22
  import BottomSheet from '../BottomSheet/BottomSheet';
@@ -90,7 +89,6 @@ const TextEditor = forwardRef<TextEditorRef, ExtendedTextEditorType>(
90
89
  },
91
90
  ref
92
91
  ) => {
93
- const [keyboardHeight, setKeyboardHeight] = useState(0);
94
92
  const [showToolbar, setShowToolbar] = useState<boolean>(false);
95
93
  const [activeFormats, setActiveFormats] = useState<Set<string>>(new Set());
96
94
  const [characterCount, setCharacterCount] = useState(0);
@@ -101,9 +99,10 @@ const TextEditor = forwardRef<TextEditorRef, ExtendedTextEditorType>(
101
99
  const webviewRef = useRef<WebView>(null);
102
100
  const inputUrlRef = useRef<TextInput>(null);
103
101
 
102
+ // Sekarang handleOnChange hanya dipanggil sebagai fallback
104
103
  const handleOnChange = (data: string) => {
105
- // Remove HTML tags untuk hitung karakter
106
- const textOnly = data.replace(/<[^>]*>/g, '');
104
+ // Fallback jika message bukan JSON
105
+ const textOnly = data.replace(/<[^>]*>/g, '').trim();
107
106
  setCharacterCount(textOnly.length);
108
107
 
109
108
  if (maxLength && textOnly.length > maxLength) {
@@ -156,6 +155,7 @@ const TextEditor = forwardRef<TextEditorRef, ExtendedTextEditorType>(
156
155
  width: 99.9%;
157
156
  height: 100%;
158
157
  overflow-x: hidden;
158
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
159
159
  }
160
160
  #editor {
161
161
  height: 100%;
@@ -213,13 +213,29 @@ const TextEditor = forwardRef<TextEditorRef, ExtendedTextEditorType>(
213
213
  editor.classList.remove('placeholder');
214
214
  }
215
215
 
216
+ // Kirim initial character count saat load
217
+ setTimeout(() => {
218
+ const charCount = editor.textContent.trim().length;
219
+ window.ReactNativeWebView.postMessage(JSON.stringify({
220
+ type: 'initialCount',
221
+ characterCount: charCount
222
+ }));
223
+ }, 100);
224
+
216
225
  editor.addEventListener("input", () => {
217
226
  if (editor.textContent.trim()) {
218
227
  editor.classList.remove('placeholder');
219
228
  } else {
220
229
  editor.classList.add('placeholder');
221
230
  }
222
- window.ReactNativeWebView.postMessage(editor.innerHTML);
231
+
232
+ // Kirim HTML dan character count
233
+ const charCount = editor.textContent.trim().length;
234
+ window.ReactNativeWebView.postMessage(JSON.stringify({
235
+ type: 'content',
236
+ html: editor.innerHTML,
237
+ characterCount: charCount
238
+ }));
223
239
  });
224
240
 
225
241
  editor.addEventListener("focus", () => {
@@ -342,7 +358,14 @@ const TextEditor = forwardRef<TextEditorRef, ExtendedTextEditorType>(
342
358
  range.collapse(true);
343
359
  selection.removeAllRanges();
344
360
  selection.addRange(range);
345
- window.ReactNativeWebView.postMessage(editor.innerHTML);
361
+
362
+ // Update content dan character count
363
+ const charCount = editor.textContent.trim().length;
364
+ window.ReactNativeWebView.postMessage(JSON.stringify({
365
+ type: 'content',
366
+ html: editor.innerHTML,
367
+ characterCount: charCount
368
+ }));
346
369
  return;
347
370
  }
348
371
  }
@@ -363,7 +386,14 @@ const TextEditor = forwardRef<TextEditorRef, ExtendedTextEditorType>(
363
386
  selection.removeAllRanges();
364
387
  selection.addRange(range);
365
388
  }
366
- window.ReactNativeWebView.postMessage(editor.innerHTML);
389
+
390
+ // Update content dan character count
391
+ const charCount = editor.textContent.trim().length;
392
+ window.ReactNativeWebView.postMessage(JSON.stringify({
393
+ type: 'content',
394
+ html: editor.innerHTML,
395
+ characterCount: charCount
396
+ }));
367
397
  } else {
368
398
  editor.focus();
369
399
  document.execCommand(command, false, null);
@@ -389,18 +419,25 @@ const TextEditor = forwardRef<TextEditorRef, ExtendedTextEditorType>(
389
419
  if (webviewRef.current) {
390
420
  if (Platform.OS === 'ios') {
391
421
  webviewRef.current.injectJavaScript(`
392
- document.execCommand('${command}', false, null);
393
- const formats = [];
394
- if (document.queryCommandState('bold')) formats.push('bold');
395
- if (document.queryCommandState('italic')) formats.push('italic');
396
- if (document.queryCommandState('underline')) formats.push('underline');
397
- if (document.queryCommandState('strikeThrough')) formats.push('strikeThrough');
398
- window.ReactNativeWebView.postMessage(JSON.stringify({
399
- type: 'formats',
400
- formats: formats
401
- }));
402
- true;
403
- `);
422
+ const editor = document.getElementById('editor');
423
+ editor.focus();
424
+ document.execCommand('${command}', false, null);
425
+
426
+ // Force update formats after command
427
+ setTimeout(() => {
428
+ const formats = [];
429
+ if (document.queryCommandState('bold')) formats.push('bold');
430
+ if (document.queryCommandState('italic')) formats.push('italic');
431
+ if (document.queryCommandState('underline')) formats.push('underline');
432
+ if (document.queryCommandState('strikeThrough')) formats.push('strikeThrough');
433
+ window.ReactNativeWebView.postMessage(JSON.stringify({
434
+ type: 'formats',
435
+ formats: formats
436
+ }));
437
+ window.ReactNativeWebView.postMessage(editor.innerHTML);
438
+ }, 50);
439
+ true;
440
+ `);
404
441
  } else {
405
442
  webviewRef.current.postMessage(command);
406
443
  }
@@ -408,14 +445,17 @@ const TextEditor = forwardRef<TextEditorRef, ExtendedTextEditorType>(
408
445
  };
409
446
 
410
447
  const openLinkModal = () => {
411
- // Get selected text first
412
448
  if (webviewRef.current) {
413
449
  webviewRef.current.postMessage('getSelectedText');
414
450
  }
415
- setShowLinkModal(true);
451
+
452
+ setTimeout(() => {
453
+ setShowLinkModal(true);
454
+ }, 50);
455
+
416
456
  setTimeout(() => {
417
457
  inputUrlRef.current?.focus();
418
- }, 300);
458
+ }, 350);
419
459
  };
420
460
 
421
461
  const insertLink = () => {
@@ -425,7 +465,6 @@ const TextEditor = forwardRef<TextEditorRef, ExtendedTextEditorType>(
425
465
  }
426
466
 
427
467
  let finalUrl = linkUrl.trim();
428
- // Add https:// if no protocol
429
468
  if (!finalUrl.match(/^https?:\/\//i)) {
430
469
  finalUrl = 'https://' + finalUrl;
431
470
  }
@@ -439,61 +478,71 @@ const TextEditor = forwardRef<TextEditorRef, ExtendedTextEditorType>(
439
478
  if (webviewRef.current) {
440
479
  if (Platform.OS === 'ios') {
441
480
  webviewRef.current.injectJavaScript(`
442
- const linkData = ${linkData};
443
- const editor = document.getElementById('editor');
444
- editor.focus();
445
- const selection = window.getSelection();
446
-
447
- if (selection && selection.rangeCount > 0) {
448
- const range = selection.getRangeAt(0);
481
+ const linkData = ${linkData};
482
+ const editor = document.getElementById('editor');
483
+ editor.focus();
484
+ const selection = window.getSelection();
449
485
 
450
- // If editing existing link
451
- if (linkData.isExisting) {
452
- let linkElement = null;
453
- let node = range.startContainer;
486
+ if (selection && selection.rangeCount > 0) {
487
+ const range = selection.getRangeAt(0);
454
488
 
455
- while (node && node !== editor) {
456
- if (node.nodeName === 'A') {
457
- linkElement = node;
458
- break;
459
- }
460
- node = node.parentNode;
461
- }
489
+ if (linkData.isExisting) {
490
+ let linkElement = null;
491
+ let node = range.startContainer;
462
492
 
463
- if (!linkElement && range.commonAncestorContainer.nodeType === 1) {
464
- linkElement = range.commonAncestorContainer.querySelector('a');
493
+ while (node && node !== editor) {
494
+ if (node.nodeName === 'A') {
495
+ linkElement = node;
496
+ break;
465
497
  }
498
+ node = node.parentNode;
499
+ }
466
500
 
467
- if (linkElement) {
468
- linkElement.href = linkData.url;
469
- linkElement.textContent = linkData.text;
470
- range.setStartAfter(linkElement);
471
- range.collapse(true);
472
- selection.removeAllRanges();
473
- selection.addRange(range);
474
- window.ReactNativeWebView.postMessage(editor.innerHTML);
475
- true;
476
- return;
477
- }
501
+ if (!linkElement && range.commonAncestorContainer.nodeType === 1) {
502
+ linkElement = range.commonAncestorContainer.querySelector('a');
478
503
  }
479
504
 
480
- // Create new link
481
- const link = document.createElement('a');
482
- link.href = linkData.url;
483
- link.textContent = linkData.text;
484
- link.target = '_blank';
485
- range.deleteContents();
486
- range.insertNode(link);
487
- const space = document.createTextNode(' ');
488
- link.parentNode.insertBefore(space, link.nextSibling);
489
- range.setStartAfter(space);
490
- range.collapse(true);
491
- selection.removeAllRanges();
492
- selection.addRange(range);
505
+ if (linkElement) {
506
+ linkElement.href = linkData.url;
507
+ linkElement.textContent = linkData.text;
508
+ range.setStartAfter(linkElement);
509
+ range.collapse(true);
510
+ selection.removeAllRanges();
511
+ selection.addRange(range);
512
+
513
+ const charCount = editor.textContent.trim().length;
514
+ window.ReactNativeWebView.postMessage(JSON.stringify({
515
+ type: 'content',
516
+ html: editor.innerHTML,
517
+ characterCount: charCount
518
+ }));
519
+ true;
520
+ return;
521
+ }
493
522
  }
494
- window.ReactNativeWebView.postMessage(editor.innerHTML);
495
- true;
496
- `);
523
+
524
+ const link = document.createElement('a');
525
+ link.href = linkData.url;
526
+ link.textContent = linkData.text;
527
+ link.target = '_blank';
528
+ range.deleteContents();
529
+ range.insertNode(link);
530
+ const space = document.createTextNode(' ');
531
+ link.parentNode.insertBefore(space, link.nextSibling);
532
+ range.setStartAfter(space);
533
+ range.collapse(true);
534
+ selection.removeAllRanges();
535
+ selection.addRange(range);
536
+ }
537
+
538
+ const charCount = editor.textContent.trim().length;
539
+ window.ReactNativeWebView.postMessage(JSON.stringify({
540
+ type: 'content',
541
+ html: editor.innerHTML,
542
+ characterCount: charCount
543
+ }));
544
+ true;
545
+ `);
497
546
  } else {
498
547
  webviewRef.current.postMessage('insertLink:' + linkData);
499
548
  }
@@ -507,9 +556,12 @@ const TextEditor = forwardRef<TextEditorRef, ExtendedTextEditorType>(
507
556
 
508
557
  const closeLinkModal = () => {
509
558
  setShowLinkModal(false);
510
- setLinkText('');
511
- setLinkUrl('');
512
- setIsEditingLink(false);
559
+
560
+ setTimeout(() => {
561
+ setLinkText('');
562
+ setLinkUrl('');
563
+ setIsEditingLink(false);
564
+ }, 300);
513
565
  };
514
566
 
515
567
  const handleWebViewMessage = (event: any) => {
@@ -519,34 +571,50 @@ const TextEditor = forwardRef<TextEditorRef, ExtendedTextEditorType>(
519
571
  const parsed = JSON.parse(data);
520
572
 
521
573
  if (parsed.type === 'formats') {
522
- setActiveFormats(new Set(parsed.formats));
574
+ requestAnimationFrame(() => {
575
+ setActiveFormats(new Set(parsed.formats));
576
+ });
523
577
  } else if (parsed.type === 'focus') {
524
- onFocus?.();
578
+ requestAnimationFrame(() => {
579
+ onFocus?.();
580
+ });
525
581
  } else if (parsed.type === 'blur') {
526
- onBlur?.();
582
+ requestAnimationFrame(() => {
583
+ onBlur?.();
584
+ });
527
585
  } else if (parsed.type === 'selectedText') {
528
- setLinkText(parsed.text);
529
- // Clean URL (remove protocol prefix for editing)
530
- const cleanUrl = parsed.url.replace(/^https?:\/\//, '');
531
- setLinkUrl(cleanUrl);
532
- setIsEditingLink(parsed.isExisting || false);
586
+ requestAnimationFrame(() => {
587
+ setLinkText(parsed.text);
588
+ const cleanUrl = parsed.url.replace(/^https?:\/\//, '');
589
+ setLinkUrl(cleanUrl);
590
+ setIsEditingLink(parsed.isExisting || false);
591
+ });
592
+ } else if (parsed.type === 'initialCount') {
593
+ // Set initial character count saat pertama load
594
+ setCharacterCount(parsed.characterCount);
595
+ } else if (parsed.type === 'content') {
596
+ // Update character count dari WebView
597
+ setCharacterCount(parsed.characterCount);
598
+
599
+ // Cek maxLength
600
+ if (maxLength && parsed.characterCount > maxLength) {
601
+ // Optional: bisa tambahkan alert atau prevent
602
+ return;
603
+ }
604
+
605
+ onChange?.(parsed.html);
533
606
  }
534
607
  } catch {
535
- // Jika bukan JSON, berarti itu HTML content
608
+ // Fallback ke cara lama jika bukan JSON (untuk backward compatibility)
536
609
  handleOnChange(data);
537
610
  }
538
611
  };
539
612
 
540
613
  useEffect(() => {
541
- const showSub = Keyboard.addListener(
542
- 'keyboardDidShow',
543
- (e: KeyboardEvent) => {
544
- setKeyboardHeight(e.endCoordinates.height - 35);
545
- setShowToolbar(true);
546
- }
547
- );
614
+ const showSub = Keyboard.addListener('keyboardDidShow', () => {
615
+ setShowToolbar(true);
616
+ });
548
617
  const hideSub = Keyboard.addListener('keyboardDidHide', () => {
549
- setKeyboardHeight(0);
550
618
  setShowToolbar(false);
551
619
  });
552
620
 
@@ -556,8 +624,6 @@ const TextEditor = forwardRef<TextEditorRef, ExtendedTextEditorType>(
556
624
  };
557
625
  }, []);
558
626
 
559
- const gap = Platform.OS === 'ios' ? 200 : 185;
560
-
561
627
  const isFormatActive = (format: string) => activeFormats.has(format);
562
628
 
563
629
  const toolbarButtons: ToolbarButton[] = [
@@ -565,7 +631,7 @@ const TextEditor = forwardRef<TextEditorRef, ExtendedTextEditorType>(
565
631
  { command: 'italic', icon: 'Italic', label: 'Italic' },
566
632
  { command: 'underline', icon: 'UnderLine', label: 'Underline' },
567
633
  { command: 'strikeThrough', icon: 'strike-through', label: 'Strike' },
568
- { command: 'link', icon: 'Link', label: 'Link', isSpecial: true },
634
+ // { command: 'link', icon: 'Link', label: 'Link', isSpecial: true },
569
635
  {
570
636
  command: 'insertUnorderedList',
571
637
  icon: 'list-un-ordered',
@@ -626,43 +692,51 @@ const TextEditor = forwardRef<TextEditorRef, ExtendedTextEditorType>(
626
692
  </View>
627
693
  ) : null}
628
694
 
629
- {showToolbar ? (
630
- <SafeAreaView
631
- style={[
632
- styles.toolbar,
633
- { top: Dimensions.get('screen').height - keyboardHeight - gap },
634
- ]}
695
+ {showToolbar && (
696
+ <KeyboardAvoidingView
697
+ behavior={Platform.OS === 'ios' ? 'position' : 'padding'}
635
698
  >
636
- <ScrollView
637
- horizontal
638
- showsHorizontalScrollIndicator={false}
639
- contentContainerStyle={styles.toolbarContent}
699
+ <SafeAreaView
700
+ style={[
701
+ styles.toolbar,
702
+ Platform?.OS === 'android' && Platform.Version < 35
703
+ ? styles.mt10p
704
+ : undefined,
705
+ ]}
640
706
  >
641
- {toolbarButtons.map((button) => (
642
- <TouchableOpacity
643
- key={button.command}
644
- onPress={() =>
645
- button.isSpecial
646
- ? openLinkModal()
647
- : formatText(button.command)
648
- }
649
- style={[
650
- styles.toolButton,
651
- isFormatActive(button.command) && styles.toolButtonActive,
652
- ]}
653
- >
654
- <Icon
655
- name={button.icon}
656
- size={20}
657
- color={
658
- isFormatActive(button.command) ? '#fff' : Color.gray[900]
707
+ <ScrollView
708
+ horizontal
709
+ showsHorizontalScrollIndicator={false}
710
+ contentContainerStyle={styles.toolbarContent}
711
+ >
712
+ {toolbarButtons.map((button) => (
713
+ <TouchableOpacity
714
+ key={button.command}
715
+ onPress={() =>
716
+ button.isSpecial
717
+ ? openLinkModal()
718
+ : formatText(button.command)
659
719
  }
660
- />
661
- </TouchableOpacity>
662
- ))}
663
- </ScrollView>
664
- </SafeAreaView>
665
- ) : null}
720
+ style={[
721
+ styles.toolButton,
722
+ isFormatActive(button.command) && styles.toolButtonActive,
723
+ ]}
724
+ >
725
+ <Icon
726
+ name={button.icon}
727
+ size={20}
728
+ color={
729
+ isFormatActive(button.command)
730
+ ? '#fff'
731
+ : Color.gray[900]
732
+ }
733
+ />
734
+ </TouchableOpacity>
735
+ ))}
736
+ </ScrollView>
737
+ </SafeAreaView>
738
+ </KeyboardAvoidingView>
739
+ )}
666
740
 
667
741
  {/* Link Modal */}
668
742
  <BottomSheet
@@ -776,4 +850,7 @@ const styles = StyleSheet.create({
776
850
  flex1: {
777
851
  flex: 1,
778
852
  },
853
+ mt10p: {
854
+ marginTop: '10%',
855
+ },
779
856
  });