library quill_html_converter; import 'package:dart_quill_delta/dart_quill_delta.dart'; import 'package:vsc_quill_delta_to_html/vsc_quill_delta_to_html.dart'; export 'package:vsc_quill_delta_to_html/vsc_quill_delta_to_html.dart'; /// A extension for [Delta] which comes from `flutter_quill` to extends /// the functionality of it to support converting the [Delta] to/from HTML extension DeltaHtmlExt on Delta { /// Convert the [Delta] instance to HTML Raw string /// /// It will run using the following steps: /// /// 1. Convert the [Delta] to json using [toJson] /// 2. Cast the json map as `List>` /// 3. Pass it to the conventer `vsc_quill_delta_to_html` which is a package /// that designed specifically for converting the quill delta to html String toHtml({ConverterOptions? options}) { final json = toJson(); final html = QuillDeltaToHtmlConverter( List.castFrom(json), options ?? defaultConverterOptions, ).convert(); return html; } } ConverterOptions get defaultConverterOptions { return ConverterOptions( converterOptions: OpConverterOptions( customTagAttributes: (op) => parseStyle(op.attributes['style']), ), ); } Map? parseStyle(String? style, [Map? attrs]) { if (style == null || style.isEmpty) return attrs; attrs ??= {}; for (var e in style.split(';')) { if ((e = e.trim()).isEmpty) break; var kv = e.split(':'); if (kv.length < 2) break; var key = kv[0].trim(); attrs[key] = kv[1].trim(); } return attrs; }