|
|
|
@ -1,10 +1,9 @@ |
|
|
|
|
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' |
|
|
|
|
as conventer show ConverterOptions, QuillDeltaToHtmlConverter; |
|
|
|
|
import 'package:vsc_quill_delta_to_html/vsc_quill_delta_to_html.dart'; |
|
|
|
|
|
|
|
|
|
typedef ConverterOptions = conventer.ConverterOptions; |
|
|
|
|
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 |
|
|
|
@ -19,10 +18,33 @@ extension DeltaHtmlExt on Delta { |
|
|
|
|
/// that designed specifically for converting the quill delta to html |
|
|
|
|
String toHtml({ConverterOptions? options}) { |
|
|
|
|
final json = toJson(); |
|
|
|
|
final html = conventer.QuillDeltaToHtmlConverter( |
|
|
|
|
final html = QuillDeltaToHtmlConverter( |
|
|
|
|
List.castFrom(json), |
|
|
|
|
options, |
|
|
|
|
options ?? defaultConverterOptions, |
|
|
|
|
).convert(); |
|
|
|
|
return html; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ConverterOptions get defaultConverterOptions { |
|
|
|
|
return ConverterOptions( |
|
|
|
|
converterOptions: OpConverterOptions( |
|
|
|
|
customTagAttributes: (op) => parseStyle(op.attributes['style']), |
|
|
|
|
), |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Map<String, String>? parseStyle(String? style, [Map<String, String>? attrs]) { |
|
|
|
|
if (style == null || style.isEmpty) return attrs; |
|
|
|
|
|
|
|
|
|
attrs ??= <String, String>{}; |
|
|
|
|
|
|
|
|
|
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; |
|
|
|
|
} |
|
|
|
|