1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #include "core/components_ng/pattern/rich_editor/rich_editor_event_hub.h"
16 #if !defined(PREVIEW) && !defined(ACE_UNITTEST) && defined(OHOS_PLATFORM)
17 #include "interfaces/inner_api/ui_session/ui_session_manager.h"
18 #endif
19 
20 #include "core/components_ng/base/frame_node.h"
21 #include "core/components_ng/pattern/rich_editor/rich_editor_pattern.h"
22 
23 namespace OHOS::Ace::NG {
SetInsertOffset(int32_t insertOffset)24 void RichEditorInsertValue::SetInsertOffset(int32_t insertOffset)
25 {
26     insertOffset_ = insertOffset;
27 }
28 
GetInsertOffset() const29 int32_t RichEditorInsertValue::GetInsertOffset() const
30 {
31     return insertOffset_;
32 }
33 
SetInsertValue(const std::string & insertValue)34 void RichEditorInsertValue::SetInsertValue(const std::string& insertValue)
35 {
36     insertValue_ = insertValue;
37 }
38 
SetPreviewText(const std::string & previewText)39 void RichEditorInsertValue::SetPreviewText(const std::string& previewText)
40 {
41     previewText_ = previewText;
42 }
43 
GetInsertValue() const44 const std::string& RichEditorInsertValue::GetInsertValue() const
45 {
46     return insertValue_;
47 }
48 
GetPreviewText() const49 const std::string& RichEditorInsertValue::GetPreviewText() const
50 {
51     return previewText_;
52 }
53 
SetSpanIndex(int32_t spanIndex)54 void RichEditorAbstractSpanResult::SetSpanIndex(int32_t spanIndex)
55 {
56     spanIndex_ = spanIndex;
57 }
58 
GetSpanIndex() const59 int32_t RichEditorAbstractSpanResult::GetSpanIndex() const
60 {
61     return spanIndex_;
62 }
63 
SetSpanRangeStart(int32_t spanRangeStart)64 void RichEditorAbstractSpanResult::SetSpanRangeStart(int32_t spanRangeStart)
65 {
66     spanRangeStart_ = spanRangeStart;
67 }
68 
GetSpanRangeStart() const69 int32_t RichEditorAbstractSpanResult::GetSpanRangeStart() const
70 {
71     return spanRangeStart_;
72 }
73 
SetSpanRangeEnd(int32_t spanRangeEnd)74 void RichEditorAbstractSpanResult::SetSpanRangeEnd(int32_t spanRangeEnd)
75 {
76     spanRangeEnd_ = spanRangeEnd;
77 }
78 
GetSpanRangeEnd() const79 int32_t RichEditorAbstractSpanResult::GetSpanRangeEnd() const
80 {
81     return spanRangeEnd_;
82 }
83 
SetSpanType(SpanResultType spanType)84 void RichEditorAbstractSpanResult::SetSpanType(SpanResultType spanType)
85 {
86     spanType_ = spanType;
87 }
88 
GetType() const89 SpanResultType RichEditorAbstractSpanResult::GetType() const
90 {
91     return spanType_;
92 }
93 
SetOffsetInSpan(int32_t offsetInSpan)94 void RichEditorAbstractSpanResult::SetOffsetInSpan(int32_t offsetInSpan)
95 {
96     offsetInSpan_ = offsetInSpan;
97 }
98 
OffsetInSpan() const99 int32_t RichEditorAbstractSpanResult::OffsetInSpan() const
100 {
101     return offsetInSpan_;
102 }
103 
SetEraseLength(int32_t eraseLength)104 void RichEditorAbstractSpanResult::SetEraseLength(int32_t eraseLength)
105 {
106     eraseLength_ = eraseLength;
107 }
108 
GetEraseLength() const109 int32_t RichEditorAbstractSpanResult::GetEraseLength() const
110 {
111     return eraseLength_;
112 }
113 
SetValue(const std::string & value)114 void RichEditorAbstractSpanResult::SetValue(const std::string& value)
115 {
116     value_ = value;
117 }
118 
GetValue() const119 const std::string& RichEditorAbstractSpanResult::GetValue() const
120 {
121     return value_;
122 }
123 
SetPreviewText(const std::string & previewText)124 void RichEditorAbstractSpanResult::SetPreviewText(const std::string& previewText)
125 {
126     previewText_ = previewText;
127 }
128 
GetPreviewText() const129 const std::string& RichEditorAbstractSpanResult::GetPreviewText() const
130 {
131     return previewText_;
132 }
133 
SetFontColor(const std::string & fontColor)134 void RichEditorAbstractSpanResult::SetFontColor(const std::string& fontColor)
135 {
136     fontColor_ = fontColor;
137 }
138 
SetFontFeature(const FONT_FEATURES_LIST & fontFeature)139 void RichEditorAbstractSpanResult::SetFontFeature(const FONT_FEATURES_LIST& fontFeature)
140 {
141     fontFeature_ = fontFeature;
142 }
143 
GetFontFeatures() const144 const FONT_FEATURES_LIST& RichEditorAbstractSpanResult::GetFontFeatures() const
145 {
146     return fontFeature_;
147 }
148 
SetTextStyle(TextStyleResult textStyle)149 void RichEditorAbstractSpanResult::SetTextStyle(TextStyleResult textStyle)
150 {
151     textStyle_ = textStyle;
152 }
153 
GetTextStyle() const154 TextStyleResult RichEditorAbstractSpanResult::GetTextStyle() const
155 {
156     return textStyle_;
157 }
158 
SetLineHeight(double lineHeight)159 void RichEditorAbstractSpanResult::SetLineHeight(double lineHeight)
160 {
161     lineHeight_ = lineHeight;
162 }
163 
GetLineHeight() const164 double RichEditorAbstractSpanResult::GetLineHeight() const
165 {
166     return lineHeight_;
167 }
168 
SetLetterspacing(double letterSpacing)169 void RichEditorAbstractSpanResult::SetLetterspacing(double letterSpacing)
170 {
171     letterSpacing_ = letterSpacing;
172 }
173 
GetLetterspacing() const174 double RichEditorAbstractSpanResult::GetLetterspacing() const
175 {
176     return letterSpacing_;
177 }
178 
GetFontColor() const179 const std::string& RichEditorAbstractSpanResult::GetFontColor() const
180 {
181     return fontColor_;
182 }
183 
SetFontSize(double fontSize)184 void RichEditorAbstractSpanResult::SetFontSize(double fontSize)
185 {
186     fontSize_ = fontSize;
187 }
188 
GetFontSize() const189 double RichEditorAbstractSpanResult::GetFontSize() const
190 {
191     return fontSize_;
192 }
193 
SetValueResource(const RefPtr<ResourceObject> & valueResource)194 void RichEditorAbstractSpanResult::SetValueResource(const RefPtr<ResourceObject>& valueResource)
195 {
196     valueResource_ = valueResource;
197 }
198 
GetValueResource() const199 const RefPtr<ResourceObject> RichEditorAbstractSpanResult::GetValueResource() const
200 {
201     return valueResource_;
202 }
203 
SetValueString(const std::string & valueString)204 void RichEditorAbstractSpanResult::SetValueString(const std::string& valueString)
205 {
206     valueString_ = valueString;
207 }
208 
GetValueString() const209 const std::string RichEditorAbstractSpanResult::GetValueString() const
210 {
211     return valueString_;
212 }
213 
SetSymbolSpanStyle(const SymbolSpanStyle & symbolSpanStyle)214 void RichEditorAbstractSpanResult::SetSymbolSpanStyle(const SymbolSpanStyle& symbolSpanStyle)
215 {
216     symbolSpanStyle_ = symbolSpanStyle;
217 }
218 
GetSymbolSpanStyle() const219 const SymbolSpanStyle RichEditorAbstractSpanResult::GetSymbolSpanStyle() const
220 {
221     return symbolSpanStyle_;
222 }
223 
SetFontWeight(int32_t fontWeigth)224 void RichEditorAbstractSpanResult::SetFontWeight(int32_t fontWeigth)
225 {
226     fontWeigth_ = fontWeigth;
227 }
228 
GetFontWeight() const229 int32_t RichEditorAbstractSpanResult::GetFontWeight() const
230 {
231     return fontWeigth_;
232 }
233 
SetFontFamily(const std::string & fontFamily)234 void RichEditorAbstractSpanResult::SetFontFamily(const std::string& fontFamily)
235 {
236     fontFamily_ = fontFamily;
237 }
238 
GetFontFamily() const239 const std::string& RichEditorAbstractSpanResult::GetFontFamily() const
240 {
241     return fontFamily_;
242 }
243 
SetTextDecoration(TextDecoration textDecoration)244 void RichEditorAbstractSpanResult::SetTextDecoration(TextDecoration textDecoration)
245 {
246     textDecoration_ = textDecoration;
247 }
248 
GetTextDecoration() const249 TextDecoration RichEditorAbstractSpanResult::GetTextDecoration() const
250 {
251     return textDecoration_;
252 }
253 
SetColor(const std::string & color)254 void RichEditorAbstractSpanResult::SetColor(const std::string& color)
255 {
256     color_ = color;
257 }
258 
GetColor() const259 const std::string& RichEditorAbstractSpanResult::GetColor() const
260 {
261     return color_;
262 }
263 
SetTextDecorationStyle(TextDecorationStyle textDecorationStyle)264 void RichEditorAbstractSpanResult::SetTextDecorationStyle(TextDecorationStyle textDecorationStyle)
265 {
266     textDecorationStyle_ = textDecorationStyle;
267 }
268 
GetTextDecorationStyle() const269 TextDecorationStyle RichEditorAbstractSpanResult::GetTextDecorationStyle() const
270 {
271     return textDecorationStyle_;
272 }
273 
SetValuePixelMap(const RefPtr<PixelMap> & valuePixelMap)274 void RichEditorAbstractSpanResult::SetValuePixelMap(const RefPtr<PixelMap>& valuePixelMap)
275 {
276     valuePixelMap_ = valuePixelMap;
277 }
278 
GetValuePixelMap() const279 const RefPtr<PixelMap>& RichEditorAbstractSpanResult::GetValuePixelMap() const
280 {
281     return valuePixelMap_;
282 }
283 
SetValueResourceStr(const std::string valueResourceStr)284 void RichEditorAbstractSpanResult::SetValueResourceStr(const std::string valueResourceStr)
285 {
286     valueResourceStr_ = valueResourceStr;
287 }
288 
GetValueResourceStr() const289 const std::string& RichEditorAbstractSpanResult::GetValueResourceStr() const
290 {
291     return valueResourceStr_;
292 }
293 
SetSizeWidth(int32_t width)294 void RichEditorAbstractSpanResult::SetSizeWidth(int32_t width)
295 {
296     width_ = width;
297 }
298 
GetSizeWidth() const299 int32_t RichEditorAbstractSpanResult::GetSizeWidth() const
300 {
301     return width_;
302 }
303 
SetSizeHeight(int32_t height)304 void RichEditorAbstractSpanResult::SetSizeHeight(int32_t height)
305 {
306     height_ = height;
307 }
308 
GetSizeHeight() const309 int32_t RichEditorAbstractSpanResult::GetSizeHeight() const
310 {
311     return height_;
312 }
313 
SetVerticalAlign(VerticalAlign verticalAlign)314 void RichEditorAbstractSpanResult::SetVerticalAlign(VerticalAlign verticalAlign)
315 {
316     verticalAlign_ = verticalAlign;
317 }
318 
GetVerticalAlign() const319 VerticalAlign RichEditorAbstractSpanResult::GetVerticalAlign() const
320 {
321     return verticalAlign_;
322 }
323 
SetImageFit(ImageFit objectFit)324 void RichEditorAbstractSpanResult::SetImageFit(ImageFit objectFit)
325 {
326     objectFit_ = objectFit;
327 }
328 
GetObjectFit() const329 ImageFit RichEditorAbstractSpanResult::GetObjectFit() const
330 {
331     return objectFit_;
332 }
333 
SetOffset(int32_t offset)334 void RichEditorDeleteValue::SetOffset(int32_t offset)
335 {
336     offset_ = offset;
337 }
338 
GetOffset() const339 int32_t RichEditorDeleteValue::GetOffset() const
340 {
341     return offset_;
342 }
343 
SetRichEditorDeleteDirection(RichEditorDeleteDirection direction)344 void RichEditorDeleteValue::SetRichEditorDeleteDirection(RichEditorDeleteDirection direction)
345 {
346     direction_ = direction;
347 }
348 
GetRichEditorDeleteDirection() const349 RichEditorDeleteDirection RichEditorDeleteValue::GetRichEditorDeleteDirection() const
350 {
351     return direction_;
352 }
353 
SetLength(int32_t length)354 void RichEditorDeleteValue::SetLength(int32_t length)
355 {
356     length_ = length;
357 }
358 
GetLength() const359 int32_t RichEditorDeleteValue::GetLength() const
360 {
361     return length_;
362 }
363 
SetRichEditorDeleteSpans(const RichEditorAbstractSpanResult & deleteSpan)364 void RichEditorDeleteValue::SetRichEditorDeleteSpans(const RichEditorAbstractSpanResult& deleteSpan)
365 {
366     richEditorDeleteSpans_.emplace_back(deleteSpan);
367 }
368 
ResetRichEditorDeleteSpans()369 void RichEditorDeleteValue::ResetRichEditorDeleteSpans()
370 {
371     richEditorDeleteSpans_.clear();
372 }
373 
GetRichEditorDeleteSpans() const374 const std::list<RichEditorAbstractSpanResult>& RichEditorDeleteValue::GetRichEditorDeleteSpans() const
375 {
376     return richEditorDeleteSpans_;
377 }
378 
SetRichEditorOriginalSpans(const RichEditorAbstractSpanResult & span)379 void RichEditorChangeValue::SetRichEditorOriginalSpans(const RichEditorAbstractSpanResult& span)
380 {
381     originalSpans_.emplace_back(span);
382 }
383 
GetRichEditorOriginalSpans() const384 const std::vector<RichEditorAbstractSpanResult>& RichEditorChangeValue::GetRichEditorOriginalSpans() const
385 {
386     return originalSpans_;
387 }
388 
SetRichEditorReplacedSpans(const RichEditorAbstractSpanResult & span)389 void RichEditorChangeValue::SetRichEditorReplacedSpans(const RichEditorAbstractSpanResult& span)
390 {
391     replacedSpans_.emplace_back(span);
392 }
393 
GetRichEditorReplacedSpans() const394 const std::vector<RichEditorAbstractSpanResult>& RichEditorChangeValue::GetRichEditorReplacedSpans() const
395 {
396     return replacedSpans_;
397 }
398 
SetRichEditorReplacedImageSpans(const RichEditorAbstractSpanResult & span)399 void RichEditorChangeValue::SetRichEditorReplacedImageSpans(const RichEditorAbstractSpanResult& span)
400 {
401     replacedImageSpans_.emplace_back(span);
402 }
403 
GetRichEditorReplacedImageSpans() const404 const std::vector<RichEditorAbstractSpanResult>& RichEditorChangeValue::GetRichEditorReplacedImageSpans() const
405 {
406     return replacedImageSpans_;
407 }
408 
SetRichEditorReplacedSymbolSpans(const RichEditorAbstractSpanResult & span)409 void RichEditorChangeValue::SetRichEditorReplacedSymbolSpans(const RichEditorAbstractSpanResult& span)
410 {
411     replacedSymbolSpans_.emplace_back(span);
412 }
413 
GetRichEditorReplacedSymbolSpans() const414 const std::vector<RichEditorAbstractSpanResult>& RichEditorChangeValue::GetRichEditorReplacedSymbolSpans() const
415 {
416     return replacedSymbolSpans_;
417 }
418 
SetRangeBefore(const TextRange & rangeBefore)419 void RichEditorChangeValue::SetRangeBefore(const TextRange& rangeBefore)
420 {
421     rangeBefore_ = rangeBefore;
422 }
423 
GetRangeBefore() const424 TextRange RichEditorChangeValue::GetRangeBefore() const
425 {
426     return rangeBefore_;
427 }
428 
SetRangeAfter(const TextRange & rangeAfter)429 void RichEditorChangeValue::SetRangeAfter(const TextRange& rangeAfter)
430 {
431     rangeAfter_ = rangeAfter;
432 }
433 
GetRangeAfter() const434 TextRange RichEditorChangeValue::GetRangeAfter() const
435 {
436     return rangeAfter_;
437 }
438 
SetRangeBefore(const TextRange & range)439 void StyledStringChangeValue::SetRangeBefore(const TextRange& range)
440 {
441     rangeBefore_ = range;
442 }
443 
GetRangeBefore() const444 TextRange StyledStringChangeValue::GetRangeBefore() const
445 {
446     return rangeBefore_;
447 }
448 
SetRangeAfter(const TextRange & range)449 void StyledStringChangeValue::SetRangeAfter(const TextRange& range)
450 {
451     rangeAfter_ = range;
452 }
453 
GetRangeAfter() const454 TextRange StyledStringChangeValue::GetRangeAfter() const
455 {
456     return rangeAfter_;
457 }
458 
SetReplacementString(const RefPtr<SpanStringBase> & styledString)459 void StyledStringChangeValue::SetReplacementString(const RefPtr<SpanStringBase>& styledString)
460 {
461     replacementString_ = styledString;
462 }
463 
GetReplacementString() const464 const RefPtr<SpanStringBase> StyledStringChangeValue::GetReplacementString() const
465 {
466     return replacementString_;
467 }
468 
SetOnReady(std::function<void ()> && func)469 void RichEditorEventHub::SetOnReady(std::function<void()>&& func)
470 {
471     onReady_ = std::move(func);
472 }
473 
FireOnReady()474 void RichEditorEventHub::FireOnReady()
475 {
476     if (onReady_) {
477         onReady_();
478         auto host = GetFrameNode();
479         CHECK_NULL_VOID(host);
480         auto* context = host->GetContext();
481         CHECK_NULL_VOID(context);
482         context->AddAfterRenderTask([host]() { host->MarkDirtyNode(PROPERTY_UPDATE_MEASURE); });
483     }
484 }
485 
SetAboutToIMEInput(std::function<bool (const RichEditorInsertValue &)> && func)486 void RichEditorEventHub::SetAboutToIMEInput(std::function<bool(const RichEditorInsertValue&)>&& func)
487 {
488     aboutToIMEInput_ = std::move(func);
489 }
490 
FireAboutToIMEInput(const RichEditorInsertValue & info)491 bool RichEditorEventHub::FireAboutToIMEInput(const RichEditorInsertValue& info)
492 {
493     return aboutToIMEInput_ ? aboutToIMEInput_(info) : true;
494 }
495 
SetOnIMEInputComplete(std::function<void (const RichEditorAbstractSpanResult &)> && func)496 void RichEditorEventHub::SetOnIMEInputComplete(std::function<void(const RichEditorAbstractSpanResult&)>&& func)
497 {
498     onIMEInputComplete_ = std::move(func);
499 }
500 
FireOnIMEInputComplete(const RichEditorAbstractSpanResult & info)501 void RichEditorEventHub::FireOnIMEInputComplete(const RichEditorAbstractSpanResult& info)
502 {
503     if (onIMEInputComplete_)
504         onIMEInputComplete_(info);
505 }
506 
SetOnDidIMEInput(std::function<void (const TextRange &)> && func)507 void RichEditorEventHub::SetOnDidIMEInput(std::function<void(const TextRange&)>&& func)
508 {
509     onDidIMEInput_ = std::move(func);
510 }
511 
FireOnDidIMEInput(const TextRange & range)512 void RichEditorEventHub::FireOnDidIMEInput(const TextRange& range)
513 {
514     if (onDidIMEInput_)
515         onDidIMEInput_(range);
516 }
517 
SetAboutToDelete(std::function<bool (const RichEditorDeleteValue &)> && func)518 void RichEditorEventHub::SetAboutToDelete(std::function<bool(const RichEditorDeleteValue&)>&& func)
519 {
520     aboutToDelete_ = std::move(func);
521 }
522 
FireAboutToDelete(const RichEditorDeleteValue & info)523 bool RichEditorEventHub::FireAboutToDelete(const RichEditorDeleteValue& info)
524 {
525     return aboutToDelete_ ? aboutToDelete_(info) : true;
526 }
527 
SetOnDeleteComplete(std::function<void ()> && func)528 void RichEditorEventHub::SetOnDeleteComplete(std::function<void()>&& func)
529 {
530     onDeleteComplete_ = std::move(func);
531 }
FireOnDeleteComplete()532 void RichEditorEventHub::FireOnDeleteComplete()
533 {
534     if (onDeleteComplete_) {
535         onDeleteComplete_();
536 #if !defined(PREVIEW) && !defined(ACE_UNITTEST) && defined(OHOS_PLATFORM)
537         UiSessionManager::GetInstance().ReportComponentChangeEvent("event", "Radio.onChange");
538 #endif
539     }
540 }
541 
GetDragExtraParams(const std::string & extraInfo,const Point & point,DragEventType type)542 std::string RichEditorEventHub::GetDragExtraParams(const std::string& extraInfo, const Point& point, DragEventType type)
543 {
544     auto host = GetFrameNode();
545     CHECK_NULL_RETURN(host, extraInfo);
546     auto pattern = host->GetPattern<RichEditorPattern>();
547     CHECK_NULL_RETURN(host, extraInfo);
548 
549     auto json = JsonUtil::Create(true);
550     if (type == DragEventType::DROP && timestamp_ != 0 && pattern->GetTimestamp() == timestamp_) {
551         json->Put("isInComponent", true);
552         timestamp_ = 0;
553     }
554     if (!extraInfo.empty()) {
555         json->Put("extraInfo", extraInfo.c_str());
556     }
557     return json->ToString();
558 }
559 
SetOnEditingChange(std::function<void (const bool &)> && func)560 void RichEditorEventHub::SetOnEditingChange(std::function<void(const bool&)>&& func)
561 {
562     onEditingChange_ = std::move(func);
563 }
564 
FireOnEditingChange(bool isEditing)565 void RichEditorEventHub::FireOnEditingChange(bool isEditing)
566 {
567     if (onEditingChange_) {
568         onEditingChange_(isEditing);
569     }
570 }
571 
SetOnWillChange(std::function<bool (const RichEditorChangeValue &)> && func)572 void RichEditorEventHub::SetOnWillChange(std::function<bool(const RichEditorChangeValue&)>&& func)
573 {
574     onWillChange_ = std::move(func);
575 }
576 
FireOnWillChange(const RichEditorChangeValue & info)577 bool RichEditorEventHub::FireOnWillChange(const RichEditorChangeValue& info)
578 {
579     return onWillChange_ ? onWillChange_(info) : true;
580 }
581 
HasOnWillChange() const582 bool RichEditorEventHub::HasOnWillChange() const
583 {
584     return static_cast<bool>(onWillChange_);
585 }
586 
SetOnDidChange(std::function<void (const RichEditorChangeValue &)> && func)587 void RichEditorEventHub::SetOnDidChange(std::function<void(const RichEditorChangeValue&)>&& func)
588 {
589     onDidChange_ = std::move(func);
590 }
591 
FireOnDidChange(const RichEditorChangeValue & changeValue)592 void RichEditorEventHub::FireOnDidChange(const RichEditorChangeValue& changeValue)
593 {
594     if (onDidChange_) {
595         onDidChange_(changeValue);
596     }
597 }
598 
HasOnDidChange() const599 bool RichEditorEventHub::HasOnDidChange() const
600 {
601     auto host = GetFrameNode();
602     CHECK_NULL_RETURN(host, false);
603     auto pattern = host->GetPattern<RichEditorPattern>();
604     CHECK_NULL_RETURN(pattern, false);
605     pattern->SetContentChange(true);
606     return static_cast<bool>(onDidChange_);
607 }
608 
SetOnCut(std::function<void (NG::TextCommonEvent &)> && func)609 void RichEditorEventHub::SetOnCut(std::function<void(NG::TextCommonEvent&)>&& func)
610 {
611     onCut_ = std::move(func);
612 }
613 
FireOnCut(NG::TextCommonEvent & value)614 void RichEditorEventHub::FireOnCut(NG::TextCommonEvent& value)
615 {
616     if (onCut_) {
617         onCut_(value);
618     }
619 }
620 
SetOnCopy(std::function<void (NG::TextCommonEvent &)> && func)621 void RichEditorEventHub::SetOnCopy(std::function<void(NG::TextCommonEvent&)>&& func)
622 {
623     onCopy_ = std::move(func);
624 }
625 
FireOnCopy(NG::TextCommonEvent & value)626 void RichEditorEventHub::FireOnCopy(NG::TextCommonEvent& value)
627 {
628     if (onCopy_) {
629         onCopy_(value);
630     }
631 }
632 
SetOnStyledStringWillChange(std::function<bool (const StyledStringChangeValue &)> && func)633 void RichEditorEventHub::SetOnStyledStringWillChange(std::function<bool(const StyledStringChangeValue&)>&& func)
634 {
635     onStyledStringWillChange_ = std::move(func);
636 }
637 
FireOnStyledStringWillChange(const StyledStringChangeValue & info)638 bool RichEditorEventHub::FireOnStyledStringWillChange(const StyledStringChangeValue& info)
639 {
640     return onStyledStringWillChange_ ? onStyledStringWillChange_(info) : true;
641 }
642 
HasOnStyledStringWillChange() const643 bool RichEditorEventHub::HasOnStyledStringWillChange() const
644 {
645     return static_cast<bool>(onStyledStringWillChange_);
646 }
647 
SetOnStyledStringDidChange(std::function<void (const StyledStringChangeValue &)> && func)648 void RichEditorEventHub::SetOnStyledStringDidChange(std::function<void(const StyledStringChangeValue&)>&& func)
649 {
650     onStyledStringDidChange_ = std::move(func);
651 }
652 
FireOnStyledStringDidChange(const StyledStringChangeValue & info)653 void RichEditorEventHub::FireOnStyledStringDidChange(const StyledStringChangeValue& info)
654 {
655     onStyledStringDidChange_(info);
656 }
657 
HasOnStyledStringDidChange() const658 bool RichEditorEventHub::HasOnStyledStringDidChange() const
659 {
660     return static_cast<bool>(onStyledStringDidChange_);
661 }
662 } // namespace OHOS::Ace::NG
663