mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-30 10:36:35 +02:00
b6d4fd16c9
* The basic editor is working! No list continuation still though * List continuation is working! Now to delete when entering again and not typing on line + handle ordered lists * Supports checkboxes + attempted at setting font * Editor font works now; now need to fix the delete (look at past state) * Fix deletion problem * Add ordered list handler * Add comments * Extract insertListLine * End lists on enter for empty bullets * Add MarkdownView (renders badly though) * Save edited text from MarkdownEditor * Cleanup * Refactor react-native-markdown-editor/ * Rename react-native-markdown-editor/ => MarkdownEditor/ * Cleanup * Fix preview styles; still need to fix checkbox problem * Fix keyboard padding * Change name back to #body_changeText * Incorporate PR feedback from @laurent22 * wip: Move MarkdownEditor/ from ReactNativeClient/lib/ to ReactNativeClient/ * Move MarkdownEditor/ from ReactNativeClient/lib/ to ReactNativeClient/ * Remove log statement * Focus TextInput in MarkdownEditor from grandparent * Make eslint happy * Extract textInputRefName to shared variable * Remove accidental #setState * Cleanup * Cleanup * Run linter * Cleanup * Update button order * Improve styles for config descriptions * Allow descriptions to be added to BOOL type Setting configs * Add editorBeta Setting * Move FailSafe details to description text * Update descriptionText styles * Put the editor under the beta flag toggle * Incorporate PR feedback from @laurent22 * Refactor Markdown editor focusing * Cleanup * Reorder MarkdownEditor formats * Make applyListFormat behavior more intuitive * Add comment * Show MarkdownEditor with preview by default * Show preview by default, then hide on typing * Fix MarkdownEditor selection bug * Cleanup * Update Markdown button styles * Make Markdown button colors theme-conscious * Fix merge conflict resolution mistake * Fix broken import * Delete package-lock.json * Reset package-lock.json Co-authored-by: Laurent Cozic <laurent22@users.noreply.github.com>
56 lines
1.1 KiB
JavaScript
56 lines
1.1 KiB
JavaScript
import { replaceBetween } from './utils';
|
|
|
|
export default ({ getState, item, setState }) => {
|
|
const { text, selection } = getState();
|
|
let newText = replaceBetween(
|
|
text,
|
|
selection,
|
|
`\n${item.wrapper.concat(
|
|
'\n',
|
|
text.substring(selection.start, selection.end),
|
|
'\n',
|
|
item.wrapper,
|
|
'\n',
|
|
)}`,
|
|
);
|
|
let newPosition;
|
|
if (selection.start === selection.end) {
|
|
newPosition = selection.end + item.wrapper.length + 2; // +2 For two new lines
|
|
newText = replaceBetween(
|
|
text,
|
|
selection,
|
|
`\n${item.wrapper.concat(
|
|
'\n',
|
|
text.substring(selection.start, selection.end),
|
|
'\n',
|
|
item.wrapper,
|
|
'\n',
|
|
)}`,
|
|
);
|
|
} else {
|
|
newPosition = selection.end + item.wrapper.length * 2 + 3; // +3 For three new lines
|
|
newText = replaceBetween(
|
|
text,
|
|
selection,
|
|
`${item.wrapper.concat(
|
|
'\n',
|
|
text.substring(selection.start, selection.end),
|
|
'\n',
|
|
item.wrapper,
|
|
'\n',
|
|
)}`,
|
|
);
|
|
}
|
|
const extra = {
|
|
selection: {
|
|
start: newPosition,
|
|
end: newPosition,
|
|
},
|
|
};
|
|
setState({ text: newText }, () => {
|
|
setTimeout(() => {
|
|
setState({ ...extra });
|
|
}, 25);
|
|
});
|
|
};
|