From 68997a9c934c8d17199ff08791ae00e00007243e Mon Sep 17 00:00:00 2001 From: "Lucas.Xu" Date: Thu, 15 Sep 2022 21:27:49 +0800 Subject: [PATCH 1/5] feat: implement theme customizer --- .../appflowy_editor/documentation/testing.md | 8 +- .../appflowy_editor/example/lib/main.dart | 44 ++- .../appflowy_editor/lib/appflowy_editor.dart | 2 + .../appflowy_editor/lib/l10n/intl_ca.arb | 35 +++ .../appflowy_editor/lib/l10n/intl_de_DE.arb | 35 +++ .../appflowy_editor/lib/l10n/intl_en.arb | 35 +++ .../appflowy_editor/lib/l10n/intl_es_VE.arb | 35 +++ .../appflowy_editor/lib/l10n/intl_fr_CA.arb | 35 +++ .../appflowy_editor/lib/l10n/intl_fr_FR.arb | 35 +++ .../appflowy_editor/lib/l10n/intl_hu_HU.arb | 35 +++ .../appflowy_editor/lib/l10n/intl_id_ID.arb | 35 +++ .../appflowy_editor/lib/l10n/intl_it_IT.arb | 35 +++ .../appflowy_editor/lib/l10n/intl_ja_JP.arb | 35 +++ .../appflowy_editor/lib/l10n/intl_pl_PL.arb | 35 +++ .../appflowy_editor/lib/l10n/intl_pt_BR.arb | 35 +++ .../appflowy_editor/lib/l10n/intl_pt_PT.arb | 35 +++ .../appflowy_editor/lib/l10n/intl_ru_RU.arb | 35 +++ .../appflowy_editor/lib/l10n/intl_tr_TR.arb | 35 +++ .../appflowy_editor/lib/l10n/intl_zh_CN.arb | 35 +++ .../appflowy_editor/lib/l10n/intl_zh_TW.arb | 35 +++ .../src/document/built_in_attribute_keys.dart | 59 ++++ .../lib/src/document/node.dart | 7 + .../appflowy_editor/lib/src/editor_state.dart | 16 +- .../src/extensions/attributes_extension.dart | 93 ++++++ .../src/extensions/text_node_extensions.dart | 25 +- .../src/extensions/text_style_extension.dart | 73 +++++ .../lib/src/infra/html_converter.dart | 76 ++--- .../lib/src/l10n/intl/messages_all.dart | 126 ++++++++ .../lib/src/l10n/intl/messages_ca.dart | 42 +++ .../lib/src/l10n/intl/messages_de-DE.dart | 42 +++ .../lib/src/l10n/intl/messages_en.dart | 42 +++ .../lib/src/l10n/intl/messages_es-VE.dart | 42 +++ .../lib/src/l10n/intl/messages_fr-CA.dart | 42 +++ .../lib/src/l10n/intl/messages_fr-FR.dart | 42 +++ .../lib/src/l10n/intl/messages_hu-HU.dart | 42 +++ .../lib/src/l10n/intl/messages_id-ID.dart | 42 +++ .../lib/src/l10n/intl/messages_it-IT.dart | 42 +++ .../lib/src/l10n/intl/messages_ja-JP.dart | 42 +++ .../lib/src/l10n/intl/messages_pl-PL.dart | 42 +++ .../lib/src/l10n/intl/messages_pt-BR.dart | 42 +++ .../lib/src/l10n/intl/messages_pt-PT.dart | 42 +++ .../lib/src/l10n/intl/messages_ru-RU.dart | 42 +++ .../lib/src/l10n/intl/messages_tr-TR.dart | 42 +++ .../lib/src/l10n/intl/messages_zh-CN.dart | 42 +++ .../lib/src/l10n/intl/messages_zh-TW.dart | 42 +++ .../appflowy_editor/lib/src/l10n/l10n.dart | 257 ++++++++++++++++ .../rich_text/built_in_text_widget.dart | 61 ++++ .../render/rich_text/bulleted_list_text.dart | 24 +- .../src/render/rich_text/checkbox_text.dart | 68 ++--- .../src/render/rich_text/flowy_rich_text.dart | 125 ++++---- .../src/render/rich_text/heading_text.dart | 58 +--- .../render/rich_text/number_list_text.dart | 67 +++-- .../lib/src/render/rich_text/quoted_text.dart | 22 +- .../lib/src/render/rich_text/rich_text.dart | 16 +- .../src/render/rich_text/rich_text_style.dart | 282 ------------------ .../selection_menu_service.dart | 34 ++- .../lib/src/render/style/editor_style.dart | 244 ++++++++++++++- .../lib/src/render/toolbar/toolbar_item.dart | 89 +++--- .../format_rich_text_style.dart | 66 ++-- .../lib/src/service/editor_service.dart | 21 +- .../backspace_handler.dart | 17 +- .../copy_paste_handler.dart | 6 +- ...er_without_shift_in_text_node_handler.dart | 41 +-- .../format_style_handler.dart | 18 +- .../number_list_helper.dart | 10 +- .../whitespace_handler.dart | 31 +- .../lib/src/service/selection_service.dart | 29 +- .../built_in_shortcut_events.dart | 6 + .../lib/src/service/toolbar_service.dart | 2 +- .../packages/appflowy_editor/pubspec.yaml | 11 + .../test/infra/test_editor.dart | 20 +- .../test/infra/test_raw_key_event.dart | 3 + .../render/rich_text/checkbox_text_test.dart | 15 +- .../rich_text/toolbar_rich_text_test.dart | 7 +- .../selection_menu_widget_test.dart | 188 ++++++------ .../backspace_handler_test.dart | 52 ++-- ...thout_shift_in_text_node_handler_test.dart | 20 +- ...st.dart => format_style_handler_test.dart} | 30 +- .../white_space_handler_test.dart | 21 +- .../shortcut_event/shortcut_event_test.dart | 2 + .../test/service/toolbar_service_test.dart | 36 +-- 81 files changed, 2977 insertions(+), 860 deletions(-) create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_ca.arb create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_de_DE.arb create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_en.arb create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_es_VE.arb create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_fr_CA.arb create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_fr_FR.arb create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_hu_HU.arb create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_id_ID.arb create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_it_IT.arb create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_ja_JP.arb create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_pl_PL.arb create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_pt_BR.arb create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_pt_PT.arb create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_ru_RU.arb create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_tr_TR.arb create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_zh_CN.arb create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_zh_TW.arb create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/document/built_in_attribute_keys.dart create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/extensions/attributes_extension.dart create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/extensions/text_style_extension.dart create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_all.dart create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_ca.dart create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_de-DE.dart create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_en.dart create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_es-VE.dart create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_fr-CA.dart create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_fr-FR.dart create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_hu-HU.dart create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_id-ID.dart create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_it-IT.dart create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_ja-JP.dart create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_pl-PL.dart create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_pt-BR.dart create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_pt-PT.dart create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_ru-RU.dart create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_tr-TR.dart create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_zh-CN.dart create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_zh-TW.dart create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/l10n.dart create mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/built_in_text_widget.dart delete mode 100644 frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/rich_text_style.dart rename frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/{update_text_style_by_command_x_handler_test.dart => format_style_handler_test.dart} (91%) diff --git a/frontend/app_flowy/packages/appflowy_editor/documentation/testing.md b/frontend/app_flowy/packages/appflowy_editor/documentation/testing.md index d51583a9c5..c721510844 100644 --- a/frontend/app_flowy/packages/appflowy_editor/documentation/testing.md +++ b/frontend/app_flowy/packages/appflowy_editor/documentation/testing.md @@ -22,8 +22,8 @@ editor.insertTextNode(text); // Insert the same text, but with the heading style. editor.insertTextNode(text, attributes: { - StyleKey.subtype: StyleKey.heading, - StyleKey.heading: StyleKey.h1, + BuiltInAttributeKey.subtype: BuiltInAttributeKey.heading, + BuiltInAttributeKey.heading: BuiltInAttributeKey.h1, }); // Insert our text with the bulleted list style and the bold style. @@ -31,10 +31,10 @@ editor.insertTextNode(text, attributes: { editor.insertTextNode( '', attributes: { - StyleKey.subtype: StyleKey.bulletedList, + BuiltInAttributeKey.subtype: BuiltInAttributeKey.bulletedList, }, delta: Delta([ - TextInsert(text, {StyleKey.bold: true}), + TextInsert(text, {BuiltInAttributeKey.bold: true}), ]), ); ``` diff --git a/frontend/app_flowy/packages/appflowy_editor/example/lib/main.dart b/frontend/app_flowy/packages/appflowy_editor/example/lib/main.dart index 921628ff21..5d2f4e9ebc 100644 --- a/frontend/app_flowy/packages/appflowy_editor/example/lib/main.dart +++ b/frontend/app_flowy/packages/appflowy_editor/example/lib/main.dart @@ -21,6 +21,10 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( + localizationsDelegates: const [ + AppFlowyEditorLocalizations.delegate, + ], + supportedLocales: AppFlowyEditorLocalizations.delegate.supportedLocales, debugShowCheckedModeBanner: false, theme: ThemeData( primarySwatch: Colors.blue, @@ -40,7 +44,9 @@ class MyHomePage extends StatefulWidget { class _MyHomePageState extends State { int _pageIndex = 0; - late EditorState _editorState; + EditorState? _editorState; + bool darkMode = false; + EditorStyle _editorStyle = EditorStyle.defaultStyle(); Future? _jsonString; @override @@ -78,24 +84,29 @@ class _MyHomePageState extends State { return FutureBuilder( future: jsonString, builder: (_, snapshot) { - if (snapshot.hasData) { - _editorState = EditorState( + if (snapshot.hasData && + snapshot.connectionState == ConnectionState.done) { + _editorState ??= EditorState( document: StateTree.fromJson( Map.from( json.decode(snapshot.data!), ), ), ); - _editorState.logConfiguration + _editorState!.logConfiguration ..level = LogLevel.all ..handler = (message) { debugPrint(message); }; - return SizedBox( + _editorState!.operationStream.listen((event) { + debugPrint('Operation: ${event.toJson()}'); + }); + return Container( + color: darkMode ? Colors.black : Colors.white, width: MediaQuery.of(context).size.width, child: AppFlowyEditor( - editorState: _editorState, - editorStyle: const EditorStyle.defaultStyle(), + editorState: _editorState!, + editorStyle: _editorStyle, shortcutEvents: [ underscoreToItalicEvent, ], @@ -127,12 +138,26 @@ class _MyHomePageState extends State { onPressed: () => _switchToPage(2), ), ActionButton( - icon: const Icon(Icons.print), - onPressed: () => {_exportDocument(_editorState)}), + icon: const Icon(Icons.print), + onPressed: () => _exportDocument(_editorState!), + ), ActionButton( icon: const Icon(Icons.import_export), onPressed: () => _importDocument(), ), + ActionButton( + icon: const Icon(Icons.color_lens), + onPressed: () { + setState(() { + _editorStyle = _editorStyle.copyWith( + textStyle: darkMode + ? BuiltInTextStyle.builtIn() + : BuiltInTextStyle.builtInDarkMode(), + ); + darkMode = !darkMode; + }); + }, + ), ], ); } @@ -166,6 +191,7 @@ class _MyHomePageState extends State { void _switchToPage(int pageIndex) { if (pageIndex != _pageIndex) { setState(() { + _editorState = null; _pageIndex = pageIndex; }); } diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/appflowy_editor.dart b/frontend/app_flowy/packages/appflowy_editor/lib/appflowy_editor.dart index 60f63a66e2..282ec39da2 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/appflowy_editor.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/appflowy_editor.dart @@ -26,3 +26,5 @@ export 'src/service/input_service.dart'; export 'src/service/shortcut_event/keybinding.dart'; export 'src/service/shortcut_event/shortcut_event.dart'; export 'src/service/shortcut_event/shortcut_event_handler.dart'; +export 'src/extensions/attributes_extension.dart'; +export 'src/l10n/l10n.dart'; diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_ca.arb b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_ca.arb new file mode 100644 index 0000000000..45190fb106 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_ca.arb @@ -0,0 +1,35 @@ +{ + "@@locale": "ca", + "bold": "", + "@bold": {}, + "bulletedList": "", + "@bulletedList": {}, + "checkbox": "", + "@checkbox": {}, + "embedCode": "", + "@embedCode": {}, + "heading1": "", + "@heading1": {}, + "heading2": "", + "@heading2": {}, + "heading3": "", + "@heading3": {}, + "highlight": "", + "@highlight": {}, + "image": "", + "@image": {}, + "italic": "", + "@italic": {}, + "link": "", + "@link": {}, + "numberedList": "", + "@numberedList": {}, + "quote": "", + "@quote": {}, + "strikethrough": "", + "@strikethrough": {}, + "text": "", + "@text": {}, + "underline": "", + "@underline": {} +} \ No newline at end of file diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_de_DE.arb b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_de_DE.arb new file mode 100644 index 0000000000..d4456b452e --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_de_DE.arb @@ -0,0 +1,35 @@ +{ + "@@locale": "de-DE", + "bold": "", + "@bold": {}, + "bulletedList": "", + "@bulletedList": {}, + "checkbox": "", + "@checkbox": {}, + "embedCode": "", + "@embedCode": {}, + "heading1": "", + "@heading1": {}, + "heading2": "", + "@heading2": {}, + "heading3": "", + "@heading3": {}, + "highlight": "", + "@highlight": {}, + "image": "", + "@image": {}, + "italic": "", + "@italic": {}, + "link": "", + "@link": {}, + "numberedList": "", + "@numberedList": {}, + "quote": "", + "@quote": {}, + "strikethrough": "", + "@strikethrough": {}, + "text": "", + "@text": {}, + "underline": "", + "@underline": {} +} \ No newline at end of file diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_en.arb b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_en.arb new file mode 100644 index 0000000000..f9968ab07a --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_en.arb @@ -0,0 +1,35 @@ +{ + "@@locale": "en", + "bold": "Bold", + "@bold": {}, + "bulletedList": "Bulleted List", + "@bulletedList": {}, + "checkbox": "Checkbox", + "@checkbox": {}, + "embedCode": "Embed Code", + "@embedCode": {}, + "heading1": "H1", + "@heading1": {}, + "heading2": "H2", + "@heading2": {}, + "heading3": "H3", + "@heading3": {}, + "highlight": "Highlight", + "@highlight": {}, + "image": "Image", + "@image": {}, + "italic": "Italic", + "@italic": {}, + "link": "Link", + "@link": {}, + "numberedList": "Numbered List", + "@numberedList": {}, + "quote": "Quote", + "@quote": {}, + "strikethrough": "Strikethrough", + "@strikethrough": {}, + "text": "Text", + "@text": {}, + "underline": "Underline", + "@underline": {} +} \ No newline at end of file diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_es_VE.arb b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_es_VE.arb new file mode 100644 index 0000000000..bace9331ae --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_es_VE.arb @@ -0,0 +1,35 @@ +{ + "@@locale": "es-VE", + "bold": "", + "@bold": {}, + "bulletedList": "", + "@bulletedList": {}, + "checkbox": "", + "@checkbox": {}, + "embedCode": "", + "@embedCode": {}, + "heading1": "", + "@heading1": {}, + "heading2": "", + "@heading2": {}, + "heading3": "", + "@heading3": {}, + "highlight": "", + "@highlight": {}, + "image": "", + "@image": {}, + "italic": "", + "@italic": {}, + "link": "", + "@link": {}, + "numberedList": "", + "@numberedList": {}, + "quote": "", + "@quote": {}, + "strikethrough": "", + "@strikethrough": {}, + "text": "", + "@text": {}, + "underline": "", + "@underline": {} +} \ No newline at end of file diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_fr_CA.arb b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_fr_CA.arb new file mode 100644 index 0000000000..6875d45d72 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_fr_CA.arb @@ -0,0 +1,35 @@ +{ + "@@locale": "fr-CA", + "bold": "", + "@bold": {}, + "bulletedList": "", + "@bulletedList": {}, + "checkbox": "", + "@checkbox": {}, + "embedCode": "", + "@embedCode": {}, + "heading1": "", + "@heading1": {}, + "heading2": "", + "@heading2": {}, + "heading3": "", + "@heading3": {}, + "highlight": "", + "@highlight": {}, + "image": "", + "@image": {}, + "italic": "", + "@italic": {}, + "link": "", + "@link": {}, + "numberedList": "", + "@numberedList": {}, + "quote": "", + "@quote": {}, + "strikethrough": "", + "@strikethrough": {}, + "text": "", + "@text": {}, + "underline": "", + "@underline": {} +} \ No newline at end of file diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_fr_FR.arb b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_fr_FR.arb new file mode 100644 index 0000000000..051676b02c --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_fr_FR.arb @@ -0,0 +1,35 @@ +{ + "@@locale": "fr-FR", + "bold": "", + "@bold": {}, + "bulletedList": "", + "@bulletedList": {}, + "checkbox": "", + "@checkbox": {}, + "embedCode": "", + "@embedCode": {}, + "heading1": "", + "@heading1": {}, + "heading2": "", + "@heading2": {}, + "heading3": "", + "@heading3": {}, + "highlight": "", + "@highlight": {}, + "image": "", + "@image": {}, + "italic": "", + "@italic": {}, + "link": "", + "@link": {}, + "numberedList": "", + "@numberedList": {}, + "quote": "", + "@quote": {}, + "strikethrough": "", + "@strikethrough": {}, + "text": "", + "@text": {}, + "underline": "", + "@underline": {} +} \ No newline at end of file diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_hu_HU.arb b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_hu_HU.arb new file mode 100644 index 0000000000..8b55ed3096 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_hu_HU.arb @@ -0,0 +1,35 @@ +{ + "@@locale": "hu-HU", + "bold": "", + "@bold": {}, + "bulletedList": "", + "@bulletedList": {}, + "checkbox": "", + "@checkbox": {}, + "embedCode": "", + "@embedCode": {}, + "heading1": "", + "@heading1": {}, + "heading2": "", + "@heading2": {}, + "heading3": "", + "@heading3": {}, + "highlight": "", + "@highlight": {}, + "image": "", + "@image": {}, + "italic": "", + "@italic": {}, + "link": "", + "@link": {}, + "numberedList": "", + "@numberedList": {}, + "quote": "", + "@quote": {}, + "strikethrough": "", + "@strikethrough": {}, + "text": "", + "@text": {}, + "underline": "", + "@underline": {} +} \ No newline at end of file diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_id_ID.arb b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_id_ID.arb new file mode 100644 index 0000000000..cadebb36aa --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_id_ID.arb @@ -0,0 +1,35 @@ +{ + "@@locale": "id-ID", + "bold": "", + "@bold": {}, + "bulletedList": "", + "@bulletedList": {}, + "checkbox": "", + "@checkbox": {}, + "embedCode": "", + "@embedCode": {}, + "heading1": "", + "@heading1": {}, + "heading2": "", + "@heading2": {}, + "heading3": "", + "@heading3": {}, + "highlight": "", + "@highlight": {}, + "image": "", + "@image": {}, + "italic": "", + "@italic": {}, + "link": "", + "@link": {}, + "numberedList": "", + "@numberedList": {}, + "quote": "", + "@quote": {}, + "strikethrough": "", + "@strikethrough": {}, + "text": "", + "@text": {}, + "underline": "", + "@underline": {} +} \ No newline at end of file diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_it_IT.arb b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_it_IT.arb new file mode 100644 index 0000000000..908b80f275 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_it_IT.arb @@ -0,0 +1,35 @@ +{ + "@@locale": "it-IT", + "bold": "", + "@bold": {}, + "bulletedList": "", + "@bulletedList": {}, + "checkbox": "", + "@checkbox": {}, + "embedCode": "", + "@embedCode": {}, + "heading1": "", + "@heading1": {}, + "heading2": "", + "@heading2": {}, + "heading3": "", + "@heading3": {}, + "highlight": "", + "@highlight": {}, + "image": "", + "@image": {}, + "italic": "", + "@italic": {}, + "link": "", + "@link": {}, + "numberedList": "", + "@numberedList": {}, + "quote": "", + "@quote": {}, + "strikethrough": "", + "@strikethrough": {}, + "text": "", + "@text": {}, + "underline": "", + "@underline": {} +} \ No newline at end of file diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_ja_JP.arb b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_ja_JP.arb new file mode 100644 index 0000000000..5d49578cc3 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_ja_JP.arb @@ -0,0 +1,35 @@ +{ + "@@locale": "ja-JP", + "bold": "", + "@bold": {}, + "bulletedList": "", + "@bulletedList": {}, + "checkbox": "", + "@checkbox": {}, + "embedCode": "", + "@embedCode": {}, + "heading1": "", + "@heading1": {}, + "heading2": "", + "@heading2": {}, + "heading3": "", + "@heading3": {}, + "highlight": "", + "@highlight": {}, + "image": "", + "@image": {}, + "italic": "", + "@italic": {}, + "link": "", + "@link": {}, + "numberedList": "", + "@numberedList": {}, + "quote": "", + "@quote": {}, + "strikethrough": "", + "@strikethrough": {}, + "text": "", + "@text": {}, + "underline": "", + "@underline": {} +} \ No newline at end of file diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_pl_PL.arb b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_pl_PL.arb new file mode 100644 index 0000000000..ba97af8f26 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_pl_PL.arb @@ -0,0 +1,35 @@ +{ + "@@locale": "pl-PL", + "bold": "", + "@bold": {}, + "bulletedList": "", + "@bulletedList": {}, + "checkbox": "", + "@checkbox": {}, + "embedCode": "", + "@embedCode": {}, + "heading1": "", + "@heading1": {}, + "heading2": "", + "@heading2": {}, + "heading3": "", + "@heading3": {}, + "highlight": "", + "@highlight": {}, + "image": "", + "@image": {}, + "italic": "", + "@italic": {}, + "link": "", + "@link": {}, + "numberedList": "", + "@numberedList": {}, + "quote": "", + "@quote": {}, + "strikethrough": "", + "@strikethrough": {}, + "text": "", + "@text": {}, + "underline": "", + "@underline": {} +} \ No newline at end of file diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_pt_BR.arb b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_pt_BR.arb new file mode 100644 index 0000000000..8e9c87e0cf --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_pt_BR.arb @@ -0,0 +1,35 @@ +{ + "@@locale": "pt-BR", + "bold": "", + "@bold": {}, + "bulletedList": "", + "@bulletedList": {}, + "checkbox": "", + "@checkbox": {}, + "embedCode": "", + "@embedCode": {}, + "heading1": "", + "@heading1": {}, + "heading2": "", + "@heading2": {}, + "heading3": "", + "@heading3": {}, + "highlight": "", + "@highlight": {}, + "image": "", + "@image": {}, + "italic": "", + "@italic": {}, + "link": "", + "@link": {}, + "numberedList": "", + "@numberedList": {}, + "quote": "", + "@quote": {}, + "strikethrough": "", + "@strikethrough": {}, + "text": "", + "@text": {}, + "underline": "", + "@underline": {} +} \ No newline at end of file diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_pt_PT.arb b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_pt_PT.arb new file mode 100644 index 0000000000..4e9187f282 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_pt_PT.arb @@ -0,0 +1,35 @@ +{ + "@@locale": "pt-PT", + "bold": "", + "@bold": {}, + "bulletedList": "", + "@bulletedList": {}, + "checkbox": "", + "@checkbox": {}, + "embedCode": "", + "@embedCode": {}, + "heading1": "", + "@heading1": {}, + "heading2": "", + "@heading2": {}, + "heading3": "", + "@heading3": {}, + "highlight": "", + "@highlight": {}, + "image": "", + "@image": {}, + "italic": "", + "@italic": {}, + "link": "", + "@link": {}, + "numberedList": "", + "@numberedList": {}, + "quote": "", + "@quote": {}, + "strikethrough": "", + "@strikethrough": {}, + "text": "", + "@text": {}, + "underline": "", + "@underline": {} +} \ No newline at end of file diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_ru_RU.arb b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_ru_RU.arb new file mode 100644 index 0000000000..5a346cf027 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_ru_RU.arb @@ -0,0 +1,35 @@ +{ + "@@locale": "ru-RU", + "bold": "", + "@bold": {}, + "bulletedList": "", + "@bulletedList": {}, + "checkbox": "", + "@checkbox": {}, + "embedCode": "", + "@embedCode": {}, + "heading1": "", + "@heading1": {}, + "heading2": "", + "@heading2": {}, + "heading3": "", + "@heading3": {}, + "highlight": "", + "@highlight": {}, + "image": "", + "@image": {}, + "italic": "", + "@italic": {}, + "link": "", + "@link": {}, + "numberedList": "", + "@numberedList": {}, + "quote": "", + "@quote": {}, + "strikethrough": "", + "@strikethrough": {}, + "text": "", + "@text": {}, + "underline": "", + "@underline": {} +} \ No newline at end of file diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_tr_TR.arb b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_tr_TR.arb new file mode 100644 index 0000000000..16887cd1cf --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_tr_TR.arb @@ -0,0 +1,35 @@ +{ + "@@locale": "tr-TR", + "bold": "", + "@bold": {}, + "bulletedList": "", + "@bulletedList": {}, + "checkbox": "", + "@checkbox": {}, + "embedCode": "", + "@embedCode": {}, + "heading1": "", + "@heading1": {}, + "heading2": "", + "@heading2": {}, + "heading3": "", + "@heading3": {}, + "highlight": "", + "@highlight": {}, + "image": "", + "@image": {}, + "italic": "", + "@italic": {}, + "link": "", + "@link": {}, + "numberedList": "", + "@numberedList": {}, + "quote": "", + "@quote": {}, + "strikethrough": "", + "@strikethrough": {}, + "text": "", + "@text": {}, + "underline": "", + "@underline": {} +} \ No newline at end of file diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_zh_CN.arb b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_zh_CN.arb new file mode 100644 index 0000000000..0ebe83fa83 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_zh_CN.arb @@ -0,0 +1,35 @@ +{ + "@@locale": "zh-CN", + "bold": "加粗", + "@bold": {}, + "bulletedList": "无序列表", + "@bulletedList": {}, + "checkbox": "复选框", + "@checkbox": {}, + "embedCode": "内嵌代码", + "@embedCode": {}, + "heading1": "标题 1", + "@heading1": {}, + "heading2": "标题 2", + "@heading2": {}, + "heading3": "标题 3", + "@heading3": {}, + "highlight": "高亮", + "@highlight": {}, + "image": "图片", + "@image": {}, + "italic": "斜体", + "@italic": {}, + "link": "链接", + "@link": {}, + "numberedList": "有序列表", + "@numberedList": {}, + "quote": "引用", + "@quote": {}, + "strikethrough": "删除线", + "@strikethrough": {}, + "text": "文字", + "@text": {}, + "underline": "下划线", + "@underline": {} +} \ No newline at end of file diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_zh_TW.arb b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_zh_TW.arb new file mode 100644 index 0000000000..4d2778a608 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_zh_TW.arb @@ -0,0 +1,35 @@ +{ + "@@locale": "zh-TW", + "bold": "", + "@bold": {}, + "bulletedList": "", + "@bulletedList": {}, + "checkbox": "", + "@checkbox": {}, + "embedCode": "", + "@embedCode": {}, + "heading1": "", + "@heading1": {}, + "heading2": "", + "@heading2": {}, + "heading3": "", + "@heading3": {}, + "highlight": "", + "@highlight": {}, + "image": "", + "@image": {}, + "italic": "", + "@italic": {}, + "link": "", + "@link": {}, + "numberedList": "", + "@numberedList": {}, + "quote": "", + "@quote": {}, + "strikethrough": "", + "@strikethrough": {}, + "text": "", + "@text": {}, + "underline": "", + "@underline": {} +} \ No newline at end of file diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/document/built_in_attribute_keys.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/document/built_in_attribute_keys.dart new file mode 100644 index 0000000000..0ed5440a9a --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/document/built_in_attribute_keys.dart @@ -0,0 +1,59 @@ +/// +/// Supported partial rendering types: +/// bold, italic, +/// underline, strikethrough, +/// color, font, +/// href +/// +/// Supported global rendering types: +/// heading: h1, h2, h3, h4, h5, h6, ... +/// block quote, +/// list: ordered list, bulleted list, +/// code block +/// +class BuiltInAttributeKey { + static String bold = 'bold'; + static String italic = 'italic'; + static String underline = 'underline'; + static String strikethrough = 'strikethrough'; + static String color = 'color'; + static String backgroundColor = 'backgroundColor'; + static String font = 'font'; + static String href = 'href'; + + static String subtype = 'subtype'; + static String heading = 'heading'; + static String h1 = 'h1'; + static String h2 = 'h2'; + static String h3 = 'h3'; + static String h4 = 'h4'; + static String h5 = 'h5'; + static String h6 = 'h6'; + + static String bulletedList = 'bulleted-list'; + static String numberList = 'number-list'; + + static String quote = 'quote'; + static String checkbox = 'checkbox'; + static String code = 'code'; + static String number = 'number'; + + static List partialStyleKeys = [ + BuiltInAttributeKey.bold, + BuiltInAttributeKey.italic, + BuiltInAttributeKey.underline, + BuiltInAttributeKey.strikethrough, + BuiltInAttributeKey.backgroundColor, + BuiltInAttributeKey.href, + BuiltInAttributeKey.code, + ]; + + static List globalStyleKeys = [ + BuiltInAttributeKey.subtype, + BuiltInAttributeKey.heading, + BuiltInAttributeKey.checkbox, + BuiltInAttributeKey.bulletedList, + BuiltInAttributeKey.numberList, + BuiltInAttributeKey.quote, + ]; +} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/document/node.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/document/node.dart index 909e7dd494..bfc40c4d32 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/document/node.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/document/node.dart @@ -24,6 +24,13 @@ class Node extends ChangeNotifier with LinkedListEntry { return null; } + String get id { + if (subtype != null) { + return '$type/$subtype'; + } + return type; + } + Path get path => _path(); Attributes get attributes => _attributes; diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/editor_state.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/editor_state.dart index 2750af07a6..4f2ca39a84 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/editor_state.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/editor_state.dart @@ -60,7 +60,11 @@ class EditorState { List selectionMenuItems = []; /// Stores the editor style. - EditorStyle editorStyle = const EditorStyle.defaultStyle(); + EditorStyle editorStyle = EditorStyle.defaultStyle(); + + /// Operation stream. + Stream get operationStream => _observer.stream; + final StreamController _observer = StreamController.broadcast(); final UndoManager undoManager = UndoManager(); Selection? _cursorSelection; @@ -72,6 +76,15 @@ class EditorState { return _cursorSelection; } + RenderBox? get renderBox { + final renderObject = + service.scrollServiceKey.currentContext?.findRenderObject(); + if (renderObject != null && renderObject is RenderBox) { + return renderObject; + } + return null; + } + updateCursorSelection(Selection? cursorSelection, [CursorUpdateReason reason = CursorUpdateReason.others]) { // broadcast to other users here @@ -151,5 +164,6 @@ class EditorState { } else if (op is TextEditOperation) { document.textEdit(op.path, op.delta); } + _observer.add(op); } } diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/extensions/attributes_extension.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/extensions/attributes_extension.dart new file mode 100644 index 0000000000..c80753b217 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/extensions/attributes_extension.dart @@ -0,0 +1,93 @@ +import 'package:appflowy_editor/src/document/attributes.dart'; +import 'package:appflowy_editor/src/document/built_in_attribute_keys.dart'; +import 'package:flutter/material.dart'; + +extension NodeAttributesExtensions on Attributes { + String? get heading { + if (containsKey(BuiltInAttributeKey.subtype) && + containsKey(BuiltInAttributeKey.heading) && + this[BuiltInAttributeKey.subtype] == BuiltInAttributeKey.heading && + this[BuiltInAttributeKey.heading] is String) { + return this[BuiltInAttributeKey.heading]; + } + return null; + } + + bool get quote { + return containsKey(BuiltInAttributeKey.quote); + } + + int? get number { + if (containsKey(BuiltInAttributeKey.number) && + this[BuiltInAttributeKey.number] is int) { + return this[BuiltInAttributeKey.number]; + } + return null; + } + + bool get code { + if (containsKey(BuiltInAttributeKey.code) && + this[BuiltInAttributeKey.code] == true) { + return this[BuiltInAttributeKey.code]; + } + return false; + } + + bool get check { + if (containsKey(BuiltInAttributeKey.checkbox) && + this[BuiltInAttributeKey.checkbox] is bool) { + return this[BuiltInAttributeKey.checkbox]; + } + return false; + } +} + +extension DeltaAttributesExtensions on Attributes { + bool get bold { + return (containsKey(BuiltInAttributeKey.bold) && + this[BuiltInAttributeKey.bold] == true); + } + + bool get italic { + return (containsKey(BuiltInAttributeKey.italic) && + this[BuiltInAttributeKey.italic] == true); + } + + bool get underline { + return (containsKey(BuiltInAttributeKey.underline) && + this[BuiltInAttributeKey.underline] == true); + } + + bool get strikethrough { + return (containsKey(BuiltInAttributeKey.strikethrough) && + this[BuiltInAttributeKey.strikethrough] == true); + } + + Color? get color { + if (containsKey(BuiltInAttributeKey.color) && + this[BuiltInAttributeKey.color] is String) { + return Color( + int.parse(this[BuiltInAttributeKey.color]), + ); + } + return null; + } + + Color? get backgroundColor { + if (containsKey(BuiltInAttributeKey.backgroundColor) && + this[BuiltInAttributeKey.backgroundColor] is String) { + return Color( + int.parse(this[BuiltInAttributeKey.backgroundColor]), + ); + } + return null; + } + + String? get href { + if (containsKey(BuiltInAttributeKey.href) && + this[BuiltInAttributeKey.href] is String) { + return this[BuiltInAttributeKey.href]; + } + return null; + } +} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/extensions/text_node_extensions.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/extensions/text_node_extensions.dart index a07529cfdf..352cb69f97 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/extensions/text_node_extensions.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/extensions/text_node_extensions.dart @@ -3,7 +3,7 @@ import 'package:appflowy_editor/src/document/path.dart'; import 'package:appflowy_editor/src/document/position.dart'; import 'package:appflowy_editor/src/document/selection.dart'; import 'package:appflowy_editor/src/document/text_delta.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; +import 'package:appflowy_editor/src/document/built_in_attribute_keys.dart'; extension TextNodeExtension on TextNode { dynamic getAttributeInSelection(Selection selection, String styleKey) { @@ -29,27 +29,28 @@ extension TextNodeExtension on TextNode { } bool allSatisfyLinkInSelection(Selection selection) => - allSatisfyInSelection(selection, StyleKey.href, (value) { + allSatisfyInSelection(selection, BuiltInAttributeKey.href, (value) { return value != null; }); bool allSatisfyBoldInSelection(Selection selection) => - allSatisfyInSelection(selection, StyleKey.bold, (value) { + allSatisfyInSelection(selection, BuiltInAttributeKey.bold, (value) { return value == true; }); bool allSatisfyItalicInSelection(Selection selection) => - allSatisfyInSelection(selection, StyleKey.italic, (value) { + allSatisfyInSelection(selection, BuiltInAttributeKey.italic, (value) { return value == true; }); bool allSatisfyUnderlineInSelection(Selection selection) => - allSatisfyInSelection(selection, StyleKey.underline, (value) { + allSatisfyInSelection(selection, BuiltInAttributeKey.underline, (value) { return value == true; }); bool allSatisfyStrikethroughInSelection(Selection selection) => - allSatisfyInSelection(selection, StyleKey.strikethrough, (value) { + allSatisfyInSelection(selection, BuiltInAttributeKey.strikethrough, + (value) { return value == true; }); @@ -58,11 +59,11 @@ extension TextNodeExtension on TextNode { String styleKey, bool Function(dynamic value) test, ) { - if (StyleKey.globalStyleKeys.contains(styleKey)) { + if (BuiltInAttributeKey.globalStyleKeys.contains(styleKey)) { if (attributes.containsKey(styleKey)) { return test(attributes[styleKey]); } - } else if (StyleKey.partialStyleKeys.contains(styleKey)) { + } else if (BuiltInAttributeKey.partialStyleKeys.contains(styleKey)) { final ops = delta.whereType(); final startOffset = selection.isBackward ? selection.start.offset : selection.end.offset; @@ -120,28 +121,28 @@ extension TextNodeExtension on TextNode { extension TextNodesExtension on List { bool allSatisfyBoldInSelection(Selection selection) => allSatisfyInSelection( selection, - StyleKey.bold, + BuiltInAttributeKey.bold, (value) => value == true, ); bool allSatisfyItalicInSelection(Selection selection) => allSatisfyInSelection( selection, - StyleKey.italic, + BuiltInAttributeKey.italic, (value) => value == true, ); bool allSatisfyUnderlineInSelection(Selection selection) => allSatisfyInSelection( selection, - StyleKey.underline, + BuiltInAttributeKey.underline, (value) => value == true, ); bool allSatisfyStrikethroughInSelection(Selection selection) => allSatisfyInSelection( selection, - StyleKey.strikethrough, + BuiltInAttributeKey.strikethrough, (value) => value == true, ); diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/extensions/text_style_extension.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/extensions/text_style_extension.dart new file mode 100644 index 0000000000..5e2828bf07 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/extensions/text_style_extension.dart @@ -0,0 +1,73 @@ +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; + +extension TextSpanExtensions on TextSpan { + TextSpan copyWith({ + String? text, + TextStyle? style, + List? children, + GestureRecognizer? recognizer, + String? semanticsLabel, + }) { + return TextSpan( + text: text ?? this.text, + style: style ?? this.style, + children: children ?? this.children, + recognizer: recognizer ?? this.recognizer, + semanticsLabel: semanticsLabel ?? this.semanticsLabel, + ); + } + + TextSpan updateTextStyle(TextStyle? other) { + if (other == null) { + return this; + } + return copyWith( + style: style?.combine(other), + children: children?.map((child) { + if (child is TextSpan) { + return child.updateTextStyle(other); + } + return child; + }).toList(growable: false), + ); + } +} + +extension TextStyleExtensions on TextStyle { + TextStyle combine(TextStyle? other) { + if (other == null) { + return this; + } + if (!other.inherit) { + return other; + } + + return copyWith( + color: other.color, + backgroundColor: other.backgroundColor, + fontSize: other.fontSize, + fontWeight: other.fontWeight, + fontStyle: other.fontStyle, + letterSpacing: other.letterSpacing, + wordSpacing: other.wordSpacing, + textBaseline: other.textBaseline, + height: other.height, + leadingDistribution: other.leadingDistribution, + locale: other.locale, + foreground: other.foreground, + background: other.background, + shadows: other.shadows, + fontFeatures: other.fontFeatures, + decoration: TextDecoration.combine([ + if (decoration != null) decoration!, + if (other.decoration != null) other.decoration!, + ]), + decorationColor: other.decorationColor, + decorationStyle: other.decorationStyle, + decorationThickness: other.decorationThickness, + fontFamilyFallback: other.fontFamilyFallback, + overflow: other.overflow, + ); + } +} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/infra/html_converter.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/infra/html_converter.dart index fa49ee2e54..6e71fc007b 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/infra/html_converter.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/infra/html_converter.dart @@ -4,11 +4,11 @@ import 'dart:ui'; import 'package:appflowy_editor/src/document/attributes.dart'; import 'package:appflowy_editor/src/document/node.dart'; import 'package:appflowy_editor/src/document/text_delta.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; import 'package:appflowy_editor/src/extensions/color_extension.dart'; import 'package:flutter/material.dart'; import 'package:html/parser.dart' show parse; import 'package:html/dom.dart' as html; +import 'package:appflowy_editor/src/document/built_in_attribute_keys.dart'; class HTMLTag { static const h1 = "h1"; @@ -99,7 +99,8 @@ class HTMLToNodesConverter { for (final child in element.nodes.toList()) { if (child is html.Element) { - result.addAll(_handleElement(child, {"subtype": StyleKey.quote})); + result.addAll( + _handleElement(child, {"subtype": BuiltInAttributeKey.quote})); } } @@ -174,11 +175,11 @@ class HTMLToNodesConverter { final fontWeightStr = cssMap["font-weight"]; if (fontWeightStr != null) { if (fontWeightStr == "bold") { - attrs[StyleKey.bold] = true; + attrs[BuiltInAttributeKey.bold] = true; } else { int? weight = int.tryParse(fontWeightStr); if (weight != null && weight > 500) { - attrs[StyleKey.bold] = true; + attrs[BuiltInAttributeKey.bold] = true; } } } @@ -193,12 +194,12 @@ class HTMLToNodesConverter { ? null : ColorExtension.tryFromRgbaString(backgroundColorStr); if (backgroundColor != null) { - attrs[StyleKey.backgroundColor] = + attrs[BuiltInAttributeKey.backgroundColor] = '0x${backgroundColor.value.toRadixString(16)}'; } if (cssMap["font-style"] == "italic") { - attrs[StyleKey.italic] = true; + attrs[BuiltInAttributeKey.italic] = true; } return attrs.isEmpty ? null : attrs; @@ -208,9 +209,9 @@ class HTMLToNodesConverter { final decorations = decorationStr.split(" "); for (final d in decorations) { if (d == "line-through") { - attrs[StyleKey.strikethrough] = true; + attrs[BuiltInAttributeKey.strikethrough] = true; } else if (d == "underline") { - attrs[StyleKey.underline] = true; + attrs[BuiltInAttributeKey.underline] = true; } } } @@ -228,13 +229,13 @@ class HTMLToNodesConverter { delta.insert(element.text, attributes); } else if (element.localName == HTMLTag.strong || element.localName == HTMLTag.bold) { - delta.insert(element.text, {StyleKey.bold: true}); + delta.insert(element.text, {BuiltInAttributeKey.bold: true}); } else if (element.localName == HTMLTag.underline) { - delta.insert(element.text, {StyleKey.underline: true}); + delta.insert(element.text, {BuiltInAttributeKey.underline: true}); } else if (element.localName == HTMLTag.italic) { - delta.insert(element.text, {StyleKey.italic: true}); + delta.insert(element.text, {BuiltInAttributeKey.italic: true}); } else if (element.localName == HTMLTag.del) { - delta.insert(element.text, {StyleKey.strikethrough: true}); + delta.insert(element.text, {BuiltInAttributeKey.strikethrough: true}); } else { delta.insert(element.text); } @@ -273,7 +274,7 @@ class HTMLToNodesConverter { final textNode = TextNode(type: "text", delta: delta, attributes: attributes); if (isCheckbox) { - textNode.attributes["subtype"] = StyleKey.checkbox; + textNode.attributes["subtype"] = BuiltInAttributeKey.checkbox; textNode.attributes["checkbox"] = checked; } return textNode; @@ -291,8 +292,8 @@ class HTMLToNodesConverter { List _handleUnorderedList(html.Element element) { final result = []; for (var child in element.children) { - result.addAll( - _handleListElement(child, {"subtype": StyleKey.bulletedList})); + result.addAll(_handleListElement( + child, {"subtype": BuiltInAttributeKey.bulletedList})); } return result; } @@ -302,7 +303,7 @@ class HTMLToNodesConverter { for (var i = 0; i < element.children.length; i++) { final child = element.children[i]; result.addAll(_handleListElement( - child, {"subtype": StyleKey.numberList, "number": i + 1})); + child, {"subtype": BuiltInAttributeKey.numberList, "number": i + 1})); } return result; } @@ -401,7 +402,8 @@ class NodesToHTMLConverter { _addElement(TextNode textNode, html.Element element) { if (element.localName == HTMLTag.list) { - final isNumbered = textNode.attributes["subtype"] == StyleKey.numberList; + final isNumbered = + textNode.attributes["subtype"] == BuiltInAttributeKey.numberList; _stashListContainer ??= html.Element.tag( isNumbered ? HTMLTag.orderedList : HTMLTag.unorderedList); _stashListContainer?.append(element); @@ -433,10 +435,10 @@ class NodesToHTMLConverter { String _textDecorationsFromAttributes(Attributes attributes) { var textDecoration = []; - if (attributes[StyleKey.strikethrough] == true) { + if (attributes[BuiltInAttributeKey.strikethrough] == true) { textDecoration.add("line-through"); } - if (attributes[StyleKey.underline] == true) { + if (attributes[BuiltInAttributeKey.underline] == true) { textDecoration.add("underline"); } @@ -445,19 +447,19 @@ class NodesToHTMLConverter { String _attributesToCssStyle(Map attributes) { final cssMap = {}; - if (attributes[StyleKey.backgroundColor] != null) { + if (attributes[BuiltInAttributeKey.backgroundColor] != null) { final color = Color( - int.parse(attributes[StyleKey.backgroundColor]), + int.parse(attributes[BuiltInAttributeKey.backgroundColor]), ); cssMap["background-color"] = color.toRgbaString(); } - if (attributes[StyleKey.color] != null) { + if (attributes[BuiltInAttributeKey.color] != null) { final color = Color( - int.parse(attributes[StyleKey.color]), + int.parse(attributes[BuiltInAttributeKey.color]), ); cssMap["color"] = color.toRgbaString(); } - if (attributes[StyleKey.bold] == true) { + if (attributes[BuiltInAttributeKey.bold] == true) { cssMap["font-weight"] = "bold"; } @@ -466,7 +468,7 @@ class NodesToHTMLConverter { cssMap["text-decoration"] = textDecoration; } - if (attributes[StyleKey.italic] == true) { + if (attributes[BuiltInAttributeKey.italic] == true) { cssMap["font-style"] = "italic"; } return _cssMapToCssStyle(cssMap); @@ -507,23 +509,24 @@ class NodesToHTMLConverter { final childNodes = []; String tagName = HTMLTag.paragraph; - if (subType == StyleKey.bulletedList || subType == StyleKey.numberList) { + if (subType == BuiltInAttributeKey.bulletedList || + subType == BuiltInAttributeKey.numberList) { tagName = HTMLTag.list; - } else if (subType == StyleKey.checkbox) { + } else if (subType == BuiltInAttributeKey.checkbox) { final node = html.Element.html(''); if (checked != null && checked) { node.attributes["checked"] = "true"; } childNodes.add(node); - } else if (subType == StyleKey.heading) { - if (heading == StyleKey.h1) { + } else if (subType == BuiltInAttributeKey.heading) { + if (heading == BuiltInAttributeKey.h1) { tagName = HTMLTag.h1; - } else if (heading == StyleKey.h2) { + } else if (heading == BuiltInAttributeKey.h2) { tagName = HTMLTag.h2; - } else if (heading == StyleKey.h3) { + } else if (heading == BuiltInAttributeKey.h3) { tagName = HTMLTag.h3; } - } else if (subType == StyleKey.quote) { + } else if (subType == BuiltInAttributeKey.quote) { tagName = HTMLTag.blockQuote; } @@ -531,22 +534,23 @@ class NodesToHTMLConverter { if (op is TextInsert) { final attributes = op.attributes; if (attributes != null) { - if (attributes.length == 1 && attributes[StyleKey.bold] == true) { + if (attributes.length == 1 && + attributes[BuiltInAttributeKey.bold] == true) { final strong = html.Element.tag(HTMLTag.strong); strong.append(html.Text(op.content)); childNodes.add(strong); } else if (attributes.length == 1 && - attributes[StyleKey.underline] == true) { + attributes[BuiltInAttributeKey.underline] == true) { final strong = html.Element.tag(HTMLTag.underline); strong.append(html.Text(op.content)); childNodes.add(strong); } else if (attributes.length == 1 && - attributes[StyleKey.italic] == true) { + attributes[BuiltInAttributeKey.italic] == true) { final strong = html.Element.tag(HTMLTag.italic); strong.append(html.Text(op.content)); childNodes.add(strong); } else if (attributes.length == 1 && - attributes[StyleKey.strikethrough] == true) { + attributes[BuiltInAttributeKey.strikethrough] == true) { final strong = html.Element.tag(HTMLTag.del); strong.append(html.Text(op.content)); childNodes.add(strong); diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_all.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_all.dart new file mode 100644 index 0000000000..1dc2273626 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_all.dart @@ -0,0 +1,126 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that looks up messages for specific locales by +// delegating to the appropriate library. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:implementation_imports, file_names, unnecessary_new +// ignore_for_file:unnecessary_brace_in_string_interps, directives_ordering +// ignore_for_file:argument_type_not_assignable, invalid_assignment +// ignore_for_file:prefer_single_quotes, prefer_generic_function_type_aliases +// ignore_for_file:comment_references + +import 'dart:async'; + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; +import 'package:intl/src/intl_helpers.dart'; + +import 'messages_ca.dart' as messages_ca; +import 'messages_de-DE.dart' as messages_de_de; +import 'messages_en.dart' as messages_en; +import 'messages_es-VE.dart' as messages_es_ve; +import 'messages_fr-CA.dart' as messages_fr_ca; +import 'messages_fr-FR.dart' as messages_fr_fr; +import 'messages_hu-HU.dart' as messages_hu_hu; +import 'messages_id-ID.dart' as messages_id_id; +import 'messages_it-IT.dart' as messages_it_it; +import 'messages_ja-JP.dart' as messages_ja_jp; +import 'messages_pl-PL.dart' as messages_pl_pl; +import 'messages_pt-BR.dart' as messages_pt_br; +import 'messages_pt-PT.dart' as messages_pt_pt; +import 'messages_ru-RU.dart' as messages_ru_ru; +import 'messages_tr-TR.dart' as messages_tr_tr; +import 'messages_zh-CN.dart' as messages_zh_cn; +import 'messages_zh-TW.dart' as messages_zh_tw; + +typedef Future LibraryLoader(); +Map _deferredLibraries = { + 'ca': () => new Future.value(null), + 'de_DE': () => new Future.value(null), + 'en': () => new Future.value(null), + 'es_VE': () => new Future.value(null), + 'fr_CA': () => new Future.value(null), + 'fr_FR': () => new Future.value(null), + 'hu_HU': () => new Future.value(null), + 'id_ID': () => new Future.value(null), + 'it_IT': () => new Future.value(null), + 'ja_JP': () => new Future.value(null), + 'pl_PL': () => new Future.value(null), + 'pt_BR': () => new Future.value(null), + 'pt_PT': () => new Future.value(null), + 'ru_RU': () => new Future.value(null), + 'tr_TR': () => new Future.value(null), + 'zh_CN': () => new Future.value(null), + 'zh_TW': () => new Future.value(null), +}; + +MessageLookupByLibrary? _findExact(String localeName) { + switch (localeName) { + case 'ca': + return messages_ca.messages; + case 'de_DE': + return messages_de_de.messages; + case 'en': + return messages_en.messages; + case 'es_VE': + return messages_es_ve.messages; + case 'fr_CA': + return messages_fr_ca.messages; + case 'fr_FR': + return messages_fr_fr.messages; + case 'hu_HU': + return messages_hu_hu.messages; + case 'id_ID': + return messages_id_id.messages; + case 'it_IT': + return messages_it_it.messages; + case 'ja_JP': + return messages_ja_jp.messages; + case 'pl_PL': + return messages_pl_pl.messages; + case 'pt_BR': + return messages_pt_br.messages; + case 'pt_PT': + return messages_pt_pt.messages; + case 'ru_RU': + return messages_ru_ru.messages; + case 'tr_TR': + return messages_tr_tr.messages; + case 'zh_CN': + return messages_zh_cn.messages; + case 'zh_TW': + return messages_zh_tw.messages; + default: + return null; + } +} + +/// User programs should call this before using [localeName] for messages. +Future initializeMessages(String localeName) async { + var availableLocale = Intl.verifiedLocale( + localeName, (locale) => _deferredLibraries[locale] != null, + onFailure: (_) => null); + if (availableLocale == null) { + return new Future.value(false); + } + var lib = _deferredLibraries[availableLocale]; + await (lib == null ? new Future.value(false) : lib()); + initializeInternalMessageLookup(() => new CompositeMessageLookup()); + messageLookup.addLocale(availableLocale, _findGeneratedMessagesFor); + return new Future.value(true); +} + +bool _messagesExistFor(String locale) { + try { + return _findExact(locale) != null; + } catch (e) { + return false; + } +} + +MessageLookupByLibrary? _findGeneratedMessagesFor(String locale) { + var actualLocale = + Intl.verifiedLocale(locale, _messagesExistFor, onFailure: (_) => null); + if (actualLocale == null) return null; + return _findExact(actualLocale); +} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_ca.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_ca.dart new file mode 100644 index 0000000000..10c178027b --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_ca.dart @@ -0,0 +1,42 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a ca locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'ca'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "bold": MessageLookupByLibrary.simpleMessage(""), + "bulletedList": MessageLookupByLibrary.simpleMessage(""), + "checkbox": MessageLookupByLibrary.simpleMessage(""), + "embedCode": MessageLookupByLibrary.simpleMessage(""), + "heading1": MessageLookupByLibrary.simpleMessage(""), + "heading2": MessageLookupByLibrary.simpleMessage(""), + "heading3": MessageLookupByLibrary.simpleMessage(""), + "highlight": MessageLookupByLibrary.simpleMessage(""), + "image": MessageLookupByLibrary.simpleMessage(""), + "italic": MessageLookupByLibrary.simpleMessage(""), + "link": MessageLookupByLibrary.simpleMessage(""), + "numberedList": MessageLookupByLibrary.simpleMessage(""), + "quote": MessageLookupByLibrary.simpleMessage(""), + "strikethrough": MessageLookupByLibrary.simpleMessage(""), + "text": MessageLookupByLibrary.simpleMessage(""), + "underline": MessageLookupByLibrary.simpleMessage("") + }; +} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_de-DE.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_de-DE.dart new file mode 100644 index 0000000000..a1aaebcddb --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_de-DE.dart @@ -0,0 +1,42 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a de_DE locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'de_DE'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "bold": MessageLookupByLibrary.simpleMessage(""), + "bulletedList": MessageLookupByLibrary.simpleMessage(""), + "checkbox": MessageLookupByLibrary.simpleMessage(""), + "embedCode": MessageLookupByLibrary.simpleMessage(""), + "heading1": MessageLookupByLibrary.simpleMessage(""), + "heading2": MessageLookupByLibrary.simpleMessage(""), + "heading3": MessageLookupByLibrary.simpleMessage(""), + "highlight": MessageLookupByLibrary.simpleMessage(""), + "image": MessageLookupByLibrary.simpleMessage(""), + "italic": MessageLookupByLibrary.simpleMessage(""), + "link": MessageLookupByLibrary.simpleMessage(""), + "numberedList": MessageLookupByLibrary.simpleMessage(""), + "quote": MessageLookupByLibrary.simpleMessage(""), + "strikethrough": MessageLookupByLibrary.simpleMessage(""), + "text": MessageLookupByLibrary.simpleMessage(""), + "underline": MessageLookupByLibrary.simpleMessage("") + }; +} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_en.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_en.dart new file mode 100644 index 0000000000..0a834ae7eb --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_en.dart @@ -0,0 +1,42 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a en locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'en'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "bold": MessageLookupByLibrary.simpleMessage("Bold"), + "bulletedList": MessageLookupByLibrary.simpleMessage("Bulleted List"), + "checkbox": MessageLookupByLibrary.simpleMessage("Checkbox"), + "embedCode": MessageLookupByLibrary.simpleMessage("Embed Code"), + "heading1": MessageLookupByLibrary.simpleMessage("H1"), + "heading2": MessageLookupByLibrary.simpleMessage("H2"), + "heading3": MessageLookupByLibrary.simpleMessage("H3"), + "highlight": MessageLookupByLibrary.simpleMessage("Highlight"), + "image": MessageLookupByLibrary.simpleMessage("Image"), + "italic": MessageLookupByLibrary.simpleMessage("Italic"), + "link": MessageLookupByLibrary.simpleMessage("Link"), + "numberedList": MessageLookupByLibrary.simpleMessage("Numbered List"), + "quote": MessageLookupByLibrary.simpleMessage("Quote"), + "strikethrough": MessageLookupByLibrary.simpleMessage("Strikethrough"), + "text": MessageLookupByLibrary.simpleMessage("Text"), + "underline": MessageLookupByLibrary.simpleMessage("Underline") + }; +} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_es-VE.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_es-VE.dart new file mode 100644 index 0000000000..d5b4cb5b06 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_es-VE.dart @@ -0,0 +1,42 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a es_VE locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'es_VE'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "bold": MessageLookupByLibrary.simpleMessage(""), + "bulletedList": MessageLookupByLibrary.simpleMessage(""), + "checkbox": MessageLookupByLibrary.simpleMessage(""), + "embedCode": MessageLookupByLibrary.simpleMessage(""), + "heading1": MessageLookupByLibrary.simpleMessage(""), + "heading2": MessageLookupByLibrary.simpleMessage(""), + "heading3": MessageLookupByLibrary.simpleMessage(""), + "highlight": MessageLookupByLibrary.simpleMessage(""), + "image": MessageLookupByLibrary.simpleMessage(""), + "italic": MessageLookupByLibrary.simpleMessage(""), + "link": MessageLookupByLibrary.simpleMessage(""), + "numberedList": MessageLookupByLibrary.simpleMessage(""), + "quote": MessageLookupByLibrary.simpleMessage(""), + "strikethrough": MessageLookupByLibrary.simpleMessage(""), + "text": MessageLookupByLibrary.simpleMessage(""), + "underline": MessageLookupByLibrary.simpleMessage("") + }; +} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_fr-CA.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_fr-CA.dart new file mode 100644 index 0000000000..7dd3517ac5 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_fr-CA.dart @@ -0,0 +1,42 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a fr_CA locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'fr_CA'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "bold": MessageLookupByLibrary.simpleMessage(""), + "bulletedList": MessageLookupByLibrary.simpleMessage(""), + "checkbox": MessageLookupByLibrary.simpleMessage(""), + "embedCode": MessageLookupByLibrary.simpleMessage(""), + "heading1": MessageLookupByLibrary.simpleMessage(""), + "heading2": MessageLookupByLibrary.simpleMessage(""), + "heading3": MessageLookupByLibrary.simpleMessage(""), + "highlight": MessageLookupByLibrary.simpleMessage(""), + "image": MessageLookupByLibrary.simpleMessage(""), + "italic": MessageLookupByLibrary.simpleMessage(""), + "link": MessageLookupByLibrary.simpleMessage(""), + "numberedList": MessageLookupByLibrary.simpleMessage(""), + "quote": MessageLookupByLibrary.simpleMessage(""), + "strikethrough": MessageLookupByLibrary.simpleMessage(""), + "text": MessageLookupByLibrary.simpleMessage(""), + "underline": MessageLookupByLibrary.simpleMessage("") + }; +} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_fr-FR.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_fr-FR.dart new file mode 100644 index 0000000000..dbe21e0e02 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_fr-FR.dart @@ -0,0 +1,42 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a fr_FR locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'fr_FR'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "bold": MessageLookupByLibrary.simpleMessage(""), + "bulletedList": MessageLookupByLibrary.simpleMessage(""), + "checkbox": MessageLookupByLibrary.simpleMessage(""), + "embedCode": MessageLookupByLibrary.simpleMessage(""), + "heading1": MessageLookupByLibrary.simpleMessage(""), + "heading2": MessageLookupByLibrary.simpleMessage(""), + "heading3": MessageLookupByLibrary.simpleMessage(""), + "highlight": MessageLookupByLibrary.simpleMessage(""), + "image": MessageLookupByLibrary.simpleMessage(""), + "italic": MessageLookupByLibrary.simpleMessage(""), + "link": MessageLookupByLibrary.simpleMessage(""), + "numberedList": MessageLookupByLibrary.simpleMessage(""), + "quote": MessageLookupByLibrary.simpleMessage(""), + "strikethrough": MessageLookupByLibrary.simpleMessage(""), + "text": MessageLookupByLibrary.simpleMessage(""), + "underline": MessageLookupByLibrary.simpleMessage("") + }; +} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_hu-HU.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_hu-HU.dart new file mode 100644 index 0000000000..ac9acad543 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_hu-HU.dart @@ -0,0 +1,42 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a hu_HU locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'hu_HU'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "bold": MessageLookupByLibrary.simpleMessage(""), + "bulletedList": MessageLookupByLibrary.simpleMessage(""), + "checkbox": MessageLookupByLibrary.simpleMessage(""), + "embedCode": MessageLookupByLibrary.simpleMessage(""), + "heading1": MessageLookupByLibrary.simpleMessage(""), + "heading2": MessageLookupByLibrary.simpleMessage(""), + "heading3": MessageLookupByLibrary.simpleMessage(""), + "highlight": MessageLookupByLibrary.simpleMessage(""), + "image": MessageLookupByLibrary.simpleMessage(""), + "italic": MessageLookupByLibrary.simpleMessage(""), + "link": MessageLookupByLibrary.simpleMessage(""), + "numberedList": MessageLookupByLibrary.simpleMessage(""), + "quote": MessageLookupByLibrary.simpleMessage(""), + "strikethrough": MessageLookupByLibrary.simpleMessage(""), + "text": MessageLookupByLibrary.simpleMessage(""), + "underline": MessageLookupByLibrary.simpleMessage("") + }; +} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_id-ID.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_id-ID.dart new file mode 100644 index 0000000000..e594bacdec --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_id-ID.dart @@ -0,0 +1,42 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a id_ID locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'id_ID'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "bold": MessageLookupByLibrary.simpleMessage(""), + "bulletedList": MessageLookupByLibrary.simpleMessage(""), + "checkbox": MessageLookupByLibrary.simpleMessage(""), + "embedCode": MessageLookupByLibrary.simpleMessage(""), + "heading1": MessageLookupByLibrary.simpleMessage(""), + "heading2": MessageLookupByLibrary.simpleMessage(""), + "heading3": MessageLookupByLibrary.simpleMessage(""), + "highlight": MessageLookupByLibrary.simpleMessage(""), + "image": MessageLookupByLibrary.simpleMessage(""), + "italic": MessageLookupByLibrary.simpleMessage(""), + "link": MessageLookupByLibrary.simpleMessage(""), + "numberedList": MessageLookupByLibrary.simpleMessage(""), + "quote": MessageLookupByLibrary.simpleMessage(""), + "strikethrough": MessageLookupByLibrary.simpleMessage(""), + "text": MessageLookupByLibrary.simpleMessage(""), + "underline": MessageLookupByLibrary.simpleMessage("") + }; +} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_it-IT.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_it-IT.dart new file mode 100644 index 0000000000..6717858291 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_it-IT.dart @@ -0,0 +1,42 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a it_IT locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'it_IT'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "bold": MessageLookupByLibrary.simpleMessage(""), + "bulletedList": MessageLookupByLibrary.simpleMessage(""), + "checkbox": MessageLookupByLibrary.simpleMessage(""), + "embedCode": MessageLookupByLibrary.simpleMessage(""), + "heading1": MessageLookupByLibrary.simpleMessage(""), + "heading2": MessageLookupByLibrary.simpleMessage(""), + "heading3": MessageLookupByLibrary.simpleMessage(""), + "highlight": MessageLookupByLibrary.simpleMessage(""), + "image": MessageLookupByLibrary.simpleMessage(""), + "italic": MessageLookupByLibrary.simpleMessage(""), + "link": MessageLookupByLibrary.simpleMessage(""), + "numberedList": MessageLookupByLibrary.simpleMessage(""), + "quote": MessageLookupByLibrary.simpleMessage(""), + "strikethrough": MessageLookupByLibrary.simpleMessage(""), + "text": MessageLookupByLibrary.simpleMessage(""), + "underline": MessageLookupByLibrary.simpleMessage("") + }; +} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_ja-JP.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_ja-JP.dart new file mode 100644 index 0000000000..925acc9668 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_ja-JP.dart @@ -0,0 +1,42 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a ja_JP locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'ja_JP'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "bold": MessageLookupByLibrary.simpleMessage(""), + "bulletedList": MessageLookupByLibrary.simpleMessage(""), + "checkbox": MessageLookupByLibrary.simpleMessage(""), + "embedCode": MessageLookupByLibrary.simpleMessage(""), + "heading1": MessageLookupByLibrary.simpleMessage(""), + "heading2": MessageLookupByLibrary.simpleMessage(""), + "heading3": MessageLookupByLibrary.simpleMessage(""), + "highlight": MessageLookupByLibrary.simpleMessage(""), + "image": MessageLookupByLibrary.simpleMessage(""), + "italic": MessageLookupByLibrary.simpleMessage(""), + "link": MessageLookupByLibrary.simpleMessage(""), + "numberedList": MessageLookupByLibrary.simpleMessage(""), + "quote": MessageLookupByLibrary.simpleMessage(""), + "strikethrough": MessageLookupByLibrary.simpleMessage(""), + "text": MessageLookupByLibrary.simpleMessage(""), + "underline": MessageLookupByLibrary.simpleMessage("") + }; +} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_pl-PL.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_pl-PL.dart new file mode 100644 index 0000000000..30a9cc38b2 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_pl-PL.dart @@ -0,0 +1,42 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a pl_PL locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'pl_PL'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "bold": MessageLookupByLibrary.simpleMessage(""), + "bulletedList": MessageLookupByLibrary.simpleMessage(""), + "checkbox": MessageLookupByLibrary.simpleMessage(""), + "embedCode": MessageLookupByLibrary.simpleMessage(""), + "heading1": MessageLookupByLibrary.simpleMessage(""), + "heading2": MessageLookupByLibrary.simpleMessage(""), + "heading3": MessageLookupByLibrary.simpleMessage(""), + "highlight": MessageLookupByLibrary.simpleMessage(""), + "image": MessageLookupByLibrary.simpleMessage(""), + "italic": MessageLookupByLibrary.simpleMessage(""), + "link": MessageLookupByLibrary.simpleMessage(""), + "numberedList": MessageLookupByLibrary.simpleMessage(""), + "quote": MessageLookupByLibrary.simpleMessage(""), + "strikethrough": MessageLookupByLibrary.simpleMessage(""), + "text": MessageLookupByLibrary.simpleMessage(""), + "underline": MessageLookupByLibrary.simpleMessage("") + }; +} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_pt-BR.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_pt-BR.dart new file mode 100644 index 0000000000..c7551f9d78 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_pt-BR.dart @@ -0,0 +1,42 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a pt_BR locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'pt_BR'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "bold": MessageLookupByLibrary.simpleMessage(""), + "bulletedList": MessageLookupByLibrary.simpleMessage(""), + "checkbox": MessageLookupByLibrary.simpleMessage(""), + "embedCode": MessageLookupByLibrary.simpleMessage(""), + "heading1": MessageLookupByLibrary.simpleMessage(""), + "heading2": MessageLookupByLibrary.simpleMessage(""), + "heading3": MessageLookupByLibrary.simpleMessage(""), + "highlight": MessageLookupByLibrary.simpleMessage(""), + "image": MessageLookupByLibrary.simpleMessage(""), + "italic": MessageLookupByLibrary.simpleMessage(""), + "link": MessageLookupByLibrary.simpleMessage(""), + "numberedList": MessageLookupByLibrary.simpleMessage(""), + "quote": MessageLookupByLibrary.simpleMessage(""), + "strikethrough": MessageLookupByLibrary.simpleMessage(""), + "text": MessageLookupByLibrary.simpleMessage(""), + "underline": MessageLookupByLibrary.simpleMessage("") + }; +} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_pt-PT.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_pt-PT.dart new file mode 100644 index 0000000000..19a14c2509 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_pt-PT.dart @@ -0,0 +1,42 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a pt_PT locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'pt_PT'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "bold": MessageLookupByLibrary.simpleMessage(""), + "bulletedList": MessageLookupByLibrary.simpleMessage(""), + "checkbox": MessageLookupByLibrary.simpleMessage(""), + "embedCode": MessageLookupByLibrary.simpleMessage(""), + "heading1": MessageLookupByLibrary.simpleMessage(""), + "heading2": MessageLookupByLibrary.simpleMessage(""), + "heading3": MessageLookupByLibrary.simpleMessage(""), + "highlight": MessageLookupByLibrary.simpleMessage(""), + "image": MessageLookupByLibrary.simpleMessage(""), + "italic": MessageLookupByLibrary.simpleMessage(""), + "link": MessageLookupByLibrary.simpleMessage(""), + "numberedList": MessageLookupByLibrary.simpleMessage(""), + "quote": MessageLookupByLibrary.simpleMessage(""), + "strikethrough": MessageLookupByLibrary.simpleMessage(""), + "text": MessageLookupByLibrary.simpleMessage(""), + "underline": MessageLookupByLibrary.simpleMessage("") + }; +} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_ru-RU.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_ru-RU.dart new file mode 100644 index 0000000000..ec594b198d --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_ru-RU.dart @@ -0,0 +1,42 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a ru_RU locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'ru_RU'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "bold": MessageLookupByLibrary.simpleMessage(""), + "bulletedList": MessageLookupByLibrary.simpleMessage(""), + "checkbox": MessageLookupByLibrary.simpleMessage(""), + "embedCode": MessageLookupByLibrary.simpleMessage(""), + "heading1": MessageLookupByLibrary.simpleMessage(""), + "heading2": MessageLookupByLibrary.simpleMessage(""), + "heading3": MessageLookupByLibrary.simpleMessage(""), + "highlight": MessageLookupByLibrary.simpleMessage(""), + "image": MessageLookupByLibrary.simpleMessage(""), + "italic": MessageLookupByLibrary.simpleMessage(""), + "link": MessageLookupByLibrary.simpleMessage(""), + "numberedList": MessageLookupByLibrary.simpleMessage(""), + "quote": MessageLookupByLibrary.simpleMessage(""), + "strikethrough": MessageLookupByLibrary.simpleMessage(""), + "text": MessageLookupByLibrary.simpleMessage(""), + "underline": MessageLookupByLibrary.simpleMessage("") + }; +} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_tr-TR.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_tr-TR.dart new file mode 100644 index 0000000000..50ba27e790 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_tr-TR.dart @@ -0,0 +1,42 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a tr_TR locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'tr_TR'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "bold": MessageLookupByLibrary.simpleMessage(""), + "bulletedList": MessageLookupByLibrary.simpleMessage(""), + "checkbox": MessageLookupByLibrary.simpleMessage(""), + "embedCode": MessageLookupByLibrary.simpleMessage(""), + "heading1": MessageLookupByLibrary.simpleMessage(""), + "heading2": MessageLookupByLibrary.simpleMessage(""), + "heading3": MessageLookupByLibrary.simpleMessage(""), + "highlight": MessageLookupByLibrary.simpleMessage(""), + "image": MessageLookupByLibrary.simpleMessage(""), + "italic": MessageLookupByLibrary.simpleMessage(""), + "link": MessageLookupByLibrary.simpleMessage(""), + "numberedList": MessageLookupByLibrary.simpleMessage(""), + "quote": MessageLookupByLibrary.simpleMessage(""), + "strikethrough": MessageLookupByLibrary.simpleMessage(""), + "text": MessageLookupByLibrary.simpleMessage(""), + "underline": MessageLookupByLibrary.simpleMessage("") + }; +} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_zh-CN.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_zh-CN.dart new file mode 100644 index 0000000000..00c6c66f4d --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_zh-CN.dart @@ -0,0 +1,42 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a zh_CN locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'zh_CN'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "bold": MessageLookupByLibrary.simpleMessage("加粗"), + "bulletedList": MessageLookupByLibrary.simpleMessage("无序列表"), + "checkbox": MessageLookupByLibrary.simpleMessage("复选框"), + "embedCode": MessageLookupByLibrary.simpleMessage("内嵌代码"), + "heading1": MessageLookupByLibrary.simpleMessage("标题 1"), + "heading2": MessageLookupByLibrary.simpleMessage("标题 2"), + "heading3": MessageLookupByLibrary.simpleMessage("标题 3"), + "highlight": MessageLookupByLibrary.simpleMessage("高亮"), + "image": MessageLookupByLibrary.simpleMessage("图片"), + "italic": MessageLookupByLibrary.simpleMessage("斜体"), + "link": MessageLookupByLibrary.simpleMessage("链接"), + "numberedList": MessageLookupByLibrary.simpleMessage("有序列表"), + "quote": MessageLookupByLibrary.simpleMessage("引用"), + "strikethrough": MessageLookupByLibrary.simpleMessage("删除线"), + "text": MessageLookupByLibrary.simpleMessage("文字"), + "underline": MessageLookupByLibrary.simpleMessage("下划线") + }; +} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_zh-TW.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_zh-TW.dart new file mode 100644 index 0000000000..8fbe4a836b --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_zh-TW.dart @@ -0,0 +1,42 @@ +// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart +// This is a library that provides messages for a zh_TW locale. All the +// messages from the main program should be duplicated here with the same +// function name. + +// Ignore issues from commonly used lints in this file. +// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new +// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering +// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes + +import 'package:intl/intl.dart'; +import 'package:intl/message_lookup_by_library.dart'; + +final messages = new MessageLookup(); + +typedef String MessageIfAbsent(String messageStr, List args); + +class MessageLookup extends MessageLookupByLibrary { + String get localeName => 'zh_TW'; + + final messages = _notInlinedMessages(_notInlinedMessages); + static Map _notInlinedMessages(_) => { + "bold": MessageLookupByLibrary.simpleMessage(""), + "bulletedList": MessageLookupByLibrary.simpleMessage(""), + "checkbox": MessageLookupByLibrary.simpleMessage(""), + "embedCode": MessageLookupByLibrary.simpleMessage(""), + "heading1": MessageLookupByLibrary.simpleMessage(""), + "heading2": MessageLookupByLibrary.simpleMessage(""), + "heading3": MessageLookupByLibrary.simpleMessage(""), + "highlight": MessageLookupByLibrary.simpleMessage(""), + "image": MessageLookupByLibrary.simpleMessage(""), + "italic": MessageLookupByLibrary.simpleMessage(""), + "link": MessageLookupByLibrary.simpleMessage(""), + "numberedList": MessageLookupByLibrary.simpleMessage(""), + "quote": MessageLookupByLibrary.simpleMessage(""), + "strikethrough": MessageLookupByLibrary.simpleMessage(""), + "text": MessageLookupByLibrary.simpleMessage(""), + "underline": MessageLookupByLibrary.simpleMessage("") + }; +} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/l10n.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/l10n.dart new file mode 100644 index 0000000000..ae80f115a1 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/l10n.dart @@ -0,0 +1,257 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND +import 'package:flutter/material.dart'; +import 'package:intl/intl.dart'; +import 'intl/messages_all.dart'; + +// ************************************************************************** +// Generator: Flutter Intl IDE plugin +// Made by Localizely +// ************************************************************************** + +// ignore_for_file: non_constant_identifier_names, lines_longer_than_80_chars +// ignore_for_file: join_return_with_assignment, prefer_final_in_for_each +// ignore_for_file: avoid_redundant_argument_values, avoid_escaping_inner_quotes + +class AppFlowyEditorLocalizations { + AppFlowyEditorLocalizations(); + + static AppFlowyEditorLocalizations? _current; + + static AppFlowyEditorLocalizations get current { + assert(_current != null, + 'No instance of AppFlowyEditorLocalizations was loaded. Try to initialize the AppFlowyEditorLocalizations delegate before accessing AppFlowyEditorLocalizations.current.'); + return _current!; + } + + static const AppLocalizationDelegate delegate = AppLocalizationDelegate(); + + static Future load(Locale locale) { + final name = (locale.countryCode?.isEmpty ?? false) + ? locale.languageCode + : locale.toString(); + final localeName = Intl.canonicalizedLocale(name); + return initializeMessages(localeName).then((_) { + Intl.defaultLocale = localeName; + final instance = AppFlowyEditorLocalizations(); + AppFlowyEditorLocalizations._current = instance; + + return instance; + }); + } + + static AppFlowyEditorLocalizations of(BuildContext context) { + final instance = AppFlowyEditorLocalizations.maybeOf(context); + assert(instance != null, + 'No instance of AppFlowyEditorLocalizations present in the widget tree. Did you add AppFlowyEditorLocalizations.delegate in localizationsDelegates?'); + return instance!; + } + + static AppFlowyEditorLocalizations? maybeOf(BuildContext context) { + return Localizations.of( + context, AppFlowyEditorLocalizations); + } + + /// `Bold` + String get bold { + return Intl.message( + 'Bold', + name: 'bold', + desc: '', + args: [], + ); + } + + /// `Bulleted List` + String get bulletedList { + return Intl.message( + 'Bulleted List', + name: 'bulletedList', + desc: '', + args: [], + ); + } + + /// `Checkbox` + String get checkbox { + return Intl.message( + 'Checkbox', + name: 'checkbox', + desc: '', + args: [], + ); + } + + /// `Embed Code` + String get embedCode { + return Intl.message( + 'Embed Code', + name: 'embedCode', + desc: '', + args: [], + ); + } + + /// `H1` + String get heading1 { + return Intl.message( + 'H1', + name: 'heading1', + desc: '', + args: [], + ); + } + + /// `H2` + String get heading2 { + return Intl.message( + 'H2', + name: 'heading2', + desc: '', + args: [], + ); + } + + /// `H3` + String get heading3 { + return Intl.message( + 'H3', + name: 'heading3', + desc: '', + args: [], + ); + } + + /// `Highlight` + String get highlight { + return Intl.message( + 'Highlight', + name: 'highlight', + desc: '', + args: [], + ); + } + + /// `Image` + String get image { + return Intl.message( + 'Image', + name: 'image', + desc: '', + args: [], + ); + } + + /// `Italic` + String get italic { + return Intl.message( + 'Italic', + name: 'italic', + desc: '', + args: [], + ); + } + + /// `Link` + String get link { + return Intl.message( + 'Link', + name: 'link', + desc: '', + args: [], + ); + } + + /// `Numbered List` + String get numberedList { + return Intl.message( + 'Numbered List', + name: 'numberedList', + desc: '', + args: [], + ); + } + + /// `Quote` + String get quote { + return Intl.message( + 'Quote', + name: 'quote', + desc: '', + args: [], + ); + } + + /// `Strikethrough` + String get strikethrough { + return Intl.message( + 'Strikethrough', + name: 'strikethrough', + desc: '', + args: [], + ); + } + + /// `Text` + String get text { + return Intl.message( + 'Text', + name: 'text', + desc: '', + args: [], + ); + } + + /// `Underline` + String get underline { + return Intl.message( + 'Underline', + name: 'underline', + desc: '', + args: [], + ); + } +} + +class AppLocalizationDelegate + extends LocalizationsDelegate { + const AppLocalizationDelegate(); + + List get supportedLocales { + return const [ + Locale.fromSubtags(languageCode: 'en'), + Locale.fromSubtags(languageCode: 'ca'), + Locale.fromSubtags(languageCode: 'de', countryCode: 'DE'), + Locale.fromSubtags(languageCode: 'es', countryCode: 'VE'), + Locale.fromSubtags(languageCode: 'fr', countryCode: 'CA'), + Locale.fromSubtags(languageCode: 'fr', countryCode: 'FR'), + Locale.fromSubtags(languageCode: 'hu', countryCode: 'HU'), + Locale.fromSubtags(languageCode: 'id', countryCode: 'ID'), + Locale.fromSubtags(languageCode: 'it', countryCode: 'IT'), + Locale.fromSubtags(languageCode: 'ja', countryCode: 'JP'), + Locale.fromSubtags(languageCode: 'pl', countryCode: 'PL'), + Locale.fromSubtags(languageCode: 'pt', countryCode: 'BR'), + Locale.fromSubtags(languageCode: 'pt', countryCode: 'PT'), + Locale.fromSubtags(languageCode: 'ru', countryCode: 'RU'), + Locale.fromSubtags(languageCode: 'tr', countryCode: 'TR'), + Locale.fromSubtags(languageCode: 'zh', countryCode: 'CN'), + Locale.fromSubtags(languageCode: 'zh', countryCode: 'TW'), + ]; + } + + @override + bool isSupported(Locale locale) => _isSupported(locale); + @override + Future load(Locale locale) => + AppFlowyEditorLocalizations.load(locale); + @override + bool shouldReload(AppLocalizationDelegate old) => false; + + bool _isSupported(Locale locale) { + for (var supportedLocale in supportedLocales) { + if (supportedLocale.languageCode == locale.languageCode) { + return true; + } + } + return false; + } +} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/built_in_text_widget.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/built_in_text_widget.dart new file mode 100644 index 0000000000..954d5bd516 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/built_in_text_widget.dart @@ -0,0 +1,61 @@ +import 'package:appflowy_editor/appflowy_editor.dart'; +import 'package:flutter/material.dart'; + +abstract class BuiltInTextWidget extends StatefulWidget { + const BuiltInTextWidget({ + Key? key, + }) : super(key: key); + + EditorState get editorState; + TextNode get textNode; +} + +mixin BuiltInStyleMixin on State { + EdgeInsets get padding { + final padding = widget.editorState.editorStyle.style( + widget.editorState, + widget.textNode, + 'padding', + ); + if (padding is EdgeInsets) { + return padding; + } + return const EdgeInsets.all(0); + } + + TextStyle get textStyle { + final textStyle = widget.editorState.editorStyle.style( + widget.editorState, + widget.textNode, + 'textStyle', + ); + if (textStyle is TextStyle) { + return textStyle; + } + return const TextStyle(); + } + + Size? get iconSize { + final iconSize = widget.editorState.editorStyle.style( + widget.editorState, + widget.textNode, + 'iconSize', + ); + if (iconSize is Size) { + return iconSize; + } + return const Size.square(18.0); + } + + EdgeInsets? get iconPadding { + final iconPadding = widget.editorState.editorStyle.style( + widget.editorState, + widget.textNode, + 'iconPadding', + ); + if (iconPadding is EdgeInsets) { + return iconPadding; + } + return const EdgeInsets.all(0); + } +} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/bulleted_list_text.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/bulleted_list_text.dart index 58c86e7670..999b9517f4 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/bulleted_list_text.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/bulleted_list_text.dart @@ -1,9 +1,9 @@ import 'package:appflowy_editor/src/document/node.dart'; import 'package:appflowy_editor/src/editor_state.dart'; import 'package:appflowy_editor/src/infra/flowy_svg.dart'; +import 'package:appflowy_editor/src/render/rich_text/built_in_text_widget.dart'; import 'package:appflowy_editor/src/render/rich_text/default_selectable.dart'; import 'package:appflowy_editor/src/render/rich_text/flowy_rich_text.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; import 'package:appflowy_editor/src/render/selection/selectable.dart'; import 'package:appflowy_editor/src/service/render_plugin_service.dart'; import 'package:flutter/material.dart'; @@ -24,14 +24,16 @@ class BulletedListTextNodeWidgetBuilder extends NodeWidgetBuilder { }); } -class BulletedListTextNodeWidget extends StatefulWidget { +class BulletedListTextNodeWidget extends BuiltInTextWidget { const BulletedListTextNodeWidget({ Key? key, required this.textNode, required this.editorState, }) : super(key: key); + @override final TextNode textNode; + @override final EditorState editorState; @override @@ -42,36 +44,40 @@ class BulletedListTextNodeWidget extends StatefulWidget { // customize class _BulletedListTextNodeWidgetState extends State - with SelectableMixin, DefaultSelectable { + with SelectableMixin, DefaultSelectable, BuiltInStyleMixin { @override final iconKey = GlobalKey(); final _richTextKey = GlobalKey(debugLabel: 'bulleted_list_text'); - final _iconWidth = 20.0; - final _iconRightPadding = 5.0; @override SelectableMixin get forward => _richTextKey.currentState as SelectableMixin; + @override + Offset get baseOffset { + return super.baseOffset.translate(0, padding.top); + } + @override Widget build(BuildContext context) { return Padding( - padding: EdgeInsets.only(bottom: defaultLinePadding), + padding: padding, child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ FlowySvg( key: iconKey, - width: _iconWidth, - height: _iconWidth, - padding: EdgeInsets.only(right: _iconRightPadding), + width: iconSize?.width, + height: iconSize?.height, + padding: iconPadding, name: 'point', ), Flexible( child: FlowyRichText( key: _richTextKey, placeholderText: 'List', + lineHeight: widget.editorState.editorStyle.textStyle.lineHeight, textNode: widget.textNode, editorState: widget.editorState, ), diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/checkbox_text.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/checkbox_text.dart index d6458304d6..0c6295f4ce 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/checkbox_text.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/checkbox_text.dart @@ -1,12 +1,16 @@ +import 'package:appflowy_editor/src/document/built_in_attribute_keys.dart'; import 'package:appflowy_editor/src/document/node.dart'; import 'package:appflowy_editor/src/editor_state.dart'; import 'package:appflowy_editor/src/infra/flowy_svg.dart'; -import 'package:appflowy_editor/src/operation/transaction_builder.dart'; +import 'package:appflowy_editor/src/render/rich_text/built_in_text_widget.dart'; import 'package:appflowy_editor/src/render/rich_text/default_selectable.dart'; import 'package:appflowy_editor/src/render/rich_text/flowy_rich_text.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; import 'package:appflowy_editor/src/render/selection/selectable.dart'; +import 'package:appflowy_editor/src/service/default_text_operations/format_rich_text_style.dart'; + import 'package:appflowy_editor/src/service/render_plugin_service.dart'; +import 'package:appflowy_editor/src/extensions/attributes_extension.dart'; +import 'package:appflowy_editor/src/extensions/text_style_extension.dart'; import 'package:flutter/material.dart'; class CheckboxNodeWidgetBuilder extends NodeWidgetBuilder { @@ -21,18 +25,20 @@ class CheckboxNodeWidgetBuilder extends NodeWidgetBuilder { @override NodeValidator get nodeValidator => ((node) { - return node.attributes.containsKey(StyleKey.checkbox); + return node.attributes.containsKey(BuiltInAttributeKey.checkbox); }); } -class CheckboxNodeWidget extends StatefulWidget { +class CheckboxNodeWidget extends BuiltInTextWidget { const CheckboxNodeWidget({ Key? key, required this.textNode, required this.editorState, }) : super(key: key); + @override final TextNode textNode; + @override final EditorState editorState; @override @@ -40,18 +46,21 @@ class CheckboxNodeWidget extends StatefulWidget { } class _CheckboxNodeWidgetState extends State - with SelectableMixin, DefaultSelectable { + with SelectableMixin, DefaultSelectable, BuiltInStyleMixin { @override final iconKey = GlobalKey(); final _richTextKey = GlobalKey(debugLabel: 'checkbox_text'); - final _iconWidth = 20.0; - final _iconRightPadding = 5.0; @override SelectableMixin get forward => _richTextKey.currentState as SelectableMixin; + @override + Offset get baseOffset { + return super.baseOffset.translate(0, padding.top); + } + @override Widget build(BuildContext context) { if (widget.textNode.children.isEmpty) { @@ -64,33 +73,32 @@ class _CheckboxNodeWidgetState extends State Widget _buildWithSingle(BuildContext context) { final check = widget.textNode.attributes.check; return Padding( - padding: EdgeInsets.only(bottom: defaultLinePadding), + padding: padding, child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ GestureDetector( key: iconKey, child: FlowySvg( - width: _iconWidth, - height: _iconWidth, - padding: EdgeInsets.only(right: _iconRightPadding), + width: iconSize?.width, + height: iconSize?.height, + padding: iconPadding, name: check ? 'check' : 'uncheck', ), onTap: () { - TransactionBuilder(widget.editorState) - ..updateNode(widget.textNode, { - StyleKey.checkbox: !check, - }) - ..commit(); + formatCheckbox(widget.editorState, !check); }, ), Flexible( child: FlowyRichText( key: _richTextKey, placeholderText: 'To-do', + lineHeight: widget.editorState.editorStyle.textStyle.lineHeight, textNode: widget.textNode, - textSpanDecorator: _textSpanDecorator, - placeholderTextSpanDecorator: _textSpanDecorator, + textSpanDecorator: (textSpan) => + textSpan.updateTextStyle(textStyle), + placeholderTextSpanDecorator: (textSpan) => + textSpan.updateTextStyle(textStyle), editorState: widget.editorState, ), ), @@ -134,28 +142,4 @@ class _CheckboxNodeWidgetState extends State ], ); } - - TextSpan _textSpanDecorator(TextSpan textSpan) { - return TextSpan( - children: textSpan.children - ?.whereType() - .map( - (span) => TextSpan( - text: span.text, - style: widget.textNode.attributes.check - ? span.style?.copyWith( - color: Colors.grey, - decoration: TextDecoration.combine([ - TextDecoration.lineThrough, - if (span.style?.decoration != null) - span.style!.decoration! - ]), - ) - : span.style, - recognizer: span.recognizer, - ), - ) - .toList(), - ); - } } diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/flowy_rich_text.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/flowy_rich_text.dart index 9292c1e5cd..7dba4852ed 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/flowy_rich_text.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/flowy_rich_text.dart @@ -1,8 +1,6 @@ import 'dart:async'; import 'dart:ui'; -import 'package:appflowy_editor/src/extensions/url_launcher_extension.dart'; -import 'package:appflowy_editor/src/render/toolbar/toolbar_item.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; @@ -13,8 +11,12 @@ import 'package:appflowy_editor/src/document/position.dart'; import 'package:appflowy_editor/src/document/selection.dart'; import 'package:appflowy_editor/src/document/text_delta.dart'; import 'package:appflowy_editor/src/editor_state.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; +import 'package:appflowy_editor/src/extensions/url_launcher_extension.dart'; +import 'package:appflowy_editor/src/extensions/text_style_extension.dart'; +import 'package:appflowy_editor/src/extensions/attributes_extension.dart'; + import 'package:appflowy_editor/src/render/selection/selectable.dart'; +import 'package:appflowy_editor/src/render/toolbar/toolbar_item.dart'; typedef FlowyTextSpanDecorator = TextSpan Function(TextSpan textSpan); @@ -23,6 +25,7 @@ class FlowyRichText extends StatefulWidget { Key? key, this.cursorHeight, this.cursorWidth = 1.0, + this.lineHeight = 1.0, this.textSpanDecorator, this.placeholderText = ' ', this.placeholderTextSpanDecorator, @@ -34,6 +37,7 @@ class FlowyRichText extends StatefulWidget { final EditorState editorState; final double? cursorHeight; final double cursorWidth; + final double lineHeight; final FlowyTextSpanDecorator? textSpanDecorator; final String placeholderText; final FlowyTextSpanDecorator? placeholderTextSpanDecorator; @@ -46,8 +50,6 @@ class _FlowyRichTextState extends State with SelectableMixin { var _textKey = GlobalKey(); final _placeholderTextKey = GlobalKey(); - final _lineHeight = 1.5; - RenderParagraph get _renderParagraph => _textKey.currentContext?.findRenderObject() as RenderParagraph; @@ -90,20 +92,6 @@ class _FlowyRichTextState extends State with SelectableMixin { cursorOffset = _placeholderRenderParagraph.getOffsetForCaret( textPosition, Rect.zero); } - if (cursorHeight != null) { - // workaround: Calling the `getFullHeightForCaret` function will return - // the full height of rich text component instead of the plain text - // if we set the line height. - // So need to divide by the line height to get the expected value. - // - // And the default height of plain text is too short. Add a magic height - // to expand it. - const magicHeight = 3.0; - cursorOffset = cursorOffset.translate( - 0, (cursorHeight - cursorHeight / _lineHeight) / 2.0); - cursorHeight /= _lineHeight; - cursorHeight += magicHeight; - } final rect = Rect.fromLTWH( cursorOffset.dx - (widget.cursorWidth / 2), cursorOffset.dy, @@ -190,8 +178,8 @@ class _FlowyRichTextState extends State with SelectableMixin { key: _placeholderTextKey, textHeightBehavior: const TextHeightBehavior( applyHeightToFirstAscent: false, applyHeightToLastDescent: false), - text: widget.textSpanDecorator != null - ? widget.textSpanDecorator!(textSpan) + text: widget.placeholderTextSpanDecorator != null + ? widget.placeholderTextSpanDecorator!(textSpan) : textSpan, ); } @@ -210,42 +198,73 @@ class _FlowyRichTextState extends State with SelectableMixin { ); } - TextSpan get _textSpan { - var offset = 0; + TextSpan get _placeholderTextSpan { + final style = widget.editorState.editorStyle.textStyle; return TextSpan( - children: widget.textNode.delta.whereType().map((insert) { - GestureRecognizer? gestureRecognizer; - if (insert.attributes?[StyleKey.href] != null) { - gestureRecognizer = _buildTapHrefGestureRecognizer( - insert.attributes![StyleKey.href], - Selection.single( - path: widget.textNode.path, - startOffset: offset, - endOffset: offset + insert.length, - ), - ); - } - offset += insert.length; - final textSpan = RichTextStyle( - attributes: insert.attributes ?? {}, - text: insert.content, - height: _lineHeight, - gestureRecognizer: gestureRecognizer, - ).toTextSpan(); - return textSpan; - }).toList(growable: false), + children: [ + TextSpan( + text: widget.placeholderText, + style: style.defaultPlaceholderTextStyle, + ), + ], ); } - TextSpan get _placeholderTextSpan => TextSpan(children: [ - RichTextStyle( - text: widget.placeholderText, - attributes: { - StyleKey.color: '0xFF707070', - }, - height: _lineHeight, - ).toTextSpan() - ]); + TextSpan get _textSpan { + var offset = 0; + List textSpans = []; + final style = widget.editorState.editorStyle.textStyle; + final textInserts = widget.textNode.delta.whereType(); + for (final textInsert in textInserts) { + var textStyle = style.defaultTextStyle; + GestureRecognizer? recognizer; + final attributes = textInsert.attributes; + if (attributes != null) { + if (attributes.bold == true) { + textStyle = textStyle.combine(style.bold); + } + if (attributes.italic == true) { + textStyle = textStyle.combine(style.italic); + } + if (attributes.underline == true) { + textStyle = textStyle.combine(style.underline); + } + if (attributes.strikethrough == true) { + textStyle = textStyle.combine(style.strikethrough); + } + if (attributes.href != null) { + textStyle = textStyle.combine(style.href); + recognizer = _buildTapHrefGestureRecognizer( + attributes.href!, + Selection.single( + path: widget.textNode.path, + startOffset: offset, + endOffset: offset + textInsert.length, + ), + ); + } + if (attributes.code == true) { + textStyle = textStyle.combine(style.code); + } + if (attributes.backgroundColor != null) { + textStyle = textStyle.combine( + TextStyle(backgroundColor: attributes.backgroundColor), + ); + } + } + offset += textInsert.length; + textSpans.add( + TextSpan( + text: textInsert.content, + style: textStyle, + recognizer: recognizer, + ), + ); + } + return TextSpan( + children: textSpans, + ); + } GestureRecognizer _buildTapHrefGestureRecognizer( String href, Selection selection) { diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/heading_text.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/heading_text.dart index d58030ef15..e6307bb409 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/heading_text.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/heading_text.dart @@ -1,11 +1,13 @@ import 'package:appflowy_editor/src/document/node.dart'; import 'package:appflowy_editor/src/editor_state.dart'; +import 'package:appflowy_editor/src/render/rich_text/built_in_text_widget.dart'; import 'package:appflowy_editor/src/render/rich_text/default_selectable.dart'; import 'package:appflowy_editor/src/render/rich_text/flowy_rich_text.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; import 'package:appflowy_editor/src/render/selection/selectable.dart'; import 'package:appflowy_editor/src/service/render_plugin_service.dart'; import 'package:flutter/material.dart'; +import 'package:appflowy_editor/src/extensions/attributes_extension.dart'; +import 'package:appflowy_editor/src/extensions/text_style_extension.dart'; class HeadingTextNodeWidgetBuilder extends NodeWidgetBuilder { @override @@ -23,14 +25,16 @@ class HeadingTextNodeWidgetBuilder extends NodeWidgetBuilder { }); } -class HeadingTextNodeWidget extends StatefulWidget { +class HeadingTextNodeWidget extends BuiltInTextWidget { const HeadingTextNodeWidget({ Key? key, required this.textNode, required this.editorState, }) : super(key: key); + @override final TextNode textNode; + @override final EditorState editorState; @override @@ -39,12 +43,11 @@ class HeadingTextNodeWidget extends StatefulWidget { // customize class _HeadingTextNodeWidgetState extends State - with SelectableMixin, DefaultSelectable { + with SelectableMixin, DefaultSelectable, BuiltInStyleMixin { @override GlobalKey? get iconKey => null; final _richTextKey = GlobalKey(debugLabel: 'heading_text'); - final _topPadding = 5.0; @override SelectableMixin get forward => @@ -52,58 +55,23 @@ class _HeadingTextNodeWidgetState extends State @override Offset get baseOffset { - return Offset(0, _topPadding); + return padding.topLeft; } @override Widget build(BuildContext context) { return Padding( - padding: EdgeInsets.only( - top: _topPadding, - bottom: defaultLinePadding, - ), + padding: padding, child: FlowyRichText( key: _richTextKey, placeholderText: 'Heading', - placeholderTextSpanDecorator: _placeholderTextSpanDecorator, - textSpanDecorator: _textSpanDecorator, + placeholderTextSpanDecorator: (textSpan) => + textSpan.updateTextStyle(textStyle), + textSpanDecorator: (textSpan) => textSpan.updateTextStyle(textStyle), + lineHeight: widget.editorState.editorStyle.textStyle.lineHeight, textNode: widget.textNode, editorState: widget.editorState, ), ); } - - TextSpan _textSpanDecorator(TextSpan textSpan) { - return TextSpan( - children: textSpan.children - ?.whereType() - .map( - (span) => TextSpan( - text: span.text, - style: span.style?.copyWith( - fontSize: widget.textNode.attributes.fontSize, - ), - recognizer: span.recognizer, - ), - ) - .toList(), - ); - } - - TextSpan _placeholderTextSpanDecorator(TextSpan textSpan) { - return TextSpan( - children: textSpan.children - ?.whereType() - .map( - (span) => TextSpan( - text: span.text, - style: span.style?.copyWith( - fontSize: widget.textNode.attributes.fontSize, - ), - recognizer: span.recognizer, - ), - ) - .toList(), - ); - } } diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/number_list_text.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/number_list_text.dart index 2085b3a48a..59c0551750 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/number_list_text.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/number_list_text.dart @@ -1,12 +1,13 @@ import 'package:appflowy_editor/src/document/node.dart'; import 'package:appflowy_editor/src/editor_state.dart'; -import 'package:appflowy_editor/src/infra/flowy_svg.dart'; +import 'package:appflowy_editor/src/render/rich_text/built_in_text_widget.dart'; import 'package:appflowy_editor/src/render/rich_text/default_selectable.dart'; import 'package:appflowy_editor/src/render/rich_text/flowy_rich_text.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; import 'package:appflowy_editor/src/render/selection/selectable.dart'; import 'package:appflowy_editor/src/service/render_plugin_service.dart'; import 'package:flutter/material.dart'; +import 'package:appflowy_editor/src/extensions/attributes_extension.dart'; +import 'package:appflowy_editor/src/extensions/text_style_extension.dart'; class NumberListTextNodeWidgetBuilder extends NodeWidgetBuilder { @override @@ -24,14 +25,16 @@ class NumberListTextNodeWidgetBuilder extends NodeWidgetBuilder { }); } -class NumberListTextNodeWidget extends StatefulWidget { +class NumberListTextNodeWidget extends BuiltInTextWidget { const NumberListTextNodeWidget({ Key? key, required this.textNode, required this.editorState, }) : super(key: key); + @override final TextNode textNode; + @override final EditorState editorState; @override @@ -39,11 +42,8 @@ class NumberListTextNodeWidget extends StatefulWidget { _NumberListTextNodeWidgetState(); } -// customize -const double _numberHorizontalPadding = 8; - class _NumberListTextNodeWidgetState extends State - with SelectableMixin, DefaultSelectable { + with SelectableMixin, DefaultSelectable, BuiltInStyleMixin { @override final iconKey = GlobalKey(); @@ -53,31 +53,42 @@ class _NumberListTextNodeWidgetState extends State SelectableMixin get forward => _richTextKey.currentState as SelectableMixin; + @override + Offset get baseOffset { + return super.baseOffset.translate(0, padding.top); + } + @override Widget build(BuildContext context) { return Padding( - padding: EdgeInsets.only(bottom: defaultLinePadding), - child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - key: iconKey, - padding: const EdgeInsets.symmetric( - horizontal: _numberHorizontalPadding, vertical: 0), - child: Text( - '${widget.textNode.attributes.number.toString()}.', - style: const TextStyle(fontSize: 16), - ), + padding: padding, + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + key: iconKey, + padding: iconPadding, + child: Text( + '${widget.textNode.attributes.number.toString()}.', + // FIXME: customize + style: const TextStyle(fontSize: 16.0, color: Colors.black), ), - Flexible( - child: FlowyRichText( - key: _richTextKey, - placeholderText: 'List', - textNode: widget.textNode, - editorState: widget.editorState, - ), + ), + Flexible( + child: FlowyRichText( + key: _richTextKey, + placeholderText: 'List', + textNode: widget.textNode, + editorState: widget.editorState, + lineHeight: widget.editorState.editorStyle.textStyle.lineHeight, + placeholderTextSpanDecorator: (textSpan) => + textSpan.updateTextStyle(textStyle), + textSpanDecorator: (textSpan) => + textSpan.updateTextStyle(textStyle), ), - ], - )); + ), + ], + ), + ); } } diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/quoted_text.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/quoted_text.dart index 9e36acfad0..1c86cbbcb7 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/quoted_text.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/quoted_text.dart @@ -1,9 +1,9 @@ import 'package:appflowy_editor/src/document/node.dart'; import 'package:appflowy_editor/src/editor_state.dart'; import 'package:appflowy_editor/src/infra/flowy_svg.dart'; +import 'package:appflowy_editor/src/render/rich_text/built_in_text_widget.dart'; import 'package:appflowy_editor/src/render/rich_text/default_selectable.dart'; import 'package:appflowy_editor/src/render/rich_text/flowy_rich_text.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; import 'package:appflowy_editor/src/render/selection/selectable.dart'; import 'package:appflowy_editor/src/service/render_plugin_service.dart'; import 'package:flutter/material.dart'; @@ -24,14 +24,16 @@ class QuotedTextNodeWidgetBuilder extends NodeWidgetBuilder { }); } -class QuotedTextNodeWidget extends StatefulWidget { +class QuotedTextNodeWidget extends BuiltInTextWidget { const QuotedTextNodeWidget({ Key? key, required this.textNode, required this.editorState, }) : super(key: key); + @override final TextNode textNode; + @override final EditorState editorState; @override @@ -41,30 +43,33 @@ class QuotedTextNodeWidget extends StatefulWidget { // customize class _QuotedTextNodeWidgetState extends State - with SelectableMixin, DefaultSelectable { + with SelectableMixin, DefaultSelectable, BuiltInStyleMixin { @override final iconKey = GlobalKey(); final _richTextKey = GlobalKey(debugLabel: 'quoted_text'); - final _iconWidth = 20.0; - final _iconRightPadding = 5.0; @override SelectableMixin get forward => _richTextKey.currentState as SelectableMixin; + @override + Offset get baseOffset { + return super.baseOffset.translate(0, padding.top); + } + @override Widget build(BuildContext context) { return Padding( - padding: EdgeInsets.only(bottom: defaultLinePadding), + padding: padding, child: IntrinsicHeight( child: Row( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ FlowySvg( key: iconKey, - width: _iconWidth, - padding: EdgeInsets.only(right: _iconRightPadding), + width: iconSize?.width, + padding: iconPadding, name: 'quote', ), Flexible( @@ -72,6 +77,7 @@ class _QuotedTextNodeWidgetState extends State key: _richTextKey, placeholderText: 'Quote', textNode: widget.textNode, + lineHeight: widget.editorState.editorStyle.textStyle.lineHeight, editorState: widget.editorState, ), ), diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/rich_text.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/rich_text.dart index a00e1d7c14..2b98e31259 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/rich_text.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/rich_text.dart @@ -1,8 +1,8 @@ import 'package:appflowy_editor/src/document/node.dart'; import 'package:appflowy_editor/src/editor_state.dart'; +import 'package:appflowy_editor/src/render/rich_text/built_in_text_widget.dart'; import 'package:appflowy_editor/src/render/rich_text/default_selectable.dart'; import 'package:appflowy_editor/src/render/rich_text/flowy_rich_text.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; import 'package:appflowy_editor/src/render/selection/selectable.dart'; import 'package:appflowy_editor/src/service/render_plugin_service.dart'; import 'package:flutter/material.dart'; @@ -23,14 +23,16 @@ class RichTextNodeWidgetBuilder extends NodeWidgetBuilder { }); } -class RichTextNodeWidget extends StatefulWidget { +class RichTextNodeWidget extends BuiltInTextWidget { const RichTextNodeWidget({ Key? key, required this.textNode, required this.editorState, }) : super(key: key); + @override final TextNode textNode; + @override final EditorState editorState; @override @@ -40,7 +42,7 @@ class RichTextNodeWidget extends StatefulWidget { // customize class _RichTextNodeWidgetState extends State - with SelectableMixin, DefaultSelectable { + with SelectableMixin, DefaultSelectable, BuiltInStyleMixin { @override GlobalKey? get iconKey => null; @@ -50,13 +52,19 @@ class _RichTextNodeWidgetState extends State SelectableMixin get forward => _richTextKey.currentState as SelectableMixin; + @override + Offset get baseOffset { + return padding.topLeft; + } + @override Widget build(BuildContext context) { return Padding( - padding: EdgeInsets.only(bottom: defaultLinePadding), + padding: padding, child: FlowyRichText( key: _richTextKey, textNode: widget.textNode, + lineHeight: widget.editorState.editorStyle.textStyle.lineHeight, editorState: widget.editorState, ), ); diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/rich_text_style.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/rich_text_style.dart deleted file mode 100644 index a1fbfdbb57..0000000000 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/rich_text_style.dart +++ /dev/null @@ -1,282 +0,0 @@ -import 'package:appflowy_editor/src/document/attributes.dart'; -import 'package:flutter/gestures.dart'; -import 'package:flutter/material.dart'; - -/// -/// Supported partial rendering types: -/// bold, italic, -/// underline, strikethrough, -/// color, font, -/// href -/// -/// Supported global rendering types: -/// heading: h1, h2, h3, h4, h5, h6, ... -/// block quote, -/// list: ordered list, bulleted list, -/// code block -/// -class StyleKey { - static String bold = 'bold'; - static String italic = 'italic'; - static String underline = 'underline'; - static String strikethrough = 'strikethrough'; - static String color = 'color'; - static String backgroundColor = 'backgroundColor'; - static String font = 'font'; - static String href = 'href'; - - static String subtype = 'subtype'; - static String heading = 'heading'; - static String h1 = 'h1'; - static String h2 = 'h2'; - static String h3 = 'h3'; - static String h4 = 'h4'; - static String h5 = 'h5'; - static String h6 = 'h6'; - - static String bulletedList = 'bulleted-list'; - static String numberList = 'number-list'; - - static String quote = 'quote'; - static String checkbox = 'checkbox'; - static String code = 'code'; - static String number = 'number'; - - static List partialStyleKeys = [ - StyleKey.bold, - StyleKey.italic, - StyleKey.underline, - StyleKey.strikethrough, - StyleKey.backgroundColor, - StyleKey.href, - StyleKey.code, - ]; - - static List globalStyleKeys = [ - StyleKey.subtype, - StyleKey.heading, - StyleKey.checkbox, - StyleKey.bulletedList, - StyleKey.numberList, - StyleKey.quote, - ]; -} - -// TODO: customize -double defaultLinePadding = 8.0; -double baseFontSize = 16.0; -String defaultHighlightColor = '0x6000BCF0'; -String defaultBackgroundColor = '0x00000000'; -// TODO: customize. -Map headingToFontSize = { - StyleKey.h1: baseFontSize + 15, - StyleKey.h2: baseFontSize + 12, - StyleKey.h3: baseFontSize + 9, - StyleKey.h4: baseFontSize + 6, - StyleKey.h5: baseFontSize + 3, - StyleKey.h6: baseFontSize, -}; - -extension NodeAttributesExtensions on Attributes { - String? get heading { - if (containsKey(StyleKey.subtype) && - containsKey(StyleKey.heading) && - this[StyleKey.subtype] == StyleKey.heading && - this[StyleKey.heading] is String) { - return this[StyleKey.heading]; - } - return null; - } - - double get fontSize { - if (heading != null) { - return headingToFontSize[heading]!; - } - return baseFontSize; - } - - bool get quote { - return containsKey(StyleKey.quote); - } - - Color? get quoteColor { - if (quote) { - return Colors.grey; - } - return null; - } - - int? get number { - if (containsKey(StyleKey.number) && this[StyleKey.number] is int) { - return this[StyleKey.number]; - } - return null; - } - - bool get code { - if (containsKey(StyleKey.code) && this[StyleKey.code] == true) { - return this[StyleKey.code]; - } - return false; - } - - bool get check { - if (containsKey(StyleKey.checkbox) && this[StyleKey.checkbox] is bool) { - return this[StyleKey.checkbox]; - } - return false; - } -} - -extension DeltaAttributesExtensions on Attributes { - bool get bold { - return (containsKey(StyleKey.bold) && this[StyleKey.bold] == true); - } - - bool get italic { - return (containsKey(StyleKey.italic) && this[StyleKey.italic] == true); - } - - bool get underline { - return (containsKey(StyleKey.underline) && - this[StyleKey.underline] == true); - } - - bool get strikethrough { - return (containsKey(StyleKey.strikethrough) && - this[StyleKey.strikethrough] == true); - } - - Color? get color { - if (containsKey(StyleKey.color) && this[StyleKey.color] is String) { - return Color( - int.parse(this[StyleKey.color]), - ); - } - return null; - } - - Color? get backgroundColor { - if (containsKey(StyleKey.backgroundColor) && - this[StyleKey.backgroundColor] is String) { - return Color( - int.parse(this[StyleKey.backgroundColor]), - ); - } - return null; - } - - String? get font { - // TODO: unspport now. - return null; - } - - String? get href { - if (containsKey(StyleKey.href) && this[StyleKey.href] is String) { - return this[StyleKey.href]; - } - return null; - } -} - -class RichTextStyle { - // TODO: customize - RichTextStyle({ - required this.attributes, - required this.text, - this.gestureRecognizer, - this.height = 1.5, - }); - - final Attributes attributes; - final String text; - final GestureRecognizer? gestureRecognizer; - final double height; - - TextSpan toTextSpan() => _toTextSpan(height); - - double get topPadding { - return 0; - } - - TextSpan _toTextSpan(double? height) { - return TextSpan( - text: text, - recognizer: _recognizer, - style: TextStyle( - fontWeight: _fontWeight, - fontStyle: _fontStyle, - fontSize: _fontSize, - color: _textColor, - decoration: _textDecoration, - background: _background, - height: height, - ), - ); - } - - Paint? get _background { - if (_backgroundColor != null) { - return Paint() - ..color = _backgroundColor! - ..strokeWidth = 24.0 - ..style = PaintingStyle.fill - ..strokeJoin = StrokeJoin.round; - } - return null; - } - - // bold - FontWeight get _fontWeight { - if (attributes.bold) { - return FontWeight.bold; - } - return FontWeight.normal; - } - - // underline or strikethrough - TextDecoration get _textDecoration { - var decorations = [TextDecoration.none]; - if (attributes.underline || attributes.href != null) { - decorations.add(TextDecoration.underline); - } - if (attributes.strikethrough) { - decorations.add(TextDecoration.lineThrough); - } - return TextDecoration.combine(decorations); - } - - // font - FontStyle get _fontStyle => - attributes.italic ? FontStyle.italic : FontStyle.normal; - - // text color - Color get _textColor { - if (attributes.href != null) { - return Colors.lightBlue; - } - if (attributes.code) { - return Colors.lightBlue.withOpacity(0.8); - } - return attributes.color ?? Colors.black; - } - - Color? get _backgroundColor { - if (attributes.backgroundColor != null) { - return attributes.backgroundColor!; - } else if (attributes.code) { - return Colors.blue.shade300.withOpacity(0.3); - } - return null; - } - - // font size - double get _fontSize { - return baseFontSize; - } - - // recognizer - GestureRecognizer? get _recognizer { - return gestureRecognizer; - } -} diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/selection_menu/selection_menu_service.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/selection_menu/selection_menu_service.dart index f4f2006af4..8d3d1e3453 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/selection_menu/selection_menu_service.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/selection_menu/selection_menu_service.dart @@ -1,10 +1,12 @@ import 'package:appflowy_editor/src/editor_state.dart'; import 'package:appflowy_editor/src/infra/flowy_svg.dart'; +import 'package:appflowy_editor/src/l10n/l10n.dart'; import 'package:appflowy_editor/src/render/image/image_upload_widget.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; import 'package:appflowy_editor/src/render/selection_menu/selection_menu_widget.dart'; import 'package:appflowy_editor/src/service/default_text_operations/format_rich_text_style.dart'; + import 'package:flutter/material.dart'; +import 'package:appflowy_editor/src/document/built_in_attribute_keys.dart'; abstract class SelectionMenuService { Offset get topLeft; @@ -54,7 +56,13 @@ class SelectionMenu implements SelectionMenuService { if (selectionRects.isEmpty) { return; } - final offset = selectionRects.first.bottomRight + const Offset(10, 10); + // Workaround: We can customize the padding through the [EditorStyle], + // but the coordinates of overlay are not properly converted currently. + // Just subtract the padding here as a result. + final baseOffset = + editorState.renderBox?.localToGlobal(Offset.zero) ?? Offset.zero; + final offset = + selectionRects.first.bottomRight + const Offset(10, 10) - baseOffset; _topLeft = offset; _selectionMenuEntry = OverlayEntry(builder: (context) { @@ -116,7 +124,7 @@ List get defaultSelectionMenuItems => _defaultSelectionMenuItems; final List _defaultSelectionMenuItems = [ SelectionMenuItem( - name: 'Text', + name: AppFlowyEditorLocalizations.current.text, icon: _selectionMenuIcon('text'), keywords: ['text'], handler: (editorState, _, __) { @@ -124,37 +132,37 @@ final List _defaultSelectionMenuItems = [ }, ), SelectionMenuItem( - name: 'Heading 1', + name: AppFlowyEditorLocalizations.current.heading1, icon: _selectionMenuIcon('h1'), keywords: ['heading 1, h1'], handler: (editorState, _, __) { - insertHeadingAfterSelection(editorState, StyleKey.h1); + insertHeadingAfterSelection(editorState, BuiltInAttributeKey.h1); }, ), SelectionMenuItem( - name: 'Heading 2', + name: AppFlowyEditorLocalizations.current.heading2, icon: _selectionMenuIcon('h2'), keywords: ['heading 2, h2'], handler: (editorState, _, __) { - insertHeadingAfterSelection(editorState, StyleKey.h2); + insertHeadingAfterSelection(editorState, BuiltInAttributeKey.h2); }, ), SelectionMenuItem( - name: 'Heading 3', + name: AppFlowyEditorLocalizations.current.heading3, icon: _selectionMenuIcon('h3'), keywords: ['heading 3, h3'], handler: (editorState, _, __) { - insertHeadingAfterSelection(editorState, StyleKey.h3); + insertHeadingAfterSelection(editorState, BuiltInAttributeKey.h3); }, ), SelectionMenuItem( - name: 'Image', + name: AppFlowyEditorLocalizations.current.image, icon: _selectionMenuIcon('image'), keywords: ['image'], handler: showImageUploadMenu, ), SelectionMenuItem( - name: 'Bulleted list', + name: AppFlowyEditorLocalizations.current.bulletedList, icon: _selectionMenuIcon('bulleted_list'), keywords: ['bulleted list', 'list', 'unordered list'], handler: (editorState, _, __) { @@ -162,7 +170,7 @@ final List _defaultSelectionMenuItems = [ }, ), SelectionMenuItem( - name: 'Checkbox', + name: AppFlowyEditorLocalizations.current.checkbox, icon: _selectionMenuIcon('checkbox'), keywords: ['todo list', 'list', 'checkbox list'], handler: (editorState, _, __) { @@ -170,7 +178,7 @@ final List _defaultSelectionMenuItems = [ }, ), SelectionMenuItem( - name: 'Quote', + name: AppFlowyEditorLocalizations.current.quote, icon: _selectionMenuIcon('quote'), keywords: ['quote', 'refer'], handler: (editorState, _, __) { diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/style/editor_style.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/style/editor_style.dart index e691ea689e..7ec426fff4 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/style/editor_style.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/style/editor_style.dart @@ -1,20 +1,254 @@ import 'package:flutter/material.dart'; +import 'package:appflowy_editor/src/document/node.dart'; +import 'package:appflowy_editor/src/editor_state.dart'; +import 'package:appflowy_editor/src/extensions/attributes_extension.dart'; + +typedef PluginStyler = Object Function(EditorState editorState, Node node); +typedef PluginStyle = Map; + /// Editor style configuration class EditorStyle { - const EditorStyle({ + EditorStyle({ required this.padding, - }); + required this.textStyle, + required this.cursorColor, + required this.selectionColor, + Map pluginStyles = const {}, + }) { + _pluginStyles.addAll(pluginStyles); + } - const EditorStyle.defaultStyle() - : padding = const EdgeInsets.fromLTRB(200.0, 0.0, 200.0, 0.0); + EditorStyle.defaultStyle() + : padding = const EdgeInsets.fromLTRB(200.0, 0.0, 200.0, 0.0), + textStyle = BuiltInTextStyle.builtIn(), + cursorColor = const Color(0xFF00BCF0), + selectionColor = const Color.fromARGB(53, 111, 201, 231); /// The margin of the document context from the editor. final EdgeInsets padding; + final BuiltInTextStyle textStyle; + final Color cursorColor; + final Color selectionColor; - EditorStyle copyWith({EdgeInsets? padding}) { + final Map _pluginStyles = Map.from(builtInTextStylers); + + Object? style(EditorState editorState, Node node, String key) { + final styler = _pluginStyles[node.id]?[key]; + if (styler != null) { + return styler(editorState, node); + } + return null; + } + + EditorStyle copyWith({ + EdgeInsets? padding, + BuiltInTextStyle? textStyle, + Color? cursorColor, + Color? selectionColor, + Map? pluginStyles, + }) { return EditorStyle( padding: padding ?? this.padding, + textStyle: textStyle ?? this.textStyle, + cursorColor: cursorColor ?? this.cursorColor, + selectionColor: selectionColor ?? this.selectionColor, + pluginStyles: pluginStyles ?? {}, ); } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + + return other is EditorStyle && + other.padding == padding && + other.textStyle == textStyle && + other.cursorColor == cursorColor && + other.selectionColor == selectionColor; + } + + @override + int get hashCode { + return padding.hashCode ^ + textStyle.hashCode ^ + cursorColor.hashCode ^ + selectionColor.hashCode; + } +} + +PluginStyle get builtInPluginStyle => Map.from({ + 'padding': (_, __) => const EdgeInsets.symmetric(vertical: 8.0), + 'textStyle': (_, __) => const TextStyle(), + 'iconSize': (_, __) => const Size.square(20.0), + 'iconPadding': (_, __) => const EdgeInsets.only(right: 5.0), + }); + +Map builtInTextStylers = { + 'text': builtInPluginStyle, + 'text/checkbox': builtInPluginStyle + ..update( + 'textStyle', + (_) => (EditorState editorState, Node node) { + if (node is TextNode && node.attributes.check == true) { + return const TextStyle( + color: Colors.grey, + decoration: TextDecoration.lineThrough, + ); + } + return const TextStyle(); + }, + ), + 'text/heading': builtInPluginStyle + ..update( + 'textStyle', + (_) => (EditorState editorState, Node node) { + final headingToFontSize = { + 'h1': 32.0, + 'h2': 28.0, + 'h3': 24.0, + 'h4': 18.0, + 'h5': 18.0, + 'h6': 18.0, + }; + final fontSize = headingToFontSize[node.attributes.heading] ?? 18.0; + return TextStyle(fontSize: fontSize, fontWeight: FontWeight.bold); + }, + ), + 'text/bulleted-list': builtInPluginStyle, + 'text/number-list': builtInPluginStyle + ..update( + 'iconPadding', + (_) => (EditorState editorState, Node node) { + return const EdgeInsets.only(left: 5.0, right: 5.0); + }, + ), + 'text/quote': builtInPluginStyle, + 'image': builtInPluginStyle, +}; + +class BuiltInTextStyle { + const BuiltInTextStyle({ + required this.defaultTextStyle, + required this.defaultPlaceholderTextStyle, + required this.bold, + required this.italic, + required this.underline, + required this.strikethrough, + required this.href, + required this.code, + this.highlightColorHex = '0x6000BCF0', + this.lineHeight = 1.5, + }); + + final TextStyle defaultTextStyle; + final TextStyle defaultPlaceholderTextStyle; + final TextStyle bold; + final TextStyle italic; + final TextStyle underline; + final TextStyle strikethrough; + final TextStyle href; + final TextStyle code; + final String highlightColorHex; + final double lineHeight; + + BuiltInTextStyle.builtIn() + : defaultTextStyle = const TextStyle(fontSize: 16.0, color: Colors.black), + defaultPlaceholderTextStyle = + const TextStyle(fontSize: 16.0, color: Colors.grey), + bold = const TextStyle(fontWeight: FontWeight.bold), + italic = const TextStyle(fontStyle: FontStyle.italic), + underline = const TextStyle(decoration: TextDecoration.underline), + strikethrough = const TextStyle(decoration: TextDecoration.lineThrough), + href = const TextStyle( + color: Colors.blue, + decoration: TextDecoration.underline, + ), + code = const TextStyle( + fontFamily: 'monospace', + color: Color(0xFF00BCF0), + backgroundColor: Color(0xFFE0F8FF), + ), + highlightColorHex = '0x6000BCF0', + lineHeight = 1.5; + + BuiltInTextStyle.builtInDarkMode() + : defaultTextStyle = const TextStyle(fontSize: 16.0, color: Colors.white), + defaultPlaceholderTextStyle = TextStyle( + fontSize: 16.0, + color: Colors.white.withOpacity(0.3), + ), + bold = const TextStyle(fontWeight: FontWeight.bold), + italic = const TextStyle(fontStyle: FontStyle.italic), + underline = const TextStyle(decoration: TextDecoration.underline), + strikethrough = const TextStyle(decoration: TextDecoration.lineThrough), + href = const TextStyle( + color: Colors.blue, + decoration: TextDecoration.underline, + ), + code = const TextStyle( + fontFamily: 'monospace', + color: Color(0xFF00BCF0), + backgroundColor: Color(0xFFE0F8FF), + ), + highlightColorHex = '0x6000BCF0', + lineHeight = 1.5; + + BuiltInTextStyle copyWith({ + TextStyle? defaultTextStyle, + TextStyle? defaultPlaceholderTextStyle, + TextStyle? bold, + TextStyle? italic, + TextStyle? underline, + TextStyle? strikethrough, + TextStyle? href, + TextStyle? code, + String? highlightColorHex, + double? lineHeight, + }) { + return BuiltInTextStyle( + defaultTextStyle: defaultTextStyle ?? this.defaultTextStyle, + defaultPlaceholderTextStyle: + defaultPlaceholderTextStyle ?? this.defaultPlaceholderTextStyle, + bold: bold ?? this.bold, + italic: italic ?? this.italic, + underline: underline ?? this.underline, + strikethrough: strikethrough ?? this.strikethrough, + href: href ?? this.href, + code: code ?? this.code, + highlightColorHex: highlightColorHex ?? this.highlightColorHex, + lineHeight: lineHeight ?? this.lineHeight, + ); + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + + return other is BuiltInTextStyle && + other.defaultTextStyle == defaultTextStyle && + other.defaultPlaceholderTextStyle == defaultPlaceholderTextStyle && + other.bold == bold && + other.italic == italic && + other.underline == underline && + other.strikethrough == strikethrough && + other.href == href && + other.code == code && + other.highlightColorHex == highlightColorHex && + other.lineHeight == lineHeight; + } + + @override + int get hashCode { + return defaultTextStyle.hashCode ^ + defaultPlaceholderTextStyle.hashCode ^ + bold.hashCode ^ + italic.hashCode ^ + underline.hashCode ^ + strikethrough.hashCode ^ + href.hashCode ^ + code.hashCode ^ + highlightColorHex.hashCode ^ + lineHeight.hashCode; + } } diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/toolbar/toolbar_item.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/toolbar/toolbar_item.dart index 1b028abf50..02eaddc68d 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/toolbar/toolbar_item.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/toolbar/toolbar_item.dart @@ -2,12 +2,13 @@ import 'package:appflowy_editor/appflowy_editor.dart'; import 'package:appflowy_editor/src/extensions/url_launcher_extension.dart'; import 'package:appflowy_editor/src/infra/flowy_svg.dart'; import 'package:appflowy_editor/src/render/link_menu/link_menu.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; import 'package:appflowy_editor/src/extensions/text_node_extensions.dart'; import 'package:appflowy_editor/src/extensions/editor_state_extensions.dart'; import 'package:appflowy_editor/src/service/default_text_operations/format_rich_text_style.dart'; + import 'package:flutter/material.dart'; import 'package:rich_clipboard/rich_clipboard.dart'; +import 'package:appflowy_editor/src/document/built_in_attribute_keys.dart'; typedef ToolbarItemEventHandler = void Function( EditorState editorState, BuildContext context); @@ -63,7 +64,7 @@ List defaultToolbarItems = [ ToolbarItem( id: 'appflowy.toolbar.h1', type: 1, - tooltipsMessage: 'Heading 1', + tooltipsMessage: AppFlowyEditorLocalizations.current.heading1, iconBuilder: (isHighlight) => FlowySvg( name: 'toolbar/h1', color: isHighlight ? Colors.lightBlue : null, @@ -71,15 +72,16 @@ List defaultToolbarItems = [ validator: _onlyShowInSingleTextSelection, highlightCallback: (editorState) => _allSatisfy( editorState, - StyleKey.heading, - (value) => value == StyleKey.h1, + BuiltInAttributeKey.heading, + (value) => value == BuiltInAttributeKey.h1, ), - handler: (editorState, context) => formatHeading(editorState, StyleKey.h1), + handler: (editorState, context) => + formatHeading(editorState, BuiltInAttributeKey.h1), ), ToolbarItem( id: 'appflowy.toolbar.h2', type: 1, - tooltipsMessage: 'Heading 2', + tooltipsMessage: AppFlowyEditorLocalizations.current.heading2, iconBuilder: (isHighlight) => FlowySvg( name: 'toolbar/h2', color: isHighlight ? Colors.lightBlue : null, @@ -87,15 +89,16 @@ List defaultToolbarItems = [ validator: _onlyShowInSingleTextSelection, highlightCallback: (editorState) => _allSatisfy( editorState, - StyleKey.heading, - (value) => value == StyleKey.h2, + BuiltInAttributeKey.heading, + (value) => value == BuiltInAttributeKey.h2, ), - handler: (editorState, context) => formatHeading(editorState, StyleKey.h2), + handler: (editorState, context) => + formatHeading(editorState, BuiltInAttributeKey.h2), ), ToolbarItem( id: 'appflowy.toolbar.h3', type: 1, - tooltipsMessage: 'Heading 3', + tooltipsMessage: AppFlowyEditorLocalizations.current.heading3, iconBuilder: (isHighlight) => FlowySvg( name: 'toolbar/h3', color: isHighlight ? Colors.lightBlue : null, @@ -103,15 +106,16 @@ List defaultToolbarItems = [ validator: _onlyShowInSingleTextSelection, highlightCallback: (editorState) => _allSatisfy( editorState, - StyleKey.heading, - (value) => value == StyleKey.h3, + BuiltInAttributeKey.heading, + (value) => value == BuiltInAttributeKey.h3, ), - handler: (editorState, context) => formatHeading(editorState, StyleKey.h3), + handler: (editorState, context) => + formatHeading(editorState, BuiltInAttributeKey.h3), ), ToolbarItem( id: 'appflowy.toolbar.bold', type: 2, - tooltipsMessage: 'Bold', + tooltipsMessage: AppFlowyEditorLocalizations.current.bold, iconBuilder: (isHighlight) => FlowySvg( name: 'toolbar/bold', color: isHighlight ? Colors.lightBlue : null, @@ -119,7 +123,7 @@ List defaultToolbarItems = [ validator: _showInTextSelection, highlightCallback: (editorState) => _allSatisfy( editorState, - StyleKey.bold, + BuiltInAttributeKey.bold, (value) => value == true, ), handler: (editorState, context) => formatBold(editorState), @@ -127,7 +131,7 @@ List defaultToolbarItems = [ ToolbarItem( id: 'appflowy.toolbar.italic', type: 2, - tooltipsMessage: 'Italic', + tooltipsMessage: AppFlowyEditorLocalizations.current.italic, iconBuilder: (isHighlight) => FlowySvg( name: 'toolbar/italic', color: isHighlight ? Colors.lightBlue : null, @@ -135,7 +139,7 @@ List defaultToolbarItems = [ validator: _showInTextSelection, highlightCallback: (editorState) => _allSatisfy( editorState, - StyleKey.italic, + BuiltInAttributeKey.italic, (value) => value == true, ), handler: (editorState, context) => formatItalic(editorState), @@ -143,7 +147,7 @@ List defaultToolbarItems = [ ToolbarItem( id: 'appflowy.toolbar.underline', type: 2, - tooltipsMessage: 'Underline', + tooltipsMessage: AppFlowyEditorLocalizations.current.underline, iconBuilder: (isHighlight) => FlowySvg( name: 'toolbar/underline', color: isHighlight ? Colors.lightBlue : null, @@ -151,7 +155,7 @@ List defaultToolbarItems = [ validator: _showInTextSelection, highlightCallback: (editorState) => _allSatisfy( editorState, - StyleKey.underline, + BuiltInAttributeKey.underline, (value) => value == true, ), handler: (editorState, context) => formatUnderline(editorState), @@ -159,7 +163,7 @@ List defaultToolbarItems = [ ToolbarItem( id: 'appflowy.toolbar.strikethrough', type: 2, - tooltipsMessage: 'Strikethrough', + tooltipsMessage: AppFlowyEditorLocalizations.current.strikethrough, iconBuilder: (isHighlight) => FlowySvg( name: 'toolbar/strikethrough', color: isHighlight ? Colors.lightBlue : null, @@ -167,7 +171,7 @@ List defaultToolbarItems = [ validator: _showInTextSelection, highlightCallback: (editorState) => _allSatisfy( editorState, - StyleKey.strikethrough, + BuiltInAttributeKey.strikethrough, (value) => value == true, ), handler: (editorState, context) => formatStrikethrough(editorState), @@ -175,7 +179,7 @@ List defaultToolbarItems = [ ToolbarItem( id: 'appflowy.toolbar.code', type: 2, - tooltipsMessage: 'Embed Code', + tooltipsMessage: AppFlowyEditorLocalizations.current.embedCode, iconBuilder: (isHighlight) => FlowySvg( name: 'toolbar/code', color: isHighlight ? Colors.lightBlue : null, @@ -183,15 +187,15 @@ List defaultToolbarItems = [ validator: _showInTextSelection, highlightCallback: (editorState) => _allSatisfy( editorState, - StyleKey.code, - (value) => value == StyleKey.code, + BuiltInAttributeKey.code, + (value) => value == true, ), handler: (editorState, context) => formatEmbedCode(editorState), ), ToolbarItem( id: 'appflowy.toolbar.quote', type: 3, - tooltipsMessage: 'Quote', + tooltipsMessage: AppFlowyEditorLocalizations.current.quote, iconBuilder: (isHighlight) => FlowySvg( name: 'toolbar/quote', color: isHighlight ? Colors.lightBlue : null, @@ -199,15 +203,15 @@ List defaultToolbarItems = [ validator: _onlyShowInSingleTextSelection, highlightCallback: (editorState) => _allSatisfy( editorState, - StyleKey.subtype, - (value) => value == StyleKey.quote, + BuiltInAttributeKey.subtype, + (value) => value == BuiltInAttributeKey.quote, ), handler: (editorState, context) => formatQuote(editorState), ), ToolbarItem( id: 'appflowy.toolbar.bulleted_list', type: 3, - tooltipsMessage: 'Bulleted list', + tooltipsMessage: AppFlowyEditorLocalizations.current.bulletedList, iconBuilder: (isHighlight) => FlowySvg( name: 'toolbar/bulleted_list', color: isHighlight ? Colors.lightBlue : null, @@ -215,15 +219,15 @@ List defaultToolbarItems = [ validator: _onlyShowInSingleTextSelection, highlightCallback: (editorState) => _allSatisfy( editorState, - StyleKey.subtype, - (value) => value == StyleKey.bulletedList, + BuiltInAttributeKey.subtype, + (value) => value == BuiltInAttributeKey.bulletedList, ), handler: (editorState, context) => formatBulletedList(editorState), ), ToolbarItem( id: 'appflowy.toolbar.link', type: 4, - tooltipsMessage: 'Link', + tooltipsMessage: AppFlowyEditorLocalizations.current.link, iconBuilder: (isHighlight) => FlowySvg( name: 'toolbar/link', color: isHighlight ? Colors.lightBlue : null, @@ -231,7 +235,7 @@ List defaultToolbarItems = [ validator: _onlyShowInSingleTextSelection, highlightCallback: (editorState) => _allSatisfy( editorState, - StyleKey.href, + BuiltInAttributeKey.href, (value) => value != null, ), handler: (editorState, context) => showLinkMenu(context, editorState), @@ -239,7 +243,7 @@ List defaultToolbarItems = [ ToolbarItem( id: 'appflowy.toolbar.highlight', type: 4, - tooltipsMessage: 'Highlight', + tooltipsMessage: AppFlowyEditorLocalizations.current.highlight, iconBuilder: (isHighlight) => FlowySvg( name: 'toolbar/highlight', color: isHighlight ? Colors.lightBlue : null, @@ -247,10 +251,13 @@ List defaultToolbarItems = [ validator: _showInTextSelection, highlightCallback: (editorState) => _allSatisfy( editorState, - StyleKey.backgroundColor, + BuiltInAttributeKey.backgroundColor, (value) => value != null, ), - handler: (editorState, context) => formatHighlight(editorState), + handler: (editorState, context) => formatHighlight( + editorState, + editorState.editorStyle.textStyle.highlightColorHex, + ), ), ]; @@ -296,6 +303,9 @@ void showLinkMenu( matchRect = rect; } } + final baseOffset = + editorState.renderBox?.localToGlobal(Offset.zero) ?? Offset.zero; + matchRect = matchRect.shift(-baseOffset); _dismissLinkMenu(); _editorState = editorState; @@ -314,7 +324,8 @@ void showLinkMenu( final textNode = node.first as TextNode; String? linkText; if (textNode.allSatisfyLinkInSelection(selection)) { - linkText = textNode.getAttributeInSelection(selection, StyleKey.href); + linkText = + textNode.getAttributeInSelection(selection, BuiltInAttributeKey.href); } _linkMenuOverlay = OverlayEntry(builder: (context) { return Positioned( @@ -328,7 +339,8 @@ void showLinkMenu( }, onSubmitted: (text) { TransactionBuilder(editorState) - ..formatText(textNode, index, length, {StyleKey.href: text}) + ..formatText( + textNode, index, length, {BuiltInAttributeKey.href: text}) ..commit(); _dismissLinkMenu(); }, @@ -338,7 +350,8 @@ void showLinkMenu( }, onRemoveLink: () { TransactionBuilder(editorState) - ..formatText(textNode, index, length, {StyleKey.href: null}) + ..formatText( + textNode, index, length, {BuiltInAttributeKey.href: null}) ..commit(); _dismissLinkMenu(); }, diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/default_text_operations/format_rich_text_style.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/default_text_operations/format_rich_text_style.dart index b832f149b1..23ddc75a69 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/default_text_operations/format_rich_text_style.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/default_text_operations/format_rich_text_style.dart @@ -6,31 +6,31 @@ import 'package:appflowy_editor/src/editor_state.dart'; import 'package:appflowy_editor/src/extensions/text_node_extensions.dart'; import 'package:appflowy_editor/src/extensions/path_extensions.dart'; import 'package:appflowy_editor/src/operation/transaction_builder.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; +import 'package:appflowy_editor/src/document/built_in_attribute_keys.dart'; void insertHeadingAfterSelection(EditorState editorState, String heading) { insertTextNodeAfterSelection(editorState, { - StyleKey.subtype: StyleKey.heading, - StyleKey.heading: heading, + BuiltInAttributeKey.subtype: BuiltInAttributeKey.heading, + BuiltInAttributeKey.heading: heading, }); } void insertQuoteAfterSelection(EditorState editorState) { insertTextNodeAfterSelection(editorState, { - StyleKey.subtype: StyleKey.quote, + BuiltInAttributeKey.subtype: BuiltInAttributeKey.quote, }); } void insertCheckboxAfterSelection(EditorState editorState) { insertTextNodeAfterSelection(editorState, { - StyleKey.subtype: StyleKey.checkbox, - StyleKey.checkbox: false, + BuiltInAttributeKey.subtype: BuiltInAttributeKey.checkbox, + BuiltInAttributeKey.checkbox: false, }); } void insertBulletedListAfterSelection(EditorState editorState) { insertTextNodeAfterSelection(editorState, { - StyleKey.subtype: StyleKey.bulletedList, + BuiltInAttributeKey.subtype: BuiltInAttributeKey.bulletedList, }); } @@ -68,27 +68,27 @@ void formatText(EditorState editorState) { void formatHeading(EditorState editorState, String heading) { formatTextNodes(editorState, { - StyleKey.subtype: StyleKey.heading, - StyleKey.heading: heading, + BuiltInAttributeKey.subtype: BuiltInAttributeKey.heading, + BuiltInAttributeKey.heading: heading, }); } void formatQuote(EditorState editorState) { formatTextNodes(editorState, { - StyleKey.subtype: StyleKey.quote, + BuiltInAttributeKey.subtype: BuiltInAttributeKey.quote, }); } -void formatCheckbox(EditorState editorState) { +void formatCheckbox(EditorState editorState, bool check) { formatTextNodes(editorState, { - StyleKey.subtype: StyleKey.checkbox, - StyleKey.checkbox: false, + BuiltInAttributeKey.subtype: BuiltInAttributeKey.checkbox, + BuiltInAttributeKey.checkbox: check, }); } void formatBulletedList(EditorState editorState) { formatTextNodes(editorState, { - StyleKey.subtype: StyleKey.bulletedList, + BuiltInAttributeKey.subtype: BuiltInAttributeKey.bulletedList, }); } @@ -107,7 +107,7 @@ bool formatTextNodes(EditorState editorState, Attributes attributes) { ..updateNode( textNode, Attributes.fromIterable( - StyleKey.globalStyleKeys, + BuiltInAttributeKey.globalStyleKeys, value: (_) => null, )..addAll(attributes), ) @@ -124,44 +124,58 @@ bool formatTextNodes(EditorState editorState, Attributes attributes) { } bool formatBold(EditorState editorState) { - return formatRichTextPartialStyle(editorState, StyleKey.bold); + return formatRichTextPartialStyle(editorState, BuiltInAttributeKey.bold); } bool formatItalic(EditorState editorState) { - return formatRichTextPartialStyle(editorState, StyleKey.italic); + return formatRichTextPartialStyle(editorState, BuiltInAttributeKey.italic); } bool formatUnderline(EditorState editorState) { - return formatRichTextPartialStyle(editorState, StyleKey.underline); + return formatRichTextPartialStyle(editorState, BuiltInAttributeKey.underline); } bool formatStrikethrough(EditorState editorState) { - return formatRichTextPartialStyle(editorState, StyleKey.strikethrough); + return formatRichTextPartialStyle( + editorState, BuiltInAttributeKey.strikethrough); } bool formatEmbedCode(EditorState editorState) { - return formatRichTextPartialStyle(editorState, StyleKey.code); + return formatRichTextPartialStyle(editorState, BuiltInAttributeKey.code); } -bool formatHighlight(EditorState editorState) { +bool formatHighlight(EditorState editorState, String colorHex) { bool value = _allSatisfyInSelection( - editorState, StyleKey.backgroundColor, defaultHighlightColor); - return formatRichTextPartialStyle(editorState, StyleKey.backgroundColor, - customValue: value ? defaultBackgroundColor : defaultHighlightColor); + editorState, + BuiltInAttributeKey.backgroundColor, + colorHex, + ); + return formatRichTextPartialStyle( + editorState, + BuiltInAttributeKey.backgroundColor, + customValue: value ? '0x00000000' : colorHex, + ); } bool formatRichTextPartialStyle(EditorState editorState, String styleKey, {Object? customValue}) { Attributes attributes = { styleKey: customValue ?? - !_allSatisfyInSelection(editorState, styleKey, customValue ?? true), + !_allSatisfyInSelection( + editorState, + styleKey, + customValue ?? true, + ), }; return formatRichTextStyle(editorState, attributes); } bool _allSatisfyInSelection( - EditorState editorState, String styleKey, dynamic matchValue) { + EditorState editorState, + String styleKey, + dynamic matchValue, +) { final selection = editorState.service.selectionService.currentSelection.value; final nodes = editorState.service.selectionService.currentSelectedNodes; final textNodes = nodes.whereType().toList(growable: false); diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/editor_service.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/editor_service.dart index ba9c45732b..654d8e4b26 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/editor_service.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/editor_service.dart @@ -38,7 +38,7 @@ class AppFlowyEditor extends StatefulWidget { this.customBuilders = const {}, this.shortcutEvents = const [], this.selectionMenuItems = const [], - this.editorStyle = const EditorStyle.defaultStyle(), + required this.editorStyle, }) : super(key: key); final EditorState editorState; @@ -58,6 +58,8 @@ class AppFlowyEditor extends StatefulWidget { } class _AppFlowyEditorState extends State { + Widget? services; + EditorState get editorState => widget.editorState; @override @@ -75,19 +77,34 @@ class _AppFlowyEditorState extends State { if (editorState.service != oldWidget.editorState.service) { editorState.selectionMenuItems = widget.selectionMenuItems; - editorState.editorStyle = widget.editorStyle; editorState.service.renderPluginService = _createRenderPlugin(); } + + editorState.editorStyle = widget.editorStyle; + services = null; } @override Widget build(BuildContext context) { + services ??= _buildServices(context); + return Overlay( + initialEntries: [ + OverlayEntry( + builder: (context) => services!, + ), + ], + ); + } + + AppFlowyScroll _buildServices(BuildContext context) { return AppFlowyScroll( key: editorState.service.scrollServiceKey, child: Padding( padding: widget.editorStyle.padding, child: AppFlowySelection( key: editorState.service.selectionServiceKey, + cursorColor: widget.editorStyle.cursorColor, + selectionColor: widget.editorStyle.selectionColor, editorState: editorState, child: AppFlowyInput( key: editorState.service.inputServiceKey, diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/backspace_handler.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/backspace_handler.dart index 82d7f7f3b3..9d65088914 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/backspace_handler.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/backspace_handler.dart @@ -1,8 +1,7 @@ -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; import 'package:appflowy_editor/src/service/internal_key_event_handlers/number_list_helper.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; - +import 'package:appflowy_editor/src/document/built_in_attribute_keys.dart'; import 'package:appflowy_editor/appflowy_editor.dart'; // Handle delete text. @@ -42,12 +41,12 @@ KeyEventResult _handleBackspace(EditorState editorState, RawKeyEvent event) { if (index < 0 && selection.isCollapsed) { // 1. style if (textNode.subtype != null) { - if (textNode.subtype == StyleKey.numberList) { + if (textNode.subtype == BuiltInAttributeKey.numberList) { cancelNumberListPath = textNode.path; } transactionBuilder ..updateNode(textNode, { - StyleKey.subtype: null, + BuiltInAttributeKey.subtype: null, textNode.subtype!: null, }) ..afterSelection = Selection.collapsed( @@ -91,7 +90,8 @@ KeyEventResult _handleBackspace(EditorState editorState, RawKeyEvent event) { _deleteTextNodes(transactionBuilder, textNodes, selection); transactionBuilder.commit(); - if (nodeAtStart is TextNode && nodeAtStart.subtype == StyleKey.numberList) { + if (nodeAtStart is TextNode && + nodeAtStart.subtype == BuiltInAttributeKey.numberList) { makeFollowingNodesIncremental( editorState, startPosition.path, @@ -130,7 +130,7 @@ KeyEventResult _backDeleteToPreviousTextNode( bool prevIsNumberList = false; while (previous != null) { if (previous is TextNode) { - if (previous.subtype == StyleKey.numberList) { + if (previous.subtype == BuiltInAttributeKey.numberList) { prevIsNumberList = true; } @@ -212,7 +212,8 @@ KeyEventResult _handleDelete(EditorState editorState, RawKeyEvent event) { _deleteTextNodes(transactionBuilder, textNodes, selection); transactionBuilder.commit(); - if (nodeAtStart is TextNode && nodeAtStart.subtype == StyleKey.numberList) { + if (nodeAtStart is TextNode && + nodeAtStart.subtype == BuiltInAttributeKey.numberList) { makeFollowingNodesIncremental( editorState, startPosition.path, transactionBuilder.afterSelection!); } @@ -236,7 +237,7 @@ KeyEventResult _mergeNextLineIntoThisLine( transactionBuilder.deleteNode(nextNode); transactionBuilder.commit(); - if (textNode.subtype == StyleKey.numberList) { + if (textNode.subtype == BuiltInAttributeKey.numberList) { makeFollowingNodesIncremental(editorState, textNode.path, selection); } diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/copy_paste_handler.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/copy_paste_handler.dart index df54753e86..e48ec3426d 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/copy_paste_handler.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/copy_paste_handler.dart @@ -1,7 +1,7 @@ import 'package:appflowy_editor/appflowy_editor.dart'; import 'package:appflowy_editor/src/infra/html_converter.dart'; import 'package:appflowy_editor/src/document/node_iterator.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; +import 'package:appflowy_editor/src/document/built_in_attribute_keys.dart'; import 'package:appflowy_editor/src/service/internal_key_event_handlers/number_list_helper.dart'; import 'package:flutter/material.dart'; import 'package:rich_clipboard/rich_clipboard.dart'; @@ -108,8 +108,8 @@ void _pasteMultipleLinesInText( if (nodeAtPath.type == "text" && firstNode.type == "text") { int? startNumber; - if (nodeAtPath.subtype == StyleKey.numberList) { - startNumber = nodeAtPath.attributes[StyleKey.number] as int; + if (nodeAtPath.subtype == BuiltInAttributeKey.numberList) { + startNumber = nodeAtPath.attributes[BuiltInAttributeKey.number] as int; } // split and merge diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/enter_without_shift_in_text_node_handler.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/enter_without_shift_in_text_node_handler.dart index 4ed21f21f8..a82e751083 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/enter_without_shift_in_text_node_handler.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/enter_without_shift_in_text_node_handler.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:appflowy_editor/src/extensions/path_extensions.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; +import 'package:appflowy_editor/src/document/built_in_attribute_keys.dart'; import './number_list_helper.dart'; /// Handle some cases where enter is pressed and shift is not pressed. @@ -59,7 +59,8 @@ ShortcutEventHandler enterWithoutShiftInTextNodesHandler = ..afterSelection = afterSelection ..commit(); - if (startNode is TextNode && startNode.subtype == StyleKey.numberList) { + if (startNode is TextNode && + startNode.subtype == BuiltInAttributeKey.numberList) { makeFollowingNodesIncremental( editorState, selection.start.path, afterSelection); } @@ -82,17 +83,15 @@ ShortcutEventHandler enterWithoutShiftInTextNodesHandler = Position(path: textNode.path, offset: 0), ); TransactionBuilder(editorState) - ..updateNode( - textNode, - Attributes.fromIterable( - StyleKey.globalStyleKeys, - value: (_) => null, - )) + ..updateNode(textNode, { + BuiltInAttributeKey.subtype: null, + }) ..afterSelection = afterSelection ..commit(); final nextNode = textNode.next; - if (nextNode is TextNode && nextNode.subtype == StyleKey.numberList) { + if (nextNode is TextNode && + nextNode.subtype == BuiltInAttributeKey.numberList) { makeFollowingNodesIncremental( editorState, textNode.path, afterSelection, beginNum: 0); @@ -103,11 +102,13 @@ ShortcutEventHandler enterWithoutShiftInTextNodesHandler = Position(path: textNode.path.next, offset: 0), ); - if (subtype == StyleKey.numberList) { - final prevNumber = textNode.attributes[StyleKey.number] as int; + if (subtype == BuiltInAttributeKey.numberList) { + final prevNumber = + textNode.attributes[BuiltInAttributeKey.number] as int; final newNode = TextNode.empty(); - newNode.attributes[StyleKey.subtype] = StyleKey.numberList; - newNode.attributes[StyleKey.number] = prevNumber; + newNode.attributes[BuiltInAttributeKey.subtype] = + BuiltInAttributeKey.numberList; + newNode.attributes[BuiltInAttributeKey.number] = prevNumber; final insertPath = textNode.path; TransactionBuilder(editorState) ..insertNode( @@ -159,7 +160,7 @@ ShortcutEventHandler enterWithoutShiftInTextNodesHandler = // If the new type of a text node is number list, // the numbers of the following nodes should be incremental. - if (textNode.subtype == StyleKey.numberList) { + if (textNode.subtype == BuiltInAttributeKey.numberList) { makeFollowingNodesIncremental(editorState, nextPath, afterSelection); } @@ -169,17 +170,17 @@ ShortcutEventHandler enterWithoutShiftInTextNodesHandler = Attributes _attributesFromPreviousLine(TextNode textNode) { final prevAttributes = textNode.attributes; final subType = textNode.subtype; - if (subType == null || subType == StyleKey.heading) { + if (subType == null || subType == BuiltInAttributeKey.heading) { return {}; } final copy = Attributes.from(prevAttributes); - if (subType == StyleKey.numberList) { + if (subType == BuiltInAttributeKey.numberList) { return _nextNumberAttributesFromPreviousLine(copy, textNode); } - if (subType == StyleKey.checkbox) { - copy[StyleKey.checkbox] = false; + if (subType == BuiltInAttributeKey.checkbox) { + copy[BuiltInAttributeKey.checkbox] = false; return copy; } @@ -188,7 +189,7 @@ Attributes _attributesFromPreviousLine(TextNode textNode) { Attributes _nextNumberAttributesFromPreviousLine( Attributes copy, TextNode textNode) { - final prevNum = textNode.attributes[StyleKey.number] as int?; - copy[StyleKey.number] = prevNum == null ? 1 : prevNum + 1; + final prevNum = textNode.attributes[BuiltInAttributeKey.number] as int?; + copy[BuiltInAttributeKey.number] = prevNum == null ? 1 : prevNum + 1; return copy; } diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/format_style_handler.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/format_style_handler.dart index 2f17296ca6..db5c298526 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/format_style_handler.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/format_style_handler.dart @@ -1,8 +1,8 @@ +import 'package:appflowy_editor/src/service/default_text_operations/format_rich_text_style.dart'; import 'package:appflowy_editor/src/service/shortcut_event/shortcut_event_handler.dart'; import 'package:flutter/material.dart'; import 'package:appflowy_editor/src/document/node.dart'; -import 'package:appflowy_editor/src/service/default_text_operations/format_rich_text_style.dart'; ShortcutEventHandler formatBoldEventHandler = (editorState, event) { final selection = editorState.service.selectionService.currentSelection.value; @@ -55,7 +55,10 @@ ShortcutEventHandler formatHighlightEventHandler = (editorState, event) { if (selection == null || textNodes.isEmpty) { return KeyEventResult.ignored; } - formatHighlight(editorState); + formatHighlight( + editorState, + editorState.editorStyle.textStyle.highlightColorHex, + ); return KeyEventResult.handled; }; @@ -73,3 +76,14 @@ ShortcutEventHandler formatLinkEventHandler = (editorState, event) { } return KeyEventResult.ignored; }; + +ShortcutEventHandler formatEmbedCodeEventHandler = (editorState, event) { + final selection = editorState.service.selectionService.currentSelection.value; + final nodes = editorState.service.selectionService.currentSelectedNodes; + final textNodes = nodes.whereType().toList(growable: false); + if (selection == null || textNodes.isEmpty) { + return KeyEventResult.ignored; + } + formatEmbedCode(editorState); + return KeyEventResult.ignored; +}; diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/number_list_helper.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/number_list_helper.dart index 4e726fc86e..ed9018a71e 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/number_list_helper.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/number_list_helper.dart @@ -1,6 +1,6 @@ import 'package:appflowy_editor/src/document/selection.dart'; import 'package:appflowy_editor/src/editor_state.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; +import 'package:appflowy_editor/src/document/built_in_attribute_keys.dart'; import 'package:appflowy_editor/src/operation/transaction_builder.dart'; import 'package:appflowy_editor/src/document/attributes.dart'; @@ -11,7 +11,7 @@ void makeFollowingNodesIncremental( if (insertNode == null) { return; } - beginNum ??= insertNode.attributes[StyleKey.number] as int; + beginNum ??= insertNode.attributes[BuiltInAttributeKey.number] as int; int numPtr = beginNum + 1; var ptr = insertNode.next; @@ -19,13 +19,13 @@ void makeFollowingNodesIncremental( final builder = TransactionBuilder(editorState); while (ptr != null) { - if (ptr.subtype != StyleKey.numberList) { + if (ptr.subtype != BuiltInAttributeKey.numberList) { break; } - final currentNum = ptr.attributes[StyleKey.number] as int; + final currentNum = ptr.attributes[BuiltInAttributeKey.number] as int; if (currentNum != numPtr) { Attributes updateAttributes = {}; - updateAttributes[StyleKey.number] = numPtr; + updateAttributes[BuiltInAttributeKey.number] = numPtr; builder.updateNode(ptr, updateAttributes); } diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/whitespace_handler.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/whitespace_handler.dart index fb78fce1b3..fb865ce541 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/whitespace_handler.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/whitespace_handler.dart @@ -1,14 +1,14 @@ import 'package:appflowy_editor/src/service/shortcut_event/shortcut_event_handler.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; - +import 'package:appflowy_editor/src/document/built_in_attribute_keys.dart'; import 'package:appflowy_editor/src/document/node.dart'; import 'package:appflowy_editor/src/document/position.dart'; import 'package:appflowy_editor/src/document/selection.dart'; import 'package:appflowy_editor/src/editor_state.dart'; import 'package:appflowy_editor/src/operation/transaction_builder.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; import './number_list_helper.dart'; +import 'package:appflowy_editor/src/extensions/attributes_extension.dart'; @visibleForTesting List get checkboxListSymbols => _checkboxListSymbols; @@ -68,7 +68,7 @@ ShortcutEventHandler whiteSpaceHandler = (editorState, event) { KeyEventResult _toNumberList(EditorState editorState, TextNode textNode, String matchText, String numText) { - if (textNode.subtype == StyleKey.bulletedList) { + if (textNode.subtype == BuiltInAttributeKey.bulletedList) { return KeyEventResult.ignored; } @@ -86,8 +86,9 @@ KeyEventResult _toNumberList(EditorState editorState, TextNode textNode, final prevNode = textNode.previous; if (prevNode != null && prevNode is TextNode && - prevNode.attributes[StyleKey.subtype] == StyleKey.numberList) { - final prevNumber = prevNode.attributes[StyleKey.number] as int; + prevNode.attributes[BuiltInAttributeKey.subtype] == + BuiltInAttributeKey.numberList) { + final prevNumber = prevNode.attributes[BuiltInAttributeKey.number] as int; if (numValue != prevNumber + 1) { return KeyEventResult.ignored; } @@ -102,8 +103,10 @@ KeyEventResult _toNumberList(EditorState editorState, TextNode textNode, TransactionBuilder(editorState) ..deleteText(textNode, 0, matchText.length) - ..updateNode(textNode, - {StyleKey.subtype: StyleKey.numberList, StyleKey.number: numValue}) + ..updateNode(textNode, { + BuiltInAttributeKey.subtype: BuiltInAttributeKey.numberList, + BuiltInAttributeKey.number: numValue + }) ..afterSelection = afterSelection ..commit(); @@ -113,13 +116,13 @@ KeyEventResult _toNumberList(EditorState editorState, TextNode textNode, } KeyEventResult _toBulletedList(EditorState editorState, TextNode textNode) { - if (textNode.subtype == StyleKey.bulletedList) { + if (textNode.subtype == BuiltInAttributeKey.bulletedList) { return KeyEventResult.ignored; } TransactionBuilder(editorState) ..deleteText(textNode, 0, 1) ..updateNode(textNode, { - StyleKey.subtype: StyleKey.bulletedList, + BuiltInAttributeKey.subtype: BuiltInAttributeKey.bulletedList, }) ..afterSelection = Selection.collapsed( Position( @@ -132,7 +135,7 @@ KeyEventResult _toBulletedList(EditorState editorState, TextNode textNode) { } KeyEventResult _toCheckboxList(EditorState editorState, TextNode textNode) { - if (textNode.subtype == StyleKey.checkbox) { + if (textNode.subtype == BuiltInAttributeKey.checkbox) { return KeyEventResult.ignored; } final String symbol; @@ -152,8 +155,8 @@ KeyEventResult _toCheckboxList(EditorState editorState, TextNode textNode) { TransactionBuilder(editorState) ..deleteText(textNode, 0, symbol.length) ..updateNode(textNode, { - StyleKey.subtype: StyleKey.checkbox, - StyleKey.checkbox: check, + BuiltInAttributeKey.subtype: BuiltInAttributeKey.checkbox, + BuiltInAttributeKey.checkbox: check, }) ..afterSelection = Selection.collapsed( Position( @@ -178,8 +181,8 @@ KeyEventResult _toHeadingStyle( TransactionBuilder(editorState) ..deleteText(textNode, 0, x) ..updateNode(textNode, { - StyleKey.subtype: StyleKey.heading, - StyleKey.heading: hX, + BuiltInAttributeKey.subtype: BuiltInAttributeKey.heading, + BuiltInAttributeKey.heading: hX, }) ..afterSelection = Selection.collapsed( Position( diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/selection_service.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/selection_service.dart index ef3b501a5b..d755e8c9f9 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/selection_service.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/selection_service.dart @@ -82,7 +82,7 @@ abstract class AppFlowySelectionService { class AppFlowySelection extends StatefulWidget { const AppFlowySelection({ Key? key, - this.cursorColor = Colors.black, + this.cursorColor = const Color(0xFF00BCF0), this.selectionColor = const Color.fromARGB(53, 111, 201, 231), required this.editorState, required this.child, @@ -343,8 +343,10 @@ class _AppFlowySelectionState extends State currentSelectedNodes = nodes; // TODO: need to be refactored. - Rect? topmostRect; + Offset? toolbarOffset; LayerLink? layerLink; + final editorOffset = + editorState.renderBox?.localToGlobal(Offset.zero) ?? Offset.zero; final backwardNodes = selection.isBackward ? nodes : nodes.reversed.toList(growable: false); @@ -381,13 +383,20 @@ class _AppFlowySelectionState extends State } } + const baseToolbarOffset = Offset(0, 35.0); final rects = selectable.getRectsInSelection(newSelection); for (final rect in rects) { - // TODO: Need to compute more precise location. - topmostRect ??= rect; - layerLink ??= node.layerLink; + final selectionRect = _transformRectToGlobal(selectable, rect); + selectionRects.add(selectionRect); - selectionRects.add(_transformRectToGlobal(selectable, rect)); + // TODO: Need to compute more precise location. + if ((selectionRect.topLeft.dy - editorOffset.dy) <= + baseToolbarOffset.dy) { + toolbarOffset ??= rect.bottomLeft; + } else { + toolbarOffset ??= rect.topLeft - baseToolbarOffset; + } + layerLink ??= node.layerLink; final overlay = OverlayEntry( builder: (context) => SelectionWidget( @@ -402,9 +411,11 @@ class _AppFlowySelectionState extends State Overlay.of(context)?.insertAll(_selectionAreas); - if (topmostRect != null && layerLink != null) { - editorState.service.toolbarService - ?.showInOffset(topmostRect.topLeft, layerLink); + if (toolbarOffset != null && layerLink != null) { + editorState.service.toolbarService?.showInOffset( + toolbarOffset, + layerLink, + ); } } diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/shortcut_event/built_in_shortcut_events.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/shortcut_event/built_in_shortcut_events.dart index 20b9d9722a..bcba14db11 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/shortcut_event/built_in_shortcut_events.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/shortcut_event/built_in_shortcut_events.dart @@ -144,6 +144,12 @@ List builtInShortcutEvents = [ windowsCommand: 'ctrl+shift+h', handler: formatHighlightEventHandler, ), + ShortcutEvent( + key: 'Format embed code', + command: 'meta+e', + windowsCommand: 'ctrl+e', + handler: formatEmbedCodeEventHandler, + ), ShortcutEvent( key: 'Format link', command: 'meta+k', diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/toolbar_service.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/toolbar_service.dart index 5d79c44824..6575dced25 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/toolbar_service.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/toolbar_service.dart @@ -44,7 +44,7 @@ class _FlowyToolbarState extends State key: _toolbarWidgetKey, editorState: widget.editorState, layerLink: layerLink, - offset: offset.translate(0, -37.0), + offset: offset, items: _filterItems(defaultToolbarItems), ), ); diff --git a/frontend/app_flowy/packages/appflowy_editor/pubspec.yaml b/frontend/app_flowy/packages/appflowy_editor/pubspec.yaml index 17f75aea6a..af6c9c1f3f 100644 --- a/frontend/app_flowy/packages/appflowy_editor/pubspec.yaml +++ b/frontend/app_flowy/packages/appflowy_editor/pubspec.yaml @@ -22,6 +22,7 @@ dependencies: provider: ^6.0.3 url_launcher: ^6.1.5 logging: ^1.0.2 + intl_utils: ^2.7.0 dev_dependencies: flutter_test: @@ -66,3 +67,13 @@ flutter: # # For details regarding fonts in packages, see # https://flutter.dev/custom-fonts/#from-packages + +flutter_intl: + enabled: true + class_name: AppFlowyEditorLocalizations + main_locale: en + arb_dir: lib/l10n + output_dir: lib/src/l10n + use_deferred_loading: false + localizely: + project_id: b7199c7d-eca0-4025-894d-230cdcafa9aa diff --git a/frontend/app_flowy/packages/appflowy_editor/test/infra/test_editor.dart b/frontend/app_flowy/packages/appflowy_editor/test/infra/test_editor.dart index 7754785fd3..9e7e0a0bb8 100644 --- a/frontend/app_flowy/packages/appflowy_editor/test/infra/test_editor.dart +++ b/frontend/app_flowy/packages/appflowy_editor/test/infra/test_editor.dart @@ -23,18 +23,20 @@ class EditorWidgetTester { _editorState.service.selectionService.currentSelection.value; Future startTesting() async { - await tester.pumpWidget( - MaterialApp( - home: Scaffold( - body: AppFlowyEditor( - editorState: _editorState, - editorStyle: const EditorStyle( - padding: EdgeInsets.symmetric(vertical: 30), - ), - ), + final app = MaterialApp( + localizationsDelegates: const [ + AppFlowyEditorLocalizations.delegate, + ], + supportedLocales: AppFlowyEditorLocalizations.delegate.supportedLocales, + home: Scaffold( + body: AppFlowyEditor( + editorState: _editorState, + editorStyle: EditorStyle.defaultStyle(), ), ), ); + await tester.pumpWidget(app); + await tester.pump(); return this; } diff --git a/frontend/app_flowy/packages/appflowy_editor/test/infra/test_raw_key_event.dart b/frontend/app_flowy/packages/appflowy_editor/test/infra/test_raw_key_event.dart index 451f203e8b..5ad8ddfe3e 100644 --- a/frontend/app_flowy/packages/appflowy_editor/test/infra/test_raw_key_event.dart +++ b/frontend/app_flowy/packages/appflowy_editor/test/infra/test_raw_key_event.dart @@ -118,6 +118,9 @@ extension on LogicalKeyboardKey { if (this == LogicalKeyboardKey.keyC) { return PhysicalKeyboardKey.keyC; } + if (this == LogicalKeyboardKey.keyE) { + return PhysicalKeyboardKey.keyE; + } if (this == LogicalKeyboardKey.keyI) { return PhysicalKeyboardKey.keyI; } diff --git a/frontend/app_flowy/packages/appflowy_editor/test/render/rich_text/checkbox_text_test.dart b/frontend/app_flowy/packages/appflowy_editor/test/render/rich_text/checkbox_text_test.dart index afd89ddee9..2abda03538 100644 --- a/frontend/app_flowy/packages/appflowy_editor/test/render/rich_text/checkbox_text_test.dart +++ b/frontend/app_flowy/packages/appflowy_editor/test/render/rich_text/checkbox_text_test.dart @@ -1,9 +1,10 @@ import 'package:appflowy_editor/appflowy_editor.dart'; +import 'package:appflowy_editor/src/document/built_in_attribute_keys.dart'; import 'package:appflowy_editor/src/render/rich_text/default_selectable.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; import 'package:appflowy_editor/src/extensions/text_node_extensions.dart'; import 'package:flutter_test/flutter_test.dart'; import '../../infra/test_editor.dart'; +import 'package:appflowy_editor/src/extensions/attributes_extension.dart'; void main() async { setUpAll(() { @@ -25,15 +26,15 @@ void main() async { ..insertTextNode( '', attributes: { - StyleKey.subtype: StyleKey.checkbox, - StyleKey.checkbox: false, + BuiltInAttributeKey.subtype: BuiltInAttributeKey.checkbox, + BuiltInAttributeKey.checkbox: false, }, delta: Delta([ TextInsert(text, { - StyleKey.bold: true, - StyleKey.italic: true, - StyleKey.underline: true, - StyleKey.strikethrough: true, + BuiltInAttributeKey.bold: true, + BuiltInAttributeKey.italic: true, + BuiltInAttributeKey.underline: true, + BuiltInAttributeKey.strikethrough: true, }), ]), ); diff --git a/frontend/app_flowy/packages/appflowy_editor/test/render/rich_text/toolbar_rich_text_test.dart b/frontend/app_flowy/packages/appflowy_editor/test/render/rich_text/toolbar_rich_text_test.dart index 441cc6743b..ef78eeab34 100644 --- a/frontend/app_flowy/packages/appflowy_editor/test/render/rich_text/toolbar_rich_text_test.dart +++ b/frontend/app_flowy/packages/appflowy_editor/test/render/rich_text/toolbar_rich_text_test.dart @@ -1,10 +1,11 @@ import 'package:appflowy_editor/appflowy_editor.dart'; +import 'package:appflowy_editor/src/document/built_in_attribute_keys.dart'; import 'package:appflowy_editor/src/extensions/text_node_extensions.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; import 'package:appflowy_editor/src/render/toolbar/toolbar_item_widget.dart'; import 'package:appflowy_editor/src/render/toolbar/toolbar_widget.dart'; import 'package:flutter_test/flutter_test.dart'; import '../../infra/test_editor.dart'; +import 'package:appflowy_editor/src/extensions/attributes_extension.dart'; void main() async { setUpAll(() { @@ -229,7 +230,7 @@ void main() async { expect( node.allSatisfyInSelection( code, - StyleKey.code, + BuiltInAttributeKey.code, (value) { return value == true; }, @@ -319,7 +320,7 @@ void main() async { expect( node.allSatisfyInSelection( selection, - StyleKey.backgroundColor, + BuiltInAttributeKey.backgroundColor, (value) { return value == blue; }, diff --git a/frontend/app_flowy/packages/appflowy_editor/test/render/selection_menu/selection_menu_widget_test.dart b/frontend/app_flowy/packages/appflowy_editor/test/render/selection_menu/selection_menu_widget_test.dart index 6006fe6a7a..cc9a2fbd0b 100644 --- a/frontend/app_flowy/packages/appflowy_editor/test/render/selection_menu/selection_menu_widget_test.dart +++ b/frontend/app_flowy/packages/appflowy_editor/test/render/selection_menu/selection_menu_widget_test.dart @@ -1,5 +1,5 @@ import 'package:appflowy_editor/appflowy_editor.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; +import 'package:appflowy_editor/src/document/built_in_attribute_keys.dart'; import 'package:appflowy_editor/src/render/selection_menu/selection_menu_item_widget.dart'; import 'package:appflowy_editor/src/render/selection_menu/selection_menu_service.dart'; import 'package:appflowy_editor/src/render/selection_menu/selection_menu_widget.dart'; @@ -13,91 +13,99 @@ void main() async { }); group('selection_menu_widget.dart', () { - for (var i = 0; i < defaultSelectionMenuItems.length; i++) { - testWidgets('Selects number.$i item in selection menu', (tester) async { - final editor = await _prepare(tester); - for (var j = 0; j < i; j++) { - await editor.pressLogicKey(LogicalKeyboardKey.arrowDown); - } + // const i = defaultSelectionMenuItems.length; + // + // Because the `defaultSelectionMenuItems` uses localization, + // and the MaterialApp has not been initialized at the time of getting the value, + // it will crash. + // + // Use const value temporarily instead. + const i = 7; + testWidgets('Selects number.$i item in selection menu', (tester) async { + final editor = await _prepare(tester); + for (var j = 0; j < i; j++) { + await editor.pressLogicKey(LogicalKeyboardKey.arrowDown); + } - await editor.pressLogicKey(LogicalKeyboardKey.enter); - expect( - find.byType(SelectionMenuWidget, skipOffstage: false), - findsNothing, - ); - if (defaultSelectionMenuItems[i].name != 'Image') { - await _testDefaultSelectionMenuItems(i, editor); - } - }); - } - }); + await editor.pressLogicKey(LogicalKeyboardKey.enter); + expect( + find.byType(SelectionMenuWidget, skipOffstage: false), + findsNothing, + ); + if (defaultSelectionMenuItems[i].name != 'Image') { + await _testDefaultSelectionMenuItems(i, editor); + } + }); - testWidgets('Search item in selection menu util no results', (tester) async { - final editor = await _prepare(tester); - await editor.pressLogicKey(LogicalKeyboardKey.keyT); - await editor.pressLogicKey(LogicalKeyboardKey.keyE); - expect( - find.byType(SelectionMenuItemWidget, skipOffstage: false), - findsNWidgets(3), - ); - await editor.pressLogicKey(LogicalKeyboardKey.backspace); - expect( - find.byType(SelectionMenuItemWidget, skipOffstage: false), - findsNWidgets(4), - ); - await editor.pressLogicKey(LogicalKeyboardKey.keyE); - expect( - find.byType(SelectionMenuItemWidget, skipOffstage: false), - findsNWidgets(3), - ); - await editor.pressLogicKey(LogicalKeyboardKey.keyX); - expect( - find.byType(SelectionMenuItemWidget, skipOffstage: false), - findsNWidgets(1), - ); - await editor.pressLogicKey(LogicalKeyboardKey.keyT); - expect( - find.byType(SelectionMenuItemWidget, skipOffstage: false), - findsNWidgets(1), - ); - await editor.pressLogicKey(LogicalKeyboardKey.keyT); - expect( - find.byType(SelectionMenuItemWidget, skipOffstage: false), - findsNothing, - ); - }); + testWidgets('Search item in selection menu util no results', + (tester) async { + final editor = await _prepare(tester); + await editor.pressLogicKey(LogicalKeyboardKey.keyT); + await editor.pressLogicKey(LogicalKeyboardKey.keyE); + expect( + find.byType(SelectionMenuItemWidget, skipOffstage: false), + findsNWidgets(3), + ); + await editor.pressLogicKey(LogicalKeyboardKey.backspace); + expect( + find.byType(SelectionMenuItemWidget, skipOffstage: false), + findsNWidgets(4), + ); + await editor.pressLogicKey(LogicalKeyboardKey.keyE); + expect( + find.byType(SelectionMenuItemWidget, skipOffstage: false), + findsNWidgets(3), + ); + await editor.pressLogicKey(LogicalKeyboardKey.keyX); + expect( + find.byType(SelectionMenuItemWidget, skipOffstage: false), + findsNWidgets(1), + ); + await editor.pressLogicKey(LogicalKeyboardKey.keyT); + expect( + find.byType(SelectionMenuItemWidget, skipOffstage: false), + findsNWidgets(1), + ); + await editor.pressLogicKey(LogicalKeyboardKey.keyT); + expect( + find.byType(SelectionMenuItemWidget, skipOffstage: false), + findsNothing, + ); + }); - testWidgets('Search item in selection menu and presses esc', (tester) async { - final editor = await _prepare(tester); - await editor.pressLogicKey(LogicalKeyboardKey.keyT); - await editor.pressLogicKey(LogicalKeyboardKey.keyE); - expect( - find.byType(SelectionMenuItemWidget, skipOffstage: false), - findsNWidgets(3), - ); - await editor.pressLogicKey(LogicalKeyboardKey.escape); - expect( - find.byType(SelectionMenuItemWidget, skipOffstage: false), - findsNothing, - ); - }); + testWidgets('Search item in selection menu and presses esc', + (tester) async { + final editor = await _prepare(tester); + await editor.pressLogicKey(LogicalKeyboardKey.keyT); + await editor.pressLogicKey(LogicalKeyboardKey.keyE); + expect( + find.byType(SelectionMenuItemWidget, skipOffstage: false), + findsNWidgets(3), + ); + await editor.pressLogicKey(LogicalKeyboardKey.escape); + expect( + find.byType(SelectionMenuItemWidget, skipOffstage: false), + findsNothing, + ); + }); - testWidgets('Search item in selection menu and presses backspace', - (tester) async { - final editor = await _prepare(tester); - await editor.pressLogicKey(LogicalKeyboardKey.keyT); - await editor.pressLogicKey(LogicalKeyboardKey.keyE); - expect( - find.byType(SelectionMenuItemWidget, skipOffstage: false), - findsNWidgets(3), - ); - await editor.pressLogicKey(LogicalKeyboardKey.backspace); - await editor.pressLogicKey(LogicalKeyboardKey.backspace); - await editor.pressLogicKey(LogicalKeyboardKey.backspace); - expect( - find.byType(SelectionMenuItemWidget, skipOffstage: false), - findsNothing, - ); + testWidgets('Search item in selection menu and presses backspace', + (tester) async { + final editor = await _prepare(tester); + await editor.pressLogicKey(LogicalKeyboardKey.keyT); + await editor.pressLogicKey(LogicalKeyboardKey.keyE); + expect( + find.byType(SelectionMenuItemWidget, skipOffstage: false), + findsNWidgets(3), + ); + await editor.pressLogicKey(LogicalKeyboardKey.backspace); + await editor.pressLogicKey(LogicalKeyboardKey.backspace); + await editor.pressLogicKey(LogicalKeyboardKey.backspace); + expect( + find.byType(SelectionMenuItemWidget, skipOffstage: false), + findsNothing, + ); + }); }); } @@ -135,18 +143,18 @@ Future _testDefaultSelectionMenuItems( if (item.name == 'Text') { expect(node?.subtype == null, true); } else if (item.name == 'Heading 1') { - expect(node?.subtype, StyleKey.heading); - expect(node?.attributes.heading, StyleKey.h1); + expect(node?.subtype, BuiltInAttributeKey.heading); + expect(node?.attributes.heading, BuiltInAttributeKey.h1); } else if (item.name == 'Heading 2') { - expect(node?.subtype, StyleKey.heading); - expect(node?.attributes.heading, StyleKey.h2); + expect(node?.subtype, BuiltInAttributeKey.heading); + expect(node?.attributes.heading, BuiltInAttributeKey.h2); } else if (item.name == 'Heading 3') { - expect(node?.subtype, StyleKey.heading); - expect(node?.attributes.heading, StyleKey.h3); + expect(node?.subtype, BuiltInAttributeKey.heading); + expect(node?.attributes.heading, BuiltInAttributeKey.h3); } else if (item.name == 'Bulleted list') { - expect(node?.subtype, StyleKey.bulletedList); + expect(node?.subtype, BuiltInAttributeKey.bulletedList); } else if (item.name == 'Checkbox') { - expect(node?.subtype, StyleKey.checkbox); + expect(node?.subtype, BuiltInAttributeKey.checkbox); expect(node?.attributes.check, false); } } diff --git a/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/backspace_handler_test.dart b/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/backspace_handler_test.dart index da5d22a786..e31ad0f252 100644 --- a/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/backspace_handler_test.dart +++ b/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/backspace_handler_test.dart @@ -1,10 +1,11 @@ import 'package:appflowy_editor/appflowy_editor.dart'; import 'package:appflowy_editor/src/render/image/image_node_widget.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:network_image_mock/network_image_mock.dart'; import '../../infra/test_editor.dart'; +import 'package:appflowy_editor/src/document/built_in_attribute_keys.dart'; +import 'package:appflowy_editor/src/extensions/attributes_extension.dart'; void main() async { setUpAll(() { @@ -132,17 +133,18 @@ void main() async { // testWidgets('Presses backspace key in styled text (checkbox)', (tester) async { - await _deleteStyledTextByBackspace(tester, StyleKey.checkbox); + await _deleteStyledTextByBackspace(tester, BuiltInAttributeKey.checkbox); }); testWidgets('Presses backspace key in styled text (bulletedList)', (tester) async { - await _deleteStyledTextByBackspace(tester, StyleKey.bulletedList); + await _deleteStyledTextByBackspace( + tester, BuiltInAttributeKey.bulletedList); }); testWidgets('Presses backspace key in styled text (heading)', (tester) async { - await _deleteStyledTextByBackspace(tester, StyleKey.heading); + await _deleteStyledTextByBackspace(tester, BuiltInAttributeKey.heading); }); testWidgets('Presses backspace key in styled text (quote)', (tester) async { - await _deleteStyledTextByBackspace(tester, StyleKey.quote); + await _deleteStyledTextByBackspace(tester, BuiltInAttributeKey.quote); }); // Before @@ -157,17 +159,17 @@ void main() async { // [Style] Welcome to Appflowy 😁 // testWidgets('Presses delete key in styled text (checkbox)', (tester) async { - await _deleteStyledTextByDelete(tester, StyleKey.checkbox); + await _deleteStyledTextByDelete(tester, BuiltInAttributeKey.checkbox); }); testWidgets('Presses delete key in styled text (bulletedList)', (tester) async { - await _deleteStyledTextByDelete(tester, StyleKey.bulletedList); + await _deleteStyledTextByDelete(tester, BuiltInAttributeKey.bulletedList); }); testWidgets('Presses delete key in styled text (heading)', (tester) async { - await _deleteStyledTextByDelete(tester, StyleKey.heading); + await _deleteStyledTextByDelete(tester, BuiltInAttributeKey.heading); }); testWidgets('Presses delete key in styled text (quote)', (tester) async { - await _deleteStyledTextByDelete(tester, StyleKey.quote); + await _deleteStyledTextByDelete(tester, BuiltInAttributeKey.quote); }); // Before @@ -250,7 +252,7 @@ void main() async { await editor.pressLogicKey(LogicalKeyboardKey.space); expect( (editor.nodeAtPath([0]) as TextNode).attributes.heading, - StyleKey.h1, + BuiltInAttributeKey.h1, ); await editor.pressLogicKey(LogicalKeyboardKey.backspace); @@ -263,7 +265,7 @@ void main() async { await editor.pressLogicKey(LogicalKeyboardKey.space); expect( (editor.nodeAtPath([0]) as TextNode).attributes.heading, - StyleKey.h1, + BuiltInAttributeKey.h1, ); }); } @@ -330,14 +332,14 @@ Future _deleteStyledTextByBackspace( WidgetTester tester, String style) async { const text = 'Welcome to Appflowy 😁'; Attributes attributes = { - StyleKey.subtype: style, + BuiltInAttributeKey.subtype: style, }; - if (style == StyleKey.checkbox) { - attributes[StyleKey.checkbox] = true; - } else if (style == StyleKey.numberList) { - attributes[StyleKey.number] = 1; - } else if (style == StyleKey.heading) { - attributes[StyleKey.heading] = StyleKey.h1; + if (style == BuiltInAttributeKey.checkbox) { + attributes[BuiltInAttributeKey.checkbox] = true; + } else if (style == BuiltInAttributeKey.numberList) { + attributes[BuiltInAttributeKey.number] = 1; + } else if (style == BuiltInAttributeKey.heading) { + attributes[BuiltInAttributeKey.heading] = BuiltInAttributeKey.h1; } final editor = tester.editor ..insertTextNode(text) @@ -377,14 +379,14 @@ Future _deleteStyledTextByDelete( WidgetTester tester, String style) async { const text = 'Welcome to Appflowy 😁'; Attributes attributes = { - StyleKey.subtype: style, + BuiltInAttributeKey.subtype: style, }; - if (style == StyleKey.checkbox) { - attributes[StyleKey.checkbox] = true; - } else if (style == StyleKey.numberList) { - attributes[StyleKey.number] = 1; - } else if (style == StyleKey.heading) { - attributes[StyleKey.heading] = StyleKey.h1; + if (style == BuiltInAttributeKey.checkbox) { + attributes[BuiltInAttributeKey.checkbox] = true; + } else if (style == BuiltInAttributeKey.numberList) { + attributes[BuiltInAttributeKey.number] = 1; + } else if (style == BuiltInAttributeKey.heading) { + attributes[BuiltInAttributeKey.heading] = BuiltInAttributeKey.h1; } final editor = tester.editor ..insertTextNode(text) diff --git a/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/enter_without_shift_in_text_node_handler_test.dart b/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/enter_without_shift_in_text_node_handler_test.dart index 5bfe1ada67..cb2d10ea2f 100644 --- a/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/enter_without_shift_in_text_node_handler_test.dart +++ b/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/enter_without_shift_in_text_node_handler_test.dart @@ -1,8 +1,8 @@ import 'package:appflowy_editor/appflowy_editor.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; import '../../infra/test_editor.dart'; +import 'package:appflowy_editor/src/document/built_in_attribute_keys.dart'; void main() async { setUpAll(() { @@ -95,16 +95,16 @@ void main() async { // [Style] Welcome to Appflowy 😁 // [Style] testWidgets('Presses enter key in bulleted list', (tester) async { - await _testStyleNeedToBeCopy(tester, StyleKey.bulletedList); + await _testStyleNeedToBeCopy(tester, BuiltInAttributeKey.bulletedList); }); testWidgets('Presses enter key in numbered list', (tester) async { - await _testStyleNeedToBeCopy(tester, StyleKey.numberList); + await _testStyleNeedToBeCopy(tester, BuiltInAttributeKey.numberList); }); testWidgets('Presses enter key in checkbox styled text', (tester) async { - await _testStyleNeedToBeCopy(tester, StyleKey.checkbox); + await _testStyleNeedToBeCopy(tester, BuiltInAttributeKey.checkbox); }); testWidgets('Presses enter key in quoted text', (tester) async { - await _testStyleNeedToBeCopy(tester, StyleKey.quote); + await _testStyleNeedToBeCopy(tester, BuiltInAttributeKey.quote); }); testWidgets('Presses enter key in multiple selection from top to bottom', @@ -143,12 +143,12 @@ void main() async { Future _testStyleNeedToBeCopy(WidgetTester tester, String style) async { const text = 'Welcome to Appflowy 😁'; Attributes attributes = { - StyleKey.subtype: style, + BuiltInAttributeKey.subtype: style, }; - if (style == StyleKey.checkbox) { - attributes[StyleKey.checkbox] = true; - } else if (style == StyleKey.numberList) { - attributes[StyleKey.number] = 1; + if (style == BuiltInAttributeKey.checkbox) { + attributes[BuiltInAttributeKey.checkbox] = true; + } else if (style == BuiltInAttributeKey.numberList) { + attributes[BuiltInAttributeKey.number] = 1; } final editor = tester.editor ..insertTextNode(text) diff --git a/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/update_text_style_by_command_x_handler_test.dart b/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/format_style_handler_test.dart similarity index 91% rename from frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/update_text_style_by_command_x_handler_test.dart rename to frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/format_style_handler_test.dart index bf595b1deb..44ffb074d8 100644 --- a/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/update_text_style_by_command_x_handler_test.dart +++ b/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/format_style_handler_test.dart @@ -2,24 +2,24 @@ import 'dart:io'; import 'package:appflowy_editor/appflowy_editor.dart'; import 'package:appflowy_editor/src/render/link_menu/link_menu.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; import 'package:appflowy_editor/src/extensions/text_node_extensions.dart'; import 'package:appflowy_editor/src/render/toolbar/toolbar_widget.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; import '../../infra/test_editor.dart'; +import 'package:appflowy_editor/src/document/built_in_attribute_keys.dart'; void main() async { setUpAll(() { TestWidgetsFlutterBinding.ensureInitialized(); }); - group('update_text_style_by_command_x_handler.dart', () { + group('format_style_handler.dart', () { testWidgets('Presses Command + B to update text style', (tester) async { await _testUpdateTextStyleByCommandX( tester, - StyleKey.bold, + BuiltInAttributeKey.bold, true, LogicalKeyboardKey.keyB, ); @@ -27,7 +27,7 @@ void main() async { testWidgets('Presses Command + I to update text style', (tester) async { await _testUpdateTextStyleByCommandX( tester, - StyleKey.italic, + BuiltInAttributeKey.italic, true, LogicalKeyboardKey.keyI, ); @@ -35,7 +35,7 @@ void main() async { testWidgets('Presses Command + U to update text style', (tester) async { await _testUpdateTextStyleByCommandX( tester, - StyleKey.underline, + BuiltInAttributeKey.underline, true, LogicalKeyboardKey.keyU, ); @@ -44,7 +44,7 @@ void main() async { (tester) async { await _testUpdateTextStyleByCommandX( tester, - StyleKey.strikethrough, + BuiltInAttributeKey.strikethrough, true, LogicalKeyboardKey.keyS, ); @@ -52,10 +52,11 @@ void main() async { testWidgets('Presses Command + Shift + H to update text style', (tester) async { + // FIXME: customize the highlight color instead of using magic number. await _testUpdateTextStyleByCommandX( tester, - StyleKey.backgroundColor, - defaultHighlightColor, + BuiltInAttributeKey.backgroundColor, + '0x6000BCF0', LogicalKeyboardKey.keyH, ); }); @@ -63,6 +64,15 @@ void main() async { testWidgets('Presses Command + K to trigger link menu', (tester) async { await _testLinkMenuInSingleTextSelection(tester); }); + + testWidgets('Presses Command + E to update text style', (tester) async { + await _testUpdateTextStyleByCommandX( + tester, + BuiltInAttributeKey.code, + true, + LogicalKeyboardKey.keyE, + ); + }); }); } @@ -256,7 +266,7 @@ Future _testLinkMenuInSingleTextSelection(WidgetTester tester) async { expect( node.allSatisfyInSelection( selection, - StyleKey.href, + BuiltInAttributeKey.href, (value) => value == link, ), true); @@ -293,7 +303,7 @@ Future _testLinkMenuInSingleTextSelection(WidgetTester tester) async { expect( node.allSatisfyInSelection( selection, - StyleKey.href, + BuiltInAttributeKey.href, (value) => value == link, ), false); diff --git a/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/white_space_handler_test.dart b/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/white_space_handler_test.dart index 21f9a5eb65..d6cffa3a44 100644 --- a/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/white_space_handler_test.dart +++ b/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/white_space_handler_test.dart @@ -1,9 +1,10 @@ import 'package:appflowy_editor/appflowy_editor.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; import 'package:appflowy_editor/src/service/internal_key_event_handlers/whitespace_handler.dart'; import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; import '../../infra/test_editor.dart'; +import 'package:appflowy_editor/src/document/built_in_attribute_keys.dart'; +import 'package:appflowy_editor/src/extensions/attributes_extension.dart'; void main() async { setUpAll(() { @@ -45,8 +46,8 @@ void main() async { final textNode = (editor.nodeAtPath([i - 1]) as TextNode); - expect(textNode.subtype, StyleKey.heading); - // StyleKey.h1 ~ StyleKey.h6 + expect(textNode.subtype, BuiltInAttributeKey.heading); + // BuiltInAttributeKey.h1 ~ BuiltInAttributeKey.h6 expect(textNode.attributes.heading, 'h$i'); } }); @@ -85,8 +86,8 @@ void main() async { final textNode = (editor.nodeAtPath([i - 1]) as TextNode); - expect(textNode.subtype, StyleKey.heading); - // StyleKey.h1 ~ StyleKey.h6 + expect(textNode.subtype, BuiltInAttributeKey.heading); + // BuiltInAttributeKey.h1 ~ BuiltInAttributeKey.h6 expect(textNode.attributes.heading, 'h$i'); expect(textNode.toRawString().startsWith('##'), true); } @@ -117,8 +118,8 @@ void main() async { await editor.insertText(textNode, '#' * i, 0); await editor.pressLogicKey(LogicalKeyboardKey.space); - expect(textNode.subtype, StyleKey.heading); - // StyleKey.h2 ~ StyleKey.h6 + expect(textNode.subtype, BuiltInAttributeKey.heading); + // BuiltInAttributeKey.h2 ~ BuiltInAttributeKey.h6 expect(textNode.attributes.heading, 'h$i'); } }); @@ -136,7 +137,7 @@ void main() async { ); await editor.insertText(textNode, symbol, 0); await editor.pressLogicKey(LogicalKeyboardKey.space); - expect(textNode.subtype, StyleKey.checkbox); + expect(textNode.subtype, BuiltInAttributeKey.checkbox); expect(textNode.attributes.check, false); } }); @@ -154,7 +155,7 @@ void main() async { ); await editor.insertText(textNode, symbol, 0); await editor.pressLogicKey(LogicalKeyboardKey.space); - expect(textNode.subtype, StyleKey.checkbox); + expect(textNode.subtype, BuiltInAttributeKey.checkbox); expect(textNode.attributes.check, true); } }); @@ -171,7 +172,7 @@ void main() async { ); await editor.insertText(textNode, symbol, 0); await editor.pressLogicKey(LogicalKeyboardKey.space); - expect(textNode.subtype, StyleKey.bulletedList); + expect(textNode.subtype, BuiltInAttributeKey.bulletedList); } }); }); diff --git a/frontend/app_flowy/packages/appflowy_editor/test/service/shortcut_event/shortcut_event_test.dart b/frontend/app_flowy/packages/appflowy_editor/test/service/shortcut_event/shortcut_event_test.dart index 93a0a7bb84..79b2f4d26c 100644 --- a/frontend/app_flowy/packages/appflowy_editor/test/service/shortcut_event/shortcut_event_test.dart +++ b/frontend/app_flowy/packages/appflowy_editor/test/service/shortcut_event/shortcut_event_test.dart @@ -81,6 +81,8 @@ void main() async { editor.documentSelection, Selection.single(path: [1], startOffset: 0), ); + + tester.pumpAndSettle(); }); }); } diff --git a/frontend/app_flowy/packages/appflowy_editor/test/service/toolbar_service_test.dart b/frontend/app_flowy/packages/appflowy_editor/test/service/toolbar_service_test.dart index 060e730af5..5b82a5dea9 100644 --- a/frontend/app_flowy/packages/appflowy_editor/test/service/toolbar_service_test.dart +++ b/frontend/app_flowy/packages/appflowy_editor/test/service/toolbar_service_test.dart @@ -1,10 +1,10 @@ import 'package:appflowy_editor/appflowy_editor.dart'; -import 'package:appflowy_editor/src/render/rich_text/rich_text_style.dart'; import 'package:appflowy_editor/src/render/toolbar/toolbar_item.dart'; import 'package:appflowy_editor/src/render/toolbar/toolbar_item_widget.dart'; import 'package:appflowy_editor/src/render/toolbar/toolbar_widget.dart'; import 'package:flutter_test/flutter_test.dart'; import '../infra/test_editor.dart'; +import 'package:appflowy_editor/src/document/built_in_attribute_keys.dart'; void main() async { setUpAll(() { @@ -45,13 +45,13 @@ void main() async { }); testWidgets( - 'Test toolbar service in single text selection with StyleKey.partialStyleKeys', + 'Test toolbar service in single text selection with BuiltInAttributeKey.partialStyleKeys', (tester) async { - final attributes = StyleKey.partialStyleKeys.fold({}, - (previousValue, element) { - if (element == StyleKey.backgroundColor) { + final attributes = BuiltInAttributeKey.partialStyleKeys + .fold({}, (previousValue, element) { + if (element == BuiltInAttributeKey.backgroundColor) { previousValue[element] = '0x6000BCF0'; - } else if (element == StyleKey.href) { + } else if (element == BuiltInAttributeKey.href) { previousValue[element] = 'appflowy.io'; } else { previousValue[element] = true; @@ -77,11 +77,11 @@ void main() async { expect(find.byType(ToolbarWidget), findsOneWidget); void testHighlight(bool expectedValue) { - for (final styleKey in StyleKey.partialStyleKeys) { + for (final styleKey in BuiltInAttributeKey.partialStyleKeys) { var key = styleKey; - if (styleKey == StyleKey.backgroundColor) { + if (styleKey == BuiltInAttributeKey.backgroundColor) { key = 'highlight'; - } else if (styleKey == StyleKey.href) { + } else if (styleKey == BuiltInAttributeKey.href) { key = 'link'; } else { continue; @@ -116,22 +116,24 @@ void main() async { }); testWidgets( - 'Test toolbar service in single text selection with StyleKey.globalStyleKeys', + 'Test toolbar service in single text selection with BuiltInAttributeKey.globalStyleKeys', (tester) async { const text = 'Welcome to Appflowy 😁'; final editor = tester.editor ..insertTextNode(text, attributes: { - StyleKey.subtype: StyleKey.heading, - StyleKey.heading: StyleKey.h1, + BuiltInAttributeKey.subtype: BuiltInAttributeKey.heading, + BuiltInAttributeKey.heading: BuiltInAttributeKey.h1, }) ..insertTextNode( text, - attributes: {StyleKey.subtype: StyleKey.quote}, + attributes: {BuiltInAttributeKey.subtype: BuiltInAttributeKey.quote}, ) ..insertTextNode( text, - attributes: {StyleKey.subtype: StyleKey.bulletedList}, + attributes: { + BuiltInAttributeKey.subtype: BuiltInAttributeKey.bulletedList + }, ); await editor.startTesting(); @@ -167,12 +169,12 @@ void main() async { ..insertTextNode( null, attributes: { - StyleKey.subtype: StyleKey.heading, - StyleKey.heading: StyleKey.h1, + BuiltInAttributeKey.subtype: BuiltInAttributeKey.heading, + BuiltInAttributeKey.heading: BuiltInAttributeKey.h1, }, delta: Delta([ TextInsert(text, { - StyleKey.bold: true, + BuiltInAttributeKey.bold: true, }) ]), ) From 8137769edd0bad644cd46a8a483c7cede61fe186 Mon Sep 17 00:00:00 2001 From: "Lucas.Xu" Date: Fri, 16 Sep 2022 10:26:17 +0800 Subject: [PATCH 2/5] fix: add simple test for l10n --- .../packages/appflowy_editor/pubspec.yaml | 3 +++ .../test/infra/test_editor.dart | 9 ++++++++- .../appflowy_editor/test/l10n/l10n_test.dart | 19 +++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 frontend/app_flowy/packages/appflowy_editor/test/l10n/l10n_test.dart diff --git a/frontend/app_flowy/packages/appflowy_editor/pubspec.yaml b/frontend/app_flowy/packages/appflowy_editor/pubspec.yaml index af6c9c1f3f..0e48cc5fab 100644 --- a/frontend/app_flowy/packages/appflowy_editor/pubspec.yaml +++ b/frontend/app_flowy/packages/appflowy_editor/pubspec.yaml @@ -29,6 +29,9 @@ dev_dependencies: sdk: flutter flutter_lints: ^2.0.1 network_image_mock: ^2.1.1 + flutter_localizations: + sdk: flutter + # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/frontend/app_flowy/packages/appflowy_editor/test/infra/test_editor.dart b/frontend/app_flowy/packages/appflowy_editor/test/infra/test_editor.dart index 9e7e0a0bb8..de69f95803 100644 --- a/frontend/app_flowy/packages/appflowy_editor/test/infra/test_editor.dart +++ b/frontend/app_flowy/packages/appflowy_editor/test/infra/test_editor.dart @@ -3,6 +3,7 @@ import 'dart:collection'; import 'package:appflowy_editor/appflowy_editor.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_test/flutter_test.dart'; import 'test_raw_key_event.dart'; @@ -22,12 +23,18 @@ class EditorWidgetTester { Selection? get documentSelection => _editorState.service.selectionService.currentSelection.value; - Future startTesting() async { + Future startTesting({ + Locale locale = const Locale('en'), + }) async { final app = MaterialApp( localizationsDelegates: const [ + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, AppFlowyEditorLocalizations.delegate, ], supportedLocales: AppFlowyEditorLocalizations.delegate.supportedLocales, + locale: locale, home: Scaffold( body: AppFlowyEditor( editorState: _editorState, diff --git a/frontend/app_flowy/packages/appflowy_editor/test/l10n/l10n_test.dart b/frontend/app_flowy/packages/appflowy_editor/test/l10n/l10n_test.dart new file mode 100644 index 0000000000..2e149d7b4f --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/test/l10n/l10n_test.dart @@ -0,0 +1,19 @@ +import 'package:appflowy_editor/appflowy_editor.dart'; +import 'package:flutter_test/flutter_test.dart'; +import '../infra/test_editor.dart'; + +void main() async { + setUpAll(() { + TestWidgetsFlutterBinding.ensureInitialized(); + }); + + group('l10n.dart', () { + for (final locale + in AppFlowyEditorLocalizations.delegate.supportedLocales) { + testWidgets('test localization', (tester) async { + final editor = tester.editor..insertTextNode(''); + await editor.startTesting(locale: locale); + }); + } + }); +} From a371cf3a7c2645623819f2c220c7ac39fe07d6ac Mon Sep 17 00:00:00 2001 From: "Lucas.Xu" Date: Fri, 16 Sep 2022 11:11:13 +0800 Subject: [PATCH 3/5] test: add single/double/triple tap test --- .../test/service/selection_service_test.dart | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 frontend/app_flowy/packages/appflowy_editor/test/service/selection_service_test.dart diff --git a/frontend/app_flowy/packages/appflowy_editor/test/service/selection_service_test.dart b/frontend/app_flowy/packages/appflowy_editor/test/service/selection_service_test.dart new file mode 100644 index 0000000000..e0b97bbc45 --- /dev/null +++ b/frontend/app_flowy/packages/appflowy_editor/test/service/selection_service_test.dart @@ -0,0 +1,83 @@ +import 'package:appflowy_editor/appflowy_editor.dart'; +import 'package:flutter_test/flutter_test.dart'; +import '../infra/test_editor.dart'; + +void main() async { + setUpAll(() { + TestWidgetsFlutterBinding.ensureInitialized(); + }); + + group('selection_service.dart', () { + testWidgets('Single tap test ', (tester) async { + const text = 'Welcome to Appflowy 😁'; + final editor = tester.editor + ..insertTextNode(text) + ..insertTextNode(text) + ..insertTextNode(text); + await editor.startTesting(); + + final secondTextNode = editor.nodeAtPath([1]); + final finder = find.byKey(secondTextNode!.key!); + + final rect = tester.getRect(finder); + // tap at the beginning + await tester.tapAt(rect.centerLeft); + expect( + editor.documentSelection, + Selection.single(path: [1], startOffset: 0), + ); + + // tap at the ending + await tester.tapAt(rect.centerRight); + expect( + editor.documentSelection, + Selection.single(path: [1], startOffset: text.length), + ); + }); + + testWidgets('Test double tap', (tester) async { + const text = 'Welcome to Appflowy 😁'; + final editor = tester.editor + ..insertTextNode(text) + ..insertTextNode(text) + ..insertTextNode(text); + await editor.startTesting(); + + final secondTextNode = editor.nodeAtPath([1]); + final finder = find.byKey(secondTextNode!.key!); + + final rect = tester.getRect(finder); + // double tap + await tester.tapAt(rect.centerLeft + const Offset(10.0, 0.0)); + await tester.tapAt(rect.centerLeft + const Offset(10.0, 0.0)); + await tester.pump(); + expect( + editor.documentSelection, + Selection.single(path: [1], startOffset: 0, endOffset: 7), + ); + }); + + testWidgets('Test triple tap', (tester) async { + const text = 'Welcome to Appflowy 😁'; + final editor = tester.editor + ..insertTextNode(text) + ..insertTextNode(text) + ..insertTextNode(text); + await editor.startTesting(); + + final secondTextNode = editor.nodeAtPath([1]); + final finder = find.byKey(secondTextNode!.key!); + + final rect = tester.getRect(finder); + // triple tap + await tester.tapAt(rect.centerLeft + const Offset(10.0, 0.0)); + await tester.tapAt(rect.centerLeft + const Offset(10.0, 0.0)); + await tester.tapAt(rect.centerLeft + const Offset(10.0, 0.0)); + await tester.pump(); + expect( + editor.documentSelection, + Selection.single(path: [1], startOffset: 0, endOffset: text.length), + ); + }); + }); +} From 5bb5337de855a368fdcd82a439af3ffeaff592ee Mon Sep 17 00:00:00 2001 From: "Lucas.Xu" Date: Fri, 16 Sep 2022 14:06:46 +0800 Subject: [PATCH 4/5] feat: 0.0.5 release preparation --- .../packages/appflowy_editor/CHANGELOG.md | 7 ++ .../packages/appflowy_editor/README.md | 19 +++- .../documentation/customizing.md | 102 +++++++++++++++++- .../images/customizing_a_theme_after.png | Bin 0 -> 307453 bytes .../images/customizing_a_theme_before.png | Bin 0 -> 351322 bytes .../example/assets/example.json | 2 +- .../appflowy_editor/example/lib/main.dart | 52 ++++++++- .../appflowy_editor/example/pubspec.yaml | 4 +- .../render/rich_text/bulleted_list_text.dart | 5 + .../lib/src/render/rich_text/quoted_text.dart | 5 + .../lib/src/render/rich_text/rich_text.dart | 4 + .../packages/appflowy_editor/pubspec.yaml | 7 +- 12 files changed, 192 insertions(+), 15 deletions(-) create mode 100644 frontend/app_flowy/packages/appflowy_editor/documentation/images/customizing_a_theme_after.png create mode 100644 frontend/app_flowy/packages/appflowy_editor/documentation/images/customizing_a_theme_before.png diff --git a/frontend/app_flowy/packages/appflowy_editor/CHANGELOG.md b/frontend/app_flowy/packages/appflowy_editor/CHANGELOG.md index 9745bbc3ae..93d80477c3 100644 --- a/frontend/app_flowy/packages/appflowy_editor/CHANGELOG.md +++ b/frontend/app_flowy/packages/appflowy_editor/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.0.5 +* Support customize the hotkey for a shortcut on different platform. +* Support customize a theme. +* Support localizations. +* Support insert numbered list. +* Fix some bugs. + ## 0.0.4 * Support more shortcut events. * Fix some bugs. diff --git a/frontend/app_flowy/packages/appflowy_editor/README.md b/frontend/app_flowy/packages/appflowy_editor/README.md index 9f26c075fd..3971c00fc3 100644 --- a/frontend/app_flowy/packages/appflowy_editor/README.md +++ b/frontend/app_flowy/packages/appflowy_editor/README.md @@ -36,8 +36,8 @@ and the Flutter guide for * Design and modify an ever expanding list of customizable features including * components (such as form input controls, numbered lists, and rich text widgets) * shortcut events + * themes * menu options (**coming soon!**) - * themes (**coming soon!**) * [Test-coverage](https://github.com/AppFlowy-IO/AppFlowy/blob/main/frontend/app_flowy/packages/appflowy_editor/documentation/testing.md) and on-going maintenance by AppFlowy's core team and community of more than 1,000 builders ## Getting Started @@ -54,11 +54,13 @@ flutter pub get Start by creating a new empty AppFlowyEditor object. ```dart +final editorStyle = EditorStyle.defaultStyle(); final editorState = EditorState.empty(); // an empty state final editor = AppFlowyEditor( editorState: editorState, - keyEventHandlers: const [], + shortcutEvents: const [], customBuilders: const {}, + editorStyle: editorStyle, ); ``` @@ -66,11 +68,22 @@ You can also create an editor from a JSON object in order to configure your init ```dart final json = ...; +final editorStyle = EditorStyle.defaultStyle(); final editorState = EditorState(StateTree.fromJson(data)); final editor = AppFlowyEditor( editorState: editorState, - keyEventHandlers: const [], + shortcutEvents: const [], customBuilders: const {}, + editorStyle: editorStyle, +); +``` + +> Note: The parameters `localizationsDelegates` need to be assigned in MaterialApp widget +```dart +MaterialApp( + localizationsDelegates: const [ + AppFlowyEditorLocalizations.delegate, + ], ); ``` diff --git a/frontend/app_flowy/packages/appflowy_editor/documentation/customizing.md b/frontend/app_flowy/packages/appflowy_editor/documentation/customizing.md index 67b14cb9e7..1882cad243 100644 --- a/frontend/app_flowy/packages/appflowy_editor/documentation/customizing.md +++ b/frontend/app_flowy/packages/appflowy_editor/documentation/customizing.md @@ -16,7 +16,9 @@ Widget build(BuildContext context) { alignment: Alignment.topCenter, child: AppFlowyEditor( editorState: EditorState.empty(), + editorStyle: EditorStyle.defaultStyle(), shortcutEvents: const [], + customBuilders: const {}, ), ), ); @@ -116,6 +118,8 @@ Widget build(BuildContext context) { alignment: Alignment.topCenter, child: AppFlowyEditor( editorState: EditorState.empty(), + editorStyle: EditorStyle.defaultStyle(), + customBuilders: const {}, shortcutEvents: [ _underscoreToItalicHandler, ], @@ -145,7 +149,9 @@ Widget build(BuildContext context) { alignment: Alignment.topCenter, child: AppFlowyEditor( editorState: EditorState.empty(), - keyEventHandlers: const [], + editorStyle: EditorStyle.defaultStyle(), + shortcutEvents: const [], + customBuilders: const {}, ), ), ); @@ -283,6 +289,8 @@ final editorState = EditorState( ); return AppFlowyEditor( editorState: editorState, + editorStyle: EditorStyle.defaultStyle(), + shortcutEvents: const [], customBuilders: { 'network_image': NetworkImageNodeWidgetBuilder(), }, @@ -292,3 +300,95 @@ return AppFlowyEditor( ![Whew!](./images/customizing_a_component.gif) Check out the [complete code](https://github.com/AppFlowy-IO/AppFlowy/blob/main/frontend/app_flowy/packages/appflowy_editor/example/lib/plugin/network_image_node_widget.dart) file of this example. + +## Customizing a Theme (New Feature in 0.0.5, Alpha) + +We will use a simple example to illustrate how to quickly customize a theme. + +Let's start with a blank document: + +```dart +@override +Widget build(BuildContext context) { + return Scaffold( + body: Container( + alignment: Alignment.topCenter, + child: AppFlowyEditor( + editorState: EditorState.empty(), + editorStyle: EditorStyle.defaultStyle(), + shortcutEvents: const [], + customBuilders: const {}, + ), + ), + ); +} +``` + +At this point, the editor looks like ... +![Before](./images/customizing_a_theme_before.png) + + +Next, we will customize the `EditorStyle`. + +```dart +EditorStyle _customizedStyle() { + final editorStyle = EditorStyle.defaultStyle(); + return editorStyle.copyWith( + cursorColor: Colors.white, + selectionColor: Colors.blue.withOpacity(0.3), + textStyle: editorStyle.textStyle.copyWith( + defaultTextStyle: GoogleFonts.poppins().copyWith( + color: Colors.white, + fontSize: 14.0, + ), + defaultPlaceholderTextStyle: GoogleFonts.poppins().copyWith( + color: Colors.white.withOpacity(0.5), + fontSize: 14.0, + ), + bold: const TextStyle(fontWeight: FontWeight.w900), + code: TextStyle( + fontStyle: FontStyle.italic, + color: Colors.red[300], + backgroundColor: Colors.grey.withOpacity(0.3), + ), + highlightColorHex: '0x6FFFEB3B', + ), + pluginStyles: { + 'text/quote': builtInPluginStyle + ..update( + 'textStyle', + (_) { + return (EditorState editorState, Node node) { + return TextStyle( + color: Colors.blue[200], + fontStyle: FontStyle.italic, + fontSize: 12.0, + ); + }; + }, + ), + }, + ); +} +``` + +Now our 'customize style' function is done and the only task left is to inject it into the AppFlowyEditor. + +```dart +@override +Widget build(BuildContext context) { + return Scaffold( + body: Container( + alignment: Alignment.topCenter, + child: AppFlowyEditor( + editorState: EditorState.empty(), + editorStyle: _customizedStyle(), + shortcutEvents: const [], + customBuilders: const {}, + ), + ), + ); +} +``` + +![After](./images/customizing_a_theme_after.png) \ No newline at end of file diff --git a/frontend/app_flowy/packages/appflowy_editor/documentation/images/customizing_a_theme_after.png b/frontend/app_flowy/packages/appflowy_editor/documentation/images/customizing_a_theme_after.png new file mode 100644 index 0000000000000000000000000000000000000000..b45d1cad4edb342405f2618c433ca85f9fafc17b GIT binary patch literal 307453 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 literal 0 HcmV?d00001 diff --git a/frontend/app_flowy/packages/appflowy_editor/documentation/images/customizing_a_theme_before.png b/frontend/app_flowy/packages/appflowy_editor/documentation/images/customizing_a_theme_before.png new file mode 100644 index 0000000000000000000000000000000000000000..2f8a951ee939f4003f54c98671be31667d40eaf9 GIT binary patch literal 351322 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 z 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 z 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 z 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%0D=t~#^S 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 { icon: const Icon(Icons.color_lens), onPressed: () { setState(() { - _editorStyle = _editorStyle.copyWith( - textStyle: darkMode - ? BuiltInTextStyle.builtIn() - : BuiltInTextStyle.builtInDarkMode(), - ); + _editorStyle = + darkMode ? EditorStyle.defaultStyle() : _customizedStyle(); darkMode = !darkMode; }); }, @@ -196,4 +198,44 @@ class _MyHomePageState extends State { }); } } + + EditorStyle _customizedStyle() { + final editorStyle = EditorStyle.defaultStyle(); + return editorStyle.copyWith( + cursorColor: Colors.white, + selectionColor: Colors.blue.withOpacity(0.3), + textStyle: editorStyle.textStyle.copyWith( + defaultTextStyle: GoogleFonts.poppins().copyWith( + color: Colors.white, + fontSize: 14.0, + ), + defaultPlaceholderTextStyle: GoogleFonts.poppins().copyWith( + color: Colors.white.withOpacity(0.5), + fontSize: 14.0, + ), + bold: const TextStyle(fontWeight: FontWeight.w900), + code: TextStyle( + fontStyle: FontStyle.italic, + color: Colors.red[300], + backgroundColor: Colors.grey.withOpacity(0.3), + ), + highlightColorHex: '0x6FFFEB3B', + ), + pluginStyles: { + 'text/quote': builtInPluginStyle + ..update( + 'textStyle', + (_) { + return (EditorState editorState, Node node) { + return TextStyle( + color: Colors.blue[200], + fontStyle: FontStyle.italic, + fontSize: 12.0, + ); + }; + }, + ), + }, + ); + } } diff --git a/frontend/app_flowy/packages/appflowy_editor/example/pubspec.yaml b/frontend/app_flowy/packages/appflowy_editor/example/pubspec.yaml index 482cad0875..7061a11226 100644 --- a/frontend/app_flowy/packages/appflowy_editor/example/pubspec.yaml +++ b/frontend/app_flowy/packages/appflowy_editor/example/pubspec.yaml @@ -39,8 +39,10 @@ dependencies: url_launcher: ^6.1.5 video_player: ^2.4.5 pod_player: 0.0.8 - flutter_inappwebview: ^5.4.3+7 path_provider: ^2.0.11 + google_fonts: ^3.0.1 + flutter_localizations: + sdk: flutter dev_dependencies: flutter_test: diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/bulleted_list_text.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/bulleted_list_text.dart index 999b9517f4..ac0534a5f4 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/bulleted_list_text.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/bulleted_list_text.dart @@ -7,6 +7,7 @@ import 'package:appflowy_editor/src/render/rich_text/flowy_rich_text.dart'; import 'package:appflowy_editor/src/render/selection/selectable.dart'; import 'package:appflowy_editor/src/service/render_plugin_service.dart'; import 'package:flutter/material.dart'; +import 'package:appflowy_editor/src/extensions/text_style_extension.dart'; class BulletedListTextNodeWidgetBuilder extends NodeWidgetBuilder { @override @@ -77,6 +78,10 @@ class _BulletedListTextNodeWidgetState extends State child: FlowyRichText( key: _richTextKey, placeholderText: 'List', + textSpanDecorator: (textSpan) => + textSpan.updateTextStyle(textStyle), + placeholderTextSpanDecorator: (textSpan) => + textSpan.updateTextStyle(textStyle), lineHeight: widget.editorState.editorStyle.textStyle.lineHeight, textNode: widget.textNode, editorState: widget.editorState, diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/quoted_text.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/quoted_text.dart index 1c86cbbcb7..b54e0ea1cb 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/quoted_text.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/quoted_text.dart @@ -7,6 +7,7 @@ import 'package:appflowy_editor/src/render/rich_text/flowy_rich_text.dart'; import 'package:appflowy_editor/src/render/selection/selectable.dart'; import 'package:appflowy_editor/src/service/render_plugin_service.dart'; import 'package:flutter/material.dart'; +import 'package:appflowy_editor/src/extensions/text_style_extension.dart'; class QuotedTextNodeWidgetBuilder extends NodeWidgetBuilder { @override @@ -77,6 +78,10 @@ class _QuotedTextNodeWidgetState extends State key: _richTextKey, placeholderText: 'Quote', textNode: widget.textNode, + textSpanDecorator: (textSpan) => + textSpan.updateTextStyle(textStyle), + placeholderTextSpanDecorator: (textSpan) => + textSpan.updateTextStyle(textStyle), lineHeight: widget.editorState.editorStyle.textStyle.lineHeight, editorState: widget.editorState, ), diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/rich_text.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/rich_text.dart index 2b98e31259..a6bc269284 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/rich_text.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/rich_text/rich_text.dart @@ -6,6 +6,7 @@ import 'package:appflowy_editor/src/render/rich_text/flowy_rich_text.dart'; import 'package:appflowy_editor/src/render/selection/selectable.dart'; import 'package:appflowy_editor/src/service/render_plugin_service.dart'; import 'package:flutter/material.dart'; +import 'package:appflowy_editor/src/extensions/text_style_extension.dart'; class RichTextNodeWidgetBuilder extends NodeWidgetBuilder { @override @@ -64,6 +65,9 @@ class _RichTextNodeWidgetState extends State child: FlowyRichText( key: _richTextKey, textNode: widget.textNode, + textSpanDecorator: (textSpan) => textSpan.updateTextStyle(textStyle), + placeholderTextSpanDecorator: (textSpan) => + textSpan.updateTextStyle(textStyle), lineHeight: widget.editorState.editorStyle.textStyle.lineHeight, editorState: widget.editorState, ), diff --git a/frontend/app_flowy/packages/appflowy_editor/pubspec.yaml b/frontend/app_flowy/packages/appflowy_editor/pubspec.yaml index 0e48cc5fab..b277af2c56 100644 --- a/frontend/app_flowy/packages/appflowy_editor/pubspec.yaml +++ b/frontend/app_flowy/packages/appflowy_editor/pubspec.yaml @@ -1,6 +1,6 @@ name: appflowy_editor description: A highly customizable rich-text editor for Flutter -version: 0.0.4 +version: 0.0.5 homepage: https://github.com/AppFlowy-IO/AppFlowy platforms: @@ -23,15 +23,14 @@ dependencies: url_launcher: ^6.1.5 logging: ^1.0.2 intl_utils: ^2.7.0 + flutter_localizations: + sdk: flutter dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^2.0.1 network_image_mock: ^2.1.1 - flutter_localizations: - sdk: flutter - # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec From 5b482248ec30a0cfe1609e2da09172424411f231 Mon Sep 17 00:00:00 2001 From: "Lucas.Xu" Date: Fri, 16 Sep 2022 14:13:31 +0800 Subject: [PATCH 5/5] fix: analyze problem --- .../packages/appflowy_editor/CHANGELOG.md | 4 +-- .../appflowy_editor/lib/l10n/intl_zh_CN.arb | 32 +++++++++---------- .../lib/src/l10n/intl/messages_zh-CN.dart | 32 +++++++++---------- .../page_up_down_handler.dart | 1 - .../packages/appflowy_editor/pubspec.yaml | 1 + .../render/rich_text/checkbox_text_test.dart | 1 - .../rich_text/toolbar_rich_text_test.dart | 1 - .../backspace_handler_test.dart | 1 - .../white_space_handler_test.dart | 1 - 9 files changed, 35 insertions(+), 39 deletions(-) diff --git a/frontend/app_flowy/packages/appflowy_editor/CHANGELOG.md b/frontend/app_flowy/packages/appflowy_editor/CHANGELOG.md index 93d80477c3..4bc418fc81 100644 --- a/frontend/app_flowy/packages/appflowy_editor/CHANGELOG.md +++ b/frontend/app_flowy/packages/appflowy_editor/CHANGELOG.md @@ -1,8 +1,8 @@ ## 0.0.5 -* Support customize the hotkey for a shortcut on different platform. +* Support customize the hotkeys for a shortcut on different platforms. * Support customize a theme. * Support localizations. -* Support insert numbered list. +* Support insert numbered lists. * Fix some bugs. ## 0.0.4 diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_zh_CN.arb b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_zh_CN.arb index 0ebe83fa83..cc2c79985c 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_zh_CN.arb +++ b/frontend/app_flowy/packages/appflowy_editor/lib/l10n/intl_zh_CN.arb @@ -1,35 +1,35 @@ { "@@locale": "zh-CN", - "bold": "加粗", + "bold": "", "@bold": {}, - "bulletedList": "无序列表", + "bulletedList": "", "@bulletedList": {}, - "checkbox": "复选框", + "checkbox": "", "@checkbox": {}, - "embedCode": "内嵌代码", + "embedCode": "", "@embedCode": {}, - "heading1": "标题 1", + "heading1": "", "@heading1": {}, - "heading2": "标题 2", + "heading2": "", "@heading2": {}, - "heading3": "标题 3", + "heading3": "", "@heading3": {}, - "highlight": "高亮", + "highlight": "", "@highlight": {}, - "image": "图片", + "image": "", "@image": {}, - "italic": "斜体", + "italic": "", "@italic": {}, - "link": "链接", + "link": "", "@link": {}, - "numberedList": "有序列表", + "numberedList": "", "@numberedList": {}, - "quote": "引用", + "quote": "", "@quote": {}, - "strikethrough": "删除线", + "strikethrough": "", "@strikethrough": {}, - "text": "文字", + "text": "", "@text": {}, - "underline": "下划线", + "underline": "", "@underline": {} } \ No newline at end of file diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_zh-CN.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_zh-CN.dart index 00c6c66f4d..21a3b9d7a2 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_zh-CN.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/l10n/intl/messages_zh-CN.dart @@ -22,21 +22,21 @@ class MessageLookup extends MessageLookupByLibrary { final messages = _notInlinedMessages(_notInlinedMessages); static Map _notInlinedMessages(_) => { - "bold": MessageLookupByLibrary.simpleMessage("加粗"), - "bulletedList": MessageLookupByLibrary.simpleMessage("无序列表"), - "checkbox": MessageLookupByLibrary.simpleMessage("复选框"), - "embedCode": MessageLookupByLibrary.simpleMessage("内嵌代码"), - "heading1": MessageLookupByLibrary.simpleMessage("标题 1"), - "heading2": MessageLookupByLibrary.simpleMessage("标题 2"), - "heading3": MessageLookupByLibrary.simpleMessage("标题 3"), - "highlight": MessageLookupByLibrary.simpleMessage("高亮"), - "image": MessageLookupByLibrary.simpleMessage("图片"), - "italic": MessageLookupByLibrary.simpleMessage("斜体"), - "link": MessageLookupByLibrary.simpleMessage("链接"), - "numberedList": MessageLookupByLibrary.simpleMessage("有序列表"), - "quote": MessageLookupByLibrary.simpleMessage("引用"), - "strikethrough": MessageLookupByLibrary.simpleMessage("删除线"), - "text": MessageLookupByLibrary.simpleMessage("文字"), - "underline": MessageLookupByLibrary.simpleMessage("下划线") + "bold": MessageLookupByLibrary.simpleMessage(""), + "bulletedList": MessageLookupByLibrary.simpleMessage(""), + "checkbox": MessageLookupByLibrary.simpleMessage(""), + "embedCode": MessageLookupByLibrary.simpleMessage(""), + "heading1": MessageLookupByLibrary.simpleMessage(""), + "heading2": MessageLookupByLibrary.simpleMessage(""), + "heading3": MessageLookupByLibrary.simpleMessage(""), + "highlight": MessageLookupByLibrary.simpleMessage(""), + "image": MessageLookupByLibrary.simpleMessage(""), + "italic": MessageLookupByLibrary.simpleMessage(""), + "link": MessageLookupByLibrary.simpleMessage(""), + "numberedList": MessageLookupByLibrary.simpleMessage(""), + "quote": MessageLookupByLibrary.simpleMessage(""), + "strikethrough": MessageLookupByLibrary.simpleMessage(""), + "text": MessageLookupByLibrary.simpleMessage(""), + "underline": MessageLookupByLibrary.simpleMessage("") }; } diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/page_up_down_handler.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/page_up_down_handler.dart index 816be7dc3a..f10559ff25 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/page_up_down_handler.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/page_up_down_handler.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import 'package:appflowy_editor/src/service/shortcut_event/shortcut_event_handler.dart'; ShortcutEventHandler pageUpHandler = (editorState, _) { diff --git a/frontend/app_flowy/packages/appflowy_editor/pubspec.yaml b/frontend/app_flowy/packages/appflowy_editor/pubspec.yaml index b277af2c56..76ec0b758d 100644 --- a/frontend/app_flowy/packages/appflowy_editor/pubspec.yaml +++ b/frontend/app_flowy/packages/appflowy_editor/pubspec.yaml @@ -23,6 +23,7 @@ dependencies: url_launcher: ^6.1.5 logging: ^1.0.2 intl_utils: ^2.7.0 + intl: flutter_localizations: sdk: flutter diff --git a/frontend/app_flowy/packages/appflowy_editor/test/render/rich_text/checkbox_text_test.dart b/frontend/app_flowy/packages/appflowy_editor/test/render/rich_text/checkbox_text_test.dart index 2abda03538..96cdbbce65 100644 --- a/frontend/app_flowy/packages/appflowy_editor/test/render/rich_text/checkbox_text_test.dart +++ b/frontend/app_flowy/packages/appflowy_editor/test/render/rich_text/checkbox_text_test.dart @@ -4,7 +4,6 @@ import 'package:appflowy_editor/src/render/rich_text/default_selectable.dart'; import 'package:appflowy_editor/src/extensions/text_node_extensions.dart'; import 'package:flutter_test/flutter_test.dart'; import '../../infra/test_editor.dart'; -import 'package:appflowy_editor/src/extensions/attributes_extension.dart'; void main() async { setUpAll(() { diff --git a/frontend/app_flowy/packages/appflowy_editor/test/render/rich_text/toolbar_rich_text_test.dart b/frontend/app_flowy/packages/appflowy_editor/test/render/rich_text/toolbar_rich_text_test.dart index ef78eeab34..9e8a5c15c9 100644 --- a/frontend/app_flowy/packages/appflowy_editor/test/render/rich_text/toolbar_rich_text_test.dart +++ b/frontend/app_flowy/packages/appflowy_editor/test/render/rich_text/toolbar_rich_text_test.dart @@ -5,7 +5,6 @@ import 'package:appflowy_editor/src/render/toolbar/toolbar_item_widget.dart'; import 'package:appflowy_editor/src/render/toolbar/toolbar_widget.dart'; import 'package:flutter_test/flutter_test.dart'; import '../../infra/test_editor.dart'; -import 'package:appflowy_editor/src/extensions/attributes_extension.dart'; void main() async { setUpAll(() { diff --git a/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/backspace_handler_test.dart b/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/backspace_handler_test.dart index e31ad0f252..540dca6e31 100644 --- a/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/backspace_handler_test.dart +++ b/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/backspace_handler_test.dart @@ -5,7 +5,6 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:network_image_mock/network_image_mock.dart'; import '../../infra/test_editor.dart'; import 'package:appflowy_editor/src/document/built_in_attribute_keys.dart'; -import 'package:appflowy_editor/src/extensions/attributes_extension.dart'; void main() async { setUpAll(() { diff --git a/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/white_space_handler_test.dart b/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/white_space_handler_test.dart index d6cffa3a44..c4bcad7da5 100644 --- a/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/white_space_handler_test.dart +++ b/frontend/app_flowy/packages/appflowy_editor/test/service/internal_key_event_handlers/white_space_handler_test.dart @@ -4,7 +4,6 @@ import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; import '../../infra/test_editor.dart'; import 'package:appflowy_editor/src/document/built_in_attribute_keys.dart'; -import 'package:appflowy_editor/src/extensions/attributes_extension.dart'; void main() async { setUpAll(() {