fleather-editor / fleather

Soft and gentle rich text editing for Flutter applications.
https://fleather-editor.github.io
Other
193 stars 34 forks source link

HTML Decode issue with <img> tag #373

Open VaarunSinha opened 2 months ago

VaarunSinha commented 2 months ago

Steps to Reproduce

import 'package:flutter/material.dart';
import 'package:fleather/fleather.dart';
import 'package:parchment/codecs.dart';

void main() {
  runApp(FleatherApp());
}

class FleatherApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) => MaterialApp(
    home: HomePage()
  );
}

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    const codec = ParchmentHtmlCodec();
    // String html = '<img src="abcd.png">'; // fails
    // String html = '<p><img src="abcd.png"></p>'; // fails
    String html = '<p>hello</p>'; // works

    final ParchmentDocument doc = codec.decode(html);
    FleatherController? controller = FleatherController(document: doc);

    return Scaffold(body: FleatherEditor(controller: controller));
    // return Scaffold(body: FleatherField(controller: controller)); // same behaviour
  }
}

Environment

Logs


Blog Content: <p><strong><em><u> lknn kjfnk nfkj kjfkn kjjf</u></em></strong></p><p><br></p><p><span class="ql-cursor"></span><img
src="data:image/png;base64,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
N7cA2LsVHr+gvvoEAKJoAMR5AHT06KE6eFaTnytlhQjPAZuivqbmpIJ/UxRnzh/i/rkFMlUX8HP7L+g0fEO/UTIQAAAAimVYSWZNTQAqAAAACAAEARoABQAAAAEAAAA+ARsABQAAAAEAAABGASgAAwAAAAEAAgAAh2kABAAAAAEAAABOAAAAAAAAAJAAAAABAAAAkAA
AAAEAA5KGAAcAAAASAAAAeKACAAQAAAABAAAA9KADAAQAAAABAAAAXAAAAABBU0NJSQAAAFNjcmVlbnNob3R3fgXyAAAACXBIWXMAABYlAAAWJQFJUiTwAAAB1WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZX
RhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4b
WxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj45MjwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4yNDQ8L2V4aWY6UGl4ZWxYRGlt
ZW5zaW9uPgogICAgICAgICA8ZXhpZjpVc2VyQ29tbWVudD5TY3JlZW5zaG90PC9leGlmOlVzZXJDb21tZW50PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KX4yObQAAABxpRE9UAAAAAgAAAAAAAAAuAAAAKAAAAC4
AAAAuAAAIvoRIoa4AAAiKSURBVHgB7JoLSFRZGMc/S8UKethrM7YHmpSE2cteWPZYIy1rIXpZKUW49rJFpYJoM6IHtoVQqUXlsm3RgyxDIyWK7IVImdVWpmFJskX0pDK13P0fuXfv3JnRGZvLmRm+AzP33HPO/c69v5n/Od/5zvXw9fVtJE5MgAm4BQEPFrRb/I78EE
xAELBZ0N27d2dkTIAJODkBFrST/0B8e0zAHgI2C9oeo9yWCTABOQRY0HK4c69MwBACLGhDsLJRJiCHAAtaDnfulQkYQoAFbQhWNsoE5BBgQcvhzr0yAUMIsKANwcpGmYAcAixoOdy5VyZgCAEWtCFY2SgTkEOABS2HO/fKBAwhwII2BCsbZQJyCLCg5XDnXpmAIQRY0
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"><br></p>

Another exception was thrown: UnimplementedError: Embeddable type "image" is not supported by default embed builder of FleatherEditor. You must pass your own builder function to embedBuilder property
of FleatherEditor or FleatherField widgets.```
VaarunSinha commented 2 months ago
Widget _embedBuilder(BuildContext context, fleather.EmbedNode node) {
  if (node.value.type == 'image') {
    final String sourceType = node.value.data['source_type'];
    final String source = node.value.data['source'];

    if (sourceType == 'assets') {
      return Padding(
        // Caret takes 2 pixels, hence not symmetric padding values.
        padding: const EdgeInsets.only(left: 4, right: 2, top: 2, bottom: 2),
        child: Container(
          width: 300,
          height: 300,
          decoration: BoxDecoration(
            image: DecorationImage(
              image: AssetImage(source),
              fit: BoxFit.cover,
            ),
          ),
        ),
      );
    } else if (source.startsWith('data:image')) {
      final base64String = source.split(',').last;
      final decodedBytes = base64Decode(base64String);

      return Padding(
        // Caret takes 2 pixels, hence not symmetric padding values.
        padding: const EdgeInsets.only(left: 4, right: 2, top: 2, bottom: 2),
        child: Container(
          width: 300,
          height: 300,
          decoration: BoxDecoration(
            image: DecorationImage(
              image: MemoryImage(decodedBytes),
              fit: BoxFit.cover,
            ),
          ),
        ),
      );
    }
  }

  throw UnimplementedError();
}

It doesnt work with my own custom embed builder

svjetlanovicF commented 1 month ago

I faced same/similar issue, @VaarunSinha did you maybe find some workaround?

amantoux commented 1 month ago

@svjetlanovicF @VaarunSinha indeed, it is not possible to convert embeds at the moment, this PR should adress it when it lands #371